diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..22d614da077675bc758e35332ed19e5df3615e6e --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +data/* +Analysis_code/3.sampling_data_test/images/* +Analysis_code/3.sampled_data_analysis/images/* +__pycache__/ +Analysis_code/optimization_history/* +Analysis_code/save_model/* \ No newline at end of file diff --git a/Analysis_code/1.data_preprocessing/0.air_data_merge.ipynb b/Analysis_code/1.data_preprocessing/0.air_data_merge.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..efc6c501a1b18391687f68f3f4ed577e78b585a8 --- /dev/null +++ b/Analysis_code/1.data_preprocessing/0.air_data_merge.ipynb @@ -0,0 +1,1469 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Package Version\n", + "----------------------------- ------------------\n", + "absl-py 1.4.0\n", + "accelerate 0.24.0.dev0\n", + "aiofiles 23.2.1\n", + "aiohttp 3.8.5\n", + "aiosignal 1.3.1\n", + "alabaster 0.7.13\n", + "albumentations 1.3.1\n", + "alembic 1.12.0\n", + "annotated-types 0.5.0\n", + "anyio 4.0.0\n", + "appdirs 1.4.4\n", + "argon2-cffi 23.1.0\n", + "argon2-cffi-bindings 21.2.0\n", + "array-record 0.4.1\n", + "arrow 1.2.3\n", + "asttokens 2.4.0\n", + "astunparse 1.6.3\n", + "async-lru 2.0.4\n", + "async-timeout 4.0.3\n", + "attrs 23.1.0\n", + "audioread 3.0.0\n", + "Babel 2.12.1\n", + "backcall 0.2.0\n", + "backoff 2.2.1\n", + "bcrypt 4.0.1\n", + "beautifulsoup4 4.12.2\n", + "bitsandbytes 0.41.1\n", + "black 23.9.1\n", + "bleach 6.0.0\n", + "blis 0.7.10\n", + "branca 0.6.0\n", + "Brotli 1.1.0\n", + "cachetools 5.3.1\n", + "captum 0.6.0\n", + "catalogue 2.0.9\n", + "catalyst 22.4\n", + "catboost 1.2.1.1\n", + "certifi 2023.7.22\n", + "cffi 1.15.1\n", + "charset-normalizer 3.2.0\n", + "chroma-hnswlib 0.7.3\n", + "chromadb 0.4.10\n", + "click 8.1.7\n", + "cloudpickle 2.2.1\n", + "cmaes 0.10.0\n", + "cmake 3.27.5\n", + "cmdstanpy 1.1.0\n", + "coloredlogs 15.0.1\n", + "colorlog 6.7.0\n", + "comm 0.1.4\n", + "confection 0.1.3\n", + "contourpy 1.1.1\n", + "convertdate 2.4.0\n", + "cubinlinker-cu11 0.3.0.post1\n", + "cuda-python 11.8.2\n", + "cudf-cu11 23.8.0\n", + "cuml-cu11 23.8.0\n", + "cupy-cuda11x 12.2.0\n", + "curio 1.6\n", + "customized-konlpy 0.0.64\n", + "cycler 0.11.0\n", + "cymem 2.0.8\n", + "cysignals 1.11.2\n", + "Cython 3.0.2\n", + "dask 2023.7.1\n", + "dask-cuda 23.8.0\n", + "dask-cudf-cu11 23.8.0\n", + "dataclasses-json 0.5.14\n", + "datasets 2.14.5\n", + "debugpy 1.8.0\n", + "decorator 5.1.1\n", + "defusedxml 0.7.1\n", + "dill 0.3.7\n", + "distributed 2023.7.1\n", + "dm-tree 0.1.8\n", + "dnspython 2.4.2\n", + "docker-pycreds 0.4.0\n", + "docrepr 0.2.0\n", + "docutils 0.18.1\n", + "duckduckgo-search 3.8.5\n", + "entrypoints 0.4\n", + "ephem 4.1.4\n", + "etils 1.4.1\n", + "exceptiongroup 1.1.3\n", + "executing 1.2.0\n", + "fastai 2.7.12\n", + "fastapi 0.99.1\n", + "fastcore 1.5.29\n", + "fastdownload 0.0.7\n", + "fastjsonschema 2.18.0\n", + "fastprogress 1.0.3\n", + "fastrlock 0.8.2\n", + "fasttext 0.9.2\n", + "filelock 3.12.4\n", + "flatbuffers 23.5.26\n", + "folium 0.14.0\n", + "fonttools 4.42.1\n", + "fqdn 1.5.1\n", + "frozenlist 1.4.0\n", + "fsspec 2023.6.0\n", + "future 0.18.3\n", + "fvcore 0.1.5.post20221221\n", + "gast 0.4.0\n", + "gensim 4.3.2\n", + "gitdb 4.0.10\n", + "GitPython 3.1.36\n", + "google-auth 2.23.0\n", + "google-auth-oauthlib 1.0.0\n", + "google-pasta 0.2.0\n", + "googleapis-common-protos 1.60.0\n", + "graphviz 0.20.1\n", + "greenlet 2.0.2\n", + "grpcio 1.58.0\n", + "h11 0.14.0\n", + "h2 4.1.0\n", + "h5py 3.9.0\n", + "holidays 0.33\n", + "hpack 4.0.0\n", + "httpcore 0.18.0\n", + "httptools 0.6.0\n", + "httpx 0.25.0\n", + "huggingface-hub 0.16.4\n", + "humanfriendly 10.0\n", + "hydra-slayer 0.4.1\n", + "hyperframe 6.0.1\n", + "hyperopt 0.2.7\n", + "idna 3.4\n", + "imageio 2.31.3\n", + "imagesize 1.4.1\n", + "importlib-metadata 6.8.0\n", + "importlib-resources 6.0.1\n", + "iniconfig 2.0.0\n", + "intel-openmp 2023.2.0\n", + "iopath 0.1.10\n", + "ipykernel 6.25.2\n", + "ipyparallel 8.6.1\n", + "ipython 8.15.0\n", + "ipython-genutils 0.2.0\n", + "ipywidgets 8.1.1\n", + "isoduration 20.11.0\n", + "jedi 0.19.0\n", + "Jinja2 3.1.2\n", + "joblib 1.3.2\n", + "JPype1 1.4.1\n", + "JPype1-py3 0.5.5.4\n", + "json5 0.9.14\n", + "jsonpointer 2.4\n", + "jsonschema 4.19.0\n", + "jsonschema-specifications 2023.7.1\n", + "jupyter 1.0.0\n", + "jupyter_client 8.3.1\n", + "jupyter-console 6.6.3\n", + "jupyter_core 5.3.1\n", + "jupyter-events 0.7.0\n", + "jupyter-lsp 2.2.0\n", + "jupyter_server 2.7.3\n", + "jupyter_server_terminals 0.4.4\n", + "jupyterlab 4.0.6\n", + "jupyterlab-pygments 0.2.2\n", + "jupyterlab_server 2.25.0\n", + "jupyterlab-widgets 3.0.9\n", + "jupyterthemes 0.20.0\n", + "kaggle 1.5.16\n", + "keras 2.13.1\n", + "kiwisolver 1.4.5\n", + "konlpy 0.6.0\n", + "kornia 0.7.0\n", + "krwordrank 1.0.3\n", + "langchain 0.0.295\n", + "langcodes 3.3.0\n", + "langsmith 0.0.38\n", + "lazy_loader 0.3\n", + "lesscpy 0.15.1\n", + "libclang 16.0.6\n", + "librosa 0.10.1\n", + "lightgbm 4.1.0\n", + "lit 16.0.6\n", + "llvmlite 0.40.1\n", + "locket 1.0.0\n", + "loguru 0.7.2\n", + "LunarCalendar 0.0.9\n", + "lxml 4.9.3\n", + "Mako 1.2.4\n", + "Markdown 3.4.4\n", + "MarkupSafe 2.1.3\n", + "marshmallow 3.20.1\n", + "matplotlib 3.8.0\n", + "matplotlib-inline 0.1.6\n", + "mecab-python3 1.0.7\n", + "missingno 0.5.2\n", + "mistune 3.0.1\n", + "mkl 2023.2.0\n", + "mlxtend 0.22.0\n", + "monotonic 1.6\n", + "mpmath 1.3.0\n", + "msgpack 1.0.5\n", + "multidict 6.0.4\n", + "multiprocess 0.70.15\n", + "murmurhash 1.0.10\n", + "mypy-extensions 1.0.0\n", + "nbclient 0.8.0\n", + "nbconvert 7.8.0\n", + "nbformat 5.9.2\n", + "nest-asyncio 1.5.8\n", + "networkx 3.1\n", + "nltk 3.8.1\n", + "notebook 7.0.3\n", + "notebook_shim 0.2.3\n", + "numba 0.57.1\n", + "numexpr 2.8.6\n", + "numpy 1.24.3\n", + "nvidia-cublas-cu11 11.10.3.66\n", + "nvidia-cuda-cupti-cu11 11.7.101\n", + "nvidia-cuda-nvrtc-cu11 11.7.99\n", + "nvidia-cuda-runtime-cu11 11.7.99\n", + "nvidia-cudnn-cu11 8.5.0.96\n", + "nvidia-cufft-cu11 10.9.0.58\n", + "nvidia-curand-cu11 10.2.10.91\n", + "nvidia-cusolver-cu11 11.4.0.1\n", + "nvidia-cusparse-cu11 11.7.4.91\n", + "nvidia-nccl-cu11 2.14.3\n", + "nvidia-nvtx-cu11 11.7.91\n", + "nvtx 0.2.8\n", + "oauthlib 3.2.2\n", + "onnxruntime 1.15.1\n", + "openai 0.28.0\n", + "opencv-python 4.8.0.76\n", + "opencv-python-headless 4.8.0.76\n", + "opt-einsum 3.3.0\n", + "optuna 3.3.0\n", + "outcome 1.2.0\n", + "overrides 7.4.0\n", + "packaging 23.1\n", + "pandas 1.5.3\n", + "pandocfilters 1.5.0\n", + "parso 0.8.3\n", + "partd 1.4.0\n", + "pathspec 0.11.2\n", + "pathtools 0.1.2\n", + "pathy 0.10.2\n", + "patsy 0.5.3\n", + "peft 0.6.0.dev0\n", + "pexpect 4.8.0\n", + "pickleshare 0.7.5\n", + "Pillow 10.0.1\n", + "pinecone-client 2.2.4\n", + "pip 23.2.1\n", + "platformdirs 3.10.0\n", + "plotly 5.17.0\n", + "pluggy 1.3.0\n", + "ply 3.11\n", + "pooch 1.7.0\n", + "portalocker 2.8.2\n", + "posthog 3.0.2\n", + "preshed 3.0.9\n", + "prometheus-client 0.17.1\n", + "promise 2.3\n", + "prompt-toolkit 3.0.39\n", + "prophet 1.1.4\n", + "protobuf 4.24.3\n", + "psutil 5.9.5\n", + "ptxcompiler-cu11 0.7.0.post1\n", + "ptyprocess 0.7.0\n", + "pulsar-client 3.3.0\n", + "pure-eval 0.2.2\n", + "py 1.11.0\n", + "py4j 0.10.9.7\n", + "pyarrow 11.0.0\n", + "pyasn1 0.5.0\n", + "pyasn1-modules 0.3.0\n", + "pybind11 2.11.1\n", + "pycparser 2.21\n", + "pydantic 1.10.12\n", + "pydantic_core 2.6.3\n", + "pydicom 2.4.3\n", + "pyfasttext 0.4.6\n", + "Pygments 2.16.1\n", + "pygraphviz 1.11\n", + "pylibraft-cu11 23.8.0\n", + "PyMeeus 0.5.12\n", + "PyMySQL 1.1.0\n", + "pynvml 11.4.1\n", + "pyparsing 3.1.1\n", + "pypdf 3.16.1\n", + "PyPika 0.48.9\n", + "pystan 2.19.1.1\n", + "pytest 6.2.5\n", + "pytest-asyncio 0.20.3\n", + "python-dateutil 2.8.2\n", + "python-dotenv 1.0.0\n", + "python-json-logger 2.0.7\n", + "python-slugify 8.0.1\n", + "pytz 2023.3.post1\n", + "PyWavelets 1.4.1\n", + "PyYAML 6.0.1\n", + "pyzmq 25.1.1\n", + "qtconsole 5.4.4\n", + "QtPy 2.4.0\n", + "qudida 0.0.4\n", + "raft-dask-cu11 23.8.0\n", + "referencing 0.30.2\n", + "regex 2023.8.8\n", + "requests 2.31.0\n", + "requests-oauthlib 1.3.1\n", + "rfc3339-validator 0.1.4\n", + "rfc3986-validator 0.1.1\n", + "rmm-cu11 23.8.0\n", + "rpds-py 0.10.3\n", + "rsa 4.9\n", + "safetensors 0.3.3\n", + "scikit-image 0.21.0\n", + "scikit-learn 1.3.0\n", + "scipy 1.11.2\n", + "seaborn 0.12.2\n", + "Send2Trash 1.8.2\n", + "sentencepiece 0.1.99\n", + "sentry-sdk 1.31.0\n", + "setproctitle 1.3.2\n", + "setuptools 68.0.0\n", + "shap 0.42.1\n", + "six 1.16.0\n", + "slicer 0.0.7\n", + "smart-open 6.4.0\n", + "smmap 5.0.1\n", + "sniffio 1.3.0\n", + "snowballstemmer 2.2.0\n", + "socksio 1.0.0\n", + "sortedcontainers 2.4.0\n", + "soundfile 0.12.1\n", + "soupsieve 2.5\n", + "soxr 0.3.6\n", + "soynlp 0.0.493\n", + "soyspacing 1.0.17\n", + "spacy 3.6.1\n", + "spacy-legacy 3.0.12\n", + "spacy-loggers 1.0.5\n", + "Sphinx 7.2.6\n", + "sphinx-rtd-theme 1.3.0\n", + "sphinxcontrib-applehelp 1.0.7\n", + "sphinxcontrib-devhelp 1.0.5\n", + "sphinxcontrib-htmlhelp 2.0.4\n", + "sphinxcontrib-jquery 4.1\n", + "sphinxcontrib-jsmath 1.0.1\n", + "sphinxcontrib-qthelp 1.0.6\n", + "sphinxcontrib-serializinghtml 1.1.9\n", + "SQLAlchemy 2.0.21\n", + "srsly 2.4.7\n", + "stack-data 0.6.2\n", + "starlette 0.27.0\n", + "statsmodels 0.14.0\n", + "sympy 1.12\n", + "tabulate 0.9.0\n", + "tbb 2021.10.0\n", + "tblib 2.0.0\n", + "tenacity 8.2.3\n", + "tensorboard 2.13.0\n", + "tensorboard-data-server 0.7.1\n", + "tensorboardX 2.6.2.2\n", + "tensorflow 2.13.0\n", + "tensorflow-datasets 4.9.3\n", + "tensorflow-estimator 2.13.0\n", + "tensorflow-io-gcs-filesystem 0.34.0\n", + "tensorflow-metadata 1.14.0\n", + "termcolor 2.3.0\n", + "terminado 0.17.1\n", + "testpath 0.6.0\n", + "text-unidecode 1.3\n", + "thinc 8.1.12\n", + "threadpoolctl 3.2.0\n", + "tifffile 2023.9.18\n", + "tiktoken 0.5.1\n", + "tinycss2 1.2.1\n", + "tokenizers 0.14.0\n", + "toml 0.10.2\n", + "tomli 2.0.1\n", + "toolz 0.12.0\n", + "torch 2.0.0\n", + "torchaudio 2.0.2+cu118\n", + "torchdata 0.6.0\n", + "torchsummary 1.5.1\n", + "torchtext 0.15.1\n", + "torchtriton 2.0.0+f16138d447\n", + "torchvision 0.15.2\n", + "tornado 6.3.3\n", + "tqdm 4.66.1\n", + "traitlets 5.10.0\n", + "transformers 4.34.0.dev0\n", + "treelite 3.2.0\n", + "treelite-runtime 3.2.0\n", + "trio 0.22.2\n", + "triton 2.0.0\n", + "typer 0.9.0\n", + "typing_extensions 4.5.0\n", + "typing-inspect 0.9.0\n", + "tzdata 2023.3\n", + "ucx-py-cu11 0.33.0\n", + "uri-template 1.3.0\n", + "urllib3 1.26.16\n", + "uvicorn 0.23.2\n", + "uvloop 0.17.0\n", + "wandb 0.15.10\n", + "wasabi 1.1.2\n", + "watchfiles 0.20.0\n", + "wcwidth 0.2.6\n", + "webcolors 1.13\n", + "webencodings 0.5.1\n", + "websocket-client 1.6.3\n", + "websockets 11.0.3\n", + "Werkzeug 2.3.7\n", + "wheel 0.38.4\n", + "widgetsnbextension 4.0.9\n", + "wordcloud 1.9.2\n", + "wrapt 1.15.0\n", + "xgboost 2.0.0\n", + "xxhash 3.3.0\n", + "yacs 0.1.8\n", + "yarl 1.9.2\n", + "zict 3.0.0\n", + "zipp 3.17.0\n" + ] + } + ], + "source": [ + "!pip list" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'numpy'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mos\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mnumpy\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mnp\u001b[39;00m\n\u001b[32m 3\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpandas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpd\u001b[39;00m\n\u001b[32m 4\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mnatsort\u001b[39;00m\n", + "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'numpy'" + ] + } + ], + "source": [ + "import os\n", + "import numpy as np\n", + "import pandas as pd\n", + "import natsort\n", + "from datetime import datetime\n", + "from tqdm.auto import tqdm" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def get_data(year):\n", + " files = natsort.natsorted(os.listdir(f'../../data/대기질/{year}/'))\n", + " data = []\n", + " for file in tqdm(files, desc=f\"Reading files...({len(files)})\"):\n", + " data.append(pd.read_excel(f'../../data/대기질/{year}/{file}', usecols=[\"지역\", '망', \"측정소코드\", \"측정소명\", \"측정일시\", \"O3\", \"NO2\", \"PM10\", \"PM25\", \"주소\"]))\n", + "\n", + " return pd.concat(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# 합친 데이터에 날짜 정보를 추가한다.\n", + "def add_date(df):\n", + "\n", + " df[\"측정일시\"] = df[\"측정일시\"].astype(str).str[:10]\n", + " df[\"측정일시\"] = pd.to_datetime(df[\"측정일시\"], format='%Y%m%d%H', errors=\"coerce\")\n", + "\n", + " df[\"year\"] = df[\"측정일시\"].dt.year\n", + " df[\"month\"] = df[\"측정일시\"].dt.month\n", + " df[\"day\"] = df[\"측정일시\"].dt.day\n", + " df[\"hour\"] = df[\"측정일시\"].dt.hour\n", + "\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 0%| | 0/6 [00:00\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour
0서울 중구도시대기111121중구2023-07-01 01:00:000.02490.018821.019.0서울 중구 덕수궁길 152023.07.01.01.0
1서울 중구도시대기111121중구2023-07-01 02:00:000.02630.016318.015.0서울 중구 덕수궁길 152023.07.01.02.0
2서울 중구도시대기111121중구2023-07-01 03:00:000.02180.019224.021.0서울 중구 덕수궁길 152023.07.01.03.0
3서울 중구도시대기111121중구2023-07-01 04:00:000.01310.021425.019.0서울 중구 덕수궁길 152023.07.01.04.0
4서울 중구도시대기111121중구2023-07-01 05:00:000.01310.016025.021.0서울 중구 덕수궁길 152023.07.01.05.0
5서울 중구도시대기111121중구2023-07-01 06:00:000.01150.019623.018.0서울 중구 덕수궁길 152023.07.01.06.0
6서울 중구도시대기111121중구2023-07-01 07:00:000.00940.023026.021.0서울 중구 덕수궁길 152023.07.01.07.0
7서울 중구도시대기111121중구2023-07-01 08:00:000.02220.017526.020.0서울 중구 덕수궁길 152023.07.01.08.0
8서울 중구도시대기111121중구2023-07-01 09:00:000.03960.015327.020.0서울 중구 덕수궁길 152023.07.01.09.0
9서울 중구도시대기111121중구2023-07-01 10:00:000.05300.010519.016.0서울 중구 덕수궁길 152023.07.01.010.0
10서울 중구도시대기111121중구2023-07-01 11:00:000.06070.009020.020.0서울 중구 덕수궁길 152023.07.01.011.0
11서울 중구도시대기111121중구2023-07-01 12:00:000.06880.011420.017.0서울 중구 덕수궁길 152023.07.01.012.0
12서울 중구도시대기111121중구2023-07-01 13:00:000.07580.010123.017.0서울 중구 덕수궁길 152023.07.01.013.0
13서울 중구도시대기111121중구2023-07-01 14:00:000.07430.009320.017.0서울 중구 덕수궁길 152023.07.01.014.0
14서울 중구도시대기111121중구2023-07-01 15:00:000.07490.010019.011.0서울 중구 덕수궁길 152023.07.01.015.0
15서울 중구도시대기111121중구2023-07-01 16:00:000.07160.009219.015.0서울 중구 덕수궁길 152023.07.01.016.0
16서울 중구도시대기111121중구2023-07-01 17:00:000.06130.009918.015.0서울 중구 덕수궁길 152023.07.01.017.0
17서울 중구도시대기111121중구2023-07-01 18:00:000.04960.009818.014.0서울 중구 덕수궁길 152023.07.01.018.0
18서울 중구도시대기111121중구2023-07-01 19:00:000.04730.012417.017.0서울 중구 덕수궁길 152023.07.01.019.0
19서울 중구도시대기111121중구2023-07-01 20:00:000.04980.017017.015.0서울 중구 덕수궁길 152023.07.01.020.0
20서울 중구도시대기111121중구2023-07-01 21:00:000.06160.013423.020.0서울 중구 덕수궁길 152023.07.01.021.0
21서울 중구도시대기111121중구2023-07-01 22:00:000.05430.010918.016.0서울 중구 덕수궁길 152023.07.01.022.0
22서울 중구도시대기111121중구2023-07-01 23:00:000.05070.011317.016.0서울 중구 덕수궁길 152023.07.01.023.0
23서울 중구도시대기111121중구NaT0.04270.012517.016.0서울 중구 덕수궁길 15NaNNaNNaNNaN
24서울 중구도시대기111121중구2023-07-02 01:00:000.03340.014821.020.0서울 중구 덕수궁길 152023.07.02.01.0
25서울 중구도시대기111121중구2023-07-02 02:00:000.03370.013322.018.0서울 중구 덕수궁길 152023.07.02.02.0
26서울 중구도시대기111121중구2023-07-02 03:00:000.02600.016225.020.0서울 중구 덕수궁길 152023.07.02.03.0
27서울 중구도시대기111121중구2023-07-02 04:00:000.01950.017922.018.0서울 중구 덕수궁길 152023.07.02.04.0
28서울 중구도시대기111121중구2023-07-02 05:00:000.01710.017019.017.0서울 중구 덕수궁길 152023.07.02.05.0
29서울 중구도시대기111121중구2023-07-02 06:00:000.01810.014514.010.0서울 중구 덕수궁길 152023.07.02.06.0
30서울 중구도시대기111121중구2023-07-02 07:00:000.01740.015611.010.0서울 중구 덕수궁길 152023.07.02.07.0
31서울 중구도시대기111121중구2023-07-02 08:00:000.02130.014712.09.0서울 중구 덕수궁길 152023.07.02.08.0
32서울 중구도시대기111121중구2023-07-02 09:00:000.02670.014311.010.0서울 중구 덕수궁길 152023.07.02.09.0
33서울 중구도시대기111121중구2023-07-02 10:00:000.02890.015512.09.0서울 중구 덕수궁길 152023.07.02.010.0
34서울 중구도시대기111121중구2023-07-02 11:00:000.03810.010813.013.0서울 중구 덕수궁길 152023.07.02.011.0
35서울 중구도시대기111121중구2023-07-02 12:00:000.04410.007913.012.0서울 중구 덕수궁길 152023.07.02.012.0
36서울 중구도시대기111121중구2023-07-02 13:00:000.04890.00678.010.0서울 중구 덕수궁길 152023.07.02.013.0
37서울 중구도시대기111121중구2023-07-02 14:00:000.04980.007211.010.0서울 중구 덕수궁길 152023.07.02.014.0
38서울 중구도시대기111121중구2023-07-02 15:00:000.04590.007314.012.0서울 중구 덕수궁길 152023.07.02.015.0
39서울 중구도시대기111121중구2023-07-02 16:00:000.04740.007912.011.0서울 중구 덕수궁길 152023.07.02.016.0
\n", + "" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 O3 NO2 PM10 PM25 \\\n", + "0 서울 중구 도시대기 111121 중구 2023-07-01 01:00:00 0.0249 0.0188 21.0 19.0 \n", + "1 서울 중구 도시대기 111121 중구 2023-07-01 02:00:00 0.0263 0.0163 18.0 15.0 \n", + "2 서울 중구 도시대기 111121 중구 2023-07-01 03:00:00 0.0218 0.0192 24.0 21.0 \n", + "3 서울 중구 도시대기 111121 중구 2023-07-01 04:00:00 0.0131 0.0214 25.0 19.0 \n", + "4 서울 중구 도시대기 111121 중구 2023-07-01 05:00:00 0.0131 0.0160 25.0 21.0 \n", + "5 서울 중구 도시대기 111121 중구 2023-07-01 06:00:00 0.0115 0.0196 23.0 18.0 \n", + "6 서울 중구 도시대기 111121 중구 2023-07-01 07:00:00 0.0094 0.0230 26.0 21.0 \n", + "7 서울 중구 도시대기 111121 중구 2023-07-01 08:00:00 0.0222 0.0175 26.0 20.0 \n", + "8 서울 중구 도시대기 111121 중구 2023-07-01 09:00:00 0.0396 0.0153 27.0 20.0 \n", + "9 서울 중구 도시대기 111121 중구 2023-07-01 10:00:00 0.0530 0.0105 19.0 16.0 \n", + "10 서울 중구 도시대기 111121 중구 2023-07-01 11:00:00 0.0607 0.0090 20.0 20.0 \n", + "11 서울 중구 도시대기 111121 중구 2023-07-01 12:00:00 0.0688 0.0114 20.0 17.0 \n", + "12 서울 중구 도시대기 111121 중구 2023-07-01 13:00:00 0.0758 0.0101 23.0 17.0 \n", + "13 서울 중구 도시대기 111121 중구 2023-07-01 14:00:00 0.0743 0.0093 20.0 17.0 \n", + "14 서울 중구 도시대기 111121 중구 2023-07-01 15:00:00 0.0749 0.0100 19.0 11.0 \n", + "15 서울 중구 도시대기 111121 중구 2023-07-01 16:00:00 0.0716 0.0092 19.0 15.0 \n", + "16 서울 중구 도시대기 111121 중구 2023-07-01 17:00:00 0.0613 0.0099 18.0 15.0 \n", + "17 서울 중구 도시대기 111121 중구 2023-07-01 18:00:00 0.0496 0.0098 18.0 14.0 \n", + "18 서울 중구 도시대기 111121 중구 2023-07-01 19:00:00 0.0473 0.0124 17.0 17.0 \n", + "19 서울 중구 도시대기 111121 중구 2023-07-01 20:00:00 0.0498 0.0170 17.0 15.0 \n", + "20 서울 중구 도시대기 111121 중구 2023-07-01 21:00:00 0.0616 0.0134 23.0 20.0 \n", + "21 서울 중구 도시대기 111121 중구 2023-07-01 22:00:00 0.0543 0.0109 18.0 16.0 \n", + "22 서울 중구 도시대기 111121 중구 2023-07-01 23:00:00 0.0507 0.0113 17.0 16.0 \n", + "23 서울 중구 도시대기 111121 중구 NaT 0.0427 0.0125 17.0 16.0 \n", + "24 서울 중구 도시대기 111121 중구 2023-07-02 01:00:00 0.0334 0.0148 21.0 20.0 \n", + "25 서울 중구 도시대기 111121 중구 2023-07-02 02:00:00 0.0337 0.0133 22.0 18.0 \n", + "26 서울 중구 도시대기 111121 중구 2023-07-02 03:00:00 0.0260 0.0162 25.0 20.0 \n", + "27 서울 중구 도시대기 111121 중구 2023-07-02 04:00:00 0.0195 0.0179 22.0 18.0 \n", + "28 서울 중구 도시대기 111121 중구 2023-07-02 05:00:00 0.0171 0.0170 19.0 17.0 \n", + "29 서울 중구 도시대기 111121 중구 2023-07-02 06:00:00 0.0181 0.0145 14.0 10.0 \n", + "30 서울 중구 도시대기 111121 중구 2023-07-02 07:00:00 0.0174 0.0156 11.0 10.0 \n", + "31 서울 중구 도시대기 111121 중구 2023-07-02 08:00:00 0.0213 0.0147 12.0 9.0 \n", + "32 서울 중구 도시대기 111121 중구 2023-07-02 09:00:00 0.0267 0.0143 11.0 10.0 \n", + "33 서울 중구 도시대기 111121 중구 2023-07-02 10:00:00 0.0289 0.0155 12.0 9.0 \n", + "34 서울 중구 도시대기 111121 중구 2023-07-02 11:00:00 0.0381 0.0108 13.0 13.0 \n", + "35 서울 중구 도시대기 111121 중구 2023-07-02 12:00:00 0.0441 0.0079 13.0 12.0 \n", + "36 서울 중구 도시대기 111121 중구 2023-07-02 13:00:00 0.0489 0.0067 8.0 10.0 \n", + "37 서울 중구 도시대기 111121 중구 2023-07-02 14:00:00 0.0498 0.0072 11.0 10.0 \n", + "38 서울 중구 도시대기 111121 중구 2023-07-02 15:00:00 0.0459 0.0073 14.0 12.0 \n", + "39 서울 중구 도시대기 111121 중구 2023-07-02 16:00:00 0.0474 0.0079 12.0 11.0 \n", + "\n", + " 주소 year month day hour \n", + "0 서울 중구 덕수궁길 15 2023.0 7.0 1.0 1.0 \n", + "1 서울 중구 덕수궁길 15 2023.0 7.0 1.0 2.0 \n", + "2 서울 중구 덕수궁길 15 2023.0 7.0 1.0 3.0 \n", + "3 서울 중구 덕수궁길 15 2023.0 7.0 1.0 4.0 \n", + "4 서울 중구 덕수궁길 15 2023.0 7.0 1.0 5.0 \n", + "5 서울 중구 덕수궁길 15 2023.0 7.0 1.0 6.0 \n", + "6 서울 중구 덕수궁길 15 2023.0 7.0 1.0 7.0 \n", + "7 서울 중구 덕수궁길 15 2023.0 7.0 1.0 8.0 \n", + "8 서울 중구 덕수궁길 15 2023.0 7.0 1.0 9.0 \n", + "9 서울 중구 덕수궁길 15 2023.0 7.0 1.0 10.0 \n", + "10 서울 중구 덕수궁길 15 2023.0 7.0 1.0 11.0 \n", + "11 서울 중구 덕수궁길 15 2023.0 7.0 1.0 12.0 \n", + "12 서울 중구 덕수궁길 15 2023.0 7.0 1.0 13.0 \n", + "13 서울 중구 덕수궁길 15 2023.0 7.0 1.0 14.0 \n", + "14 서울 중구 덕수궁길 15 2023.0 7.0 1.0 15.0 \n", + "15 서울 중구 덕수궁길 15 2023.0 7.0 1.0 16.0 \n", + "16 서울 중구 덕수궁길 15 2023.0 7.0 1.0 17.0 \n", + "17 서울 중구 덕수궁길 15 2023.0 7.0 1.0 18.0 \n", + "18 서울 중구 덕수궁길 15 2023.0 7.0 1.0 19.0 \n", + "19 서울 중구 덕수궁길 15 2023.0 7.0 1.0 20.0 \n", + "20 서울 중구 덕수궁길 15 2023.0 7.0 1.0 21.0 \n", + "21 서울 중구 덕수궁길 15 2023.0 7.0 1.0 22.0 \n", + "22 서울 중구 덕수궁길 15 2023.0 7.0 1.0 23.0 \n", + "23 서울 중구 덕수궁길 15 NaN NaN NaN NaN \n", + "24 서울 중구 덕수궁길 15 2023.0 7.0 2.0 1.0 \n", + "25 서울 중구 덕수궁길 15 2023.0 7.0 2.0 2.0 \n", + "26 서울 중구 덕수궁길 15 2023.0 7.0 2.0 3.0 \n", + "27 서울 중구 덕수궁길 15 2023.0 7.0 2.0 4.0 \n", + "28 서울 중구 덕수궁길 15 2023.0 7.0 2.0 5.0 \n", + "29 서울 중구 덕수궁길 15 2023.0 7.0 2.0 6.0 \n", + "30 서울 중구 덕수궁길 15 2023.0 7.0 2.0 7.0 \n", + "31 서울 중구 덕수궁길 15 2023.0 7.0 2.0 8.0 \n", + "32 서울 중구 덕수궁길 15 2023.0 7.0 2.0 9.0 \n", + "33 서울 중구 덕수궁길 15 2023.0 7.0 2.0 10.0 \n", + "34 서울 중구 덕수궁길 15 2023.0 7.0 2.0 11.0 \n", + "35 서울 중구 덕수궁길 15 2023.0 7.0 2.0 12.0 \n", + "36 서울 중구 덕수궁길 15 2023.0 7.0 2.0 13.0 \n", + "37 서울 중구 덕수궁길 15 2023.0 7.0 2.0 14.0 \n", + "38 서울 중구 덕수궁길 15 2023.0 7.0 2.0 15.0 \n", + "39 서울 중구 덕수궁길 15 2023.0 7.0 2.0 16.0 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.head(40)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/Analysis_code/1.data_preprocessing/1.data_merge.ipynb b/Analysis_code/1.data_preprocessing/1.data_merge.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..d2138aad65c45a54e59725dd9ed944963e9975f0 --- /dev/null +++ b/Analysis_code/1.data_preprocessing/1.data_merge.ipynb @@ -0,0 +1,18714 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from tqdm import trange, notebook, tqdm\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "air_2017= pd.read_excel(\"../../data/대기질/2017_12.xlsx\") " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시SO2COO3NO2PM10PM25주소
0서울 중구도시대기111121중구20171201010.0040.40.0280.01622.014.0서울 중구 덕수궁길 15
1서울 중구도시대기111121중구20171201020.0040.40.0270.01518.011.0서울 중구 덕수궁길 15
2서울 중구도시대기111121중구20171201030.0040.40.0300.01118.013.0서울 중구 덕수궁길 15
3서울 중구도시대기111121중구20171201040.0040.40.0330.00818.011.0서울 중구 덕수궁길 15
4서울 중구도시대기111121중구20171201050.0040.40.0330.00818.09.0서울 중구 덕수궁길 15
5서울 중구도시대기111121중구20171201060.0040.40.0270.01417.010.0서울 중구 덕수궁길 15
6서울 중구도시대기111121중구20171201070.0040.40.0200.02116.010.0서울 중구 덕수궁길 15
7서울 중구도시대기111121중구20171201080.0040.50.0060.03918.010.0서울 중구 덕수궁길 15
8서울 중구도시대기111121중구20171201090.0040.60.0060.04319.011.0서울 중구 덕수궁길 15
9서울 중구도시대기111121중구20171201100.0040.80.0050.04720.011.0서울 중구 덕수궁길 15
10서울 중구도시대기111121중구20171201110.0050.70.0060.04927.014.0서울 중구 덕수궁길 15
11서울 중구도시대기111121중구20171201120.0040.60.0080.04625.014.0서울 중구 덕수궁길 15
12서울 중구도시대기111121중구20171201130.0040.50.0140.03622.010.0서울 중구 덕수궁길 15
13서울 중구도시대기111121중구20171201140.0040.50.0150.03723.014.0서울 중구 덕수궁길 15
14서울 중구도시대기111121중구20171201150.0050.50.0140.03829.018.0서울 중구 덕수궁길 15
15서울 중구도시대기111121중구20171201160.0050.40.0160.03322.012.0서울 중구 덕수궁길 15
16서울 중구도시대기111121중구20171201170.0040.40.0140.03320.010.0서울 중구 덕수궁길 15
17서울 중구도시대기111121중구20171201180.0040.40.0050.04420.011.0서울 중구 덕수궁길 15
18서울 중구도시대기111121중구20171201190.0040.60.0020.04822.013.0서울 중구 덕수궁길 15
19서울 중구도시대기111121중구20171201200.0040.60.0020.04924.016.0서울 중구 덕수궁길 15
20서울 중구도시대기111121중구20171201210.0040.60.0020.04922.017.0서울 중구 덕수궁길 15
21서울 중구도시대기111121중구20171201220.0040.70.0010.05223.016.0서울 중구 덕수궁길 15
22서울 중구도시대기111121중구20171201230.0040.70.0020.05325.017.0서울 중구 덕수궁길 15
23서울 중구도시대기111121중구20171201240.0040.80.0020.05626.018.0서울 중구 덕수궁길 15
24서울 중구도시대기111121중구20171202010.0040.90.0020.05529.020.0서울 중구 덕수궁길 15
25서울 중구도시대기111121중구20171202020.0040.90.0020.05129.020.0서울 중구 덕수궁길 15
26서울 중구도시대기111121중구20171202030.0040.80.0020.04527.019.0서울 중구 덕수궁길 15
27서울 중구도시대기111121중구20171202040.0040.80.0020.04632.022.0서울 중구 덕수궁길 15
28서울 중구도시대기111121중구20171202050.0040.70.0020.04336.027.0서울 중구 덕수궁길 15
29서울 중구도시대기111121중구20171202060.0040.80.0020.04433.022.0서울 중구 덕수궁길 15
\n", + "
" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 SO2 CO O3 NO2 PM10 \\\n", + "0 서울 중구 도시대기 111121 중구 2017120101 0.004 0.4 0.028 0.016 22.0 \n", + "1 서울 중구 도시대기 111121 중구 2017120102 0.004 0.4 0.027 0.015 18.0 \n", + "2 서울 중구 도시대기 111121 중구 2017120103 0.004 0.4 0.030 0.011 18.0 \n", + "3 서울 중구 도시대기 111121 중구 2017120104 0.004 0.4 0.033 0.008 18.0 \n", + "4 서울 중구 도시대기 111121 중구 2017120105 0.004 0.4 0.033 0.008 18.0 \n", + "5 서울 중구 도시대기 111121 중구 2017120106 0.004 0.4 0.027 0.014 17.0 \n", + "6 서울 중구 도시대기 111121 중구 2017120107 0.004 0.4 0.020 0.021 16.0 \n", + "7 서울 중구 도시대기 111121 중구 2017120108 0.004 0.5 0.006 0.039 18.0 \n", + "8 서울 중구 도시대기 111121 중구 2017120109 0.004 0.6 0.006 0.043 19.0 \n", + "9 서울 중구 도시대기 111121 중구 2017120110 0.004 0.8 0.005 0.047 20.0 \n", + "10 서울 중구 도시대기 111121 중구 2017120111 0.005 0.7 0.006 0.049 27.0 \n", + "11 서울 중구 도시대기 111121 중구 2017120112 0.004 0.6 0.008 0.046 25.0 \n", + "12 서울 중구 도시대기 111121 중구 2017120113 0.004 0.5 0.014 0.036 22.0 \n", + "13 서울 중구 도시대기 111121 중구 2017120114 0.004 0.5 0.015 0.037 23.0 \n", + "14 서울 중구 도시대기 111121 중구 2017120115 0.005 0.5 0.014 0.038 29.0 \n", + "15 서울 중구 도시대기 111121 중구 2017120116 0.005 0.4 0.016 0.033 22.0 \n", + "16 서울 중구 도시대기 111121 중구 2017120117 0.004 0.4 0.014 0.033 20.0 \n", + "17 서울 중구 도시대기 111121 중구 2017120118 0.004 0.4 0.005 0.044 20.0 \n", + "18 서울 중구 도시대기 111121 중구 2017120119 0.004 0.6 0.002 0.048 22.0 \n", + "19 서울 중구 도시대기 111121 중구 2017120120 0.004 0.6 0.002 0.049 24.0 \n", + "20 서울 중구 도시대기 111121 중구 2017120121 0.004 0.6 0.002 0.049 22.0 \n", + "21 서울 중구 도시대기 111121 중구 2017120122 0.004 0.7 0.001 0.052 23.0 \n", + "22 서울 중구 도시대기 111121 중구 2017120123 0.004 0.7 0.002 0.053 25.0 \n", + "23 서울 중구 도시대기 111121 중구 2017120124 0.004 0.8 0.002 0.056 26.0 \n", + "24 서울 중구 도시대기 111121 중구 2017120201 0.004 0.9 0.002 0.055 29.0 \n", + "25 서울 중구 도시대기 111121 중구 2017120202 0.004 0.9 0.002 0.051 29.0 \n", + "26 서울 중구 도시대기 111121 중구 2017120203 0.004 0.8 0.002 0.045 27.0 \n", + "27 서울 중구 도시대기 111121 중구 2017120204 0.004 0.8 0.002 0.046 32.0 \n", + "28 서울 중구 도시대기 111121 중구 2017120205 0.004 0.7 0.002 0.043 36.0 \n", + "29 서울 중구 도시대기 111121 중구 2017120206 0.004 0.8 0.002 0.044 33.0 \n", + "\n", + " PM25 주소 \n", + "0 14.0 서울 중구 덕수궁길 15 \n", + "1 11.0 서울 중구 덕수궁길 15 \n", + "2 13.0 서울 중구 덕수궁길 15 \n", + "3 11.0 서울 중구 덕수궁길 15 \n", + "4 9.0 서울 중구 덕수궁길 15 \n", + "5 10.0 서울 중구 덕수궁길 15 \n", + "6 10.0 서울 중구 덕수궁길 15 \n", + "7 10.0 서울 중구 덕수궁길 15 \n", + "8 11.0 서울 중구 덕수궁길 15 \n", + "9 11.0 서울 중구 덕수궁길 15 \n", + "10 14.0 서울 중구 덕수궁길 15 \n", + "11 14.0 서울 중구 덕수궁길 15 \n", + "12 10.0 서울 중구 덕수궁길 15 \n", + "13 14.0 서울 중구 덕수궁길 15 \n", + "14 18.0 서울 중구 덕수궁길 15 \n", + "15 12.0 서울 중구 덕수궁길 15 \n", + "16 10.0 서울 중구 덕수궁길 15 \n", + "17 11.0 서울 중구 덕수궁길 15 \n", + "18 13.0 서울 중구 덕수궁길 15 \n", + "19 16.0 서울 중구 덕수궁길 15 \n", + "20 17.0 서울 중구 덕수궁길 15 \n", + "21 16.0 서울 중구 덕수궁길 15 \n", + "22 17.0 서울 중구 덕수궁길 15 \n", + "23 18.0 서울 중구 덕수궁길 15 \n", + "24 20.0 서울 중구 덕수궁길 15 \n", + "25 20.0 서울 중구 덕수궁길 15 \n", + "26 19.0 서울 중구 덕수궁길 15 \n", + "27 22.0 서울 중구 덕수궁길 15 \n", + "28 27.0 서울 중구 덕수궁길 15 \n", + "29 22.0 서울 중구 덕수궁길 15 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air_2017.head(30)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "air_2017['year'] = air_2017['측정일시'].apply(lambda x: int(str(x)[:4])) # 년도\n", + "air_2017['month'] = air_2017['측정일시'].apply(lambda x: int(str(x)[4:6])) # 월\n", + "air_2017['day'] = air_2017['측정일시'].apply(lambda x: int(str(x)[6:8])) # 일\n", + "air_2017['hour'] = air_2017['측정일시'].apply(lambda x: int(str(x)[8:10])) # 시" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시SO2COO3NO2PM10PM25주소yearmonthdayhour
0서울 중구도시대기111121중구20171201010.0040.40.0280.01622.014.0서울 중구 덕수궁길 1520171211
1서울 중구도시대기111121중구20171201020.0040.40.0270.01518.011.0서울 중구 덕수궁길 1520171212
2서울 중구도시대기111121중구20171201030.0040.40.0300.01118.013.0서울 중구 덕수궁길 1520171213
3서울 중구도시대기111121중구20171201040.0040.40.0330.00818.011.0서울 중구 덕수궁길 1520171214
4서울 중구도시대기111121중구20171201050.0040.40.0330.00818.09.0서울 중구 덕수궁길 1520171215
5서울 중구도시대기111121중구20171201060.0040.40.0270.01417.010.0서울 중구 덕수궁길 1520171216
6서울 중구도시대기111121중구20171201070.0040.40.0200.02116.010.0서울 중구 덕수궁길 1520171217
7서울 중구도시대기111121중구20171201080.0040.50.0060.03918.010.0서울 중구 덕수궁길 1520171218
8서울 중구도시대기111121중구20171201090.0040.60.0060.04319.011.0서울 중구 덕수궁길 1520171219
9서울 중구도시대기111121중구20171201100.0040.80.0050.04720.011.0서울 중구 덕수궁길 15201712110
10서울 중구도시대기111121중구20171201110.0050.70.0060.04927.014.0서울 중구 덕수궁길 15201712111
11서울 중구도시대기111121중구20171201120.0040.60.0080.04625.014.0서울 중구 덕수궁길 15201712112
12서울 중구도시대기111121중구20171201130.0040.50.0140.03622.010.0서울 중구 덕수궁길 15201712113
13서울 중구도시대기111121중구20171201140.0040.50.0150.03723.014.0서울 중구 덕수궁길 15201712114
14서울 중구도시대기111121중구20171201150.0050.50.0140.03829.018.0서울 중구 덕수궁길 15201712115
15서울 중구도시대기111121중구20171201160.0050.40.0160.03322.012.0서울 중구 덕수궁길 15201712116
16서울 중구도시대기111121중구20171201170.0040.40.0140.03320.010.0서울 중구 덕수궁길 15201712117
17서울 중구도시대기111121중구20171201180.0040.40.0050.04420.011.0서울 중구 덕수궁길 15201712118
18서울 중구도시대기111121중구20171201190.0040.60.0020.04822.013.0서울 중구 덕수궁길 15201712119
19서울 중구도시대기111121중구20171201200.0040.60.0020.04924.016.0서울 중구 덕수궁길 15201712120
20서울 중구도시대기111121중구20171201210.0040.60.0020.04922.017.0서울 중구 덕수궁길 15201712121
21서울 중구도시대기111121중구20171201220.0040.70.0010.05223.016.0서울 중구 덕수궁길 15201712122
22서울 중구도시대기111121중구20171201230.0040.70.0020.05325.017.0서울 중구 덕수궁길 15201712123
23서울 중구도시대기111121중구20171201240.0040.80.0020.05626.018.0서울 중구 덕수궁길 15201712124
24서울 중구도시대기111121중구20171202010.0040.90.0020.05529.020.0서울 중구 덕수궁길 1520171221
25서울 중구도시대기111121중구20171202020.0040.90.0020.05129.020.0서울 중구 덕수궁길 1520171222
26서울 중구도시대기111121중구20171202030.0040.80.0020.04527.019.0서울 중구 덕수궁길 1520171223
27서울 중구도시대기111121중구20171202040.0040.80.0020.04632.022.0서울 중구 덕수궁길 1520171224
28서울 중구도시대기111121중구20171202050.0040.70.0020.04336.027.0서울 중구 덕수궁길 1520171225
29서울 중구도시대기111121중구20171202060.0040.80.0020.04433.022.0서울 중구 덕수궁길 1520171226
\n", + "
" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 SO2 CO O3 NO2 PM10 \\\n", + "0 서울 중구 도시대기 111121 중구 2017120101 0.004 0.4 0.028 0.016 22.0 \n", + "1 서울 중구 도시대기 111121 중구 2017120102 0.004 0.4 0.027 0.015 18.0 \n", + "2 서울 중구 도시대기 111121 중구 2017120103 0.004 0.4 0.030 0.011 18.0 \n", + "3 서울 중구 도시대기 111121 중구 2017120104 0.004 0.4 0.033 0.008 18.0 \n", + "4 서울 중구 도시대기 111121 중구 2017120105 0.004 0.4 0.033 0.008 18.0 \n", + "5 서울 중구 도시대기 111121 중구 2017120106 0.004 0.4 0.027 0.014 17.0 \n", + "6 서울 중구 도시대기 111121 중구 2017120107 0.004 0.4 0.020 0.021 16.0 \n", + "7 서울 중구 도시대기 111121 중구 2017120108 0.004 0.5 0.006 0.039 18.0 \n", + "8 서울 중구 도시대기 111121 중구 2017120109 0.004 0.6 0.006 0.043 19.0 \n", + "9 서울 중구 도시대기 111121 중구 2017120110 0.004 0.8 0.005 0.047 20.0 \n", + "10 서울 중구 도시대기 111121 중구 2017120111 0.005 0.7 0.006 0.049 27.0 \n", + "11 서울 중구 도시대기 111121 중구 2017120112 0.004 0.6 0.008 0.046 25.0 \n", + "12 서울 중구 도시대기 111121 중구 2017120113 0.004 0.5 0.014 0.036 22.0 \n", + "13 서울 중구 도시대기 111121 중구 2017120114 0.004 0.5 0.015 0.037 23.0 \n", + "14 서울 중구 도시대기 111121 중구 2017120115 0.005 0.5 0.014 0.038 29.0 \n", + "15 서울 중구 도시대기 111121 중구 2017120116 0.005 0.4 0.016 0.033 22.0 \n", + "16 서울 중구 도시대기 111121 중구 2017120117 0.004 0.4 0.014 0.033 20.0 \n", + "17 서울 중구 도시대기 111121 중구 2017120118 0.004 0.4 0.005 0.044 20.0 \n", + "18 서울 중구 도시대기 111121 중구 2017120119 0.004 0.6 0.002 0.048 22.0 \n", + "19 서울 중구 도시대기 111121 중구 2017120120 0.004 0.6 0.002 0.049 24.0 \n", + "20 서울 중구 도시대기 111121 중구 2017120121 0.004 0.6 0.002 0.049 22.0 \n", + "21 서울 중구 도시대기 111121 중구 2017120122 0.004 0.7 0.001 0.052 23.0 \n", + "22 서울 중구 도시대기 111121 중구 2017120123 0.004 0.7 0.002 0.053 25.0 \n", + "23 서울 중구 도시대기 111121 중구 2017120124 0.004 0.8 0.002 0.056 26.0 \n", + "24 서울 중구 도시대기 111121 중구 2017120201 0.004 0.9 0.002 0.055 29.0 \n", + "25 서울 중구 도시대기 111121 중구 2017120202 0.004 0.9 0.002 0.051 29.0 \n", + "26 서울 중구 도시대기 111121 중구 2017120203 0.004 0.8 0.002 0.045 27.0 \n", + "27 서울 중구 도시대기 111121 중구 2017120204 0.004 0.8 0.002 0.046 32.0 \n", + "28 서울 중구 도시대기 111121 중구 2017120205 0.004 0.7 0.002 0.043 36.0 \n", + "29 서울 중구 도시대기 111121 중구 2017120206 0.004 0.8 0.002 0.044 33.0 \n", + "\n", + " PM25 주소 year month day hour \n", + "0 14.0 서울 중구 덕수궁길 15 2017 12 1 1 \n", + "1 11.0 서울 중구 덕수궁길 15 2017 12 1 2 \n", + "2 13.0 서울 중구 덕수궁길 15 2017 12 1 3 \n", + "3 11.0 서울 중구 덕수궁길 15 2017 12 1 4 \n", + "4 9.0 서울 중구 덕수궁길 15 2017 12 1 5 \n", + "5 10.0 서울 중구 덕수궁길 15 2017 12 1 6 \n", + "6 10.0 서울 중구 덕수궁길 15 2017 12 1 7 \n", + "7 10.0 서울 중구 덕수궁길 15 2017 12 1 8 \n", + "8 11.0 서울 중구 덕수궁길 15 2017 12 1 9 \n", + "9 11.0 서울 중구 덕수궁길 15 2017 12 1 10 \n", + "10 14.0 서울 중구 덕수궁길 15 2017 12 1 11 \n", + "11 14.0 서울 중구 덕수궁길 15 2017 12 1 12 \n", + "12 10.0 서울 중구 덕수궁길 15 2017 12 1 13 \n", + "13 14.0 서울 중구 덕수궁길 15 2017 12 1 14 \n", + "14 18.0 서울 중구 덕수궁길 15 2017 12 1 15 \n", + "15 12.0 서울 중구 덕수궁길 15 2017 12 1 16 \n", + "16 10.0 서울 중구 덕수궁길 15 2017 12 1 17 \n", + "17 11.0 서울 중구 덕수궁길 15 2017 12 1 18 \n", + "18 13.0 서울 중구 덕수궁길 15 2017 12 1 19 \n", + "19 16.0 서울 중구 덕수궁길 15 2017 12 1 20 \n", + "20 17.0 서울 중구 덕수궁길 15 2017 12 1 21 \n", + "21 16.0 서울 중구 덕수궁길 15 2017 12 1 22 \n", + "22 17.0 서울 중구 덕수궁길 15 2017 12 1 23 \n", + "23 18.0 서울 중구 덕수궁길 15 2017 12 1 24 \n", + "24 20.0 서울 중구 덕수궁길 15 2017 12 2 1 \n", + "25 20.0 서울 중구 덕수궁길 15 2017 12 2 2 \n", + "26 19.0 서울 중구 덕수궁길 15 2017 12 2 3 \n", + "27 22.0 서울 중구 덕수궁길 15 2017 12 2 4 \n", + "28 27.0 서울 중구 덕수궁길 15 2017 12 2 5 \n", + "29 22.0 서울 중구 덕수궁길 15 2017 12 2 6 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air_2017.head(30)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "air_2017.loc[(air_2017['year'] == 2017) & (air_2017['month'] == 12) & (air_2017['day'] == 31) & (air_2017['hour'] == 24),['year','month','day','hour']] = [2018,1,1,0] " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# 2017년 12월 31일 24시 -> 2018년 1월 1일 0시\n", + "air_2017_1231 = air_2017.loc[(air_2017['year'] == 2018) & (air_2017['month'] == 1) & (air_2017['day'] == 1) & (air_2017['hour'] == 0),].copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시SO2COO3NO2PM10PM25주소yearmonthdayhour
743서울 중구도시대기111121중구20171231240.00400.50.0130.028031.016.0서울 중구 덕수궁길 152018110
1487서울 용산구도로변대기111122한강대로20171231240.00400.50.0090.039032.0NaN서울 용산구 한강대로 4052018110
2231서울 종로구도시대기111123종로구20171231240.00600.40.0180.024030.015.0서울 종로구 종로35가길 192018110
2975서울 중구도로변대기111124청계천로20171231240.00600.30.0160.025032.0NaN서울 중구 청계천로 1842018110
3719서울 종로구도로변대기111125종로2017123124NaNNaNNaNNaNNaNNaN서울 종로구 종로 1692018110
...................................................
250200경기 부천시도시대기831154오정동20171231240.00500.30.0170.019035.028.0경기 부천시 성오로 1722018110
250944경기 부천시도로변대기831155송내대로(중동)20171231240.00300.60.0180.016042.0NaN경기 부천시 송내대로 2622018110
251688인천 강화군교외대기831481석모리20171231240.00280.30.0370.003132.0NaN인천 강화군 삼산면 석모리2018110
252432인천 옹진군교외대기831491덕적도20171231240.00210.60.0400.002236.0NaN인천 옹진군 덕적면 진리2018110
253176인천 옹진군국가배경농도831492백령도20171231240.00280.60.0290.003437.016.0인천 옹진군 백령면 연화리2018110
\n", + "

343 rows × 16 columns

\n", + "
" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 SO2 CO O3 \\\n", + "743 서울 중구 도시대기 111121 중구 2017123124 0.0040 0.5 0.013 \n", + "1487 서울 용산구 도로변대기 111122 한강대로 2017123124 0.0040 0.5 0.009 \n", + "2231 서울 종로구 도시대기 111123 종로구 2017123124 0.0060 0.4 0.018 \n", + "2975 서울 중구 도로변대기 111124 청계천로 2017123124 0.0060 0.3 0.016 \n", + "3719 서울 종로구 도로변대기 111125 종로 2017123124 NaN NaN NaN \n", + "... ... ... ... ... ... ... ... ... \n", + "250200 경기 부천시 도시대기 831154 오정동 2017123124 0.0050 0.3 0.017 \n", + "250944 경기 부천시 도로변대기 831155 송내대로(중동) 2017123124 0.0030 0.6 0.018 \n", + "251688 인천 강화군 교외대기 831481 석모리 2017123124 0.0028 0.3 0.037 \n", + "252432 인천 옹진군 교외대기 831491 덕적도 2017123124 0.0021 0.6 0.040 \n", + "253176 인천 옹진군 국가배경농도 831492 백령도 2017123124 0.0028 0.6 0.029 \n", + "\n", + " NO2 PM10 PM25 주소 year month day hour \n", + "743 0.0280 31.0 16.0 서울 중구 덕수궁길 15 2018 1 1 0 \n", + "1487 0.0390 32.0 NaN 서울 용산구 한강대로 405 2018 1 1 0 \n", + "2231 0.0240 30.0 15.0 서울 종로구 종로35가길 19 2018 1 1 0 \n", + "2975 0.0250 32.0 NaN 서울 중구 청계천로 184 2018 1 1 0 \n", + "3719 NaN NaN NaN 서울 종로구 종로 169 2018 1 1 0 \n", + "... ... ... ... ... ... ... ... ... \n", + "250200 0.0190 35.0 28.0 경기 부천시 성오로 172 2018 1 1 0 \n", + "250944 0.0160 42.0 NaN 경기 부천시 송내대로 262 2018 1 1 0 \n", + "251688 0.0031 32.0 NaN 인천 강화군 삼산면 석모리 2018 1 1 0 \n", + "252432 0.0022 36.0 NaN 인천 옹진군 덕적면 진리 2018 1 1 0 \n", + "253176 0.0034 37.0 16.0 인천 옹진군 백령면 연화리 2018 1 1 0 \n", + "\n", + "[343 rows x 16 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air_2017_1231" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "air_2017_1231['year'] = air_2017_1231['year'].astype(str)\n", + "air_2017_1231['month'] = air_2017_1231['month'].astype(str)\n", + "air_2017_1231['day'] = air_2017_1231['day'].astype(str)\n", + "air_2017_1231['hour'] = air_2017_1231['hour'].astype(str)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "air_2017_1231['측정일시'] = pd.to_datetime(\n", + " air_2017_1231['year'] + \"-\" + air_2017_1231['month'] + \"-\" + air_2017_1231['day'] + \" \" +\n", + " air_2017_1231['hour'] + \":\" + \"00\" + \":\" + \"00\",\n", + " format='%Y-%m-%d %H:%M:%S'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시SO2COO3NO2PM10PM25주소yearmonthdayhour
743서울 중구도시대기111121중구2018-01-010.00400.50.0130.028031.016.0서울 중구 덕수궁길 152018110
1487서울 용산구도로변대기111122한강대로2018-01-010.00400.50.0090.039032.0NaN서울 용산구 한강대로 4052018110
2231서울 종로구도시대기111123종로구2018-01-010.00600.40.0180.024030.015.0서울 종로구 종로35가길 192018110
2975서울 중구도로변대기111124청계천로2018-01-010.00600.30.0160.025032.0NaN서울 중구 청계천로 1842018110
3719서울 종로구도로변대기111125종로2018-01-01NaNNaNNaNNaNNaNNaN서울 종로구 종로 1692018110
...................................................
250200경기 부천시도시대기831154오정동2018-01-010.00500.30.0170.019035.028.0경기 부천시 성오로 1722018110
250944경기 부천시도로변대기831155송내대로(중동)2018-01-010.00300.60.0180.016042.0NaN경기 부천시 송내대로 2622018110
251688인천 강화군교외대기831481석모리2018-01-010.00280.30.0370.003132.0NaN인천 강화군 삼산면 석모리2018110
252432인천 옹진군교외대기831491덕적도2018-01-010.00210.60.0400.002236.0NaN인천 옹진군 덕적면 진리2018110
253176인천 옹진군국가배경농도831492백령도2018-01-010.00280.60.0290.003437.016.0인천 옹진군 백령면 연화리2018110
\n", + "

343 rows × 16 columns

\n", + "
" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 SO2 CO O3 \\\n", + "743 서울 중구 도시대기 111121 중구 2018-01-01 0.0040 0.5 0.013 \n", + "1487 서울 용산구 도로변대기 111122 한강대로 2018-01-01 0.0040 0.5 0.009 \n", + "2231 서울 종로구 도시대기 111123 종로구 2018-01-01 0.0060 0.4 0.018 \n", + "2975 서울 중구 도로변대기 111124 청계천로 2018-01-01 0.0060 0.3 0.016 \n", + "3719 서울 종로구 도로변대기 111125 종로 2018-01-01 NaN NaN NaN \n", + "... ... ... ... ... ... ... ... ... \n", + "250200 경기 부천시 도시대기 831154 오정동 2018-01-01 0.0050 0.3 0.017 \n", + "250944 경기 부천시 도로변대기 831155 송내대로(중동) 2018-01-01 0.0030 0.6 0.018 \n", + "251688 인천 강화군 교외대기 831481 석모리 2018-01-01 0.0028 0.3 0.037 \n", + "252432 인천 옹진군 교외대기 831491 덕적도 2018-01-01 0.0021 0.6 0.040 \n", + "253176 인천 옹진군 국가배경농도 831492 백령도 2018-01-01 0.0028 0.6 0.029 \n", + "\n", + " NO2 PM10 PM25 주소 year month day hour \n", + "743 0.0280 31.0 16.0 서울 중구 덕수궁길 15 2018 1 1 0 \n", + "1487 0.0390 32.0 NaN 서울 용산구 한강대로 405 2018 1 1 0 \n", + "2231 0.0240 30.0 15.0 서울 종로구 종로35가길 19 2018 1 1 0 \n", + "2975 0.0250 32.0 NaN 서울 중구 청계천로 184 2018 1 1 0 \n", + "3719 NaN NaN NaN 서울 종로구 종로 169 2018 1 1 0 \n", + "... ... ... ... ... ... ... .. ... \n", + "250200 0.0190 35.0 28.0 경기 부천시 성오로 172 2018 1 1 0 \n", + "250944 0.0160 42.0 NaN 경기 부천시 송내대로 262 2018 1 1 0 \n", + "251688 0.0031 32.0 NaN 인천 강화군 삼산면 석모리 2018 1 1 0 \n", + "252432 0.0022 36.0 NaN 인천 옹진군 덕적면 진리 2018 1 1 0 \n", + "253176 0.0034 37.0 16.0 인천 옹진군 백령면 연화리 2018 1 1 0 \n", + "\n", + "[343 rows x 16 columns]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air_2017_1231" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# SO2, CO feature는 시정관련 feature가 아니라고 판단해서 제거\n", + "air_2017_1231.drop(columns=['SO2', 'CO'], inplace=True, axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour
743서울 중구도시대기111121중구2018-01-010.0130.028031.016.0서울 중구 덕수궁길 152018110
1487서울 용산구도로변대기111122한강대로2018-01-010.0090.039032.0NaN서울 용산구 한강대로 4052018110
2231서울 종로구도시대기111123종로구2018-01-010.0180.024030.015.0서울 종로구 종로35가길 192018110
2975서울 중구도로변대기111124청계천로2018-01-010.0160.025032.0NaN서울 중구 청계천로 1842018110
3719서울 종로구도로변대기111125종로2018-01-01NaNNaNNaNNaN서울 종로구 종로 1692018110
.............................................
250200경기 부천시도시대기831154오정동2018-01-010.0170.019035.028.0경기 부천시 성오로 1722018110
250944경기 부천시도로변대기831155송내대로(중동)2018-01-010.0180.016042.0NaN경기 부천시 송내대로 2622018110
251688인천 강화군교외대기831481석모리2018-01-010.0370.003132.0NaN인천 강화군 삼산면 석모리2018110
252432인천 옹진군교외대기831491덕적도2018-01-010.0400.002236.0NaN인천 옹진군 덕적면 진리2018110
253176인천 옹진군국가배경농도831492백령도2018-01-010.0290.003437.016.0인천 옹진군 백령면 연화리2018110
\n", + "

343 rows × 14 columns

\n", + "
" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 O3 NO2 PM10 \\\n", + "743 서울 중구 도시대기 111121 중구 2018-01-01 0.013 0.0280 31.0 \n", + "1487 서울 용산구 도로변대기 111122 한강대로 2018-01-01 0.009 0.0390 32.0 \n", + "2231 서울 종로구 도시대기 111123 종로구 2018-01-01 0.018 0.0240 30.0 \n", + "2975 서울 중구 도로변대기 111124 청계천로 2018-01-01 0.016 0.0250 32.0 \n", + "3719 서울 종로구 도로변대기 111125 종로 2018-01-01 NaN NaN NaN \n", + "... ... ... ... ... ... ... ... ... \n", + "250200 경기 부천시 도시대기 831154 오정동 2018-01-01 0.017 0.0190 35.0 \n", + "250944 경기 부천시 도로변대기 831155 송내대로(중동) 2018-01-01 0.018 0.0160 42.0 \n", + "251688 인천 강화군 교외대기 831481 석모리 2018-01-01 0.037 0.0031 32.0 \n", + "252432 인천 옹진군 교외대기 831491 덕적도 2018-01-01 0.040 0.0022 36.0 \n", + "253176 인천 옹진군 국가배경농도 831492 백령도 2018-01-01 0.029 0.0034 37.0 \n", + "\n", + " PM25 주소 year month day hour \n", + "743 16.0 서울 중구 덕수궁길 15 2018 1 1 0 \n", + "1487 NaN 서울 용산구 한강대로 405 2018 1 1 0 \n", + "2231 15.0 서울 종로구 종로35가길 19 2018 1 1 0 \n", + "2975 NaN 서울 중구 청계천로 184 2018 1 1 0 \n", + "3719 NaN 서울 종로구 종로 169 2018 1 1 0 \n", + "... ... ... ... ... .. ... \n", + "250200 28.0 경기 부천시 성오로 172 2018 1 1 0 \n", + "250944 NaN 경기 부천시 송내대로 262 2018 1 1 0 \n", + "251688 NaN 인천 강화군 삼산면 석모리 2018 1 1 0 \n", + "252432 NaN 인천 옹진군 덕적면 진리 2018 1 1 0 \n", + "253176 16.0 인천 옹진군 백령면 연화리 2018 1 1 0 \n", + "\n", + "[343 rows x 14 columns]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air_2017_1231" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 13.18 GB\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "air_2018= pd.read_feather(\"../../data/대기질/2018.feather\") # 2018년 데이터\n", + "air_2019= pd.read_feather(\"../../data/대기질/2019.feather\") # 2019년 데이터\n", + "air_2020= pd.read_feather(\"../../data/대기질/2020.feather\") # 2020년 데이터\n", + "air_2021= pd.read_feather(\"../../data/대기질/2021.feather\") # 2021년 데이터\n", + "air_2022= pd.read_feather(\"../../data/대기질/2022.feather\") # 2022년 데이터\n", + "air_2023= pd.read_feather(\"../../data/대기질/2023.feather\") # 2023년 데이터\n", + "\n", + "\n", + "# 2017년 12월 31일 24시 데이터 + 2018년 ~ 2023년 데이터 합치기\n", + "air= pd.concat([air_2017_1231, air_2018, air_2019, air_2020, air_2021, air_2022, air_2023], axis=0).copy() " + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 23.13 GB\n", + "현재 메모리 사용량: 20.2%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "del([air_2017_1231, air_2018, air_2019, air_2020, air_2021, air_2022, air_2023]) # 사용하지 않는 데이터 삭제" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "196" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import gc\n", + "gc.collect() # 메모리 정리" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 22.08 GB\n", + "현재 메모리 사용량: 19.4%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour
743서울 중구도시대기111121중구2018-01-01 00:00:000.01300.028031.016.0서울 중구 덕수궁길 152018110
1487서울 용산구도로변대기111122한강대로2018-01-01 00:00:000.00900.039032.0NaN서울 용산구 한강대로 4052018110
2231서울 종로구도시대기111123종로구2018-01-01 00:00:000.01800.024030.015.0서울 종로구 종로35가길 192018110
2975서울 중구도로변대기111124청계천로2018-01-01 00:00:000.01600.025032.0NaN서울 중구 청계천로 1842018110
3719서울 종로구도로변대기111125종로2018-01-01 00:00:00NaNNaNNaNNaN서울 종로구 종로 1692018110
.............................................
5667284인천 옹진군국가배경농도831495울도2023-12-31 20:00:000.04150.008664.057.0인천 옹진군 덕적면 울도리 85번지2023.012.031.020.0
5667285인천 옹진군국가배경농도831495울도2023-12-31 21:00:000.04090.009562.050.0인천 옹진군 덕적면 울도리 85번지2023.012.031.021.0
5667286인천 옹진군국가배경농도831495울도2023-12-31 22:00:000.04140.011165.059.0인천 옹진군 덕적면 울도리 85번지2023.012.031.022.0
5667287인천 옹진군국가배경농도831495울도2023-12-31 23:00:000.04110.011263.054.0인천 옹진군 덕적면 울도리 85번지2023.012.031.023.0
5667288인천 옹진군국가배경농도831495울도NaT0.04020.009867.059.0인천 옹진군 덕적면 울도리 85번지NaNNaNNaNNaN
\n", + "

28178690 rows × 14 columns

\n", + "
" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 O3 NO2 \\\n", + "743 서울 중구 도시대기 111121 중구 2018-01-01 00:00:00 0.0130 0.0280 \n", + "1487 서울 용산구 도로변대기 111122 한강대로 2018-01-01 00:00:00 0.0090 0.0390 \n", + "2231 서울 종로구 도시대기 111123 종로구 2018-01-01 00:00:00 0.0180 0.0240 \n", + "2975 서울 중구 도로변대기 111124 청계천로 2018-01-01 00:00:00 0.0160 0.0250 \n", + "3719 서울 종로구 도로변대기 111125 종로 2018-01-01 00:00:00 NaN NaN \n", + "... ... ... ... ... ... ... ... \n", + "5667284 인천 옹진군 국가배경농도 831495 울도 2023-12-31 20:00:00 0.0415 0.0086 \n", + "5667285 인천 옹진군 국가배경농도 831495 울도 2023-12-31 21:00:00 0.0409 0.0095 \n", + "5667286 인천 옹진군 국가배경농도 831495 울도 2023-12-31 22:00:00 0.0414 0.0111 \n", + "5667287 인천 옹진군 국가배경농도 831495 울도 2023-12-31 23:00:00 0.0411 0.0112 \n", + "5667288 인천 옹진군 국가배경농도 831495 울도 NaT 0.0402 0.0098 \n", + "\n", + " PM10 PM25 주소 year month day hour \n", + "743 31.0 16.0 서울 중구 덕수궁길 15 2018 1 1 0 \n", + "1487 32.0 NaN 서울 용산구 한강대로 405 2018 1 1 0 \n", + "2231 30.0 15.0 서울 종로구 종로35가길 19 2018 1 1 0 \n", + "2975 32.0 NaN 서울 중구 청계천로 184 2018 1 1 0 \n", + "3719 NaN NaN 서울 종로구 종로 169 2018 1 1 0 \n", + "... ... ... ... ... ... ... ... \n", + "5667284 64.0 57.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 20.0 \n", + "5667285 62.0 50.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 21.0 \n", + "5667286 65.0 59.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 22.0 \n", + "5667287 63.0 54.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 23.0 \n", + "5667288 67.0 59.0 인천 옹진군 덕적면 울도리 85번지 NaN NaN NaN NaN \n", + "\n", + "[28178690 rows x 14 columns]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "지역 0\n", + "망 0\n", + "측정소코드 0\n", + "측정소명 0\n", + "측정일시 1174098\n", + "O3 1152586\n", + "NO2 1172765\n", + "PM10 1441909\n", + "PM25 1970712\n", + "주소 0\n", + "year 1174098\n", + "month 1174098\n", + "day 1174098\n", + "hour 1174098\n", + "dtype: int64" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(air).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(28178690, 14)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **기상청 ASOS 기상관측 데이터는 00시~ 23시로 구성되어있고 에어코리아 대기질 데이터는 01시~24시로 구성되어있기 때문에 통일을 시켜줘야 한다. 그렇게 때문에 대기질 데이터의 24시를 00시로 바꿔주는 작업을 진행한다**" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# 자정 데이터가 na라고 표시되어 있음 그걸 해결하기 위해 na를 자정 데이터로 채워줌\n", + "air['측정일시'] = air['측정일시'].fillna(air['측정일시'].shift() + pd.Timedelta(hours=1)).copy() " + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "air.sort_values(by= ['측정소코드', '측정일시'], inplace=True)\n", + "air.reset_index(drop=True, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour
0서울 중구도시대기111121중구2018-01-01 00:00:000.0130.02831.016.0서울 중구 덕수궁길 152018110
1서울 중구도시대기111121중구2018-01-01 01:00:000.0200.02034.019.0서울 중구 덕수궁길 152018.01.01.01.0
2서울 중구도시대기111121중구2018-01-01 02:00:000.0240.01627.014.0서울 중구 덕수궁길 152018.01.01.02.0
3서울 중구도시대기111121중구2018-01-01 03:00:000.0180.02226.014.0서울 중구 덕수궁길 152018.01.01.03.0
4서울 중구도시대기111121중구2018-01-01 04:00:000.0100.03026.015.0서울 중구 덕수궁길 152018.01.01.04.0
5서울 중구도시대기111121중구2018-01-01 05:00:000.0110.02928.016.0서울 중구 덕수궁길 152018.01.01.05.0
6서울 중구도시대기111121중구2018-01-01 06:00:000.0120.02729.017.0서울 중구 덕수궁길 152018.01.01.06.0
7서울 중구도시대기111121중구2018-01-01 07:00:000.0090.03028.016.0서울 중구 덕수궁길 152018.01.01.07.0
8서울 중구도시대기111121중구2018-01-01 08:00:000.0090.03227.014.0서울 중구 덕수궁길 152018.01.01.08.0
9서울 중구도시대기111121중구2018-01-01 09:00:000.0050.03727.014.0서울 중구 덕수궁길 152018.01.01.09.0
10서울 중구도시대기111121중구2018-01-01 10:00:000.0180.02425.012.0서울 중구 덕수궁길 152018.01.01.010.0
11서울 중구도시대기111121중구2018-01-01 11:00:000.0200.02331.016.0서울 중구 덕수궁길 152018.01.01.011.0
12서울 중구도시대기111121중구2018-01-01 12:00:000.0250.01830.017.0서울 중구 덕수궁길 152018.01.01.012.0
13서울 중구도시대기111121중구2018-01-01 13:00:000.0300.01124.013.0서울 중구 덕수궁길 152018.01.01.013.0
14서울 중구도시대기111121중구2018-01-01 14:00:000.0250.01831.017.0서울 중구 덕수궁길 152018.01.01.014.0
15서울 중구도시대기111121중구2018-01-01 15:00:000.0280.01741.023.0서울 중구 덕수궁길 152018.01.01.015.0
16서울 중구도시대기111121중구2018-01-01 16:00:000.0260.01942.021.0서울 중구 덕수궁길 152018.01.01.016.0
17서울 중구도시대기111121중구2018-01-01 17:00:000.0260.01940.021.0서울 중구 덕수궁길 152018.01.01.017.0
18서울 중구도시대기111121중구2018-01-01 18:00:000.0160.02837.019.0서울 중구 덕수궁길 152018.01.01.018.0
19서울 중구도시대기111121중구2018-01-01 19:00:000.0090.03739.022.0서울 중구 덕수궁길 152018.01.01.019.0
20서울 중구도시대기111121중구2018-01-01 20:00:000.0020.04738.021.0서울 중구 덕수궁길 152018.01.01.020.0
21서울 중구도시대기111121중구2018-01-01 21:00:000.0020.04738.021.0서울 중구 덕수궁길 152018.01.01.021.0
22서울 중구도시대기111121중구2018-01-01 22:00:000.0020.04938.020.0서울 중구 덕수궁길 152018.01.01.022.0
23서울 중구도시대기111121중구2018-01-01 23:00:000.0010.05341.023.0서울 중구 덕수궁길 152018.01.01.023.0
24서울 중구도시대기111121중구2018-01-02 00:00:000.0020.05037.022.0서울 중구 덕수궁길 15NaNNaNNaNNaN
25서울 중구도시대기111121중구2018-01-02 01:00:000.0020.05040.024.0서울 중구 덕수궁길 152018.01.02.01.0
26서울 중구도시대기111121중구2018-01-02 02:00:000.0020.04836.022.0서울 중구 덕수궁길 152018.01.02.02.0
27서울 중구도시대기111121중구2018-01-02 03:00:000.0020.04737.024.0서울 중구 덕수궁길 152018.01.02.03.0
28서울 중구도시대기111121중구2018-01-02 04:00:000.0020.05136.022.0서울 중구 덕수궁길 152018.01.02.04.0
29서울 중구도시대기111121중구2018-01-02 05:00:000.0020.05440.026.0서울 중구 덕수궁길 152018.01.02.05.0
\n", + "
" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 O3 NO2 PM10 PM25 \\\n", + "0 서울 중구 도시대기 111121 중구 2018-01-01 00:00:00 0.013 0.028 31.0 16.0 \n", + "1 서울 중구 도시대기 111121 중구 2018-01-01 01:00:00 0.020 0.020 34.0 19.0 \n", + "2 서울 중구 도시대기 111121 중구 2018-01-01 02:00:00 0.024 0.016 27.0 14.0 \n", + "3 서울 중구 도시대기 111121 중구 2018-01-01 03:00:00 0.018 0.022 26.0 14.0 \n", + "4 서울 중구 도시대기 111121 중구 2018-01-01 04:00:00 0.010 0.030 26.0 15.0 \n", + "5 서울 중구 도시대기 111121 중구 2018-01-01 05:00:00 0.011 0.029 28.0 16.0 \n", + "6 서울 중구 도시대기 111121 중구 2018-01-01 06:00:00 0.012 0.027 29.0 17.0 \n", + "7 서울 중구 도시대기 111121 중구 2018-01-01 07:00:00 0.009 0.030 28.0 16.0 \n", + "8 서울 중구 도시대기 111121 중구 2018-01-01 08:00:00 0.009 0.032 27.0 14.0 \n", + "9 서울 중구 도시대기 111121 중구 2018-01-01 09:00:00 0.005 0.037 27.0 14.0 \n", + "10 서울 중구 도시대기 111121 중구 2018-01-01 10:00:00 0.018 0.024 25.0 12.0 \n", + "11 서울 중구 도시대기 111121 중구 2018-01-01 11:00:00 0.020 0.023 31.0 16.0 \n", + "12 서울 중구 도시대기 111121 중구 2018-01-01 12:00:00 0.025 0.018 30.0 17.0 \n", + "13 서울 중구 도시대기 111121 중구 2018-01-01 13:00:00 0.030 0.011 24.0 13.0 \n", + "14 서울 중구 도시대기 111121 중구 2018-01-01 14:00:00 0.025 0.018 31.0 17.0 \n", + "15 서울 중구 도시대기 111121 중구 2018-01-01 15:00:00 0.028 0.017 41.0 23.0 \n", + "16 서울 중구 도시대기 111121 중구 2018-01-01 16:00:00 0.026 0.019 42.0 21.0 \n", + "17 서울 중구 도시대기 111121 중구 2018-01-01 17:00:00 0.026 0.019 40.0 21.0 \n", + "18 서울 중구 도시대기 111121 중구 2018-01-01 18:00:00 0.016 0.028 37.0 19.0 \n", + "19 서울 중구 도시대기 111121 중구 2018-01-01 19:00:00 0.009 0.037 39.0 22.0 \n", + "20 서울 중구 도시대기 111121 중구 2018-01-01 20:00:00 0.002 0.047 38.0 21.0 \n", + "21 서울 중구 도시대기 111121 중구 2018-01-01 21:00:00 0.002 0.047 38.0 21.0 \n", + "22 서울 중구 도시대기 111121 중구 2018-01-01 22:00:00 0.002 0.049 38.0 20.0 \n", + "23 서울 중구 도시대기 111121 중구 2018-01-01 23:00:00 0.001 0.053 41.0 23.0 \n", + "24 서울 중구 도시대기 111121 중구 2018-01-02 00:00:00 0.002 0.050 37.0 22.0 \n", + "25 서울 중구 도시대기 111121 중구 2018-01-02 01:00:00 0.002 0.050 40.0 24.0 \n", + "26 서울 중구 도시대기 111121 중구 2018-01-02 02:00:00 0.002 0.048 36.0 22.0 \n", + "27 서울 중구 도시대기 111121 중구 2018-01-02 03:00:00 0.002 0.047 37.0 24.0 \n", + "28 서울 중구 도시대기 111121 중구 2018-01-02 04:00:00 0.002 0.051 36.0 22.0 \n", + "29 서울 중구 도시대기 111121 중구 2018-01-02 05:00:00 0.002 0.054 40.0 26.0 \n", + "\n", + " 주소 year month day hour \n", + "0 서울 중구 덕수궁길 15 2018 1 1 0 \n", + "1 서울 중구 덕수궁길 15 2018.0 1.0 1.0 1.0 \n", + "2 서울 중구 덕수궁길 15 2018.0 1.0 1.0 2.0 \n", + "3 서울 중구 덕수궁길 15 2018.0 1.0 1.0 3.0 \n", + "4 서울 중구 덕수궁길 15 2018.0 1.0 1.0 4.0 \n", + "5 서울 중구 덕수궁길 15 2018.0 1.0 1.0 5.0 \n", + "6 서울 중구 덕수궁길 15 2018.0 1.0 1.0 6.0 \n", + "7 서울 중구 덕수궁길 15 2018.0 1.0 1.0 7.0 \n", + "8 서울 중구 덕수궁길 15 2018.0 1.0 1.0 8.0 \n", + "9 서울 중구 덕수궁길 15 2018.0 1.0 1.0 9.0 \n", + "10 서울 중구 덕수궁길 15 2018.0 1.0 1.0 10.0 \n", + "11 서울 중구 덕수궁길 15 2018.0 1.0 1.0 11.0 \n", + "12 서울 중구 덕수궁길 15 2018.0 1.0 1.0 12.0 \n", + "13 서울 중구 덕수궁길 15 2018.0 1.0 1.0 13.0 \n", + "14 서울 중구 덕수궁길 15 2018.0 1.0 1.0 14.0 \n", + "15 서울 중구 덕수궁길 15 2018.0 1.0 1.0 15.0 \n", + "16 서울 중구 덕수궁길 15 2018.0 1.0 1.0 16.0 \n", + "17 서울 중구 덕수궁길 15 2018.0 1.0 1.0 17.0 \n", + "18 서울 중구 덕수궁길 15 2018.0 1.0 1.0 18.0 \n", + "19 서울 중구 덕수궁길 15 2018.0 1.0 1.0 19.0 \n", + "20 서울 중구 덕수궁길 15 2018.0 1.0 1.0 20.0 \n", + "21 서울 중구 덕수궁길 15 2018.0 1.0 1.0 21.0 \n", + "22 서울 중구 덕수궁길 15 2018.0 1.0 1.0 22.0 \n", + "23 서울 중구 덕수궁길 15 2018.0 1.0 1.0 23.0 \n", + "24 서울 중구 덕수궁길 15 NaN NaN NaN NaN \n", + "25 서울 중구 덕수궁길 15 2018.0 1.0 2.0 1.0 \n", + "26 서울 중구 덕수궁길 15 2018.0 1.0 2.0 2.0 \n", + "27 서울 중구 덕수궁길 15 2018.0 1.0 2.0 3.0 \n", + "28 서울 중구 덕수궁길 15 2018.0 1.0 2.0 4.0 \n", + "29 서울 중구 덕수궁길 15 2018.0 1.0 2.0 5.0 " + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air.head(30) # 자정데이터가 " + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour
28178660인천 옹진군국가배경농도831495울도2023-12-30 19:00:000.02620.017067.058.0인천 옹진군 덕적면 울도리 85번지2023.012.030.019.0
28178661인천 옹진군국가배경농도831495울도2023-12-30 20:00:000.02810.019358.047.0인천 옹진군 덕적면 울도리 85번지2023.012.030.020.0
28178662인천 옹진군국가배경농도831495울도2023-12-30 21:00:000.03420.017156.041.0인천 옹진군 덕적면 울도리 85번지2023.012.030.021.0
28178663인천 옹진군국가배경농도831495울도2023-12-30 22:00:000.04210.009554.038.0인천 옹진군 덕적면 울도리 85번지2023.012.030.022.0
28178664인천 옹진군국가배경농도831495울도2023-12-30 23:00:000.04030.010851.038.0인천 옹진군 덕적면 울도리 85번지2023.012.030.023.0
28178665인천 옹진군국가배경농도831495울도2023-12-31 00:00:000.03770.009562.038.0인천 옹진군 덕적면 울도리 85번지NaNNaNNaNNaN
28178666인천 옹진군국가배경농도831495울도2023-12-31 01:00:000.03650.009756.048.0인천 옹진군 덕적면 울도리 85번지2023.012.031.01.0
28178667인천 옹진군국가배경농도831495울도2023-12-31 02:00:000.03820.009373.055.0인천 옹진군 덕적면 울도리 85번지2023.012.031.02.0
28178668인천 옹진군국가배경농도831495울도2023-12-31 03:00:000.03680.016585.070.0인천 옹진군 덕적면 울도리 85번지2023.012.031.03.0
28178669인천 옹진군국가배경농도831495울도2023-12-31 04:00:000.04000.012169.052.0인천 옹진군 덕적면 울도리 85번지2023.012.031.04.0
28178670인천 옹진군국가배경농도831495울도2023-12-31 05:00:000.04110.008933.018.0인천 옹진군 덕적면 울도리 85번지2023.012.031.05.0
28178671인천 옹진군국가배경농도831495울도2023-12-31 06:00:000.02790.008931.017.0인천 옹진군 덕적면 울도리 85번지2023.012.031.06.0
28178672인천 옹진군국가배경농도831495울도2023-12-31 07:00:000.03220.007623.013.0인천 옹진군 덕적면 울도리 85번지2023.012.031.07.0
28178673인천 옹진군국가배경농도831495울도2023-12-31 08:00:000.03930.005523.010.0인천 옹진군 덕적면 울도리 85번지2023.012.031.08.0
28178674인천 옹진군국가배경농도831495울도2023-12-31 09:00:000.03990.005320.011.0인천 옹진군 덕적면 울도리 85번지2023.012.031.09.0
28178675인천 옹진군국가배경농도831495울도2023-12-31 10:00:000.04450.005327.015.0인천 옹진군 덕적면 울도리 85번지2023.012.031.010.0
28178676인천 옹진군국가배경농도831495울도2023-12-31 11:00:000.04520.005533.021.0인천 옹진군 덕적면 울도리 85번지2023.012.031.011.0
28178677인천 옹진군국가배경농도831495울도2023-12-31 12:00:000.04390.006339.028.0인천 옹진군 덕적면 울도리 85번지2023.012.031.012.0
28178678인천 옹진군국가배경농도831495울도2023-12-31 13:00:000.04180.006651.039.0인천 옹진군 덕적면 울도리 85번지2023.012.031.013.0
28178679인천 옹진군국가배경농도831495울도2023-12-31 14:00:000.04250.006753.040.0인천 옹진군 덕적면 울도리 85번지2023.012.031.014.0
28178680인천 옹진군국가배경농도831495울도2023-12-31 15:00:000.04340.006856.036.0인천 옹진군 덕적면 울도리 85번지2023.012.031.015.0
28178681인천 옹진군국가배경농도831495울도2023-12-31 16:00:000.04370.007561.046.0인천 옹진군 덕적면 울도리 85번지2023.012.031.016.0
28178682인천 옹진군국가배경농도831495울도2023-12-31 17:00:000.04450.008059.050.0인천 옹진군 덕적면 울도리 85번지2023.012.031.017.0
28178683인천 옹진군국가배경농도831495울도2023-12-31 18:00:000.04450.008667.051.0인천 옹진군 덕적면 울도리 85번지2023.012.031.018.0
28178684인천 옹진군국가배경농도831495울도2023-12-31 19:00:000.04400.007567.057.0인천 옹진군 덕적면 울도리 85번지2023.012.031.019.0
28178685인천 옹진군국가배경농도831495울도2023-12-31 20:00:000.04150.008664.057.0인천 옹진군 덕적면 울도리 85번지2023.012.031.020.0
28178686인천 옹진군국가배경농도831495울도2023-12-31 21:00:000.04090.009562.050.0인천 옹진군 덕적면 울도리 85번지2023.012.031.021.0
28178687인천 옹진군국가배경농도831495울도2023-12-31 22:00:000.04140.011165.059.0인천 옹진군 덕적면 울도리 85번지2023.012.031.022.0
28178688인천 옹진군국가배경농도831495울도2023-12-31 23:00:000.04110.011263.054.0인천 옹진군 덕적면 울도리 85번지2023.012.031.023.0
28178689인천 옹진군국가배경농도831495울도2024-01-01 00:00:000.04020.009867.059.0인천 옹진군 덕적면 울도리 85번지NaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 O3 NO2 \\\n", + "28178660 인천 옹진군 국가배경농도 831495 울도 2023-12-30 19:00:00 0.0262 0.0170 \n", + "28178661 인천 옹진군 국가배경농도 831495 울도 2023-12-30 20:00:00 0.0281 0.0193 \n", + "28178662 인천 옹진군 국가배경농도 831495 울도 2023-12-30 21:00:00 0.0342 0.0171 \n", + "28178663 인천 옹진군 국가배경농도 831495 울도 2023-12-30 22:00:00 0.0421 0.0095 \n", + "28178664 인천 옹진군 국가배경농도 831495 울도 2023-12-30 23:00:00 0.0403 0.0108 \n", + "28178665 인천 옹진군 국가배경농도 831495 울도 2023-12-31 00:00:00 0.0377 0.0095 \n", + "28178666 인천 옹진군 국가배경농도 831495 울도 2023-12-31 01:00:00 0.0365 0.0097 \n", + "28178667 인천 옹진군 국가배경농도 831495 울도 2023-12-31 02:00:00 0.0382 0.0093 \n", + "28178668 인천 옹진군 국가배경농도 831495 울도 2023-12-31 03:00:00 0.0368 0.0165 \n", + "28178669 인천 옹진군 국가배경농도 831495 울도 2023-12-31 04:00:00 0.0400 0.0121 \n", + "28178670 인천 옹진군 국가배경농도 831495 울도 2023-12-31 05:00:00 0.0411 0.0089 \n", + "28178671 인천 옹진군 국가배경농도 831495 울도 2023-12-31 06:00:00 0.0279 0.0089 \n", + "28178672 인천 옹진군 국가배경농도 831495 울도 2023-12-31 07:00:00 0.0322 0.0076 \n", + "28178673 인천 옹진군 국가배경농도 831495 울도 2023-12-31 08:00:00 0.0393 0.0055 \n", + "28178674 인천 옹진군 국가배경농도 831495 울도 2023-12-31 09:00:00 0.0399 0.0053 \n", + "28178675 인천 옹진군 국가배경농도 831495 울도 2023-12-31 10:00:00 0.0445 0.0053 \n", + "28178676 인천 옹진군 국가배경농도 831495 울도 2023-12-31 11:00:00 0.0452 0.0055 \n", + "28178677 인천 옹진군 국가배경농도 831495 울도 2023-12-31 12:00:00 0.0439 0.0063 \n", + "28178678 인천 옹진군 국가배경농도 831495 울도 2023-12-31 13:00:00 0.0418 0.0066 \n", + "28178679 인천 옹진군 국가배경농도 831495 울도 2023-12-31 14:00:00 0.0425 0.0067 \n", + "28178680 인천 옹진군 국가배경농도 831495 울도 2023-12-31 15:00:00 0.0434 0.0068 \n", + "28178681 인천 옹진군 국가배경농도 831495 울도 2023-12-31 16:00:00 0.0437 0.0075 \n", + "28178682 인천 옹진군 국가배경농도 831495 울도 2023-12-31 17:00:00 0.0445 0.0080 \n", + "28178683 인천 옹진군 국가배경농도 831495 울도 2023-12-31 18:00:00 0.0445 0.0086 \n", + "28178684 인천 옹진군 국가배경농도 831495 울도 2023-12-31 19:00:00 0.0440 0.0075 \n", + "28178685 인천 옹진군 국가배경농도 831495 울도 2023-12-31 20:00:00 0.0415 0.0086 \n", + "28178686 인천 옹진군 국가배경농도 831495 울도 2023-12-31 21:00:00 0.0409 0.0095 \n", + "28178687 인천 옹진군 국가배경농도 831495 울도 2023-12-31 22:00:00 0.0414 0.0111 \n", + "28178688 인천 옹진군 국가배경농도 831495 울도 2023-12-31 23:00:00 0.0411 0.0112 \n", + "28178689 인천 옹진군 국가배경농도 831495 울도 2024-01-01 00:00:00 0.0402 0.0098 \n", + "\n", + " PM10 PM25 주소 year month day hour \n", + "28178660 67.0 58.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 30.0 19.0 \n", + "28178661 58.0 47.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 30.0 20.0 \n", + "28178662 56.0 41.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 30.0 21.0 \n", + "28178663 54.0 38.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 30.0 22.0 \n", + "28178664 51.0 38.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 30.0 23.0 \n", + "28178665 62.0 38.0 인천 옹진군 덕적면 울도리 85번지 NaN NaN NaN NaN \n", + "28178666 56.0 48.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 1.0 \n", + "28178667 73.0 55.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 2.0 \n", + "28178668 85.0 70.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 3.0 \n", + "28178669 69.0 52.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 4.0 \n", + "28178670 33.0 18.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 5.0 \n", + "28178671 31.0 17.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 6.0 \n", + "28178672 23.0 13.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 7.0 \n", + "28178673 23.0 10.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 8.0 \n", + "28178674 20.0 11.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 9.0 \n", + "28178675 27.0 15.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 10.0 \n", + "28178676 33.0 21.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 11.0 \n", + "28178677 39.0 28.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 12.0 \n", + "28178678 51.0 39.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 13.0 \n", + "28178679 53.0 40.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 14.0 \n", + "28178680 56.0 36.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 15.0 \n", + "28178681 61.0 46.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 16.0 \n", + "28178682 59.0 50.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 17.0 \n", + "28178683 67.0 51.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 18.0 \n", + "28178684 67.0 57.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 19.0 \n", + "28178685 64.0 57.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 20.0 \n", + "28178686 62.0 50.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 21.0 \n", + "28178687 65.0 59.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 22.0 \n", + "28178688 63.0 54.0 인천 옹진군 덕적면 울도리 85번지 2023.0 12.0 31.0 23.0 \n", + "28178689 67.0 59.0 인천 옹진군 덕적면 울도리 85번지 NaN NaN NaN NaN " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air.tail(30)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(air['측정일시']).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "air['year'] = air['측정일시'].dt.year # 연도, 월, 일, 시간 변수 생성\n", + "air['month'] = air['측정일시'].dt.month\n", + "air['day'] = air['측정일시'].dt.day\n", + "air['hour'] = air['측정일시'].dt.hour" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 21.42 GB\n", + "현재 메모리 사용량: 18.9%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour
0서울 중구도시대기111121중구2018-01-01 00:00:000.01300.028031.016.0서울 중구 덕수궁길 152018110
1서울 중구도시대기111121중구2018-01-01 01:00:000.02000.020034.019.0서울 중구 덕수궁길 152018111
2서울 중구도시대기111121중구2018-01-01 02:00:000.02400.016027.014.0서울 중구 덕수궁길 152018112
3서울 중구도시대기111121중구2018-01-01 03:00:000.01800.022026.014.0서울 중구 덕수궁길 152018113
4서울 중구도시대기111121중구2018-01-01 04:00:000.01000.030026.015.0서울 중구 덕수궁길 152018114
.............................................
28178685인천 옹진군국가배경농도831495울도2023-12-31 20:00:000.04150.008664.057.0인천 옹진군 덕적면 울도리 85번지2023123120
28178686인천 옹진군국가배경농도831495울도2023-12-31 21:00:000.04090.009562.050.0인천 옹진군 덕적면 울도리 85번지2023123121
28178687인천 옹진군국가배경농도831495울도2023-12-31 22:00:000.04140.011165.059.0인천 옹진군 덕적면 울도리 85번지2023123122
28178688인천 옹진군국가배경농도831495울도2023-12-31 23:00:000.04110.011263.054.0인천 옹진군 덕적면 울도리 85번지2023123123
28178689인천 옹진군국가배경농도831495울도2024-01-01 00:00:000.04020.009867.059.0인천 옹진군 덕적면 울도리 85번지2024110
\n", + "

28178690 rows × 14 columns

\n", + "
" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 O3 NO2 \\\n", + "0 서울 중구 도시대기 111121 중구 2018-01-01 00:00:00 0.0130 0.0280 \n", + "1 서울 중구 도시대기 111121 중구 2018-01-01 01:00:00 0.0200 0.0200 \n", + "2 서울 중구 도시대기 111121 중구 2018-01-01 02:00:00 0.0240 0.0160 \n", + "3 서울 중구 도시대기 111121 중구 2018-01-01 03:00:00 0.0180 0.0220 \n", + "4 서울 중구 도시대기 111121 중구 2018-01-01 04:00:00 0.0100 0.0300 \n", + "... ... ... ... ... ... ... ... \n", + "28178685 인천 옹진군 국가배경농도 831495 울도 2023-12-31 20:00:00 0.0415 0.0086 \n", + "28178686 인천 옹진군 국가배경농도 831495 울도 2023-12-31 21:00:00 0.0409 0.0095 \n", + "28178687 인천 옹진군 국가배경농도 831495 울도 2023-12-31 22:00:00 0.0414 0.0111 \n", + "28178688 인천 옹진군 국가배경농도 831495 울도 2023-12-31 23:00:00 0.0411 0.0112 \n", + "28178689 인천 옹진군 국가배경농도 831495 울도 2024-01-01 00:00:00 0.0402 0.0098 \n", + "\n", + " PM10 PM25 주소 year month day hour \n", + "0 31.0 16.0 서울 중구 덕수궁길 15 2018 1 1 0 \n", + "1 34.0 19.0 서울 중구 덕수궁길 15 2018 1 1 1 \n", + "2 27.0 14.0 서울 중구 덕수궁길 15 2018 1 1 2 \n", + "3 26.0 14.0 서울 중구 덕수궁길 15 2018 1 1 3 \n", + "4 26.0 15.0 서울 중구 덕수궁길 15 2018 1 1 4 \n", + "... ... ... ... ... ... ... ... \n", + "28178685 64.0 57.0 인천 옹진군 덕적면 울도리 85번지 2023 12 31 20 \n", + "28178686 62.0 50.0 인천 옹진군 덕적면 울도리 85번지 2023 12 31 21 \n", + "28178687 65.0 59.0 인천 옹진군 덕적면 울도리 85번지 2023 12 31 22 \n", + "28178688 63.0 54.0 인천 옹진군 덕적면 울도리 85번지 2023 12 31 23 \n", + "28178689 67.0 59.0 인천 옹진군 덕적면 울도리 85번지 2024 1 1 0 \n", + "\n", + "[28178690 rows x 14 columns]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "660" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(air['측정소코드'].unique()) # 에어 코리아 지상대기질 관측 지점의 개수" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "652" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 23년에 있던 측정소코드가 24년에 없는 경우가 존재함\n", + "len(air.loc[(air['year'] == 2024) & (air['month'] == 1) & (air['day'] == 1) & (air['hour'] == 0),'측정소코드'].unique())" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 660/660 [02:15<00:00, 4.86it/s]\n" + ] + } + ], + "source": [ + "not_in = [] \n", + "for i in tqdm(air['측정소코드'].unique()): \n", + " if i not in air.loc[(air['year'] == 2024) & (air['month'] == 1) & (air['day'] == 1) & (air['hour'] == 0),'측정소코드'].unique(): # 2024년 1월 1일 0시에 측정소코드가 없는 것들\n", + " not_in.append(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour
16224095대구 북구도시대기422153노원동(폐쇄)2018-01-01 00:00:000.0100.02550.011.0대구 북구 노원동 3가 262번지(삼영초등학교)(3공단로 14길 31)2018110
14353039전남 광양시도시대기336354진상면(폐쇄)2018-01-01 00:00:000.0280.00558.019.0전남 광양시 진상면 신시길 227(섬거리)2018110
13079677광주 광산구도시대기324141송정1동(폐쇄)2018-01-01 00:00:000.0190.01967.018.0광주 광산구 광산로 702018110
24853957전북 익산시도시대기735132남중동2018-01-01 00:00:000.0210.01853.019.0전북 익산시 인북로 32길 1 (익산시의회)2018110
13079678광주 광산구도시대기324141송정1동(폐쇄)2018-01-01 01:00:000.0200.01662.017.0광주 광산구 광산로 702018111
.............................................
18836468경북 군위군도시대기437561군위읍2023-06-29 21:00:000.0250.0053.01.0대구광역시 군위군 군위읍 군청로 158202362921
18836469경북 군위군도시대기437561군위읍2023-06-29 22:00:000.0250.0054.02.0대구광역시 군위군 군위읍 군청로 158202362922
18836470경북 군위군도시대기437561군위읍2023-06-29 23:00:000.0270.0057.02.0대구광역시 군위군 군위읍 군청로 158202362923
18836471경북 군위군도시대기437561군위읍2023-06-30 00:00:000.0300.00511.01.0대구광역시 군위군 군위읍 군청로 15820236300
18836472경북 군위군도시대기437561군위읍2023-06-30 01:00:000.0400.00414.06.0대구광역시 군위군 군위읍 군청로 15820236301
\n", + "

223932 rows × 14 columns

\n", + "
" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 O3 NO2 \\\n", + "16224095 대구 북구 도시대기 422153 노원동(폐쇄) 2018-01-01 00:00:00 0.010 0.025 \n", + "14353039 전남 광양시 도시대기 336354 진상면(폐쇄) 2018-01-01 00:00:00 0.028 0.005 \n", + "13079677 광주 광산구 도시대기 324141 송정1동(폐쇄) 2018-01-01 00:00:00 0.019 0.019 \n", + "24853957 전북 익산시 도시대기 735132 남중동 2018-01-01 00:00:00 0.021 0.018 \n", + "13079678 광주 광산구 도시대기 324141 송정1동(폐쇄) 2018-01-01 01:00:00 0.020 0.016 \n", + "... ... ... ... ... ... ... ... \n", + "18836468 경북 군위군 도시대기 437561 군위읍 2023-06-29 21:00:00 0.025 0.005 \n", + "18836469 경북 군위군 도시대기 437561 군위읍 2023-06-29 22:00:00 0.025 0.005 \n", + "18836470 경북 군위군 도시대기 437561 군위읍 2023-06-29 23:00:00 0.027 0.005 \n", + "18836471 경북 군위군 도시대기 437561 군위읍 2023-06-30 00:00:00 0.030 0.005 \n", + "18836472 경북 군위군 도시대기 437561 군위읍 2023-06-30 01:00:00 0.040 0.004 \n", + "\n", + " PM10 PM25 주소 year month \\\n", + "16224095 50.0 11.0 대구 북구 노원동 3가 262번지(삼영초등학교)(3공단로 14길 31) 2018 1 \n", + "14353039 58.0 19.0 전남 광양시 진상면 신시길 227(섬거리) 2018 1 \n", + "13079677 67.0 18.0 광주 광산구 광산로 70 2018 1 \n", + "24853957 53.0 19.0 전북 익산시 인북로 32길 1 (익산시의회) 2018 1 \n", + "13079678 62.0 17.0 광주 광산구 광산로 70 2018 1 \n", + "... ... ... ... ... ... \n", + "18836468 3.0 1.0 대구광역시 군위군 군위읍 군청로 158 2023 6 \n", + "18836469 4.0 2.0 대구광역시 군위군 군위읍 군청로 158 2023 6 \n", + "18836470 7.0 2.0 대구광역시 군위군 군위읍 군청로 158 2023 6 \n", + "18836471 11.0 1.0 대구광역시 군위군 군위읍 군청로 158 2023 6 \n", + "18836472 14.0 6.0 대구광역시 군위군 군위읍 군청로 158 2023 6 \n", + "\n", + " day hour \n", + "16224095 1 0 \n", + "14353039 1 0 \n", + "13079677 1 0 \n", + "24853957 1 0 \n", + "13079678 1 1 \n", + "... ... ... \n", + "18836468 29 21 \n", + "18836469 29 22 \n", + "18836470 29 23 \n", + "18836471 30 0 \n", + "18836472 30 1 \n", + "\n", + "[223932 rows x 14 columns]" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air.loc[air['측정소코드'].isin(not_in),:].sort_values(by=['측정일시']) # 2024년 1월 1일 0시에 측정이 없는 측정소코드\n", + "# 맨 밑에 있는 데이터가 2023년 6월 30일 01시 인것으로 보아 6월 30일 01시 이후로는 지점의 종류가 감소" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour
52584서울 중구도시대기111121중구2024-01-010.00130.049126.026.0서울 중구 덕수궁길 152024110
105169서울 용산구도로변대기111122한강대로2024-01-010.00170.047436.028.0서울 용산구 한강대로 4052024110
157754서울 종로구도시대기111123종로구2024-01-010.00210.043728.026.0서울 종로구 종로35가길 192024110
210339서울 중구도로변대기111124청계천로2024-01-010.00250.032629.023.0서울 중구 청계천로 1842024110
262924서울 종로구도로변대기111125종로2024-01-010.00220.031126.017.0서울 종로구 종로 1692024110
.............................................
28032552인천 옹진군교외대기831491덕적도2024-01-010.04980.006064.056.0인천 옹진군 덕적면 진리2024110
28085137인천 옹진군국가배경농도831492백령도2024-01-010.03940.009278.058.0인천 옹진군 백령면 연화리2024110
28120249인천 옹진군도시대기831493영흥2024-01-010.03180.013430.0NaN인천광역시 옹진군 영흥면 영흥로251번길 902024110
28148737인천 옹진군국가배경농도831494연평도2024-01-010.03530.007770.0NaN인천 옹진군 연평면 연평리 6312024110
28178689인천 옹진군국가배경농도831495울도2024-01-010.04020.009867.059.0인천 옹진군 덕적면 울도리 85번지2024110
\n", + "

652 rows × 14 columns

\n", + "
" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 O3 NO2 PM10 PM25 \\\n", + "52584 서울 중구 도시대기 111121 중구 2024-01-01 0.0013 0.0491 26.0 26.0 \n", + "105169 서울 용산구 도로변대기 111122 한강대로 2024-01-01 0.0017 0.0474 36.0 28.0 \n", + "157754 서울 종로구 도시대기 111123 종로구 2024-01-01 0.0021 0.0437 28.0 26.0 \n", + "210339 서울 중구 도로변대기 111124 청계천로 2024-01-01 0.0025 0.0326 29.0 23.0 \n", + "262924 서울 종로구 도로변대기 111125 종로 2024-01-01 0.0022 0.0311 26.0 17.0 \n", + "... ... ... ... ... ... ... ... ... ... \n", + "28032552 인천 옹진군 교외대기 831491 덕적도 2024-01-01 0.0498 0.0060 64.0 56.0 \n", + "28085137 인천 옹진군 국가배경농도 831492 백령도 2024-01-01 0.0394 0.0092 78.0 58.0 \n", + "28120249 인천 옹진군 도시대기 831493 영흥 2024-01-01 0.0318 0.0134 30.0 NaN \n", + "28148737 인천 옹진군 국가배경농도 831494 연평도 2024-01-01 0.0353 0.0077 70.0 NaN \n", + "28178689 인천 옹진군 국가배경농도 831495 울도 2024-01-01 0.0402 0.0098 67.0 59.0 \n", + "\n", + " 주소 year month day hour \n", + "52584 서울 중구 덕수궁길 15 2024 1 1 0 \n", + "105169 서울 용산구 한강대로 405 2024 1 1 0 \n", + "157754 서울 종로구 종로35가길 19 2024 1 1 0 \n", + "210339 서울 중구 청계천로 184 2024 1 1 0 \n", + "262924 서울 종로구 종로 169 2024 1 1 0 \n", + "... ... ... ... ... ... \n", + "28032552 인천 옹진군 덕적면 진리 2024 1 1 0 \n", + "28085137 인천 옹진군 백령면 연화리 2024 1 1 0 \n", + "28120249 인천광역시 옹진군 영흥면 영흥로251번길 90 2024 1 1 0 \n", + "28148737 인천 옹진군 연평면 연평리 631 2024 1 1 0 \n", + "28178689 인천 옹진군 덕적면 울도리 85번지 2024 1 1 0 \n", + "\n", + "[652 rows x 14 columns]" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 23년까지의 데이터만 사용하기로 결정했기 때문에 24년 데이터가 몇개 있는지 확인\n", + "air.loc[(air['year'] == 2024) & (air['month'] == 1) & (air['day'] == 1) & (air['hour'] == 0),] " + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(28178690, 14)" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air.shape " + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "del(not_in) # 사용하지 않는 데이터 삭제" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "83" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import gc\n", + "gc.collect() # 메모리 정리" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "air.to_feather(\"../../data/대기질/air.feather\") # 데이터 저장" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 21.99 GB\n", + "현재 메모리 사용량: 19.3%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "del(air)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "92" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import gc\n", + "gc.collect()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 21.99 GB\n", + "현재 메모리 사용량: 19.3%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 커널 종료후 재시작 (메모리 부족)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 13.28 GB\n", + "현재 메모리 사용량: 12.4%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "air= pd.read_feather(\"../../data/대기질/air.feather\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 16.40 GB\n", + "현재 메모리 사용량: 14.9%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# 23년까지의 데이터만 사용하기로 결정했기 때문에 24년 데이터는 제거하고 업데이트\n", + "air= air.loc[~((air['year'] == 2024) & (air['month'] == 1) & (air['day'] == 1) & (air['hour'] == 0)),:] # 2024년 1월 1일 0시 데이터 제외 " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "지역 0\n", + "망 0\n", + "측정소코드 0\n", + "측정소명 0\n", + "측정일시 0\n", + "O3 1152577\n", + "NO2 1172756\n", + "PM10 1441888\n", + "PM25 1970684\n", + "주소 0\n", + "year 0\n", + "month 0\n", + "day 0\n", + "hour 0\n", + "dtype: int64" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(air).sum() # 결측치 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(28178038, 14)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "air.reset_index(drop=True, inplace=True) # 인덱스 초기화" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour
0서울 중구도시대기111121중구2018-01-01 00:00:000.01300.028031.016.0서울 중구 덕수궁길 152018110
1서울 중구도시대기111121중구2018-01-01 01:00:000.02000.020034.019.0서울 중구 덕수궁길 152018111
2서울 중구도시대기111121중구2018-01-01 02:00:000.02400.016027.014.0서울 중구 덕수궁길 152018112
3서울 중구도시대기111121중구2018-01-01 03:00:000.01800.022026.014.0서울 중구 덕수궁길 152018113
4서울 중구도시대기111121중구2018-01-01 04:00:000.01000.030026.015.0서울 중구 덕수궁길 152018114
.............................................
28178033인천 옹진군국가배경농도831495울도2023-12-31 19:00:000.04400.007567.057.0인천 옹진군 덕적면 울도리 85번지2023123119
28178034인천 옹진군국가배경농도831495울도2023-12-31 20:00:000.04150.008664.057.0인천 옹진군 덕적면 울도리 85번지2023123120
28178035인천 옹진군국가배경농도831495울도2023-12-31 21:00:000.04090.009562.050.0인천 옹진군 덕적면 울도리 85번지2023123121
28178036인천 옹진군국가배경농도831495울도2023-12-31 22:00:000.04140.011165.059.0인천 옹진군 덕적면 울도리 85번지2023123122
28178037인천 옹진군국가배경농도831495울도2023-12-31 23:00:000.04110.011263.054.0인천 옹진군 덕적면 울도리 85번지2023123123
\n", + "

28178038 rows × 14 columns

\n", + "
" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 O3 NO2 \\\n", + "0 서울 중구 도시대기 111121 중구 2018-01-01 00:00:00 0.0130 0.0280 \n", + "1 서울 중구 도시대기 111121 중구 2018-01-01 01:00:00 0.0200 0.0200 \n", + "2 서울 중구 도시대기 111121 중구 2018-01-01 02:00:00 0.0240 0.0160 \n", + "3 서울 중구 도시대기 111121 중구 2018-01-01 03:00:00 0.0180 0.0220 \n", + "4 서울 중구 도시대기 111121 중구 2018-01-01 04:00:00 0.0100 0.0300 \n", + "... ... ... ... ... ... ... ... \n", + "28178033 인천 옹진군 국가배경농도 831495 울도 2023-12-31 19:00:00 0.0440 0.0075 \n", + "28178034 인천 옹진군 국가배경농도 831495 울도 2023-12-31 20:00:00 0.0415 0.0086 \n", + "28178035 인천 옹진군 국가배경농도 831495 울도 2023-12-31 21:00:00 0.0409 0.0095 \n", + "28178036 인천 옹진군 국가배경농도 831495 울도 2023-12-31 22:00:00 0.0414 0.0111 \n", + "28178037 인천 옹진군 국가배경농도 831495 울도 2023-12-31 23:00:00 0.0411 0.0112 \n", + "\n", + " PM10 PM25 주소 year month day hour \n", + "0 31.0 16.0 서울 중구 덕수궁길 15 2018 1 1 0 \n", + "1 34.0 19.0 서울 중구 덕수궁길 15 2018 1 1 1 \n", + "2 27.0 14.0 서울 중구 덕수궁길 15 2018 1 1 2 \n", + "3 26.0 14.0 서울 중구 덕수궁길 15 2018 1 1 3 \n", + "4 26.0 15.0 서울 중구 덕수궁길 15 2018 1 1 4 \n", + "... ... ... ... ... ... ... ... \n", + "28178033 67.0 57.0 인천 옹진군 덕적면 울도리 85번지 2023 12 31 19 \n", + "28178034 64.0 57.0 인천 옹진군 덕적면 울도리 85번지 2023 12 31 20 \n", + "28178035 62.0 50.0 인천 옹진군 덕적면 울도리 85번지 2023 12 31 21 \n", + "28178036 65.0 59.0 인천 옹진군 덕적면 울도리 85번지 2023 12 31 22 \n", + "28178037 63.0 54.0 인천 옹진군 덕적면 울도리 85번지 2023 12 31 23 \n", + "\n", + "[28178038 rows x 14 columns]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "air.drop(['망'], axis=1, inplace=True) # 망 feature 제거" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour
0서울 중구111121중구2018-01-01 00:00:000.01300.028031.016.0서울 중구 덕수궁길 152018110
1서울 중구111121중구2018-01-01 01:00:000.02000.020034.019.0서울 중구 덕수궁길 152018111
2서울 중구111121중구2018-01-01 02:00:000.02400.016027.014.0서울 중구 덕수궁길 152018112
3서울 중구111121중구2018-01-01 03:00:000.01800.022026.014.0서울 중구 덕수궁길 152018113
4서울 중구111121중구2018-01-01 04:00:000.01000.030026.015.0서울 중구 덕수궁길 152018114
..........................................
28178033인천 옹진군831495울도2023-12-31 19:00:000.04400.007567.057.0인천 옹진군 덕적면 울도리 85번지2023123119
28178034인천 옹진군831495울도2023-12-31 20:00:000.04150.008664.057.0인천 옹진군 덕적면 울도리 85번지2023123120
28178035인천 옹진군831495울도2023-12-31 21:00:000.04090.009562.050.0인천 옹진군 덕적면 울도리 85번지2023123121
28178036인천 옹진군831495울도2023-12-31 22:00:000.04140.011165.059.0인천 옹진군 덕적면 울도리 85번지2023123122
28178037인천 옹진군831495울도2023-12-31 23:00:000.04110.011263.054.0인천 옹진군 덕적면 울도리 85번지2023123123
\n", + "

28178038 rows × 13 columns

\n", + "
" + ], + "text/plain": [ + " 지역 측정소코드 측정소명 측정일시 O3 NO2 PM10 PM25 \\\n", + "0 서울 중구 111121 중구 2018-01-01 00:00:00 0.0130 0.0280 31.0 16.0 \n", + "1 서울 중구 111121 중구 2018-01-01 01:00:00 0.0200 0.0200 34.0 19.0 \n", + "2 서울 중구 111121 중구 2018-01-01 02:00:00 0.0240 0.0160 27.0 14.0 \n", + "3 서울 중구 111121 중구 2018-01-01 03:00:00 0.0180 0.0220 26.0 14.0 \n", + "4 서울 중구 111121 중구 2018-01-01 04:00:00 0.0100 0.0300 26.0 15.0 \n", + "... ... ... ... ... ... ... ... ... \n", + "28178033 인천 옹진군 831495 울도 2023-12-31 19:00:00 0.0440 0.0075 67.0 57.0 \n", + "28178034 인천 옹진군 831495 울도 2023-12-31 20:00:00 0.0415 0.0086 64.0 57.0 \n", + "28178035 인천 옹진군 831495 울도 2023-12-31 21:00:00 0.0409 0.0095 62.0 50.0 \n", + "28178036 인천 옹진군 831495 울도 2023-12-31 22:00:00 0.0414 0.0111 65.0 59.0 \n", + "28178037 인천 옹진군 831495 울도 2023-12-31 23:00:00 0.0411 0.0112 63.0 54.0 \n", + "\n", + " 주소 year month day hour \n", + "0 서울 중구 덕수궁길 15 2018 1 1 0 \n", + "1 서울 중구 덕수궁길 15 2018 1 1 1 \n", + "2 서울 중구 덕수궁길 15 2018 1 1 2 \n", + "3 서울 중구 덕수궁길 15 2018 1 1 3 \n", + "4 서울 중구 덕수궁길 15 2018 1 1 4 \n", + "... ... ... ... ... ... \n", + "28178033 인천 옹진군 덕적면 울도리 85번지 2023 12 31 19 \n", + "28178034 인천 옹진군 덕적면 울도리 85번지 2023 12 31 20 \n", + "28178035 인천 옹진군 덕적면 울도리 85번지 2023 12 31 21 \n", + "28178036 인천 옹진군 덕적면 울도리 85번지 2023 12 31 22 \n", + "28178037 인천 옹진군 덕적면 울도리 85번지 2023 12 31 23 \n", + "\n", + "[28178038 rows x 13 columns]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "air['year'] = air['측정일시'].dt.year # 측정일시에서 년, 월, 일, 시간 추출\n", + "air['month'] = air['측정일시'].dt.month \n", + "air['day'] = air['측정일시'].dt.day\n", + "air['hour'] = air['측정일시'].dt.hour" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 28178038 entries, 0 to 28178037\n", + "Data columns (total 13 columns):\n", + " # Column Dtype \n", + "--- ------ ----- \n", + " 0 지역 object \n", + " 1 측정소코드 int64 \n", + " 2 측정소명 object \n", + " 3 측정일시 datetime64[ns]\n", + " 4 O3 float64 \n", + " 5 NO2 float64 \n", + " 6 PM10 float64 \n", + " 7 PM25 float64 \n", + " 8 주소 object \n", + " 9 year int64 \n", + " 10 month int64 \n", + " 11 day int64 \n", + " 12 hour int64 \n", + "dtypes: datetime64[ns](1), float64(4), int64(5), object(3)\n", + "memory usage: 2.7+ GB\n" + ] + } + ], + "source": [ + "air.info() # 데이터 타입 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "air.to_feather(\"../../data/대기질/air.feather\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 메모리 부족으로 인한 커널 재시작" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from tqdm import tqdm, notebook, trange" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# 2018~2023 ASOS 데이터 불러오기\n", + "asos_2018= pd.read_csv(\"../../data/ASOS/2018.csv\", encoding='cp949') # 2018년 ASOS 데이터\n", + "asos_2019= pd.read_csv(\"../../data/ASOS/2019.csv\", encoding='cp949') # 2019년 ASOS 데이터\n", + "asos_2020= pd.read_csv(\"../../data/ASOS/2020.csv\", encoding='cp949') # 2020년 ASOS 데이터\n", + "asos_2021= pd.read_csv(\"../../data/ASOS/2021.csv\", encoding='cp949') # 2021년 ASOS 데이터\n", + "asos_2022= pd.read_csv(\"../../data/ASOS/2022.csv\", encoding='cp949') # 2022년 ASOS 데이터\n", + "asos_2023= pd.read_csv(\"../../data/ASOS/2023.csv\", encoding='cp949') # 2023년 ASOS 데이터\n", + "\n", + "# 2018~2023 ASOS 데이터 합치기\n", + "asos= pd.concat([asos_2018, asos_2019, asos_2020, asos_2021, asos_2022, asos_2023], axis=0).copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "del([asos_2018, asos_2019, asos_2020, asos_2021, asos_2022, asos_2023]) # 사용하지 않는 데이터 삭제" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "596" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import gc\n", + "gc.collect() # 메모리 정리" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 14.81 GB\n", + "현재 메모리 사용량: 13.6%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5011265, 30)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos.shape # 데이터 shape 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "asos.reset_index(drop=True, inplace=True) # 인덱스 초기화" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "지점 0\n", + "지점명 0\n", + "일시 0\n", + "기온(°C) 4197\n", + "기온 QC플래그 4282900\n", + "강수량(mm) 4533611\n", + "강수량 QC플래그 4093970\n", + "풍속(m/s) 9726\n", + "풍속 QC플래그 4319125\n", + "풍향(16방위) 10294\n", + "풍향 QC플래그 4318626\n", + "습도(%) 6266\n", + "습도 QC플래그 4284220\n", + "증기압(hPa) 6486\n", + "이슬점온도(°C) 6534\n", + "현지기압(hPa) 4613\n", + "현지기압 QC플래그 4285584\n", + "해면기압(hPa) 5024\n", + "해면기압 QC플래그 4285200\n", + "일조(hr) 2275882\n", + "일조 QC플래그 2375218\n", + "일사(MJ/m2) 3691960\n", + "일사 QC플래그 1161673\n", + "적설(cm) 4905762\n", + "전운량(10분위) 479380\n", + "dtype: int64" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(asos).sum()[:25] # 결측치 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "중하층운량(10분위) 517822\n", + "최저운고(100m ) 2791937\n", + "시정(10m) 71059\n", + "지면온도(°C) 9742\n", + "지면온도 QC플래그 4260093\n", + "dtype: int64" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(asos).sum()[25:] # 결측치 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# 년, 월, 일, 시간 컬럼 생성\n", + "asos['year'], asos['month'], asos['day'], asos['hour']= pd.to_datetime(asos['일시']).dt.year, pd.to_datetime(asos['일시']).dt.month, pd.to_datetime(asos['일시']).dt.day, pd.to_datetime(asos['일시']).dt.hour" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "asos.sort_values(by=['지점', '일시'], inplace=True) # 지점, 일시 기준으로 정렬" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['지점', '지점명', '일시', '기온(°C)', '기온 QC플래그', '강수량(mm)', '강수량 QC플래그',\n", + " '풍속(m/s)', '풍속 QC플래그', '풍향(16방위)', '풍향 QC플래그', '습도(%)', '습도 QC플래그',\n", + " '증기압(hPa)', '이슬점온도(°C)', '현지기압(hPa)', '현지기압 QC플래그', '해면기압(hPa)',\n", + " '해면기압 QC플래그', '일조(hr)', '일조 QC플래그', '일사(MJ/m2)', '일사 QC플래그', '적설(cm)',\n", + " '전운량(10분위)', '중하층운량(10분위)', '최저운고(100m )', '시정(10m)', '지면온도(°C)',\n", + " '지면온도 QC플래그', 'year', 'month', 'day', 'hour'],\n", + " dtype='object')" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos.columns # 컬럼 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "asos.reset_index(drop=True, inplace=True) # 인덱스 초기화" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['속초', '북춘천', '철원', '동두천', '파주', '대관령', '춘천', '백령도', '북강릉', '강릉',\n", + " '동해', '서울', '인천', '원주', '울릉도', '수원', '영월', '충주', '서산', '울진', '청주',\n", + " '대전', '추풍령', '안동', '상주', '포항', '군산', '대구', '전주', '울산', '창원', '광주',\n", + " '부산', '통영', '목포', '여수', '흑산도', '완도', '고창', '순천', '진도(첨찰산)', '홍성',\n", + " '서청주', '제주', '고산', '성산', '서귀포', '진주', '강화', '양평', '이천', '인제', '홍천',\n", + " '태백', '정선군', '제천', '보은', '천안', '보령', '부여', '금산', '세종', '부안', '임실',\n", + " '정읍', '남원', '장수', '고창군', '영광군', '김해시', '순창군', '북창원', '양산시', '보성군',\n", + " '강진군', '장흥', '해남', '고흥', '의령군', '함양군', '광양시', '진도군', '봉화', '영주',\n", + " '문경', '청송군', '영덕', '의성', '구미', '영천', '경주시', '거창', '합천', '밀양', '산청',\n", + " '거제', '남해', '북부산'], dtype=object)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos['지점명'].unique() # 지점명 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "asos.to_feather(\"../../data/ASOS/asos.feather\") # asos 데이터 feather 형태의 데이터로 저장" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# asos 지점명과 air 측정소명의 일치하지 않는 데이터가 꽤 많아서 지점명과 측정소명만으로 두 데이터를 merge 시키는 것에 한계를 느꼈음." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 그렇기 때문에 asos 지점에 맞는 좌표 값을 기입해주고 air 데이터는 DataON에서 제공해주는 대기질 데이터에 측정소의 좌표 값이 있기 때문에 그것을 활용하여 좌표 값을 얻은 다음 asos의 지점 A가 있다 치고 air 데이터의 지점 B,C,D,F가 있다고 하면 A-B,A-C, A-D, A-F 간의 거리를 구한 다음 거리가 가장 짧을 것을 묶어줄 생각이다." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### **메모리 부족으로 인해 커널 재시작**" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 13.38 GB\n", + "현재 메모리 사용량: 12.4%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "asos = pd.read_feather(\"../../data/ASOS/asos.feather\") # asos 데이터 불러오기" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지점지점명일시기온(°C)기온 QC플래그강수량(mm)강수량 QC플래그풍속(m/s)풍속 QC플래그풍향(16방위)...전운량(10분위)중하층운량(10분위)최저운고(100m )시정(10m)지면온도(°C)지면온도 QC플래그yearmonthdayhour
090속초2018-01-01 00:00-1.00.0NaNNaN1.1NaN250.0...NaNNaNNaN2000.0-2.30.02018110
190속초2018-01-01 01:00-2.10.0NaNNaN1.70.0230.0...NaNNaNNaN2000.0-2.70.02018111
290속초2018-01-01 02:00-2.10.0NaNNaN1.40.0160.0...NaNNaNNaN2000.0-3.00.02018112
390속초2018-01-01 03:00-2.20.0NaNNaN0.90.0230.0...NaNNaNNaN2000.0-3.20.02018113
490속초2018-01-01 04:00-2.00.0NaNNaN1.20.0250.0...NaNNaNNaN2000.0-3.30.02018114
..................................................................
5011260296북부산2023-12-31 19:006.6NaNNaN9.01.5NaN320.0...0.00.0NaN4501.02.8NaN2023123119
5011261296북부산2023-12-31 20:005.9NaNNaN9.01.8NaN320.0...0.00.0NaN4240.02.1NaN2023123120
5011262296북부산2023-12-31 21:005.1NaNNaN9.01.2NaN250.0...0.00.0NaN3708.01.1NaN2023123121
5011263296북부산2023-12-31 22:003.5NaNNaN9.00.7NaN290.0...0.00.0NaN2751.00.2NaN2023123122
5011264296북부산2023-12-31 23:001.8NaNNaN9.00.5NaN360.0...0.00.0NaN2222.0-0.3NaN2023123123
\n", + "

5011265 rows × 34 columns

\n", + "
" + ], + "text/plain": [ + " 지점 지점명 일시 기온(°C) 기온 QC플래그 강수량(mm) 강수량 QC플래그 \\\n", + "0 90 속초 2018-01-01 00:00 -1.0 0.0 NaN NaN \n", + "1 90 속초 2018-01-01 01:00 -2.1 0.0 NaN NaN \n", + "2 90 속초 2018-01-01 02:00 -2.1 0.0 NaN NaN \n", + "3 90 속초 2018-01-01 03:00 -2.2 0.0 NaN NaN \n", + "4 90 속초 2018-01-01 04:00 -2.0 0.0 NaN NaN \n", + "... ... ... ... ... ... ... ... \n", + "5011260 296 북부산 2023-12-31 19:00 6.6 NaN NaN 9.0 \n", + "5011261 296 북부산 2023-12-31 20:00 5.9 NaN NaN 9.0 \n", + "5011262 296 북부산 2023-12-31 21:00 5.1 NaN NaN 9.0 \n", + "5011263 296 북부산 2023-12-31 22:00 3.5 NaN NaN 9.0 \n", + "5011264 296 북부산 2023-12-31 23:00 1.8 NaN NaN 9.0 \n", + "\n", + " 풍속(m/s) 풍속 QC플래그 풍향(16방위) ... 전운량(10분위) 중하층운량(10분위) \\\n", + "0 1.1 NaN 250.0 ... NaN NaN \n", + "1 1.7 0.0 230.0 ... NaN NaN \n", + "2 1.4 0.0 160.0 ... NaN NaN \n", + "3 0.9 0.0 230.0 ... NaN NaN \n", + "4 1.2 0.0 250.0 ... NaN NaN \n", + "... ... ... ... ... ... ... \n", + "5011260 1.5 NaN 320.0 ... 0.0 0.0 \n", + "5011261 1.8 NaN 320.0 ... 0.0 0.0 \n", + "5011262 1.2 NaN 250.0 ... 0.0 0.0 \n", + "5011263 0.7 NaN 290.0 ... 0.0 0.0 \n", + "5011264 0.5 NaN 360.0 ... 0.0 0.0 \n", + "\n", + " 최저운고(100m ) 시정(10m) 지면온도(°C) 지면온도 QC플래그 year month day hour \n", + "0 NaN 2000.0 -2.3 0.0 2018 1 1 0 \n", + "1 NaN 2000.0 -2.7 0.0 2018 1 1 1 \n", + "2 NaN 2000.0 -3.0 0.0 2018 1 1 2 \n", + "3 NaN 2000.0 -3.2 0.0 2018 1 1 3 \n", + "4 NaN 2000.0 -3.3 0.0 2018 1 1 4 \n", + "... ... ... ... ... ... ... ... ... \n", + "5011260 NaN 4501.0 2.8 NaN 2023 12 31 19 \n", + "5011261 NaN 4240.0 2.1 NaN 2023 12 31 20 \n", + "5011262 NaN 3708.0 1.1 NaN 2023 12 31 21 \n", + "5011263 NaN 2751.0 0.2 NaN 2023 12 31 22 \n", + "5011264 NaN 2222.0 -0.3 NaN 2023 12 31 23 \n", + "\n", + "[5011265 rows x 34 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# ASOS 지점명에 해당하는 좌표 값을 기상청 홈페이지에서 검색하여 하나씩 노가다로 추출 필요\n", + "pd.DataFrame(pd.Series(asos['지점명'].unique()).sort_values().reset_index(drop=True), columns=['지점명']).to_excel(\"../../data/ASOS/지점명.xlsx\", index=False) # 이 지점명을 토대로 위도 경도 하나씩 98개 데이터 기입 필요" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "stn_info= pd.read_excel(\"../../data/ASOS/asos_지점명_위도경도.xlsx\") # 위도 경도 데이터 불러오기" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지점명위도경도
0강릉37.75147128.89099
1강진군34.64464126.78405
2강화37.70739126.44634
3거제34.88818128.60459
4거창35.66739127.90990
............
93합천35.56505128.16994
94해남34.55375126.56907
95홍성36.65759126.68772
96홍천37.6836127.88043
97흑산도34.68719125.45105
\n", + "

98 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " 지점명 위도 경도\n", + "0 강릉 37.75147 128.89099\n", + "1 강진군 34.64464 126.78405\n", + "2 강화 37.70739 126.44634\n", + "3 거제 34.88818 128.60459\n", + "4 거창 35.66739 127.90990\n", + ".. ... ... ...\n", + "93 합천 35.56505 128.16994\n", + "94 해남 34.55375 126.56907\n", + "95 홍성 36.65759 126.68772\n", + "96 홍천 37.6836 127.88043\n", + "97 흑산도 34.68719 125.45105\n", + "\n", + "[98 rows x 3 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stn_info" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "36.57293 1\n", + "38.05986 1\n", + "35.17294 1\n", + "37.88589 1\n", + "37.97396 1\n", + " ..\n", + "36.10565 1\n", + "34.81732 1\n", + "38.25085 1\n", + "37.90188 1\n", + "34.76335 1\n", + "Name: 위도, Length: 98, dtype: int64" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 위도 값 중복이 있는지 확인(value_counts는 기본적으로 갯수가 많은 순서대로 정렬이기 떄문에 가장 위의 값이 1이면 중복이 없는 것)\n", + "stn_info['위도'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "128.51687 1\n", + "129.20123 1\n", + "125.45105 1\n", + "126.59900 1\n", + "127.74063 1\n", + " ..\n", + "127.49446 1\n", + "127.73570 1\n", + "126.55744 1\n", + "127.73415 1\n", + "128.14879 1\n", + "Name: 경도, Length: 98, dtype: int64" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 경도 값 중복이 있는지 확인(value_counts는 기본적으로 갯수가 많은 순서대로 정렬이기 떄문에 가장 위의 값이 1이면 중복이 없는 것)\n", + "stn_info['경도'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 98 entries, 0 to 97\n", + "Data columns (total 3 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 지점명 98 non-null object \n", + " 1 위도 98 non-null object \n", + " 2 경도 98 non-null float64\n", + "dtypes: float64(1), object(2)\n", + "memory usage: 2.4+ KB\n" + ] + } + ], + "source": [ + "stn_info.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# 위도 데이터 타입 변경\n", + "stn_info['위도']= stn_info['위도'].astype(\"float\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 98 entries, 0 to 97\n", + "Data columns (total 3 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 지점명 98 non-null object \n", + " 1 위도 98 non-null float64\n", + " 2 경도 98 non-null float64\n", + "dtypes: float64(2), object(1)\n", + "memory usage: 2.4+ KB\n" + ] + } + ], + "source": [ + "stn_info.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 98/98 [00:46<00:00, 2.09it/s]\n" + ] + } + ], + "source": [ + "from tqdm import tqdm, trange, notebook\n", + "\n", + "# asos 데이터에 각 지점에 맞는 위도와 경도를 기상청에서 얻은 정보를 기반으로 추가한다.\n", + "for i in tqdm(stn_info['지점명']): \n", + " asos.loc[asos['지점명']==i, '위도']= stn_info.loc[stn_info['지점명']==i, '위도'].values[0]\n", + " asos.loc[asos['지점명']==i, '경도']= stn_info.loc[stn_info['지점명']==i, '경도'].values[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "98" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(asos['지점명'].unique()) # 98개" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(98,)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stn_info['위도'].unique().shape # 98개" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(98,)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "stn_info['경도'].unique().shape # 98개" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 98/98 [00:00<00:00, 2219.76it/s]\n" + ] + } + ], + "source": [ + "for i in tqdm(range(stn_info.shape[0])): # 위도 중복 확인\n", + " for j in range(i+1,stn_info.shape[0]):\n", + " if stn_info['위도'][i] == stn_info['위도'][j]:\n", + " print(stn_info['지점명'][i], stn_info['지점명'][j])" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "asos.to_feather(\"../../data/ASOS/asos_fill_위경.feather\") # 위도 경도 추가한 asos 데이터 feather 형태로 저장" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 메모리 부족으로 인한 커널 재시작" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "air= pd.read_feather(\"../../data/대기질/air.feather\") # 대기질 데이터 불러오기\n", + "asos= pd.read_feather(\"../../data/ASOS/asos_fill_위경.feather\") # 위도와 경도가 추가된 asos 데이터 불러오기" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지점지점명일시기온(°C)기온 QC플래그강수량(mm)강수량 QC플래그풍속(m/s)풍속 QC플래그풍향(16방위)...최저운고(100m )시정(10m)지면온도(°C)지면온도 QC플래그yearmonthdayhour위도경도
090속초2018-01-01 00:00-1.00.0NaNNaN1.1NaN250.0...NaN2000.0-2.30.0201811038.250850128.564730
190속초2018-01-01 01:00-2.10.0NaNNaN1.70.0230.0...NaN2000.0-2.70.0201811138.250850128.564730
290속초2018-01-01 02:00-2.10.0NaNNaN1.40.0160.0...NaN2000.0-3.00.0201811238.250850128.564730
390속초2018-01-01 03:00-2.20.0NaNNaN0.90.0230.0...NaN2000.0-3.20.0201811338.250850128.564730
490속초2018-01-01 04:00-2.00.0NaNNaN1.20.0250.0...NaN2000.0-3.30.0201811438.250850128.564730
..................................................................
5011260296북부산2023-12-31 19:006.6NaNNaN9.01.5NaN320.0...NaN4501.02.8NaN202312311935.217781128.960242
5011261296북부산2023-12-31 20:005.9NaNNaN9.01.8NaN320.0...NaN4240.02.1NaN202312312035.217781128.960242
5011262296북부산2023-12-31 21:005.1NaNNaN9.01.2NaN250.0...NaN3708.01.1NaN202312312135.217781128.960242
5011263296북부산2023-12-31 22:003.5NaNNaN9.00.7NaN290.0...NaN2751.00.2NaN202312312235.217781128.960242
5011264296북부산2023-12-31 23:001.8NaNNaN9.00.5NaN360.0...NaN2222.0-0.3NaN202312312335.217781128.960242
\n", + "

5011265 rows × 36 columns

\n", + "
" + ], + "text/plain": [ + " 지점 지점명 일시 기온(°C) 기온 QC플래그 강수량(mm) 강수량 QC플래그 \\\n", + "0 90 속초 2018-01-01 00:00 -1.0 0.0 NaN NaN \n", + "1 90 속초 2018-01-01 01:00 -2.1 0.0 NaN NaN \n", + "2 90 속초 2018-01-01 02:00 -2.1 0.0 NaN NaN \n", + "3 90 속초 2018-01-01 03:00 -2.2 0.0 NaN NaN \n", + "4 90 속초 2018-01-01 04:00 -2.0 0.0 NaN NaN \n", + "... ... ... ... ... ... ... ... \n", + "5011260 296 북부산 2023-12-31 19:00 6.6 NaN NaN 9.0 \n", + "5011261 296 북부산 2023-12-31 20:00 5.9 NaN NaN 9.0 \n", + "5011262 296 북부산 2023-12-31 21:00 5.1 NaN NaN 9.0 \n", + "5011263 296 북부산 2023-12-31 22:00 3.5 NaN NaN 9.0 \n", + "5011264 296 북부산 2023-12-31 23:00 1.8 NaN NaN 9.0 \n", + "\n", + " 풍속(m/s) 풍속 QC플래그 풍향(16방위) ... 최저운고(100m ) 시정(10m) 지면온도(°C) \\\n", + "0 1.1 NaN 250.0 ... NaN 2000.0 -2.3 \n", + "1 1.7 0.0 230.0 ... NaN 2000.0 -2.7 \n", + "2 1.4 0.0 160.0 ... NaN 2000.0 -3.0 \n", + "3 0.9 0.0 230.0 ... NaN 2000.0 -3.2 \n", + "4 1.2 0.0 250.0 ... NaN 2000.0 -3.3 \n", + "... ... ... ... ... ... ... ... \n", + "5011260 1.5 NaN 320.0 ... NaN 4501.0 2.8 \n", + "5011261 1.8 NaN 320.0 ... NaN 4240.0 2.1 \n", + "5011262 1.2 NaN 250.0 ... NaN 3708.0 1.1 \n", + "5011263 0.7 NaN 290.0 ... NaN 2751.0 0.2 \n", + "5011264 0.5 NaN 360.0 ... NaN 2222.0 -0.3 \n", + "\n", + " 지면온도 QC플래그 year month day hour 위도 경도 \n", + "0 0.0 2018 1 1 0 38.250850 128.564730 \n", + "1 0.0 2018 1 1 1 38.250850 128.564730 \n", + "2 0.0 2018 1 1 2 38.250850 128.564730 \n", + "3 0.0 2018 1 1 3 38.250850 128.564730 \n", + "4 0.0 2018 1 1 4 38.250850 128.564730 \n", + "... ... ... ... ... ... ... ... \n", + "5011260 NaN 2023 12 31 19 35.217781 128.960242 \n", + "5011261 NaN 2023 12 31 20 35.217781 128.960242 \n", + "5011262 NaN 2023 12 31 21 35.217781 128.960242 \n", + "5011263 NaN 2023 12 31 22 35.217781 128.960242 \n", + "5011264 NaN 2023 12 31 23 35.217781 128.960242 \n", + "\n", + "[5011265 rows x 36 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour
0서울 중구111121중구2018-01-01 00:00:000.01300.028031.016.0서울 중구 덕수궁길 152018110
1서울 중구111121중구2018-01-01 01:00:000.02000.020034.019.0서울 중구 덕수궁길 152018111
2서울 중구111121중구2018-01-01 02:00:000.02400.016027.014.0서울 중구 덕수궁길 152018112
3서울 중구111121중구2018-01-01 03:00:000.01800.022026.014.0서울 중구 덕수궁길 152018113
4서울 중구111121중구2018-01-01 04:00:000.01000.030026.015.0서울 중구 덕수궁길 152018114
..........................................
28178033인천 옹진군831495울도2023-12-31 19:00:000.04400.007567.057.0인천 옹진군 덕적면 울도리 85번지2023123119
28178034인천 옹진군831495울도2023-12-31 20:00:000.04150.008664.057.0인천 옹진군 덕적면 울도리 85번지2023123120
28178035인천 옹진군831495울도2023-12-31 21:00:000.04090.009562.050.0인천 옹진군 덕적면 울도리 85번지2023123121
28178036인천 옹진군831495울도2023-12-31 22:00:000.04140.011165.059.0인천 옹진군 덕적면 울도리 85번지2023123122
28178037인천 옹진군831495울도2023-12-31 23:00:000.04110.011263.054.0인천 옹진군 덕적면 울도리 85번지2023123123
\n", + "

28178038 rows × 13 columns

\n", + "
" + ], + "text/plain": [ + " 지역 측정소코드 측정소명 측정일시 O3 NO2 PM10 PM25 \\\n", + "0 서울 중구 111121 중구 2018-01-01 00:00:00 0.0130 0.0280 31.0 16.0 \n", + "1 서울 중구 111121 중구 2018-01-01 01:00:00 0.0200 0.0200 34.0 19.0 \n", + "2 서울 중구 111121 중구 2018-01-01 02:00:00 0.0240 0.0160 27.0 14.0 \n", + "3 서울 중구 111121 중구 2018-01-01 03:00:00 0.0180 0.0220 26.0 14.0 \n", + "4 서울 중구 111121 중구 2018-01-01 04:00:00 0.0100 0.0300 26.0 15.0 \n", + "... ... ... ... ... ... ... ... ... \n", + "28178033 인천 옹진군 831495 울도 2023-12-31 19:00:00 0.0440 0.0075 67.0 57.0 \n", + "28178034 인천 옹진군 831495 울도 2023-12-31 20:00:00 0.0415 0.0086 64.0 57.0 \n", + "28178035 인천 옹진군 831495 울도 2023-12-31 21:00:00 0.0409 0.0095 62.0 50.0 \n", + "28178036 인천 옹진군 831495 울도 2023-12-31 22:00:00 0.0414 0.0111 65.0 59.0 \n", + "28178037 인천 옹진군 831495 울도 2023-12-31 23:00:00 0.0411 0.0112 63.0 54.0 \n", + "\n", + " 주소 year month day hour \n", + "0 서울 중구 덕수궁길 15 2018 1 1 0 \n", + "1 서울 중구 덕수궁길 15 2018 1 1 1 \n", + "2 서울 중구 덕수궁길 15 2018 1 1 2 \n", + "3 서울 중구 덕수궁길 15 2018 1 1 3 \n", + "4 서울 중구 덕수궁길 15 2018 1 1 4 \n", + "... ... ... ... ... ... \n", + "28178033 인천 옹진군 덕적면 울도리 85번지 2023 12 31 19 \n", + "28178034 인천 옹진군 덕적면 울도리 85번지 2023 12 31 20 \n", + "28178035 인천 옹진군 덕적면 울도리 85번지 2023 12 31 21 \n", + "28178036 인천 옹진군 덕적면 울도리 85번지 2023 12 31 22 \n", + "28178037 인천 옹진군 덕적면 울도리 85번지 2023 12 31 23 \n", + "\n", + "[28178038 rows x 13 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ASOS 데이터에 위도 경도 기입은 완료\n", + "\n", + "\n", + "## AIR 데이터에 위도와 경도 기입할 차례" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "447" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import gc\n", + "gc.collect()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "asos['year'] = asos['year'].astype(\"int\") # year 데이터 타입 변경\n", + "asos['month'] = asos['month'].astype(\"int\") # month 데이터 타입 변경\n", + "asos['day'] = asos['day'].astype(\"int\") # day 데이터 타입 변경\n", + "asos['hour'] = asos['hour'].astype(\"int\") # hour 데이터 타입 변경" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "30" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos.columns.tolist().index(\"year\") # year 컬럼 인덱스 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 5011265 entries, 0 to 5011264\n", + "Data columns (total 16 columns):\n", + " # Column Dtype \n", + "--- ------ ----- \n", + " 0 일조 QC플래그 float64\n", + " 1 일사(MJ/m2) float64\n", + " 2 일사 QC플래그 float64\n", + " 3 적설(cm) float64\n", + " 4 전운량(10분위) float64\n", + " 5 중하층운량(10분위) float64\n", + " 6 최저운고(100m ) float64\n", + " 7 시정(10m) float64\n", + " 8 지면온도(°C) float64\n", + " 9 지면온도 QC플래그 float64\n", + " 10 year int64 \n", + " 11 month int64 \n", + " 12 day int64 \n", + " 13 hour int64 \n", + " 14 위도 float64\n", + " 15 경도 float64\n", + "dtypes: float64(12), int64(4)\n", + "memory usage: 611.7 MB\n" + ] + } + ], + "source": [ + "asos.iloc[:,20:].info() # year, month, day, hour 변경된 데이터 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지점지점명일시기온(°C)기온 QC플래그강수량(mm)강수량 QC플래그풍속(m/s)풍속 QC플래그풍향(16방위)...최저운고(100m )시정(10m)지면온도(°C)지면온도 QC플래그yearmonthdayhour위도경도
090속초2018-01-01 00:00-1.00.0NaNNaN1.1NaN250.0...NaN2000.0-2.30.0201811038.25085128.56473
190속초2018-01-01 01:00-2.10.0NaNNaN1.70.0230.0...NaN2000.0-2.70.0201811138.25085128.56473
290속초2018-01-01 02:00-2.10.0NaNNaN1.40.0160.0...NaN2000.0-3.00.0201811238.25085128.56473
390속초2018-01-01 03:00-2.20.0NaNNaN0.90.0230.0...NaN2000.0-3.20.0201811338.25085128.56473
490속초2018-01-01 04:00-2.00.0NaNNaN1.20.0250.0...NaN2000.0-3.30.0201811438.25085128.56473
\n", + "

5 rows × 36 columns

\n", + "
" + ], + "text/plain": [ + " 지점 지점명 일시 기온(°C) 기온 QC플래그 강수량(mm) 강수량 QC플래그 풍속(m/s) \\\n", + "0 90 속초 2018-01-01 00:00 -1.0 0.0 NaN NaN 1.1 \n", + "1 90 속초 2018-01-01 01:00 -2.1 0.0 NaN NaN 1.7 \n", + "2 90 속초 2018-01-01 02:00 -2.1 0.0 NaN NaN 1.4 \n", + "3 90 속초 2018-01-01 03:00 -2.2 0.0 NaN NaN 0.9 \n", + "4 90 속초 2018-01-01 04:00 -2.0 0.0 NaN NaN 1.2 \n", + "\n", + " 풍속 QC플래그 풍향(16방위) ... 최저운고(100m ) 시정(10m) 지면온도(°C) 지면온도 QC플래그 year \\\n", + "0 NaN 250.0 ... NaN 2000.0 -2.3 0.0 2018 \n", + "1 0.0 230.0 ... NaN 2000.0 -2.7 0.0 2018 \n", + "2 0.0 160.0 ... NaN 2000.0 -3.0 0.0 2018 \n", + "3 0.0 230.0 ... NaN 2000.0 -3.2 0.0 2018 \n", + "4 0.0 250.0 ... NaN 2000.0 -3.3 0.0 2018 \n", + "\n", + " month day hour 위도 경도 \n", + "0 1 1 0 38.25085 128.56473 \n", + "1 1 1 1 38.25085 128.56473 \n", + "2 1 1 2 38.25085 128.56473 \n", + "3 1 1 3 38.25085 128.56473 \n", + "4 1 1 4 38.25085 128.56473 \n", + "\n", + "[5 rows x 36 columns]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour
0서울 중구111121중구2018-01-01 00:00:000.01300.028031.016.0서울 중구 덕수궁길 152018110
1서울 중구111121중구2018-01-01 01:00:000.02000.020034.019.0서울 중구 덕수궁길 152018111
2서울 중구111121중구2018-01-01 02:00:000.02400.016027.014.0서울 중구 덕수궁길 152018112
3서울 중구111121중구2018-01-01 03:00:000.01800.022026.014.0서울 중구 덕수궁길 152018113
4서울 중구111121중구2018-01-01 04:00:000.01000.030026.015.0서울 중구 덕수궁길 152018114
..........................................
28178033인천 옹진군831495울도2023-12-31 19:00:000.04400.007567.057.0인천 옹진군 덕적면 울도리 85번지2023123119
28178034인천 옹진군831495울도2023-12-31 20:00:000.04150.008664.057.0인천 옹진군 덕적면 울도리 85번지2023123120
28178035인천 옹진군831495울도2023-12-31 21:00:000.04090.009562.050.0인천 옹진군 덕적면 울도리 85번지2023123121
28178036인천 옹진군831495울도2023-12-31 22:00:000.04140.011165.059.0인천 옹진군 덕적면 울도리 85번지2023123122
28178037인천 옹진군831495울도2023-12-31 23:00:000.04110.011263.054.0인천 옹진군 덕적면 울도리 85번지2023123123
\n", + "

28178038 rows × 13 columns

\n", + "
" + ], + "text/plain": [ + " 지역 측정소코드 측정소명 측정일시 O3 NO2 PM10 PM25 \\\n", + "0 서울 중구 111121 중구 2018-01-01 00:00:00 0.0130 0.0280 31.0 16.0 \n", + "1 서울 중구 111121 중구 2018-01-01 01:00:00 0.0200 0.0200 34.0 19.0 \n", + "2 서울 중구 111121 중구 2018-01-01 02:00:00 0.0240 0.0160 27.0 14.0 \n", + "3 서울 중구 111121 중구 2018-01-01 03:00:00 0.0180 0.0220 26.0 14.0 \n", + "4 서울 중구 111121 중구 2018-01-01 04:00:00 0.0100 0.0300 26.0 15.0 \n", + "... ... ... ... ... ... ... ... ... \n", + "28178033 인천 옹진군 831495 울도 2023-12-31 19:00:00 0.0440 0.0075 67.0 57.0 \n", + "28178034 인천 옹진군 831495 울도 2023-12-31 20:00:00 0.0415 0.0086 64.0 57.0 \n", + "28178035 인천 옹진군 831495 울도 2023-12-31 21:00:00 0.0409 0.0095 62.0 50.0 \n", + "28178036 인천 옹진군 831495 울도 2023-12-31 22:00:00 0.0414 0.0111 65.0 59.0 \n", + "28178037 인천 옹진군 831495 울도 2023-12-31 23:00:00 0.0411 0.0112 63.0 54.0 \n", + "\n", + " 주소 year month day hour \n", + "0 서울 중구 덕수궁길 15 2018 1 1 0 \n", + "1 서울 중구 덕수궁길 15 2018 1 1 1 \n", + "2 서울 중구 덕수궁길 15 2018 1 1 2 \n", + "3 서울 중구 덕수궁길 15 2018 1 1 3 \n", + "4 서울 중구 덕수궁길 15 2018 1 1 4 \n", + "... ... ... ... ... ... \n", + "28178033 인천 옹진군 덕적면 울도리 85번지 2023 12 31 19 \n", + "28178034 인천 옹진군 덕적면 울도리 85번지 2023 12 31 20 \n", + "28178035 인천 옹진군 덕적면 울도리 85번지 2023 12 31 21 \n", + "28178036 인천 옹진군 덕적면 울도리 85번지 2023 12 31 22 \n", + "28178037 인천 옹진군 덕적면 울도리 85번지 2023 12 31 23 \n", + "\n", + "[28178038 rows x 13 columns]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "660" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(air['측정소코드'].unique()) # 측정소명 개수 확인" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 커널 재시작" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import os\n", + "\n", + "# 데이터온에서 다운받은 데이터들이 저장된 디렉토리 경로에서 파일들을 불러와서 리스트로 저장\n", + "\n", + "# 파일들이 저장된 디렉토리 경로\n", + "directory = '../../data/dataon'\n", + "\n", + "# 디렉토리 내의 모든 파일을 리스트로 불러오기\n", + "all_files = [os.path.join(directory, f) for f in os.listdir(directory) if f.endswith('.csv')]" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "all_files.sort() # 파일 이름 순서대로 정렬" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['../../data/dataon/Korea_PM_20180101.csv',\n", + " '../../data/dataon/Korea_PM_20180102.csv',\n", + " '../../data/dataon/Korea_PM_20180104.csv',\n", + " '../../data/dataon/Korea_PM_20180105.csv',\n", + " '../../data/dataon/Korea_PM_20180106.csv',\n", + " '../../data/dataon/Korea_PM_20180107.csv',\n", + " '../../data/dataon/Korea_PM_20180108.csv',\n", + " '../../data/dataon/Korea_PM_20180109.csv',\n", + " '../../data/dataon/Korea_PM_20180110.csv',\n", + " '../../data/dataon/Korea_PM_20180111.csv',\n", + " '../../data/dataon/Korea_PM_20180112.csv',\n", + " '../../data/dataon/Korea_PM_20180113.csv',\n", + " '../../data/dataon/Korea_PM_20180114.csv',\n", + " '../../data/dataon/Korea_PM_20180115.csv',\n", + " '../../data/dataon/Korea_PM_20180116.csv',\n", + " '../../data/dataon/Korea_PM_20180117.csv',\n", + " '../../data/dataon/Korea_PM_20180118.csv',\n", + " '../../data/dataon/Korea_PM_20180119.csv',\n", + " '../../data/dataon/Korea_PM_20180120.csv',\n", + " '../../data/dataon/Korea_PM_20180121.csv',\n", + " '../../data/dataon/Korea_PM_20180122.csv',\n", + " '../../data/dataon/Korea_PM_20180123.csv',\n", + " '../../data/dataon/Korea_PM_20180124.csv',\n", + " '../../data/dataon/Korea_PM_20180125.csv',\n", + " '../../data/dataon/Korea_PM_20180126.csv',\n", + " '../../data/dataon/Korea_PM_20180127.csv',\n", + " '../../data/dataon/Korea_PM_20180128.csv',\n", + " '../../data/dataon/Korea_PM_20180129.csv',\n", + " '../../data/dataon/Korea_PM_20180130.csv',\n", + " '../../data/dataon/Korea_PM_20180131.csv',\n", + " '../../data/dataon/Korea_PM_20180201.csv',\n", + " '../../data/dataon/Korea_PM_20180202.csv',\n", + " '../../data/dataon/Korea_PM_20180203.csv',\n", + " '../../data/dataon/Korea_PM_20180204.csv',\n", + " '../../data/dataon/Korea_PM_20180205.csv',\n", + " '../../data/dataon/Korea_PM_20180206.csv',\n", + " '../../data/dataon/Korea_PM_20180207.csv',\n", + " '../../data/dataon/Korea_PM_20180208.csv',\n", + " '../../data/dataon/Korea_PM_20180209.csv',\n", + " '../../data/dataon/Korea_PM_20180210.csv',\n", + " '../../data/dataon/Korea_PM_20180211.csv',\n", + " '../../data/dataon/Korea_PM_20180212.csv',\n", + " '../../data/dataon/Korea_PM_20180213.csv',\n", + " '../../data/dataon/Korea_PM_20180214.csv',\n", + " '../../data/dataon/Korea_PM_20180215.csv',\n", + " '../../data/dataon/Korea_PM_20180216.csv',\n", + " '../../data/dataon/Korea_PM_20180217.csv',\n", + " '../../data/dataon/Korea_PM_20180218.csv',\n", + " '../../data/dataon/Korea_PM_20180219.csv',\n", + " '../../data/dataon/Korea_PM_20180220.csv',\n", + " '../../data/dataon/Korea_PM_20180221.csv',\n", + " '../../data/dataon/Korea_PM_20180222.csv',\n", + " '../../data/dataon/Korea_PM_20180223.csv',\n", + " '../../data/dataon/Korea_PM_20180224.csv',\n", + " '../../data/dataon/Korea_PM_20180225.csv',\n", + " '../../data/dataon/Korea_PM_20180226.csv',\n", + " '../../data/dataon/Korea_PM_20180227.csv',\n", + " '../../data/dataon/Korea_PM_20180228.csv',\n", + " '../../data/dataon/Korea_PM_20180301.csv',\n", + " '../../data/dataon/Korea_PM_20180302.csv',\n", + " '../../data/dataon/Korea_PM_20180303.csv',\n", + " '../../data/dataon/Korea_PM_20180304.csv',\n", + " '../../data/dataon/Korea_PM_20180305.csv',\n", + " '../../data/dataon/Korea_PM_20180306.csv',\n", + " '../../data/dataon/Korea_PM_20180307.csv',\n", + " '../../data/dataon/Korea_PM_20180308.csv',\n", + " '../../data/dataon/Korea_PM_20180309.csv',\n", + " '../../data/dataon/Korea_PM_20180310.csv',\n", + " '../../data/dataon/Korea_PM_20180311.csv',\n", + " '../../data/dataon/Korea_PM_20180312.csv',\n", + " '../../data/dataon/Korea_PM_20180313.csv',\n", + " '../../data/dataon/Korea_PM_20180314.csv',\n", + " '../../data/dataon/Korea_PM_20180315.csv',\n", + " '../../data/dataon/Korea_PM_20180316.csv',\n", + " '../../data/dataon/Korea_PM_20180317.csv',\n", + " '../../data/dataon/Korea_PM_20180318.csv',\n", + " '../../data/dataon/Korea_PM_20180319.csv',\n", + " '../../data/dataon/Korea_PM_20180320.csv',\n", + " '../../data/dataon/Korea_PM_20180321.csv',\n", + " '../../data/dataon/Korea_PM_20180322.csv',\n", + " '../../data/dataon/Korea_PM_20180323.csv',\n", + " '../../data/dataon/Korea_PM_20180324.csv',\n", + " '../../data/dataon/Korea_PM_20180325.csv',\n", + " '../../data/dataon/Korea_PM_20180326.csv',\n", + " '../../data/dataon/Korea_PM_20180327.csv',\n", + " '../../data/dataon/Korea_PM_20180328.csv',\n", + " '../../data/dataon/Korea_PM_20180329.csv',\n", + " '../../data/dataon/Korea_PM_20180330.csv',\n", + " '../../data/dataon/Korea_PM_20180331.csv',\n", + " '../../data/dataon/Korea_PM_20180401.csv',\n", + " '../../data/dataon/Korea_PM_20180402.csv',\n", + " '../../data/dataon/Korea_PM_20180403.csv',\n", + " '../../data/dataon/Korea_PM_20180404.csv',\n", + " '../../data/dataon/Korea_PM_20180405.csv',\n", + " '../../data/dataon/Korea_PM_20180406.csv',\n", + " '../../data/dataon/Korea_PM_20180407.csv',\n", + " '../../data/dataon/Korea_PM_20180408.csv',\n", + " '../../data/dataon/Korea_PM_20180409.csv',\n", + " '../../data/dataon/Korea_PM_20180410.csv',\n", + " '../../data/dataon/Korea_PM_20180411.csv',\n", + " '../../data/dataon/Korea_PM_20180412.csv',\n", + " '../../data/dataon/Korea_PM_20180413.csv',\n", + " '../../data/dataon/Korea_PM_20180414.csv',\n", + " '../../data/dataon/Korea_PM_20180415.csv',\n", + " '../../data/dataon/Korea_PM_20180416.csv',\n", + " '../../data/dataon/Korea_PM_20180417.csv',\n", + " '../../data/dataon/Korea_PM_20180418.csv',\n", + " '../../data/dataon/Korea_PM_20180419.csv',\n", + " '../../data/dataon/Korea_PM_20180420.csv',\n", + " '../../data/dataon/Korea_PM_20180421.csv',\n", + " '../../data/dataon/Korea_PM_20180422.csv',\n", + " '../../data/dataon/Korea_PM_20180423.csv',\n", + " '../../data/dataon/Korea_PM_20180424.csv',\n", + " '../../data/dataon/Korea_PM_20180425.csv',\n", + " '../../data/dataon/Korea_PM_20180426.csv',\n", + " '../../data/dataon/Korea_PM_20180427.csv',\n", + " '../../data/dataon/Korea_PM_20180428.csv',\n", + " '../../data/dataon/Korea_PM_20180429.csv',\n", + " '../../data/dataon/Korea_PM_20180430.csv',\n", + " '../../data/dataon/Korea_PM_20180501.csv',\n", + " '../../data/dataon/Korea_PM_20180502.csv',\n", + " '../../data/dataon/Korea_PM_20180503.csv',\n", + " '../../data/dataon/Korea_PM_20180504.csv',\n", + " '../../data/dataon/Korea_PM_20180505.csv',\n", + " '../../data/dataon/Korea_PM_20180506.csv',\n", + " '../../data/dataon/Korea_PM_20180507.csv',\n", + " '../../data/dataon/Korea_PM_20180508.csv',\n", + " '../../data/dataon/Korea_PM_20180509.csv',\n", + " '../../data/dataon/Korea_PM_20180510.csv',\n", + " '../../data/dataon/Korea_PM_20180511.csv',\n", + " '../../data/dataon/Korea_PM_20180512.csv',\n", + " '../../data/dataon/Korea_PM_20180513.csv',\n", + " '../../data/dataon/Korea_PM_20180514.csv',\n", + " '../../data/dataon/Korea_PM_20180515.csv',\n", + " '../../data/dataon/Korea_PM_20180516.csv',\n", + " '../../data/dataon/Korea_PM_20180517.csv',\n", + " '../../data/dataon/Korea_PM_20180518.csv',\n", + " '../../data/dataon/Korea_PM_20180519.csv',\n", + " '../../data/dataon/Korea_PM_20180520.csv',\n", + " '../../data/dataon/Korea_PM_20180521.csv',\n", + " '../../data/dataon/Korea_PM_20180522.csv',\n", + " '../../data/dataon/Korea_PM_20180523.csv',\n", + " '../../data/dataon/Korea_PM_20180524.csv',\n", + " '../../data/dataon/Korea_PM_20180525.csv',\n", + " '../../data/dataon/Korea_PM_20180526.csv',\n", + " '../../data/dataon/Korea_PM_20180527.csv',\n", + " '../../data/dataon/Korea_PM_20180528.csv',\n", + " '../../data/dataon/Korea_PM_20180529.csv',\n", + " '../../data/dataon/Korea_PM_20180530.csv',\n", + " '../../data/dataon/Korea_PM_20180531.csv',\n", + " '../../data/dataon/Korea_PM_20180601.csv',\n", + " '../../data/dataon/Korea_PM_20180602.csv',\n", + " '../../data/dataon/Korea_PM_20180603.csv',\n", + " '../../data/dataon/Korea_PM_20180604.csv',\n", + " '../../data/dataon/Korea_PM_20180605.csv',\n", + " '../../data/dataon/Korea_PM_20180606.csv',\n", + " '../../data/dataon/Korea_PM_20180607.csv',\n", + " '../../data/dataon/Korea_PM_20180608.csv',\n", + " '../../data/dataon/Korea_PM_20180609.csv',\n", + " '../../data/dataon/Korea_PM_20180610.csv',\n", + " '../../data/dataon/Korea_PM_20180611.csv',\n", + " '../../data/dataon/Korea_PM_20180612.csv',\n", + " '../../data/dataon/Korea_PM_20180613.csv',\n", + " '../../data/dataon/Korea_PM_20180614.csv',\n", + " '../../data/dataon/Korea_PM_20180615.csv',\n", + " '../../data/dataon/Korea_PM_20180616.csv',\n", + " '../../data/dataon/Korea_PM_20180617.csv',\n", + " '../../data/dataon/Korea_PM_20180618.csv',\n", + " '../../data/dataon/Korea_PM_20180619.csv',\n", + " '../../data/dataon/Korea_PM_20180620.csv',\n", + " '../../data/dataon/Korea_PM_20180621.csv',\n", + " '../../data/dataon/Korea_PM_20180622.csv',\n", + " '../../data/dataon/Korea_PM_20180623.csv',\n", + " '../../data/dataon/Korea_PM_20180624.csv',\n", + " '../../data/dataon/Korea_PM_20180625.csv',\n", + " '../../data/dataon/Korea_PM_20180626.csv',\n", + " '../../data/dataon/Korea_PM_20180627.csv',\n", + " '../../data/dataon/Korea_PM_20180628.csv',\n", + " '../../data/dataon/Korea_PM_20180629.csv',\n", + " '../../data/dataon/Korea_PM_20180630.csv',\n", + " '../../data/dataon/Korea_PM_20180701.csv',\n", + " '../../data/dataon/Korea_PM_20180702.csv',\n", + " '../../data/dataon/Korea_PM_20180703.csv',\n", + " '../../data/dataon/Korea_PM_20180704.csv',\n", + " '../../data/dataon/Korea_PM_20180705.csv',\n", + " '../../data/dataon/Korea_PM_20180706.csv',\n", + " '../../data/dataon/Korea_PM_20180707.csv',\n", + " '../../data/dataon/Korea_PM_20180708.csv',\n", + " '../../data/dataon/Korea_PM_20180709.csv',\n", + " '../../data/dataon/Korea_PM_20180710.csv',\n", + " '../../data/dataon/Korea_PM_20180711.csv',\n", + " '../../data/dataon/Korea_PM_20180712.csv',\n", + " '../../data/dataon/Korea_PM_20180713.csv',\n", + " '../../data/dataon/Korea_PM_20180714.csv',\n", + " '../../data/dataon/Korea_PM_20180715.csv',\n", + " '../../data/dataon/Korea_PM_20180716.csv',\n", + " '../../data/dataon/Korea_PM_20180717.csv',\n", + " '../../data/dataon/Korea_PM_20180718.csv',\n", + " '../../data/dataon/Korea_PM_20180719.csv',\n", + " '../../data/dataon/Korea_PM_20180720.csv',\n", + " '../../data/dataon/Korea_PM_20180721.csv',\n", + " '../../data/dataon/Korea_PM_20180722.csv',\n", + " '../../data/dataon/Korea_PM_20180723.csv',\n", + " '../../data/dataon/Korea_PM_20180724.csv',\n", + " '../../data/dataon/Korea_PM_20180725.csv',\n", + " '../../data/dataon/Korea_PM_20180726.csv',\n", + " '../../data/dataon/Korea_PM_20180727.csv',\n", + " '../../data/dataon/Korea_PM_20180728.csv',\n", + " '../../data/dataon/Korea_PM_20180729.csv',\n", + " '../../data/dataon/Korea_PM_20180730.csv',\n", + " '../../data/dataon/Korea_PM_20180731.csv',\n", + " '../../data/dataon/Korea_PM_20180801.csv',\n", + " '../../data/dataon/Korea_PM_20180802.csv',\n", + " '../../data/dataon/Korea_PM_20180803.csv',\n", + " '../../data/dataon/Korea_PM_20180804.csv',\n", + " '../../data/dataon/Korea_PM_20180805.csv',\n", + " '../../data/dataon/Korea_PM_20180806.csv',\n", + " '../../data/dataon/Korea_PM_20180807.csv',\n", + " '../../data/dataon/Korea_PM_20180808.csv',\n", + " '../../data/dataon/Korea_PM_20180809.csv',\n", + " '../../data/dataon/Korea_PM_20180810.csv',\n", + " '../../data/dataon/Korea_PM_20180811.csv',\n", + " '../../data/dataon/Korea_PM_20180812.csv',\n", + " '../../data/dataon/Korea_PM_20180813.csv',\n", + " '../../data/dataon/Korea_PM_20180814.csv',\n", + " '../../data/dataon/Korea_PM_20180815.csv',\n", + " '../../data/dataon/Korea_PM_20180816.csv',\n", + " '../../data/dataon/Korea_PM_20180817.csv',\n", + " '../../data/dataon/Korea_PM_20180818.csv',\n", + " '../../data/dataon/Korea_PM_20180819.csv',\n", + " '../../data/dataon/Korea_PM_20180820.csv',\n", + " '../../data/dataon/Korea_PM_20180821.csv',\n", + " '../../data/dataon/Korea_PM_20180822.csv',\n", + " '../../data/dataon/Korea_PM_20180823.csv',\n", + " '../../data/dataon/Korea_PM_20180824.csv',\n", + " '../../data/dataon/Korea_PM_20180825.csv',\n", + " '../../data/dataon/Korea_PM_20180826.csv',\n", + " '../../data/dataon/Korea_PM_20180827.csv',\n", + " '../../data/dataon/Korea_PM_20180828.csv',\n", + " '../../data/dataon/Korea_PM_20180829.csv',\n", + " '../../data/dataon/Korea_PM_20180830.csv',\n", + " '../../data/dataon/Korea_PM_20180831.csv',\n", + " '../../data/dataon/Korea_PM_20180901.csv',\n", + " '../../data/dataon/Korea_PM_20180902.csv',\n", + " '../../data/dataon/Korea_PM_20180903.csv',\n", + " '../../data/dataon/Korea_PM_20180904.csv',\n", + " '../../data/dataon/Korea_PM_20180905.csv',\n", + " '../../data/dataon/Korea_PM_20180906.csv',\n", + " '../../data/dataon/Korea_PM_20180907.csv',\n", + " '../../data/dataon/Korea_PM_20180908.csv',\n", + " '../../data/dataon/Korea_PM_20180909.csv',\n", + " '../../data/dataon/Korea_PM_20180910.csv',\n", + " '../../data/dataon/Korea_PM_20180911.csv',\n", + " '../../data/dataon/Korea_PM_20180912.csv',\n", + " '../../data/dataon/Korea_PM_20180913.csv',\n", + " '../../data/dataon/Korea_PM_20180914.csv',\n", + " '../../data/dataon/Korea_PM_20180915.csv',\n", + " '../../data/dataon/Korea_PM_20180916.csv',\n", + " '../../data/dataon/Korea_PM_20180917.csv',\n", + " '../../data/dataon/Korea_PM_20180918.csv',\n", + " '../../data/dataon/Korea_PM_20180919.csv',\n", + " '../../data/dataon/Korea_PM_20180920.csv',\n", + " '../../data/dataon/Korea_PM_20180921.csv',\n", + " '../../data/dataon/Korea_PM_20180922.csv',\n", + " '../../data/dataon/Korea_PM_20180923.csv',\n", + " '../../data/dataon/Korea_PM_20180924.csv',\n", + " '../../data/dataon/Korea_PM_20180925.csv',\n", + " '../../data/dataon/Korea_PM_20180926.csv',\n", + " '../../data/dataon/Korea_PM_20180927.csv',\n", + " '../../data/dataon/Korea_PM_20180928.csv',\n", + " '../../data/dataon/Korea_PM_20180929.csv',\n", + " '../../data/dataon/Korea_PM_20180930.csv',\n", + " '../../data/dataon/Korea_PM_20181001.csv',\n", + " '../../data/dataon/Korea_PM_20181002.csv',\n", + " '../../data/dataon/Korea_PM_20181003.csv',\n", + " '../../data/dataon/Korea_PM_20181004.csv',\n", + " '../../data/dataon/Korea_PM_20181005.csv',\n", + " '../../data/dataon/Korea_PM_20181006.csv',\n", + " '../../data/dataon/Korea_PM_20181007.csv',\n", + " '../../data/dataon/Korea_PM_20181008.csv',\n", + " '../../data/dataon/Korea_PM_20181009.csv',\n", + " '../../data/dataon/Korea_PM_20181010.csv',\n", + " '../../data/dataon/Korea_PM_20181011.csv',\n", + " '../../data/dataon/Korea_PM_20181012.csv',\n", + " '../../data/dataon/Korea_PM_20181013.csv',\n", + " '../../data/dataon/Korea_PM_20181014.csv',\n", + " '../../data/dataon/Korea_PM_20181015.csv',\n", + " '../../data/dataon/Korea_PM_20181016.csv',\n", + " '../../data/dataon/Korea_PM_20181017.csv',\n", + " '../../data/dataon/Korea_PM_20181018.csv',\n", + " '../../data/dataon/Korea_PM_20181019.csv',\n", + " '../../data/dataon/Korea_PM_20181020.csv',\n", + " '../../data/dataon/Korea_PM_20181021.csv',\n", + " '../../data/dataon/Korea_PM_20181022.csv',\n", + " '../../data/dataon/Korea_PM_20181023.csv',\n", + " '../../data/dataon/Korea_PM_20181024.csv',\n", + " '../../data/dataon/Korea_PM_20181025.csv',\n", + " '../../data/dataon/Korea_PM_20181026.csv',\n", + " '../../data/dataon/Korea_PM_20181027.csv',\n", + " '../../data/dataon/Korea_PM_20181028.csv',\n", + " '../../data/dataon/Korea_PM_20181029.csv',\n", + " '../../data/dataon/Korea_PM_20181030.csv',\n", + " '../../data/dataon/Korea_PM_20181031.csv',\n", + " '../../data/dataon/Korea_PM_20181101.csv',\n", + " '../../data/dataon/Korea_PM_20181102.csv',\n", + " '../../data/dataon/Korea_PM_20181103.csv',\n", + " '../../data/dataon/Korea_PM_20181104.csv',\n", + " '../../data/dataon/Korea_PM_20181105.csv',\n", + " '../../data/dataon/Korea_PM_20181106.csv',\n", + " '../../data/dataon/Korea_PM_20181107.csv',\n", + " '../../data/dataon/Korea_PM_20181108.csv',\n", + " '../../data/dataon/Korea_PM_20181109.csv',\n", + " '../../data/dataon/Korea_PM_20181110.csv',\n", + " '../../data/dataon/Korea_PM_20181111.csv',\n", + " '../../data/dataon/Korea_PM_20181112.csv',\n", + " '../../data/dataon/Korea_PM_20181113.csv',\n", + " '../../data/dataon/Korea_PM_20181114.csv',\n", + " '../../data/dataon/Korea_PM_20181115.csv',\n", + " '../../data/dataon/Korea_PM_20181116.csv',\n", + " '../../data/dataon/Korea_PM_20181117.csv',\n", + " '../../data/dataon/Korea_PM_20181118.csv',\n", + " '../../data/dataon/Korea_PM_20181119.csv',\n", + " '../../data/dataon/Korea_PM_20181120.csv',\n", + " '../../data/dataon/Korea_PM_20181121.csv',\n", + " '../../data/dataon/Korea_PM_20181122.csv',\n", + " '../../data/dataon/Korea_PM_20181123.csv',\n", + " '../../data/dataon/Korea_PM_20181124.csv',\n", + " '../../data/dataon/Korea_PM_20181125.csv',\n", + " '../../data/dataon/Korea_PM_20181126.csv',\n", + " '../../data/dataon/Korea_PM_20181127.csv',\n", + " '../../data/dataon/Korea_PM_20181128.csv',\n", + " '../../data/dataon/Korea_PM_20181129.csv',\n", + " '../../data/dataon/Korea_PM_20181130.csv',\n", + " '../../data/dataon/Korea_PM_20190101.csv',\n", + " '../../data/dataon/Korea_PM_20190102.csv',\n", + " '../../data/dataon/Korea_PM_20190103.csv',\n", + " '../../data/dataon/Korea_PM_20190104.csv',\n", + " '../../data/dataon/Korea_PM_20190105.csv',\n", + " '../../data/dataon/Korea_PM_20190106.csv',\n", + " '../../data/dataon/Korea_PM_20190107.csv',\n", + " '../../data/dataon/Korea_PM_20190108.csv',\n", + " '../../data/dataon/Korea_PM_20190109.csv',\n", + " '../../data/dataon/Korea_PM_20190110.csv',\n", + " '../../data/dataon/Korea_PM_20190111.csv',\n", + " '../../data/dataon/Korea_PM_20190112.csv',\n", + " '../../data/dataon/Korea_PM_20190113.csv',\n", + " '../../data/dataon/Korea_PM_20190114.csv',\n", + " '../../data/dataon/Korea_PM_20190115.csv',\n", + " '../../data/dataon/Korea_PM_20190116.csv',\n", + " '../../data/dataon/Korea_PM_20190117.csv',\n", + " '../../data/dataon/Korea_PM_20190118.csv',\n", + " '../../data/dataon/Korea_PM_20190119.csv',\n", + " '../../data/dataon/Korea_PM_20190120.csv',\n", + " '../../data/dataon/Korea_PM_20190121.csv',\n", + " '../../data/dataon/Korea_PM_20190122.csv',\n", + " '../../data/dataon/Korea_PM_20190123.csv',\n", + " '../../data/dataon/Korea_PM_20190124.csv',\n", + " '../../data/dataon/Korea_PM_20190125.csv',\n", + " '../../data/dataon/Korea_PM_20190126.csv',\n", + " '../../data/dataon/Korea_PM_20190127.csv',\n", + " '../../data/dataon/Korea_PM_20190128.csv',\n", + " '../../data/dataon/Korea_PM_20190129.csv',\n", + " '../../data/dataon/Korea_PM_20190130.csv',\n", + " '../../data/dataon/Korea_PM_20190131.csv',\n", + " '../../data/dataon/Korea_PM_20190201.csv',\n", + " '../../data/dataon/Korea_PM_20190202.csv',\n", + " '../../data/dataon/Korea_PM_20190203.csv',\n", + " '../../data/dataon/Korea_PM_20190204.csv',\n", + " '../../data/dataon/Korea_PM_20190205.csv',\n", + " '../../data/dataon/Korea_PM_20190206.csv',\n", + " '../../data/dataon/Korea_PM_20190207.csv',\n", + " '../../data/dataon/Korea_PM_20190208.csv',\n", + " '../../data/dataon/Korea_PM_20190209.csv',\n", + " '../../data/dataon/Korea_PM_20190210.csv',\n", + " '../../data/dataon/Korea_PM_20190211.csv',\n", + " '../../data/dataon/Korea_PM_20190212.csv',\n", + " '../../data/dataon/Korea_PM_20190213.csv',\n", + " '../../data/dataon/Korea_PM_20190214.csv',\n", + " '../../data/dataon/Korea_PM_20190215.csv',\n", + " '../../data/dataon/Korea_PM_20190216.csv',\n", + " '../../data/dataon/Korea_PM_20190217.csv',\n", + " '../../data/dataon/Korea_PM_20190218.csv',\n", + " '../../data/dataon/Korea_PM_20190219.csv',\n", + " '../../data/dataon/Korea_PM_20190220.csv',\n", + " '../../data/dataon/Korea_PM_20190221.csv',\n", + " '../../data/dataon/Korea_PM_20190222.csv',\n", + " '../../data/dataon/Korea_PM_20190223.csv',\n", + " '../../data/dataon/Korea_PM_20190224.csv',\n", + " '../../data/dataon/Korea_PM_20190225.csv',\n", + " '../../data/dataon/Korea_PM_20190226.csv',\n", + " '../../data/dataon/Korea_PM_20190227.csv',\n", + " '../../data/dataon/Korea_PM_20190228.csv',\n", + " '../../data/dataon/Korea_PM_20190301.csv',\n", + " '../../data/dataon/Korea_PM_20190302.csv',\n", + " '../../data/dataon/Korea_PM_20190303.csv',\n", + " '../../data/dataon/Korea_PM_20190304.csv',\n", + " '../../data/dataon/Korea_PM_20190305.csv',\n", + " '../../data/dataon/Korea_PM_20190306.csv',\n", + " '../../data/dataon/Korea_PM_20190307.csv',\n", + " '../../data/dataon/Korea_PM_20190308.csv',\n", + " '../../data/dataon/Korea_PM_20190309.csv',\n", + " '../../data/dataon/Korea_PM_20190310.csv',\n", + " '../../data/dataon/Korea_PM_20190311.csv',\n", + " '../../data/dataon/Korea_PM_20190312.csv',\n", + " '../../data/dataon/Korea_PM_20190313.csv',\n", + " '../../data/dataon/Korea_PM_20190314.csv',\n", + " '../../data/dataon/Korea_PM_20190315.csv',\n", + " '../../data/dataon/Korea_PM_20190316.csv',\n", + " '../../data/dataon/Korea_PM_20190317.csv',\n", + " '../../data/dataon/Korea_PM_20190318.csv',\n", + " '../../data/dataon/Korea_PM_20190319.csv',\n", + " '../../data/dataon/Korea_PM_20190320.csv',\n", + " '../../data/dataon/Korea_PM_20190321.csv',\n", + " '../../data/dataon/Korea_PM_20190322.csv',\n", + " '../../data/dataon/Korea_PM_20190323.csv',\n", + " '../../data/dataon/Korea_PM_20190324.csv',\n", + " '../../data/dataon/Korea_PM_20190325.csv',\n", + " '../../data/dataon/Korea_PM_20190326.csv',\n", + " '../../data/dataon/Korea_PM_20190327.csv',\n", + " '../../data/dataon/Korea_PM_20190328.csv',\n", + " '../../data/dataon/Korea_PM_20190329.csv',\n", + " '../../data/dataon/Korea_PM_20190330.csv',\n", + " '../../data/dataon/Korea_PM_20190331.csv',\n", + " '../../data/dataon/Korea_PM_20190401.csv',\n", + " '../../data/dataon/Korea_PM_20190402.csv',\n", + " '../../data/dataon/Korea_PM_20190403.csv',\n", + " '../../data/dataon/Korea_PM_20190404.csv',\n", + " '../../data/dataon/Korea_PM_20190405.csv',\n", + " '../../data/dataon/Korea_PM_20190406.csv',\n", + " '../../data/dataon/Korea_PM_20190407.csv',\n", + " '../../data/dataon/Korea_PM_20190408.csv',\n", + " '../../data/dataon/Korea_PM_20190409.csv',\n", + " '../../data/dataon/Korea_PM_20190410.csv',\n", + " '../../data/dataon/Korea_PM_20190411.csv',\n", + " '../../data/dataon/Korea_PM_20190412.csv',\n", + " '../../data/dataon/Korea_PM_20190413.csv',\n", + " '../../data/dataon/Korea_PM_20190414.csv',\n", + " '../../data/dataon/Korea_PM_20190415.csv',\n", + " '../../data/dataon/Korea_PM_20190416.csv',\n", + " '../../data/dataon/Korea_PM_20190417.csv',\n", + " '../../data/dataon/Korea_PM_20190418.csv',\n", + " '../../data/dataon/Korea_PM_20190419.csv',\n", + " '../../data/dataon/Korea_PM_20190420.csv',\n", + " '../../data/dataon/Korea_PM_20190421.csv',\n", + " '../../data/dataon/Korea_PM_20190422.csv',\n", + " '../../data/dataon/Korea_PM_20190423.csv',\n", + " '../../data/dataon/Korea_PM_20190424.csv',\n", + " '../../data/dataon/Korea_PM_20190425.csv',\n", + " '../../data/dataon/Korea_PM_20190426.csv',\n", + " '../../data/dataon/Korea_PM_20190427.csv',\n", + " '../../data/dataon/Korea_PM_20190428.csv',\n", + " '../../data/dataon/Korea_PM_20190429.csv',\n", + " '../../data/dataon/Korea_PM_20190430.csv',\n", + " '../../data/dataon/Korea_PM_20190501.csv',\n", + " '../../data/dataon/Korea_PM_20190502.csv',\n", + " '../../data/dataon/Korea_PM_20190503.csv',\n", + " '../../data/dataon/Korea_PM_20190504.csv',\n", + " '../../data/dataon/Korea_PM_20190505.csv',\n", + " '../../data/dataon/Korea_PM_20190506.csv',\n", + " '../../data/dataon/Korea_PM_20190507.csv',\n", + " '../../data/dataon/Korea_PM_20190508.csv',\n", + " '../../data/dataon/Korea_PM_20190509.csv',\n", + " '../../data/dataon/Korea_PM_20190510.csv',\n", + " '../../data/dataon/Korea_PM_20190511.csv',\n", + " '../../data/dataon/Korea_PM_20190512.csv',\n", + " '../../data/dataon/Korea_PM_20190513.csv',\n", + " '../../data/dataon/Korea_PM_20190514.csv',\n", + " '../../data/dataon/Korea_PM_20190515.csv',\n", + " '../../data/dataon/Korea_PM_20190516.csv',\n", + " '../../data/dataon/Korea_PM_20190517.csv',\n", + " '../../data/dataon/Korea_PM_20190518.csv',\n", + " '../../data/dataon/Korea_PM_20190519.csv',\n", + " '../../data/dataon/Korea_PM_20190520.csv',\n", + " '../../data/dataon/Korea_PM_20190521.csv',\n", + " '../../data/dataon/Korea_PM_20190522.csv',\n", + " '../../data/dataon/Korea_PM_20190523.csv',\n", + " '../../data/dataon/Korea_PM_20190524.csv',\n", + " '../../data/dataon/Korea_PM_20190525.csv',\n", + " '../../data/dataon/Korea_PM_20190526.csv',\n", + " '../../data/dataon/Korea_PM_20190527.csv',\n", + " '../../data/dataon/Korea_PM_20190528.csv',\n", + " '../../data/dataon/Korea_PM_20190529.csv',\n", + " '../../data/dataon/Korea_PM_20190530.csv',\n", + " '../../data/dataon/Korea_PM_20190531.csv',\n", + " '../../data/dataon/Korea_PM_20190601.csv',\n", + " '../../data/dataon/Korea_PM_20190602.csv',\n", + " '../../data/dataon/Korea_PM_20190603.csv',\n", + " '../../data/dataon/Korea_PM_20190604.csv',\n", + " '../../data/dataon/Korea_PM_20190605.csv',\n", + " '../../data/dataon/Korea_PM_20190606.csv',\n", + " '../../data/dataon/Korea_PM_20190607.csv',\n", + " '../../data/dataon/Korea_PM_20190608.csv',\n", + " '../../data/dataon/Korea_PM_20190609.csv',\n", + " '../../data/dataon/Korea_PM_20190610.csv',\n", + " '../../data/dataon/Korea_PM_20190611.csv',\n", + " '../../data/dataon/Korea_PM_20190612.csv',\n", + " '../../data/dataon/Korea_PM_20190613.csv',\n", + " '../../data/dataon/Korea_PM_20190614.csv',\n", + " '../../data/dataon/Korea_PM_20190615.csv',\n", + " '../../data/dataon/Korea_PM_20190616.csv',\n", + " '../../data/dataon/Korea_PM_20190617.csv',\n", + " '../../data/dataon/Korea_PM_20190618.csv',\n", + " '../../data/dataon/Korea_PM_20190619.csv',\n", + " '../../data/dataon/Korea_PM_20190620.csv',\n", + " '../../data/dataon/Korea_PM_20190621.csv',\n", + " '../../data/dataon/Korea_PM_20190622.csv',\n", + " '../../data/dataon/Korea_PM_20190623.csv',\n", + " '../../data/dataon/Korea_PM_20190624.csv',\n", + " '../../data/dataon/Korea_PM_20190625.csv',\n", + " '../../data/dataon/Korea_PM_20190626.csv',\n", + " '../../data/dataon/Korea_PM_20190627.csv',\n", + " '../../data/dataon/Korea_PM_20190628.csv',\n", + " '../../data/dataon/Korea_PM_20190629.csv',\n", + " '../../data/dataon/Korea_PM_20190630.csv',\n", + " '../../data/dataon/Korea_PM_20190701.csv',\n", + " '../../data/dataon/Korea_PM_20190702.csv',\n", + " '../../data/dataon/Korea_PM_20190703.csv',\n", + " '../../data/dataon/Korea_PM_20190704.csv',\n", + " '../../data/dataon/Korea_PM_20190705.csv',\n", + " '../../data/dataon/Korea_PM_20190706.csv',\n", + " '../../data/dataon/Korea_PM_20190707.csv',\n", + " '../../data/dataon/Korea_PM_20190708.csv',\n", + " '../../data/dataon/Korea_PM_20190709.csv',\n", + " '../../data/dataon/Korea_PM_20190710.csv',\n", + " '../../data/dataon/Korea_PM_20190711.csv',\n", + " '../../data/dataon/Korea_PM_20190712.csv',\n", + " '../../data/dataon/Korea_PM_20190713.csv',\n", + " '../../data/dataon/Korea_PM_20190714.csv',\n", + " '../../data/dataon/Korea_PM_20190715.csv',\n", + " '../../data/dataon/Korea_PM_20190716.csv',\n", + " '../../data/dataon/Korea_PM_20190717.csv',\n", + " '../../data/dataon/Korea_PM_20190718.csv',\n", + " '../../data/dataon/Korea_PM_20190719.csv',\n", + " '../../data/dataon/Korea_PM_20190720.csv',\n", + " '../../data/dataon/Korea_PM_20190721.csv',\n", + " '../../data/dataon/Korea_PM_20190722.csv',\n", + " '../../data/dataon/Korea_PM_20190723.csv',\n", + " '../../data/dataon/Korea_PM_20190724.csv',\n", + " '../../data/dataon/Korea_PM_20190725.csv',\n", + " '../../data/dataon/Korea_PM_20190726.csv',\n", + " '../../data/dataon/Korea_PM_20190727.csv',\n", + " '../../data/dataon/Korea_PM_20190728.csv',\n", + " '../../data/dataon/Korea_PM_20190729.csv',\n", + " '../../data/dataon/Korea_PM_20190730.csv',\n", + " '../../data/dataon/Korea_PM_20190731.csv',\n", + " '../../data/dataon/Korea_PM_20190801.csv',\n", + " '../../data/dataon/Korea_PM_20190802.csv',\n", + " '../../data/dataon/Korea_PM_20190803.csv',\n", + " '../../data/dataon/Korea_PM_20190804.csv',\n", + " '../../data/dataon/Korea_PM_20190805.csv',\n", + " '../../data/dataon/Korea_PM_20190806.csv',\n", + " '../../data/dataon/Korea_PM_20190807.csv',\n", + " '../../data/dataon/Korea_PM_20190808.csv',\n", + " '../../data/dataon/Korea_PM_20190809.csv',\n", + " '../../data/dataon/Korea_PM_20190810.csv',\n", + " '../../data/dataon/Korea_PM_20190811.csv',\n", + " '../../data/dataon/Korea_PM_20190812.csv',\n", + " '../../data/dataon/Korea_PM_20190813.csv',\n", + " '../../data/dataon/Korea_PM_20190814.csv',\n", + " '../../data/dataon/Korea_PM_20190815.csv',\n", + " '../../data/dataon/Korea_PM_20190816.csv',\n", + " '../../data/dataon/Korea_PM_20190817.csv',\n", + " '../../data/dataon/Korea_PM_20190818.csv',\n", + " '../../data/dataon/Korea_PM_20190819.csv',\n", + " '../../data/dataon/Korea_PM_20190820.csv',\n", + " '../../data/dataon/Korea_PM_20190821.csv',\n", + " '../../data/dataon/Korea_PM_20190822.csv',\n", + " '../../data/dataon/Korea_PM_20190823.csv',\n", + " '../../data/dataon/Korea_PM_20190824.csv',\n", + " '../../data/dataon/Korea_PM_20190825.csv',\n", + " '../../data/dataon/Korea_PM_20190826.csv',\n", + " '../../data/dataon/Korea_PM_20190827.csv',\n", + " '../../data/dataon/Korea_PM_20190828.csv',\n", + " '../../data/dataon/Korea_PM_20190829.csv',\n", + " '../../data/dataon/Korea_PM_20190830.csv',\n", + " '../../data/dataon/Korea_PM_20190831.csv',\n", + " '../../data/dataon/Korea_PM_20191001.csv',\n", + " '../../data/dataon/Korea_PM_20191002.csv',\n", + " '../../data/dataon/Korea_PM_20191003.csv',\n", + " '../../data/dataon/Korea_PM_20191004.csv',\n", + " '../../data/dataon/Korea_PM_20191005.csv',\n", + " '../../data/dataon/Korea_PM_20191006.csv',\n", + " '../../data/dataon/Korea_PM_20191007.csv',\n", + " '../../data/dataon/Korea_PM_20191008.csv',\n", + " '../../data/dataon/Korea_PM_20191009.csv',\n", + " '../../data/dataon/Korea_PM_20191010.csv',\n", + " '../../data/dataon/Korea_PM_20191011.csv',\n", + " '../../data/dataon/Korea_PM_20191012.csv',\n", + " '../../data/dataon/Korea_PM_20191013.csv',\n", + " '../../data/dataon/Korea_PM_20191014.csv',\n", + " '../../data/dataon/Korea_PM_20191015.csv',\n", + " '../../data/dataon/Korea_PM_20191016.csv',\n", + " '../../data/dataon/Korea_PM_20191017.csv',\n", + " '../../data/dataon/Korea_PM_20191018.csv',\n", + " '../../data/dataon/Korea_PM_20191019.csv',\n", + " '../../data/dataon/Korea_PM_20191020.csv',\n", + " '../../data/dataon/Korea_PM_20191021.csv',\n", + " '../../data/dataon/Korea_PM_20191022.csv',\n", + " '../../data/dataon/Korea_PM_20191023.csv',\n", + " '../../data/dataon/Korea_PM_20191024.csv',\n", + " '../../data/dataon/Korea_PM_20191025.csv',\n", + " '../../data/dataon/Korea_PM_20191026.csv',\n", + " '../../data/dataon/Korea_PM_20191027.csv',\n", + " '../../data/dataon/Korea_PM_20191028.csv',\n", + " '../../data/dataon/Korea_PM_20191029.csv',\n", + " '../../data/dataon/Korea_PM_20191030.csv',\n", + " '../../data/dataon/Korea_PM_20191031.csv',\n", + " '../../data/dataon/Korea_PM_20191101.csv',\n", + " '../../data/dataon/Korea_PM_20191102.csv',\n", + " '../../data/dataon/Korea_PM_20191103.csv',\n", + " '../../data/dataon/Korea_PM_20191104.csv',\n", + " '../../data/dataon/Korea_PM_20191105.csv',\n", + " '../../data/dataon/Korea_PM_20191106.csv',\n", + " '../../data/dataon/Korea_PM_20191107.csv',\n", + " '../../data/dataon/Korea_PM_20191108.csv',\n", + " '../../data/dataon/Korea_PM_20191109.csv',\n", + " '../../data/dataon/Korea_PM_20191110.csv',\n", + " '../../data/dataon/Korea_PM_20191111.csv',\n", + " '../../data/dataon/Korea_PM_20191112.csv',\n", + " '../../data/dataon/Korea_PM_20191113.csv',\n", + " '../../data/dataon/Korea_PM_20191114.csv',\n", + " '../../data/dataon/Korea_PM_20191115.csv',\n", + " '../../data/dataon/Korea_PM_20191116.csv',\n", + " '../../data/dataon/Korea_PM_20191117.csv',\n", + " '../../data/dataon/Korea_PM_20191118.csv',\n", + " '../../data/dataon/Korea_PM_20191119.csv',\n", + " '../../data/dataon/Korea_PM_20191120.csv',\n", + " '../../data/dataon/Korea_PM_20191121.csv',\n", + " '../../data/dataon/Korea_PM_20191122.csv',\n", + " '../../data/dataon/Korea_PM_20191123.csv',\n", + " '../../data/dataon/Korea_PM_20191124.csv',\n", + " '../../data/dataon/Korea_PM_20191125.csv',\n", + " '../../data/dataon/Korea_PM_20191126.csv',\n", + " '../../data/dataon/Korea_PM_20191127.csv',\n", + " '../../data/dataon/Korea_PM_20191128.csv',\n", + " '../../data/dataon/Korea_PM_20191129.csv',\n", + " '../../data/dataon/Korea_PM_20191130.csv',\n", + " '../../data/dataon/Korea_PM_20191201.csv',\n", + " '../../data/dataon/Korea_PM_20191202.csv',\n", + " '../../data/dataon/Korea_PM_20191203.csv',\n", + " '../../data/dataon/Korea_PM_20191204.csv',\n", + " '../../data/dataon/Korea_PM_20191205.csv',\n", + " '../../data/dataon/Korea_PM_20191206.csv',\n", + " '../../data/dataon/Korea_PM_20191207.csv',\n", + " '../../data/dataon/Korea_PM_20191208.csv',\n", + " '../../data/dataon/Korea_PM_20191209.csv',\n", + " '../../data/dataon/Korea_PM_20191210.csv',\n", + " '../../data/dataon/Korea_PM_20191211.csv',\n", + " '../../data/dataon/Korea_PM_20191212.csv',\n", + " '../../data/dataon/Korea_PM_20191213.csv',\n", + " '../../data/dataon/Korea_PM_20191214.csv',\n", + " '../../data/dataon/Korea_PM_20191215.csv',\n", + " '../../data/dataon/Korea_PM_20191216.csv',\n", + " '../../data/dataon/Korea_PM_20191217.csv',\n", + " '../../data/dataon/Korea_PM_20191218.csv',\n", + " '../../data/dataon/Korea_PM_20191219.csv',\n", + " '../../data/dataon/Korea_PM_20191220.csv',\n", + " '../../data/dataon/Korea_PM_20191221.csv',\n", + " '../../data/dataon/Korea_PM_20191222.csv',\n", + " '../../data/dataon/Korea_PM_20191223.csv',\n", + " '../../data/dataon/Korea_PM_20191224.csv',\n", + " '../../data/dataon/Korea_PM_20191225.csv',\n", + " '../../data/dataon/Korea_PM_20191226.csv',\n", + " '../../data/dataon/Korea_PM_20191227.csv',\n", + " '../../data/dataon/Korea_PM_20191228.csv',\n", + " '../../data/dataon/Korea_PM_20191229.csv',\n", + " '../../data/dataon/Korea_PM_20191230.csv',\n", + " '../../data/dataon/Korea_PM_20191231.csv',\n", + " '../../data/dataon/Korea_PM_20200201.csv',\n", + " '../../data/dataon/Korea_PM_20200202.csv',\n", + " '../../data/dataon/Korea_PM_20200203.csv',\n", + " '../../data/dataon/Korea_PM_20200204.csv',\n", + " '../../data/dataon/Korea_PM_20200205.csv',\n", + " '../../data/dataon/Korea_PM_20200206.csv',\n", + " '../../data/dataon/Korea_PM_20200207.csv',\n", + " '../../data/dataon/Korea_PM_20200208.csv',\n", + " '../../data/dataon/Korea_PM_20200209.csv',\n", + " '../../data/dataon/Korea_PM_20200210.csv',\n", + " '../../data/dataon/Korea_PM_20200211.csv',\n", + " '../../data/dataon/Korea_PM_20200212.csv',\n", + " '../../data/dataon/Korea_PM_20200213.csv',\n", + " '../../data/dataon/Korea_PM_20200214.csv',\n", + " '../../data/dataon/Korea_PM_20200215.csv',\n", + " '../../data/dataon/Korea_PM_20200216.csv',\n", + " '../../data/dataon/Korea_PM_20200217.csv',\n", + " '../../data/dataon/Korea_PM_20200218.csv',\n", + " '../../data/dataon/Korea_PM_20200219.csv',\n", + " '../../data/dataon/Korea_PM_20200220.csv',\n", + " '../../data/dataon/Korea_PM_20200221.csv',\n", + " '../../data/dataon/Korea_PM_20200222.csv',\n", + " '../../data/dataon/Korea_PM_20200223.csv',\n", + " '../../data/dataon/Korea_PM_20200224.csv',\n", + " '../../data/dataon/Korea_PM_20200225.csv',\n", + " '../../data/dataon/Korea_PM_20200226.csv',\n", + " '../../data/dataon/Korea_PM_20200227.csv',\n", + " '../../data/dataon/Korea_PM_20200228.csv',\n", + " '../../data/dataon/Korea_PM_20200229.csv',\n", + " '../../data/dataon/Korea_PM_20200301.csv',\n", + " '../../data/dataon/Korea_PM_20200302.csv',\n", + " '../../data/dataon/Korea_PM_20200303.csv',\n", + " '../../data/dataon/Korea_PM_20200304.csv',\n", + " '../../data/dataon/Korea_PM_20200305.csv',\n", + " '../../data/dataon/Korea_PM_20200306.csv',\n", + " '../../data/dataon/Korea_PM_20200307.csv',\n", + " '../../data/dataon/Korea_PM_20200308.csv',\n", + " '../../data/dataon/Korea_PM_20200309.csv',\n", + " '../../data/dataon/Korea_PM_20200310.csv',\n", + " '../../data/dataon/Korea_PM_20200311.csv',\n", + " '../../data/dataon/Korea_PM_20200312.csv',\n", + " '../../data/dataon/Korea_PM_20200313.csv',\n", + " '../../data/dataon/Korea_PM_20200314.csv',\n", + " '../../data/dataon/Korea_PM_20200315.csv',\n", + " '../../data/dataon/Korea_PM_20200316.csv',\n", + " '../../data/dataon/Korea_PM_20200317.csv',\n", + " '../../data/dataon/Korea_PM_20200318.csv',\n", + " '../../data/dataon/Korea_PM_20200319.csv',\n", + " '../../data/dataon/Korea_PM_20200320.csv',\n", + " '../../data/dataon/Korea_PM_20200321.csv',\n", + " '../../data/dataon/Korea_PM_20200322.csv',\n", + " '../../data/dataon/Korea_PM_20200323.csv',\n", + " '../../data/dataon/Korea_PM_20200324.csv',\n", + " '../../data/dataon/Korea_PM_20200325.csv',\n", + " '../../data/dataon/Korea_PM_20200326.csv',\n", + " '../../data/dataon/Korea_PM_20200327.csv',\n", + " '../../data/dataon/Korea_PM_20200328.csv',\n", + " '../../data/dataon/Korea_PM_20200329.csv',\n", + " '../../data/dataon/Korea_PM_20200330.csv',\n", + " '../../data/dataon/Korea_PM_20200331.csv',\n", + " '../../data/dataon/Korea_PM_20200401.csv',\n", + " '../../data/dataon/Korea_PM_20200402.csv',\n", + " '../../data/dataon/Korea_PM_20200403.csv',\n", + " '../../data/dataon/Korea_PM_20200404.csv',\n", + " '../../data/dataon/Korea_PM_20200405.csv',\n", + " '../../data/dataon/Korea_PM_20200406.csv',\n", + " '../../data/dataon/Korea_PM_20200407.csv',\n", + " '../../data/dataon/Korea_PM_20200408.csv',\n", + " '../../data/dataon/Korea_PM_20200409.csv',\n", + " '../../data/dataon/Korea_PM_20200410.csv',\n", + " '../../data/dataon/Korea_PM_20200411.csv',\n", + " '../../data/dataon/Korea_PM_20200412.csv',\n", + " '../../data/dataon/Korea_PM_20200413.csv',\n", + " '../../data/dataon/Korea_PM_20200414.csv',\n", + " '../../data/dataon/Korea_PM_20200415.csv',\n", + " '../../data/dataon/Korea_PM_20200416.csv',\n", + " '../../data/dataon/Korea_PM_20200417.csv',\n", + " '../../data/dataon/Korea_PM_20200418.csv',\n", + " '../../data/dataon/Korea_PM_20200419.csv',\n", + " '../../data/dataon/Korea_PM_20200420.csv',\n", + " '../../data/dataon/Korea_PM_20200421.csv',\n", + " '../../data/dataon/Korea_PM_20200422.csv',\n", + " '../../data/dataon/Korea_PM_20200423.csv',\n", + " '../../data/dataon/Korea_PM_20200424.csv',\n", + " '../../data/dataon/Korea_PM_20200425.csv',\n", + " '../../data/dataon/Korea_PM_20200426.csv',\n", + " '../../data/dataon/Korea_PM_20200427.csv',\n", + " '../../data/dataon/Korea_PM_20200428.csv',\n", + " '../../data/dataon/Korea_PM_20200429.csv',\n", + " '../../data/dataon/Korea_PM_20200430.csv',\n", + " '../../data/dataon/Korea_PM_20200501.csv',\n", + " '../../data/dataon/Korea_PM_20200502.csv',\n", + " '../../data/dataon/Korea_PM_20200503.csv',\n", + " '../../data/dataon/Korea_PM_20200504.csv',\n", + " '../../data/dataon/Korea_PM_20200505.csv',\n", + " '../../data/dataon/Korea_PM_20200506.csv',\n", + " '../../data/dataon/Korea_PM_20200507.csv',\n", + " '../../data/dataon/Korea_PM_20200508.csv',\n", + " '../../data/dataon/Korea_PM_20200509.csv',\n", + " '../../data/dataon/Korea_PM_20200510.csv',\n", + " '../../data/dataon/Korea_PM_20200511.csv',\n", + " '../../data/dataon/Korea_PM_20200512.csv',\n", + " '../../data/dataon/Korea_PM_20200513.csv',\n", + " '../../data/dataon/Korea_PM_20200514.csv',\n", + " '../../data/dataon/Korea_PM_20200515.csv',\n", + " '../../data/dataon/Korea_PM_20200516.csv',\n", + " '../../data/dataon/Korea_PM_20200517.csv',\n", + " '../../data/dataon/Korea_PM_20200518.csv',\n", + " '../../data/dataon/Korea_PM_20200519.csv',\n", + " '../../data/dataon/Korea_PM_20200520.csv',\n", + " '../../data/dataon/Korea_PM_20200521.csv',\n", + " '../../data/dataon/Korea_PM_20200522.csv',\n", + " '../../data/dataon/Korea_PM_20200523.csv',\n", + " '../../data/dataon/Korea_PM_20200524.csv',\n", + " '../../data/dataon/Korea_PM_20200525.csv',\n", + " '../../data/dataon/Korea_PM_20200526.csv',\n", + " '../../data/dataon/Korea_PM_20200527.csv',\n", + " '../../data/dataon/Korea_PM_20200528.csv',\n", + " '../../data/dataon/Korea_PM_20200529.csv',\n", + " '../../data/dataon/Korea_PM_20200530.csv',\n", + " '../../data/dataon/Korea_PM_20200531.csv',\n", + " '../../data/dataon/Korea_PM_20200601.csv',\n", + " '../../data/dataon/Korea_PM_20200602.csv',\n", + " '../../data/dataon/Korea_PM_20200603.csv',\n", + " '../../data/dataon/Korea_PM_20200604.csv',\n", + " '../../data/dataon/Korea_PM_20200605.csv',\n", + " '../../data/dataon/Korea_PM_20200606.csv',\n", + " '../../data/dataon/Korea_PM_20200607.csv',\n", + " '../../data/dataon/Korea_PM_20200608.csv',\n", + " '../../data/dataon/Korea_PM_20200609.csv',\n", + " '../../data/dataon/Korea_PM_20200610.csv',\n", + " '../../data/dataon/Korea_PM_20200611.csv',\n", + " '../../data/dataon/Korea_PM_20200612.csv',\n", + " '../../data/dataon/Korea_PM_20200613.csv',\n", + " '../../data/dataon/Korea_PM_20200614.csv',\n", + " '../../data/dataon/Korea_PM_20200615.csv',\n", + " '../../data/dataon/Korea_PM_20200616.csv',\n", + " '../../data/dataon/Korea_PM_20200617.csv',\n", + " '../../data/dataon/Korea_PM_20200618.csv',\n", + " '../../data/dataon/Korea_PM_20200619.csv',\n", + " '../../data/dataon/Korea_PM_20200620.csv',\n", + " '../../data/dataon/Korea_PM_20200621.csv',\n", + " '../../data/dataon/Korea_PM_20200622.csv',\n", + " '../../data/dataon/Korea_PM_20200623.csv',\n", + " '../../data/dataon/Korea_PM_20200624.csv',\n", + " '../../data/dataon/Korea_PM_20200625.csv',\n", + " '../../data/dataon/Korea_PM_20200626.csv',\n", + " '../../data/dataon/Korea_PM_20200627.csv',\n", + " '../../data/dataon/Korea_PM_20200628.csv',\n", + " '../../data/dataon/Korea_PM_20200629.csv',\n", + " '../../data/dataon/Korea_PM_20200630.csv',\n", + " '../../data/dataon/Korea_PM_20200701.csv',\n", + " '../../data/dataon/Korea_PM_20200702.csv',\n", + " '../../data/dataon/Korea_PM_20200703.csv',\n", + " '../../data/dataon/Korea_PM_20200704.csv',\n", + " '../../data/dataon/Korea_PM_20200705.csv',\n", + " '../../data/dataon/Korea_PM_20200706.csv',\n", + " '../../data/dataon/Korea_PM_20200707.csv',\n", + " '../../data/dataon/Korea_PM_20200708.csv',\n", + " '../../data/dataon/Korea_PM_20200709.csv',\n", + " '../../data/dataon/Korea_PM_20200710.csv',\n", + " '../../data/dataon/Korea_PM_20200711.csv',\n", + " '../../data/dataon/Korea_PM_20200712.csv',\n", + " '../../data/dataon/Korea_PM_20200713.csv',\n", + " '../../data/dataon/Korea_PM_20200714.csv',\n", + " '../../data/dataon/Korea_PM_20200715.csv',\n", + " '../../data/dataon/Korea_PM_20200716.csv',\n", + " '../../data/dataon/Korea_PM_20200717.csv',\n", + " '../../data/dataon/Korea_PM_20200718.csv',\n", + " '../../data/dataon/Korea_PM_20200719.csv',\n", + " '../../data/dataon/Korea_PM_20200720.csv',\n", + " '../../data/dataon/Korea_PM_20200721.csv',\n", + " '../../data/dataon/Korea_PM_20200722.csv',\n", + " '../../data/dataon/Korea_PM_20200723.csv',\n", + " '../../data/dataon/Korea_PM_20200724.csv',\n", + " '../../data/dataon/Korea_PM_20200725.csv',\n", + " '../../data/dataon/Korea_PM_20200726.csv',\n", + " '../../data/dataon/Korea_PM_20200727.csv',\n", + " '../../data/dataon/Korea_PM_20200728.csv',\n", + " '../../data/dataon/Korea_PM_20200729.csv',\n", + " '../../data/dataon/Korea_PM_20200730.csv',\n", + " '../../data/dataon/Korea_PM_20200731.csv',\n", + " '../../data/dataon/Korea_PM_20200801.csv',\n", + " '../../data/dataon/Korea_PM_20200802.csv',\n", + " '../../data/dataon/Korea_PM_20200803.csv',\n", + " '../../data/dataon/Korea_PM_20200804.csv',\n", + " '../../data/dataon/Korea_PM_20200805.csv',\n", + " '../../data/dataon/Korea_PM_20200806.csv',\n", + " '../../data/dataon/Korea_PM_20200807.csv',\n", + " '../../data/dataon/Korea_PM_20200808.csv',\n", + " '../../data/dataon/Korea_PM_20200809.csv',\n", + " '../../data/dataon/Korea_PM_20200810.csv',\n", + " '../../data/dataon/Korea_PM_20200811.csv',\n", + " '../../data/dataon/Korea_PM_20200812.csv',\n", + " '../../data/dataon/Korea_PM_20200813.csv',\n", + " '../../data/dataon/Korea_PM_20200814.csv',\n", + " '../../data/dataon/Korea_PM_20200815.csv',\n", + " '../../data/dataon/Korea_PM_20200816.csv',\n", + " '../../data/dataon/Korea_PM_20200817.csv',\n", + " '../../data/dataon/Korea_PM_20200818.csv',\n", + " '../../data/dataon/Korea_PM_20200819.csv',\n", + " '../../data/dataon/Korea_PM_20200820.csv',\n", + " '../../data/dataon/Korea_PM_20200821.csv',\n", + " '../../data/dataon/Korea_PM_20200822.csv',\n", + " '../../data/dataon/Korea_PM_20200823.csv',\n", + " '../../data/dataon/Korea_PM_20200824.csv',\n", + " '../../data/dataon/Korea_PM_20200825.csv',\n", + " '../../data/dataon/Korea_PM_20200826.csv',\n", + " '../../data/dataon/Korea_PM_20200827.csv',\n", + " '../../data/dataon/Korea_PM_20200828.csv',\n", + " '../../data/dataon/Korea_PM_20200829.csv',\n", + " '../../data/dataon/Korea_PM_20200830.csv',\n", + " '../../data/dataon/Korea_PM_20200831.csv',\n", + " '../../data/dataon/Korea_PM_20200901.csv',\n", + " '../../data/dataon/Korea_PM_20200902.csv',\n", + " '../../data/dataon/Korea_PM_20200903.csv',\n", + " '../../data/dataon/Korea_PM_20200904.csv',\n", + " '../../data/dataon/Korea_PM_20200905.csv',\n", + " '../../data/dataon/Korea_PM_20200906.csv',\n", + " '../../data/dataon/Korea_PM_20200907.csv',\n", + " '../../data/dataon/Korea_PM_20200908.csv',\n", + " '../../data/dataon/Korea_PM_20200909.csv',\n", + " '../../data/dataon/Korea_PM_20200910.csv',\n", + " '../../data/dataon/Korea_PM_20200911.csv',\n", + " '../../data/dataon/Korea_PM_20200912.csv',\n", + " '../../data/dataon/Korea_PM_20200913.csv',\n", + " '../../data/dataon/Korea_PM_20200914.csv',\n", + " '../../data/dataon/Korea_PM_20200915.csv',\n", + " '../../data/dataon/Korea_PM_20200916.csv',\n", + " '../../data/dataon/Korea_PM_20200917.csv',\n", + " '../../data/dataon/Korea_PM_20200918.csv',\n", + " '../../data/dataon/Korea_PM_20200919.csv',\n", + " '../../data/dataon/Korea_PM_20200920.csv',\n", + " '../../data/dataon/Korea_PM_20200921.csv',\n", + " '../../data/dataon/Korea_PM_20200922.csv',\n", + " '../../data/dataon/Korea_PM_20200923.csv',\n", + " '../../data/dataon/Korea_PM_20200924.csv',\n", + " '../../data/dataon/Korea_PM_20200925.csv',\n", + " '../../data/dataon/Korea_PM_20200926.csv',\n", + " '../../data/dataon/Korea_PM_20200927.csv',\n", + " '../../data/dataon/Korea_PM_20200928.csv',\n", + " '../../data/dataon/Korea_PM_20200929.csv',\n", + " '../../data/dataon/Korea_PM_20200930.csv',\n", + " '../../data/dataon/Korea_PM_20201101.csv',\n", + " '../../data/dataon/Korea_PM_20201102.csv',\n", + " '../../data/dataon/Korea_PM_20201103.csv',\n", + " '../../data/dataon/Korea_PM_20201104.csv',\n", + " '../../data/dataon/Korea_PM_20201105.csv',\n", + " '../../data/dataon/Korea_PM_20201106.csv',\n", + " '../../data/dataon/Korea_PM_20201107.csv',\n", + " '../../data/dataon/Korea_PM_20201108.csv',\n", + " '../../data/dataon/Korea_PM_20201109.csv',\n", + " '../../data/dataon/Korea_PM_20201110.csv',\n", + " '../../data/dataon/Korea_PM_20201111.csv',\n", + " '../../data/dataon/Korea_PM_20201112.csv',\n", + " '../../data/dataon/Korea_PM_20201113.csv',\n", + " '../../data/dataon/Korea_PM_20201114.csv',\n", + " '../../data/dataon/Korea_PM_20201115.csv',\n", + " '../../data/dataon/Korea_PM_20201116.csv',\n", + " '../../data/dataon/Korea_PM_20201117.csv',\n", + " '../../data/dataon/Korea_PM_20201118.csv',\n", + " '../../data/dataon/Korea_PM_20201119.csv',\n", + " '../../data/dataon/Korea_PM_20201120.csv',\n", + " '../../data/dataon/Korea_PM_20201121.csv',\n", + " '../../data/dataon/Korea_PM_20201122.csv',\n", + " '../../data/dataon/Korea_PM_20201123.csv',\n", + " '../../data/dataon/Korea_PM_20201124.csv',\n", + " '../../data/dataon/Korea_PM_20201125.csv',\n", + " '../../data/dataon/Korea_PM_20201126.csv',\n", + " '../../data/dataon/Korea_PM_20201127.csv',\n", + " '../../data/dataon/Korea_PM_20201128.csv',\n", + " '../../data/dataon/Korea_PM_20201129.csv',\n", + " '../../data/dataon/Korea_PM_20201130.csv',\n", + " '../../data/dataon/Korea_PM_20201201.csv',\n", + " '../../data/dataon/Korea_PM_20201202.csv',\n", + " '../../data/dataon/Korea_PM_20201203.csv',\n", + " '../../data/dataon/Korea_PM_20201204.csv',\n", + " '../../data/dataon/Korea_PM_20201205.csv',\n", + " '../../data/dataon/Korea_PM_20201206.csv',\n", + " '../../data/dataon/Korea_PM_20201207.csv',\n", + " '../../data/dataon/Korea_PM_20201208.csv',\n", + " '../../data/dataon/Korea_PM_20201209.csv',\n", + " '../../data/dataon/Korea_PM_20201210.csv',\n", + " '../../data/dataon/Korea_PM_20201211.csv',\n", + " '../../data/dataon/Korea_PM_20201212.csv',\n", + " '../../data/dataon/Korea_PM_20201213.csv',\n", + " '../../data/dataon/Korea_PM_20201214.csv',\n", + " '../../data/dataon/Korea_PM_20201215.csv',\n", + " '../../data/dataon/Korea_PM_20201216.csv',\n", + " '../../data/dataon/Korea_PM_20201217.csv',\n", + " '../../data/dataon/Korea_PM_20201218.csv',\n", + " '../../data/dataon/Korea_PM_20201219.csv',\n", + " '../../data/dataon/Korea_PM_20201220.csv',\n", + " '../../data/dataon/Korea_PM_20201221.csv',\n", + " '../../data/dataon/Korea_PM_20201222.csv',\n", + " '../../data/dataon/Korea_PM_20201223.csv',\n", + " '../../data/dataon/Korea_PM_20201224.csv',\n", + " '../../data/dataon/Korea_PM_20201225.csv',\n", + " '../../data/dataon/Korea_PM_20201226.csv',\n", + " '../../data/dataon/Korea_PM_20201227.csv',\n", + " '../../data/dataon/Korea_PM_20201228.csv',\n", + " '../../data/dataon/Korea_PM_20201229.csv',\n", + " '../../data/dataon/Korea_PM_20201230.csv',\n", + " '../../data/dataon/Korea_PM_20201231.csv',\n", + " '../../data/dataon/Korea_PM_20210101.csv',\n", + " '../../data/dataon/Korea_PM_20210102.csv',\n", + " '../../data/dataon/Korea_PM_20210103.csv',\n", + " '../../data/dataon/Korea_PM_20210104.csv',\n", + " '../../data/dataon/Korea_PM_20210105.csv',\n", + " '../../data/dataon/Korea_PM_20210106.csv',\n", + " '../../data/dataon/Korea_PM_20210107.csv',\n", + " '../../data/dataon/Korea_PM_20210108.csv',\n", + " '../../data/dataon/Korea_PM_20210109.csv',\n", + " '../../data/dataon/Korea_PM_20210110.csv',\n", + " '../../data/dataon/Korea_PM_20210111.csv',\n", + " '../../data/dataon/Korea_PM_20210112.csv',\n", + " '../../data/dataon/Korea_PM_20210113.csv',\n", + " '../../data/dataon/Korea_PM_20210114.csv',\n", + " '../../data/dataon/Korea_PM_20210115.csv',\n", + " '../../data/dataon/Korea_PM_20210116.csv',\n", + " '../../data/dataon/Korea_PM_20210117.csv',\n", + " '../../data/dataon/Korea_PM_20210118.csv',\n", + " '../../data/dataon/Korea_PM_20210119.csv',\n", + " '../../data/dataon/Korea_PM_20210120.csv',\n", + " '../../data/dataon/Korea_PM_20210121.csv',\n", + " '../../data/dataon/Korea_PM_20210122.csv',\n", + " '../../data/dataon/Korea_PM_20210123.csv',\n", + " '../../data/dataon/Korea_PM_20210124.csv',\n", + " '../../data/dataon/Korea_PM_20210125.csv',\n", + " '../../data/dataon/Korea_PM_20210126.csv',\n", + " '../../data/dataon/Korea_PM_20210127.csv',\n", + " '../../data/dataon/Korea_PM_20210128.csv',\n", + " ...]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "all_files # 데이터가 오름차순으로 정렬되어 있음" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from tqdm import tqdm, trange, notebook" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 1427/1427 [00:30<00:00, 46.43it/s]\n" + ] + } + ], + "source": [ + "# 여러 파일을 하나의 데이터프레임으로 합치기\n", + "df_list = []\n", + "for file in tqdm(all_files):\n", + " df = pd.read_csv(file)\n", + " df_list.append(df)\n", + "\n", + "# 합친 데이터프레임\n", + "merged_df = pd.concat(df_list, axis=0)\n", + "merged_df.sort_values(by=['측정소코드', '측정일시'], inplace=True) # 측정소코드, 측정일시 기준으로 정렬\n", + "merged_df = merged_df.reset_index(drop=True).copy()\n", + "# 합친 데이터를 새로운 파일로 저장\n", + "merged_df.to_feather(\"../../data/대기질/air_dataon_merged.feather\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 에어코리아에서 제공해주는 데이터와 DataON에서 제공해주는 데이터의 차이는 위도,경도 데이터의 유무 말고는 모두 같음\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시PM10PM25주소위도경도
0서울 중구NaN111121.0중구2018-01-01 01:0034.019.0서울 중구 덕수궁길 1537.5643126.9747
1서울 중구NaN111121.0중구2018-01-01 02:0027.014.0서울 중구 덕수궁길 1537.5643126.9747
2서울 중구NaN111121.0중구2018-01-01 03:0026.014.0서울 중구 덕수궁길 1537.5643126.9747
3서울 중구NaN111121.0중구2018-01-01 04:0026.015.0서울 중구 덕수궁길 1537.5643126.9747
4서울 중구NaN111121.0중구2018-01-01 05:0028.016.0서울 중구 덕수궁길 1537.5643126.9747
.................................
17110172인천 옹진군국가배경농도831495.0울도2022-05-31 20:0024.06.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
17110173인천 옹진군국가배경농도831495.0울도2022-05-31 21:0022.07.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
17110174인천 옹진군국가배경농도831495.0울도2022-05-31 22:0024.06.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
17110175인천 옹진군국가배경농도831495.0울도2022-05-31 23:0021.06.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
17110176인천 옹진군국가배경농도831495.0울도2022-06-01 00:0024.08.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
\n", + "

17110177 rows × 10 columns

\n", + "
" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 PM10 PM25 \\\n", + "0 서울 중구 NaN 111121.0 중구 2018-01-01 01:00 34.0 19.0 \n", + "1 서울 중구 NaN 111121.0 중구 2018-01-01 02:00 27.0 14.0 \n", + "2 서울 중구 NaN 111121.0 중구 2018-01-01 03:00 26.0 14.0 \n", + "3 서울 중구 NaN 111121.0 중구 2018-01-01 04:00 26.0 15.0 \n", + "4 서울 중구 NaN 111121.0 중구 2018-01-01 05:00 28.0 16.0 \n", + "... ... ... ... ... ... ... ... \n", + "17110172 인천 옹진군 국가배경농도 831495.0 울도 2022-05-31 20:00 24.0 6.0 \n", + "17110173 인천 옹진군 국가배경농도 831495.0 울도 2022-05-31 21:00 22.0 7.0 \n", + "17110174 인천 옹진군 국가배경농도 831495.0 울도 2022-05-31 22:00 24.0 6.0 \n", + "17110175 인천 옹진군 국가배경농도 831495.0 울도 2022-05-31 23:00 21.0 6.0 \n", + "17110176 인천 옹진군 국가배경농도 831495.0 울도 2022-06-01 00:00 24.0 8.0 \n", + "\n", + " 주소 위도 경도 \n", + "0 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "1 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "2 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "3 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "4 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "... ... ... ... \n", + "17110172 인천 옹진군 덕적면 울도리 85번지 0.0000 0.0000 \n", + "17110173 인천 옹진군 덕적면 울도리 85번지 0.0000 0.0000 \n", + "17110174 인천 옹진군 덕적면 울도리 85번지 0.0000 0.0000 \n", + "17110175 인천 옹진군 덕적면 울도리 85번지 0.0000 0.0000 \n", + "17110176 인천 옹진군 덕적면 울도리 85번지 0.0000 0.0000 \n", + "\n", + "[17110177 rows x 10 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "merged_df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 커널 재시작" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import gc" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "23" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gc.collect()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "air_dataon_merged = pd.read_feather(\"../../data/대기질/air_dataon_merged.feather\") # 2018~2023 대기질 데이터 불러오기" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "air= pd.read_feather(\"../../data/대기질/air.feather\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시PM10PM25주소위도경도
0서울 중구None111121.0중구2018-01-01 01:0034.019.0서울 중구 덕수궁길 1537.5643126.9747
1서울 중구None111121.0중구2018-01-01 02:0027.014.0서울 중구 덕수궁길 1537.5643126.9747
2서울 중구None111121.0중구2018-01-01 03:0026.014.0서울 중구 덕수궁길 1537.5643126.9747
3서울 중구None111121.0중구2018-01-01 04:0026.015.0서울 중구 덕수궁길 1537.5643126.9747
4서울 중구None111121.0중구2018-01-01 05:0028.016.0서울 중구 덕수궁길 1537.5643126.9747
.................................
17110172인천 옹진군국가배경농도831495.0울도2022-05-31 20:0024.06.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
17110173인천 옹진군국가배경농도831495.0울도2022-05-31 21:0022.07.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
17110174인천 옹진군국가배경농도831495.0울도2022-05-31 22:0024.06.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
17110175인천 옹진군국가배경농도831495.0울도2022-05-31 23:0021.06.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
17110176인천 옹진군국가배경농도831495.0울도2022-06-01 00:0024.08.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
\n", + "

17110177 rows × 10 columns

\n", + "
" + ], + "text/plain": [ + " 지역 망 측정소코드 측정소명 측정일시 PM10 PM25 \\\n", + "0 서울 중구 None 111121.0 중구 2018-01-01 01:00 34.0 19.0 \n", + "1 서울 중구 None 111121.0 중구 2018-01-01 02:00 27.0 14.0 \n", + "2 서울 중구 None 111121.0 중구 2018-01-01 03:00 26.0 14.0 \n", + "3 서울 중구 None 111121.0 중구 2018-01-01 04:00 26.0 15.0 \n", + "4 서울 중구 None 111121.0 중구 2018-01-01 05:00 28.0 16.0 \n", + "... ... ... ... ... ... ... ... \n", + "17110172 인천 옹진군 국가배경농도 831495.0 울도 2022-05-31 20:00 24.0 6.0 \n", + "17110173 인천 옹진군 국가배경농도 831495.0 울도 2022-05-31 21:00 22.0 7.0 \n", + "17110174 인천 옹진군 국가배경농도 831495.0 울도 2022-05-31 22:00 24.0 6.0 \n", + "17110175 인천 옹진군 국가배경농도 831495.0 울도 2022-05-31 23:00 21.0 6.0 \n", + "17110176 인천 옹진군 국가배경농도 831495.0 울도 2022-06-01 00:00 24.0 8.0 \n", + "\n", + " 주소 위도 경도 \n", + "0 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "1 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "2 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "3 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "4 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "... ... ... ... \n", + "17110172 인천 옹진군 덕적면 울도리 85번지 0.0000 0.0000 \n", + "17110173 인천 옹진군 덕적면 울도리 85번지 0.0000 0.0000 \n", + "17110174 인천 옹진군 덕적면 울도리 85번지 0.0000 0.0000 \n", + "17110175 인천 옹진군 덕적면 울도리 85번지 0.0000 0.0000 \n", + "17110176 인천 옹진군 덕적면 울도리 85번지 0.0000 0.0000 \n", + "\n", + "[17110177 rows x 10 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air_dataon_merged" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "지역 24528\n", + "망 1566691\n", + "측정소코드 0\n", + "측정소명 0\n", + "측정일시 0\n", + "PM10 1034549\n", + "PM25 1466484\n", + "주소 0\n", + "위도 487634\n", + "경도 487634\n", + "dtype: int64" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(air_dataon_merged).sum() # na값 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "air_dataon_merged.drop(['망','지역'], axis=1, inplace=True) # 망 컬럼 삭제" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "측정소코드 0\n", + "측정소명 0\n", + "측정일시 0\n", + "PM10 1034549\n", + "PM25 1466484\n", + "주소 0\n", + "위도 487634\n", + "경도 487634\n", + "dtype: int64" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(air_dataon_merged).sum() # na값 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "101" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gc.collect()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour
0서울 중구111121중구2018-01-01 00:00:000.01300.028031.016.0서울 중구 덕수궁길 152018110
1서울 중구111121중구2018-01-01 01:00:000.02000.020034.019.0서울 중구 덕수궁길 152018111
2서울 중구111121중구2018-01-01 02:00:000.02400.016027.014.0서울 중구 덕수궁길 152018112
3서울 중구111121중구2018-01-01 03:00:000.01800.022026.014.0서울 중구 덕수궁길 152018113
4서울 중구111121중구2018-01-01 04:00:000.01000.030026.015.0서울 중구 덕수궁길 152018114
..........................................
28178033인천 옹진군831495울도2023-12-31 19:00:000.04400.007567.057.0인천 옹진군 덕적면 울도리 85번지2023123119
28178034인천 옹진군831495울도2023-12-31 20:00:000.04150.008664.057.0인천 옹진군 덕적면 울도리 85번지2023123120
28178035인천 옹진군831495울도2023-12-31 21:00:000.04090.009562.050.0인천 옹진군 덕적면 울도리 85번지2023123121
28178036인천 옹진군831495울도2023-12-31 22:00:000.04140.011165.059.0인천 옹진군 덕적면 울도리 85번지2023123122
28178037인천 옹진군831495울도2023-12-31 23:00:000.04110.011263.054.0인천 옹진군 덕적면 울도리 85번지2023123123
\n", + "

28178038 rows × 13 columns

\n", + "
" + ], + "text/plain": [ + " 지역 측정소코드 측정소명 측정일시 O3 NO2 PM10 PM25 \\\n", + "0 서울 중구 111121 중구 2018-01-01 00:00:00 0.0130 0.0280 31.0 16.0 \n", + "1 서울 중구 111121 중구 2018-01-01 01:00:00 0.0200 0.0200 34.0 19.0 \n", + "2 서울 중구 111121 중구 2018-01-01 02:00:00 0.0240 0.0160 27.0 14.0 \n", + "3 서울 중구 111121 중구 2018-01-01 03:00:00 0.0180 0.0220 26.0 14.0 \n", + "4 서울 중구 111121 중구 2018-01-01 04:00:00 0.0100 0.0300 26.0 15.0 \n", + "... ... ... ... ... ... ... ... ... \n", + "28178033 인천 옹진군 831495 울도 2023-12-31 19:00:00 0.0440 0.0075 67.0 57.0 \n", + "28178034 인천 옹진군 831495 울도 2023-12-31 20:00:00 0.0415 0.0086 64.0 57.0 \n", + "28178035 인천 옹진군 831495 울도 2023-12-31 21:00:00 0.0409 0.0095 62.0 50.0 \n", + "28178036 인천 옹진군 831495 울도 2023-12-31 22:00:00 0.0414 0.0111 65.0 59.0 \n", + "28178037 인천 옹진군 831495 울도 2023-12-31 23:00:00 0.0411 0.0112 63.0 54.0 \n", + "\n", + " 주소 year month day hour \n", + "0 서울 중구 덕수궁길 15 2018 1 1 0 \n", + "1 서울 중구 덕수궁길 15 2018 1 1 1 \n", + "2 서울 중구 덕수궁길 15 2018 1 1 2 \n", + "3 서울 중구 덕수궁길 15 2018 1 1 3 \n", + "4 서울 중구 덕수궁길 15 2018 1 1 4 \n", + "... ... ... ... ... ... \n", + "28178033 인천 옹진군 덕적면 울도리 85번지 2023 12 31 19 \n", + "28178034 인천 옹진군 덕적면 울도리 85번지 2023 12 31 20 \n", + "28178035 인천 옹진군 덕적면 울도리 85번지 2023 12 31 21 \n", + "28178036 인천 옹진군 덕적면 울도리 85번지 2023 12 31 22 \n", + "28178037 인천 옹진군 덕적면 울도리 85번지 2023 12 31 23 \n", + "\n", + "[28178038 rows x 13 columns]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "air_dataon_merged['측정소코드'] = air_dataon_merged['측정소코드'].astype(\"int\") # 측정소코드 데이터 타입 변경" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
측정소코드측정소명측정일시PM10PM25주소위도경도
0111121중구2018-01-01 01:0034.019.0서울 중구 덕수궁길 1537.5643126.9747
1111121중구2018-01-01 02:0027.014.0서울 중구 덕수궁길 1537.5643126.9747
2111121중구2018-01-01 03:0026.014.0서울 중구 덕수궁길 1537.5643126.9747
3111121중구2018-01-01 04:0026.015.0서울 중구 덕수궁길 1537.5643126.9747
4111121중구2018-01-01 05:0028.016.0서울 중구 덕수궁길 1537.5643126.9747
...........................
17110172831495울도2022-05-31 20:0024.06.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
17110173831495울도2022-05-31 21:0022.07.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
17110174831495울도2022-05-31 22:0024.06.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
17110175831495울도2022-05-31 23:0021.06.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
17110176831495울도2022-06-01 00:0024.08.0인천 옹진군 덕적면 울도리 85번지0.00000.0000
\n", + "

17110177 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " 측정소코드 측정소명 측정일시 PM10 PM25 주소 \\\n", + "0 111121 중구 2018-01-01 01:00 34.0 19.0 서울 중구 덕수궁길 15 \n", + "1 111121 중구 2018-01-01 02:00 27.0 14.0 서울 중구 덕수궁길 15 \n", + "2 111121 중구 2018-01-01 03:00 26.0 14.0 서울 중구 덕수궁길 15 \n", + "3 111121 중구 2018-01-01 04:00 26.0 15.0 서울 중구 덕수궁길 15 \n", + "4 111121 중구 2018-01-01 05:00 28.0 16.0 서울 중구 덕수궁길 15 \n", + "... ... ... ... ... ... ... \n", + "17110172 831495 울도 2022-05-31 20:00 24.0 6.0 인천 옹진군 덕적면 울도리 85번지 \n", + "17110173 831495 울도 2022-05-31 21:00 22.0 7.0 인천 옹진군 덕적면 울도리 85번지 \n", + "17110174 831495 울도 2022-05-31 22:00 24.0 6.0 인천 옹진군 덕적면 울도리 85번지 \n", + "17110175 831495 울도 2022-05-31 23:00 21.0 6.0 인천 옹진군 덕적면 울도리 85번지 \n", + "17110176 831495 울도 2022-06-01 00:00 24.0 8.0 인천 옹진군 덕적면 울도리 85번지 \n", + "\n", + " 위도 경도 \n", + "0 37.5643 126.9747 \n", + "1 37.5643 126.9747 \n", + "2 37.5643 126.9747 \n", + "3 37.5643 126.9747 \n", + "4 37.5643 126.9747 \n", + "... ... ... \n", + "17110172 0.0000 0.0000 \n", + "17110173 0.0000 0.0000 \n", + "17110174 0.0000 0.0000 \n", + "17110175 0.0000 0.0000 \n", + "17110176 0.0000 0.0000 \n", + "\n", + "[17110177 rows x 8 columns]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air_dataon_merged" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "637" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(air_dataon_merged['측정소코드'].unique())" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "660" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(air['측정소코드'].unique())" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 660/660 [00:46<00:00, 14.14it/s]\n" + ] + } + ], + "source": [ + "from tqdm import tqdm, notebook, trange\n", + "count= 0\n", + "match= []\n", + "for i in tqdm(air['측정소코드'].unique()):\n", + " for j in air_dataon_merged['측정소코드'].unique():\n", + " if i == j:\n", + " count+=1 # air 측정소코드와 air_dataon_merged 측정소코드가 일치하면 count 증가\n", + " match.append(i)\n", + " break # 매칭되면 다음 측정소명으로 넘어감" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "637" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "count # 매칭된 측정소명 개수 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "637" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(match)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "69" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "del([count, match])\n", + "gc.collect()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "637" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(air_dataon_merged['측정소코드'].unique())" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "660" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(air['측정소코드'].unique()) # air 측정소코드 종류의 개수와 air_dataon_merged 측정소코드 종류의 개수가 다름 " + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([131133, 131235, 131236, 131245, 131246, 131247, 131345, 131346,\n", + " 131374, 131394, 131395, 131444, 131475, 131542, 131556, 131557,\n", + " 131558, 131583, 131584, 131592, 131593, 131612, 131622, 131991,\n", + " 132118, 132119, 132991, 132992, 132993, 132994, 221142, 221183,\n", + " 221193, 221213, 221253, 238113, 238134, 238203, 238212, 238363,\n", + " 238377, 238378, 238379, 324125, 324136, 324143, 336442, 336462,\n", + " 336522, 336523, 336572, 339113, 339114, 422158, 422206, 422207,\n", + " 422208, 422209, 437133, 437156, 437172, 437202, 437203, 437211,\n", + " 437221, 437412, 437561, 437571, 437581, 437591, 525144, 534343,\n", + " 534446, 534452, 534453, 534464, 534484, 534503, 633124, 633125,\n", + " 633132, 633133, 633215, 633312, 633313, 633363, 633412, 633463,\n", + " 735117, 735124, 735125, 735126, 735131, 735135, 735136, 735143,\n", + " 735173, 735192, 735193, 735362, 735601, 823612, 823613, 823636,\n", + " 823637, 823653, 823672, 823707, 831494, 831495])" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air_dataon_merged.loc[air_dataon_merged['위도']==0, '측정소코드'].unique() # 위도가 0인 데이터 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([131133, 131235, 131236, 131245, 131246, 131247, 131345, 131346,\n", + " 131374, 131394, 131395, 131444, 131475, 131542, 131556, 131557,\n", + " 131558, 131583, 131584, 131592, 131593, 131612, 131622, 131991,\n", + " 132118, 132119, 132991, 132992, 132993, 132994, 221142, 221183,\n", + " 221193, 221213, 221253, 238113, 238134, 238203, 238212, 238363,\n", + " 238377, 238378, 238379, 324125, 324136, 324143, 336442, 336462,\n", + " 336522, 336523, 336572, 339113, 339114, 422158, 422206, 422207,\n", + " 422208, 422209, 437133, 437156, 437172, 437202, 437203, 437211,\n", + " 437221, 437412, 437561, 437571, 437581, 437591, 525144, 534343,\n", + " 534446, 534452, 534453, 534464, 534484, 534503, 633124, 633125,\n", + " 633132, 633133, 633215, 633312, 633313, 633363, 633412, 633463,\n", + " 735117, 735124, 735125, 735126, 735131, 735135, 735136, 735143,\n", + " 735173, 735192, 735193, 735362, 735601, 823612, 823613, 823636,\n", + " 823637, 823653, 823672, 823707, 831494, 831495])" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air_dataon_merged.loc[air_dataon_merged['경도']==0, '측정소코드'].unique() # 경도가 0인 데이터 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(110,)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 위도와 경도가 0인 측정소명 확인\n", + "air_dataon_merged.loc[(air_dataon_merged['위도']==0) & (air_dataon_merged['경도'] == 0), '측정소코드'].unique().shape" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "측정소코드 0\n", + "측정소명 0\n", + "측정일시 0\n", + "PM10 1034549\n", + "PM25 1466484\n", + "주소 0\n", + "위도 487634\n", + "경도 487634\n", + "dtype: int64" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(air_dataon_merged).sum() # na값 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "air_dataon_merged.loc[air_dataon_merged['위도']==0, '위도']= np.nan # 위도가 0인 값 na로 변경\n", + "air_dataon_merged.loc[air_dataon_merged['경도']==0, '경도']= np.nan # 경도가 0인 값 na로 변경" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
측정소코드측정소명측정일시PM10PM25주소위도경도
0111121중구2018-01-01 01:0034.019.0서울 중구 덕수궁길 1537.5643126.9747
1111121중구2018-01-01 02:0027.014.0서울 중구 덕수궁길 1537.5643126.9747
2111121중구2018-01-01 03:0026.014.0서울 중구 덕수궁길 1537.5643126.9747
3111121중구2018-01-01 04:0026.015.0서울 중구 덕수궁길 1537.5643126.9747
4111121중구2018-01-01 05:0028.016.0서울 중구 덕수궁길 1537.5643126.9747
...........................
17110172831495울도2022-05-31 20:0024.06.0인천 옹진군 덕적면 울도리 85번지NaNNaN
17110173831495울도2022-05-31 21:0022.07.0인천 옹진군 덕적면 울도리 85번지NaNNaN
17110174831495울도2022-05-31 22:0024.06.0인천 옹진군 덕적면 울도리 85번지NaNNaN
17110175831495울도2022-05-31 23:0021.06.0인천 옹진군 덕적면 울도리 85번지NaNNaN
17110176831495울도2022-06-01 00:0024.08.0인천 옹진군 덕적면 울도리 85번지NaNNaN
\n", + "

17110177 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " 측정소코드 측정소명 측정일시 PM10 PM25 주소 \\\n", + "0 111121 중구 2018-01-01 01:00 34.0 19.0 서울 중구 덕수궁길 15 \n", + "1 111121 중구 2018-01-01 02:00 27.0 14.0 서울 중구 덕수궁길 15 \n", + "2 111121 중구 2018-01-01 03:00 26.0 14.0 서울 중구 덕수궁길 15 \n", + "3 111121 중구 2018-01-01 04:00 26.0 15.0 서울 중구 덕수궁길 15 \n", + "4 111121 중구 2018-01-01 05:00 28.0 16.0 서울 중구 덕수궁길 15 \n", + "... ... ... ... ... ... ... \n", + "17110172 831495 울도 2022-05-31 20:00 24.0 6.0 인천 옹진군 덕적면 울도리 85번지 \n", + "17110173 831495 울도 2022-05-31 21:00 22.0 7.0 인천 옹진군 덕적면 울도리 85번지 \n", + "17110174 831495 울도 2022-05-31 22:00 24.0 6.0 인천 옹진군 덕적면 울도리 85번지 \n", + "17110175 831495 울도 2022-05-31 23:00 21.0 6.0 인천 옹진군 덕적면 울도리 85번지 \n", + "17110176 831495 울도 2022-06-01 00:00 24.0 8.0 인천 옹진군 덕적면 울도리 85번지 \n", + "\n", + " 위도 경도 \n", + "0 37.5643 126.9747 \n", + "1 37.5643 126.9747 \n", + "2 37.5643 126.9747 \n", + "3 37.5643 126.9747 \n", + "4 37.5643 126.9747 \n", + "... ... ... \n", + "17110172 NaN NaN \n", + "17110173 NaN NaN \n", + "17110174 NaN NaN \n", + "17110175 NaN NaN \n", + "17110176 NaN NaN \n", + "\n", + "[17110177 rows x 8 columns]" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air_dataon_merged" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "측정소코드 0\n", + "측정소명 0\n", + "측정일시 0\n", + "PM10 1034549\n", + "PM25 1466484\n", + "주소 0\n", + "위도 2104122\n", + "경도 2104122\n", + "dtype: int64" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(air_dataon_merged).sum() # na값 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "air_dataon_merged.dropna(subset=['위도', '경도'], inplace=True) # 위도, 경도 na값 제거" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
측정소코드측정소명측정일시PM10PM25주소위도경도
0111121중구2018-01-01 01:0034.019.0서울 중구 덕수궁길 1537.5643126.9747
1111121중구2018-01-01 02:0027.014.0서울 중구 덕수궁길 1537.5643126.9747
2111121중구2018-01-01 03:0026.014.0서울 중구 덕수궁길 1537.5643126.9747
3111121중구2018-01-01 04:0026.015.0서울 중구 덕수궁길 1537.5643126.9747
4111121중구2018-01-01 05:0028.016.0서울 중구 덕수궁길 1537.5643126.9747
...........................
17083800831493영흥2022-05-31 20:0025.05.0인천광역시 옹진군 영흥면 영흥로251번길 9037.2560126.4835
17083801831493영흥2022-05-31 21:0022.08.0인천광역시 옹진군 영흥면 영흥로251번길 9037.2560126.4835
17083802831493영흥2022-05-31 22:0025.011.0인천광역시 옹진군 영흥면 영흥로251번길 9037.2560126.4835
17083803831493영흥2022-05-31 23:0022.06.0인천광역시 옹진군 영흥면 영흥로251번길 9037.2560126.4835
17083804831493영흥2022-06-01 00:0020.07.0인천광역시 옹진군 영흥면 영흥로251번길 9037.2560126.4835
\n", + "

15006055 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " 측정소코드 측정소명 측정일시 PM10 PM25 \\\n", + "0 111121 중구 2018-01-01 01:00 34.0 19.0 \n", + "1 111121 중구 2018-01-01 02:00 27.0 14.0 \n", + "2 111121 중구 2018-01-01 03:00 26.0 14.0 \n", + "3 111121 중구 2018-01-01 04:00 26.0 15.0 \n", + "4 111121 중구 2018-01-01 05:00 28.0 16.0 \n", + "... ... ... ... ... ... \n", + "17083800 831493 영흥 2022-05-31 20:00 25.0 5.0 \n", + "17083801 831493 영흥 2022-05-31 21:00 22.0 8.0 \n", + "17083802 831493 영흥 2022-05-31 22:00 25.0 11.0 \n", + "17083803 831493 영흥 2022-05-31 23:00 22.0 6.0 \n", + "17083804 831493 영흥 2022-06-01 00:00 20.0 7.0 \n", + "\n", + " 주소 위도 경도 \n", + "0 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "1 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "2 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "3 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "4 서울 중구 덕수궁길 15 37.5643 126.9747 \n", + "... ... ... ... \n", + "17083800 인천광역시 옹진군 영흥면 영흥로251번길 90 37.2560 126.4835 \n", + "17083801 인천광역시 옹진군 영흥면 영흥로251번길 90 37.2560 126.4835 \n", + "17083802 인천광역시 옹진군 영흥면 영흥로251번길 90 37.2560 126.4835 \n", + "17083803 인천광역시 옹진군 영흥면 영흥로251번길 90 37.2560 126.4835 \n", + "17083804 인천광역시 옹진군 영흥면 영흥로251번길 90 37.2560 126.4835 \n", + "\n", + "[15006055 rows x 8 columns]" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air_dataon_merged" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour
0서울 중구111121중구2018-01-01 00:00:000.01300.028031.016.0서울 중구 덕수궁길 152018110
1서울 중구111121중구2018-01-01 01:00:000.02000.020034.019.0서울 중구 덕수궁길 152018111
2서울 중구111121중구2018-01-01 02:00:000.02400.016027.014.0서울 중구 덕수궁길 152018112
3서울 중구111121중구2018-01-01 03:00:000.01800.022026.014.0서울 중구 덕수궁길 152018113
4서울 중구111121중구2018-01-01 04:00:000.01000.030026.015.0서울 중구 덕수궁길 152018114
..........................................
28178033인천 옹진군831495울도2023-12-31 19:00:000.04400.007567.057.0인천 옹진군 덕적면 울도리 85번지2023123119
28178034인천 옹진군831495울도2023-12-31 20:00:000.04150.008664.057.0인천 옹진군 덕적면 울도리 85번지2023123120
28178035인천 옹진군831495울도2023-12-31 21:00:000.04090.009562.050.0인천 옹진군 덕적면 울도리 85번지2023123121
28178036인천 옹진군831495울도2023-12-31 22:00:000.04140.011165.059.0인천 옹진군 덕적면 울도리 85번지2023123122
28178037인천 옹진군831495울도2023-12-31 23:00:000.04110.011263.054.0인천 옹진군 덕적면 울도리 85번지2023123123
\n", + "

28178038 rows × 13 columns

\n", + "
" + ], + "text/plain": [ + " 지역 측정소코드 측정소명 측정일시 O3 NO2 PM10 PM25 \\\n", + "0 서울 중구 111121 중구 2018-01-01 00:00:00 0.0130 0.0280 31.0 16.0 \n", + "1 서울 중구 111121 중구 2018-01-01 01:00:00 0.0200 0.0200 34.0 19.0 \n", + "2 서울 중구 111121 중구 2018-01-01 02:00:00 0.0240 0.0160 27.0 14.0 \n", + "3 서울 중구 111121 중구 2018-01-01 03:00:00 0.0180 0.0220 26.0 14.0 \n", + "4 서울 중구 111121 중구 2018-01-01 04:00:00 0.0100 0.0300 26.0 15.0 \n", + "... ... ... ... ... ... ... ... ... \n", + "28178033 인천 옹진군 831495 울도 2023-12-31 19:00:00 0.0440 0.0075 67.0 57.0 \n", + "28178034 인천 옹진군 831495 울도 2023-12-31 20:00:00 0.0415 0.0086 64.0 57.0 \n", + "28178035 인천 옹진군 831495 울도 2023-12-31 21:00:00 0.0409 0.0095 62.0 50.0 \n", + "28178036 인천 옹진군 831495 울도 2023-12-31 22:00:00 0.0414 0.0111 65.0 59.0 \n", + "28178037 인천 옹진군 831495 울도 2023-12-31 23:00:00 0.0411 0.0112 63.0 54.0 \n", + "\n", + " 주소 year month day hour \n", + "0 서울 중구 덕수궁길 15 2018 1 1 0 \n", + "1 서울 중구 덕수궁길 15 2018 1 1 1 \n", + "2 서울 중구 덕수궁길 15 2018 1 1 2 \n", + "3 서울 중구 덕수궁길 15 2018 1 1 3 \n", + "4 서울 중구 덕수궁길 15 2018 1 1 4 \n", + "... ... ... ... ... ... \n", + "28178033 인천 옹진군 덕적면 울도리 85번지 2023 12 31 19 \n", + "28178034 인천 옹진군 덕적면 울도리 85번지 2023 12 31 20 \n", + "28178035 인천 옹진군 덕적면 울도리 85번지 2023 12 31 21 \n", + "28178036 인천 옹진군 덕적면 울도리 85번지 2023 12 31 22 \n", + "28178037 인천 옹진군 덕적면 울도리 85번지 2023 12 31 23 \n", + "\n", + "[28178038 rows x 13 columns]" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "660" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(air['측정소코드'].unique()) # 측정소코드 종류의 개수" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "472" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(air_dataon_merged['측정소코드'].unique()) # air 측정소코드와 air_dataon_merged 측정소코드 개수가 다름" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour위도경도
0서울 중구111121중구2018-01-01 00:00:000.01300.028031.016.0서울 중구 덕수궁길 152018110NaNNaN
1서울 중구111121중구2018-01-01 01:00:000.02000.020034.019.0서울 중구 덕수궁길 152018111NaNNaN
2서울 중구111121중구2018-01-01 02:00:000.02400.016027.014.0서울 중구 덕수궁길 152018112NaNNaN
3서울 중구111121중구2018-01-01 03:00:000.01800.022026.014.0서울 중구 덕수궁길 152018113NaNNaN
4서울 중구111121중구2018-01-01 04:00:000.01000.030026.015.0서울 중구 덕수궁길 152018114NaNNaN
................................................
28178033인천 옹진군831495울도2023-12-31 19:00:000.04400.007567.057.0인천 옹진군 덕적면 울도리 85번지2023123119NaNNaN
28178034인천 옹진군831495울도2023-12-31 20:00:000.04150.008664.057.0인천 옹진군 덕적면 울도리 85번지2023123120NaNNaN
28178035인천 옹진군831495울도2023-12-31 21:00:000.04090.009562.050.0인천 옹진군 덕적면 울도리 85번지2023123121NaNNaN
28178036인천 옹진군831495울도2023-12-31 22:00:000.04140.011165.059.0인천 옹진군 덕적면 울도리 85번지2023123122NaNNaN
28178037인천 옹진군831495울도2023-12-31 23:00:000.04110.011263.054.0인천 옹진군 덕적면 울도리 85번지2023123123NaNNaN
\n", + "

28178038 rows × 15 columns

\n", + "
" + ], + "text/plain": [ + " 지역 측정소코드 측정소명 측정일시 O3 NO2 PM10 PM25 \\\n", + "0 서울 중구 111121 중구 2018-01-01 00:00:00 0.0130 0.0280 31.0 16.0 \n", + "1 서울 중구 111121 중구 2018-01-01 01:00:00 0.0200 0.0200 34.0 19.0 \n", + "2 서울 중구 111121 중구 2018-01-01 02:00:00 0.0240 0.0160 27.0 14.0 \n", + "3 서울 중구 111121 중구 2018-01-01 03:00:00 0.0180 0.0220 26.0 14.0 \n", + "4 서울 중구 111121 중구 2018-01-01 04:00:00 0.0100 0.0300 26.0 15.0 \n", + "... ... ... ... ... ... ... ... ... \n", + "28178033 인천 옹진군 831495 울도 2023-12-31 19:00:00 0.0440 0.0075 67.0 57.0 \n", + "28178034 인천 옹진군 831495 울도 2023-12-31 20:00:00 0.0415 0.0086 64.0 57.0 \n", + "28178035 인천 옹진군 831495 울도 2023-12-31 21:00:00 0.0409 0.0095 62.0 50.0 \n", + "28178036 인천 옹진군 831495 울도 2023-12-31 22:00:00 0.0414 0.0111 65.0 59.0 \n", + "28178037 인천 옹진군 831495 울도 2023-12-31 23:00:00 0.0411 0.0112 63.0 54.0 \n", + "\n", + " 주소 year month day hour 위도 경도 \n", + "0 서울 중구 덕수궁길 15 2018 1 1 0 NaN NaN \n", + "1 서울 중구 덕수궁길 15 2018 1 1 1 NaN NaN \n", + "2 서울 중구 덕수궁길 15 2018 1 1 2 NaN NaN \n", + "3 서울 중구 덕수궁길 15 2018 1 1 3 NaN NaN \n", + "4 서울 중구 덕수궁길 15 2018 1 1 4 NaN NaN \n", + "... ... ... ... ... ... .. .. \n", + "28178033 인천 옹진군 덕적면 울도리 85번지 2023 12 31 19 NaN NaN \n", + "28178034 인천 옹진군 덕적면 울도리 85번지 2023 12 31 20 NaN NaN \n", + "28178035 인천 옹진군 덕적면 울도리 85번지 2023 12 31 21 NaN NaN \n", + "28178036 인천 옹진군 덕적면 울도리 85번지 2023 12 31 22 NaN NaN \n", + "28178037 인천 옹진군 덕적면 울도리 85번지 2023 12 31 23 NaN NaN \n", + "\n", + "[28178038 rows x 15 columns]" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air['위도'] = np.nan # 위도 컬럼 생성\n", + "air['경도'] = np.nan # 경도 컬럼 생성\n", + "air" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "115" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gc.collect()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "23" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gc.collect()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "지역 0\n", + "측정소코드 0\n", + "측정소명 0\n", + "측정일시 0\n", + "O3 1152577\n", + "NO2 1172756\n", + "PM10 1441888\n", + "PM25 1970684\n", + "주소 0\n", + "year 0\n", + "month 0\n", + "day 0\n", + "hour 0\n", + "위도 28178038\n", + "경도 28178038\n", + "dtype: int64" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(air).sum() # na값 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 472/472 [06:36<00:00, 1.19it/s]\n" + ] + } + ], + "source": [ + "# dataon에서 얻은 데이터를 기반으로 에어코리아에서 다운받은 air 데이터에 위도와 경도를 추가\n", + "\n", + "for i in tqdm(air_dataon_merged['측정소코드'].unique()):\n", + " for j in air['측정소코드'].unique():\n", + " if i == j:\n", + " air.loc[air['측정소코드']==j, '위도']= air_dataon_merged.loc[air_dataon_merged['측정소코드']==i, '위도'].values[0]\n", + " air.loc[air['측정소코드']==j, '경도']= air_dataon_merged.loc[air_dataon_merged['측정소코드']==i, '경도'].values[0]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour위도경도
0서울 중구111121중구2018-01-01 00:00:000.01300.028031.016.0서울 중구 덕수궁길 15201811037.5643126.9747
1서울 중구111121중구2018-01-01 01:00:000.02000.020034.019.0서울 중구 덕수궁길 15201811137.5643126.9747
2서울 중구111121중구2018-01-01 02:00:000.02400.016027.014.0서울 중구 덕수궁길 15201811237.5643126.9747
3서울 중구111121중구2018-01-01 03:00:000.01800.022026.014.0서울 중구 덕수궁길 15201811337.5643126.9747
4서울 중구111121중구2018-01-01 04:00:000.01000.030026.015.0서울 중구 덕수궁길 15201811437.5643126.9747
................................................
28178033인천 옹진군831495울도2023-12-31 19:00:000.04400.007567.057.0인천 옹진군 덕적면 울도리 85번지2023123119NaNNaN
28178034인천 옹진군831495울도2023-12-31 20:00:000.04150.008664.057.0인천 옹진군 덕적면 울도리 85번지2023123120NaNNaN
28178035인천 옹진군831495울도2023-12-31 21:00:000.04090.009562.050.0인천 옹진군 덕적면 울도리 85번지2023123121NaNNaN
28178036인천 옹진군831495울도2023-12-31 22:00:000.04140.011165.059.0인천 옹진군 덕적면 울도리 85번지2023123122NaNNaN
28178037인천 옹진군831495울도2023-12-31 23:00:000.04110.011263.054.0인천 옹진군 덕적면 울도리 85번지2023123123NaNNaN
\n", + "

28178038 rows × 15 columns

\n", + "
" + ], + "text/plain": [ + " 지역 측정소코드 측정소명 측정일시 O3 NO2 PM10 PM25 \\\n", + "0 서울 중구 111121 중구 2018-01-01 00:00:00 0.0130 0.0280 31.0 16.0 \n", + "1 서울 중구 111121 중구 2018-01-01 01:00:00 0.0200 0.0200 34.0 19.0 \n", + "2 서울 중구 111121 중구 2018-01-01 02:00:00 0.0240 0.0160 27.0 14.0 \n", + "3 서울 중구 111121 중구 2018-01-01 03:00:00 0.0180 0.0220 26.0 14.0 \n", + "4 서울 중구 111121 중구 2018-01-01 04:00:00 0.0100 0.0300 26.0 15.0 \n", + "... ... ... ... ... ... ... ... ... \n", + "28178033 인천 옹진군 831495 울도 2023-12-31 19:00:00 0.0440 0.0075 67.0 57.0 \n", + "28178034 인천 옹진군 831495 울도 2023-12-31 20:00:00 0.0415 0.0086 64.0 57.0 \n", + "28178035 인천 옹진군 831495 울도 2023-12-31 21:00:00 0.0409 0.0095 62.0 50.0 \n", + "28178036 인천 옹진군 831495 울도 2023-12-31 22:00:00 0.0414 0.0111 65.0 59.0 \n", + "28178037 인천 옹진군 831495 울도 2023-12-31 23:00:00 0.0411 0.0112 63.0 54.0 \n", + "\n", + " 주소 year month day hour 위도 경도 \n", + "0 서울 중구 덕수궁길 15 2018 1 1 0 37.5643 126.9747 \n", + "1 서울 중구 덕수궁길 15 2018 1 1 1 37.5643 126.9747 \n", + "2 서울 중구 덕수궁길 15 2018 1 1 2 37.5643 126.9747 \n", + "3 서울 중구 덕수궁길 15 2018 1 1 3 37.5643 126.9747 \n", + "4 서울 중구 덕수궁길 15 2018 1 1 4 37.5643 126.9747 \n", + "... ... ... ... ... ... ... ... \n", + "28178033 인천 옹진군 덕적면 울도리 85번지 2023 12 31 19 NaN NaN \n", + "28178034 인천 옹진군 덕적면 울도리 85번지 2023 12 31 20 NaN NaN \n", + "28178035 인천 옹진군 덕적면 울도리 85번지 2023 12 31 21 NaN NaN \n", + "28178036 인천 옹진군 덕적면 울도리 85번지 2023 12 31 22 NaN NaN \n", + "28178037 인천 옹진군 덕적면 울도리 85번지 2023 12 31 23 NaN NaN \n", + "\n", + "[28178038 rows x 15 columns]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "37.6067 3\n", + "37.5945 2\n", + "35.6880 2\n", + "37.5027 2\n", + "37.5250 2\n", + " ..\n", + "35.2115 1\n", + "37.7563 1\n", + "37.5849 1\n", + "37.7463 1\n", + "37.6520 1\n", + "Name: 위도, Length: 464, dtype: int64" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air.drop_duplicates(subset=['측정소코드'],inplace=False)['위도'].value_counts() # 위도 중복 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour위도경도
631008서울 성북구111161성북구2018-01-010.0230.01730.09.0서울 성북구 삼양로2길 70201811037.6067127.0273
683592서울 성북구111162정릉로2018-01-010.0130.03644.0NaN서울 성북구 돈암동 8-164번지201811037.6067127.0049
6219350경기 김포시131472고촌읍2018-01-010.0190.01542.017.0경기 김포시 고촌읍 신곡로 152201811037.6067126.7628
\n", + "
" + ], + "text/plain": [ + " 지역 측정소코드 측정소명 측정일시 O3 NO2 PM10 PM25 \\\n", + "631008 서울 성북구 111161 성북구 2018-01-01 0.023 0.017 30.0 9.0 \n", + "683592 서울 성북구 111162 정릉로 2018-01-01 0.013 0.036 44.0 NaN \n", + "6219350 경기 김포시 131472 고촌읍 2018-01-01 0.019 0.015 42.0 17.0 \n", + "\n", + " 주소 year month day hour 위도 경도 \n", + "631008 서울 성북구 삼양로2길 70 2018 1 1 0 37.6067 127.0273 \n", + "683592 서울 성북구 돈암동 8-164번지 2018 1 1 0 37.6067 127.0049 \n", + "6219350 경기 김포시 고촌읍 신곡로 152 2018 1 1 0 37.6067 126.7628 " + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 위도가 겹치는 데이터 확인을 통해 혹시나 중복된 데이터가 있는지 확인\n", + "air.loc[air['위도']==37.6067,].drop_duplicates(subset=['측정소코드'],inplace=False) # 위도가 37.6067인 데이터 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([131119, 131133, 131235, 131236, 131237, 131245, 131246, 131247,\n", + " 131345, 131346, 131374, 131394, 131395, 131444, 131475, 131542,\n", + " 131556, 131557, 131558, 131583, 131584, 131592, 131593, 131602,\n", + " 131612, 131622, 131991, 132118, 132119, 132901, 132902, 132903,\n", + " 132991, 132992, 132993, 132994, 221142, 221174, 221183, 221184,\n", + " 221185, 221193, 221213, 221253, 221903, 221904, 221905, 221906,\n", + " 238113, 238134, 238147, 238162, 238185, 238203, 238212, 238363,\n", + " 238377, 238378, 238379, 238380, 238901, 238902, 238903, 238904,\n", + " 324125, 324136, 324143, 336357, 336358, 336442, 336462, 336522,\n", + " 336523, 336572, 336901, 336902, 336903, 336904, 336905, 339113,\n", + " 339114, 339116, 339117, 339124, 422112, 422158, 422206, 422207,\n", + " 422208, 422209, 422211, 422212, 437111, 437120, 437121, 437126,\n", + " 437133, 437156, 437162, 437172, 437173, 437202, 437203, 437211,\n", + " 437221, 437412, 437413, 437432, 437561, 437571, 437581, 437591,\n", + " 437901, 525144, 534343, 534435, 534436, 534446, 534448, 534452,\n", + " 534453, 534464, 534465, 534472, 534473, 534484, 534503, 534901,\n", + " 534902, 534903, 534904, 534905, 534906, 541115, 541116, 632126,\n", + " 632131, 632532, 633124, 633125, 633132, 633133, 633215, 633312,\n", + " 633313, 633363, 633412, 633463, 633472, 633482, 735117, 735118,\n", + " 735119, 735124, 735125, 735126, 735127, 735131, 735135, 735136,\n", + " 735137, 735138, 735139, 735143, 735152, 735173, 735182, 735192,\n", + " 735193, 735362, 735601, 735901, 823612, 823613, 823636, 823637,\n", + " 823653, 823663, 823664, 823672, 823707, 823901, 823902, 823903,\n", + " 823904, 823905, 831494, 831495])" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air.loc[pd.isna(air['위도']), '측정소코드'].unique() # 위도가 na인 측정소명 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "위도가 na인 측정소명 개수: 4627988\n" + ] + } + ], + "source": [ + "# DataON 데이터에 존재하는 위도, 경도 데이터를 측정소 코드를 기준으로 에어코리아에서 다운로드 받은 데이터와 매칭하여 위도, 경도 데이터를 추가하였다.\n", + "# 그럼에도 불구하고 air 데이터에는 위도, 경도 데이터가 na로 표시된 데이터가 많다.\n", + "print(\"위도가 na인 측정소명 개수: \",air.loc[pd.isna(air['위도']), '측정소코드'].shape[0]) " + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "69" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gc.collect()" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour위도경도
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [지역, 측정소코드, 측정소명, 측정일시, O3, NO2, PM10, PM25, 주소, year, month, day, hour, 위도, 경도]\n", + "Index: []" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 주소를 기반으로 위도와 경도를 추가할 예정이기 때문에 주소가 na인 데이터를 확인\n", + "na_address = air[air['주소'].isna() | (air['주소'] == '') | (air['주소']== \" \") | (air['주소']== \" \")| (air['주소']== \"None\") | (air['주소']== \"NA\") | (air['주소']== \"0\") | (air['주소']== 0) | (air['주소']== \"na\") | (air['주소']== \"NONE\")] # 주소가 na인 데이터 확인\n", + "na_address " + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "지역 0\n", + "측정소코드 0\n", + "측정소명 0\n", + "측정일시 0\n", + "O3 1152577\n", + "NO2 1172756\n", + "PM10 1441888\n", + "PM25 1970684\n", + "주소 0\n", + "year 0\n", + "month 0\n", + "day 0\n", + "hour 0\n", + "위도 4627988\n", + "경도 4627988\n", + "dtype: int64" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(air).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "188" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(air.loc[pd.isna(air['위도']), '측정소명'].unique()) # 위도가 na인 측정소명 개수 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['호매실', '송산3동', '장현동', '서해안로', '배곧동', '경춘로', '와부읍', '진접읍', '청북읍',\n", + " '고덕동', '파주읍', '오포1동', '곤지암', '부발읍', '한강로', '미사', '새솔동', '봉담읍',\n", + " '서신면', '공도읍', '죽산면', '대신면', '가남읍', '전곡', '설악면', '양평읍', '연천(DMZ)',\n", + " '신사우동', '온의동', '동해항', '묵호항', '호산항', '철원(DMZ)', '화천(DMZ)',\n", + " '인제(DMZ)', '고성(DMZ)', '청학동', '용호동', '화명동', '삼락동', '우동', '재송동',\n", + " '명지동', '회동동', '부산항', '부산신항', '부산북항', '부산감만', '내서읍', '정촌면', '삼진로',\n", + " '금성면', '김해대로', '고현동', '향촌동', '물금읍', '웅촌면', '범서읍', '북부순환도로',\n", + " '송정동 대기환경측정소', '송정동', '마산항', '울산항', '하동항', '삼천포항', '유촌동', '일곡동',\n", + " '우산동(광주)', '봉강면', '진월면', '영암읍', '안마도', '홍도', '가거도', '보성읍', '목포항',\n", + " '광양항', '여수항', '광양 중마', '광양 율촌', '조천읍', '한림읍', '화북동', '애월읍', '강정동',\n", + " '남산1동', '산격동', '본동', '내당동', '침산동', '화원읍', '충혼탑', '군위읍', '우현동',\n", + " '연일읍', '제철동', '양덕동', '율곡동', '진미동', '영주동', '하양읍', '진량읍', '강구면',\n", + " '영해면', '문경시', '성주군', '의성읍', '안계면', '봉화군청', '영양군', '예천군', '화양읍',\n", + " '포항항', '관평동', '탄천면', '합덕읍', '복운리', '장재리', '송악면', '연무읍', '성동면',\n", + " '격렬비열도', '원북면', '삽교읍', '고덕면(충남)', '외연도', '정산면', '평택당진항', '대산항',\n", + " '장항항', '평택당진항(당진항)', '태안항', '보령항', '보람동', '전의면', '지정면', '주문진읍',\n", + " '우천면', '중앙탑면', '살미면', '영천동', '청풍면', '가덕면', '단성면', '단양읍', '감물면',\n", + " '덕산읍', '소이면', '황간면', '증평읍', '혁신동', '여의동', '효자동', '옥산면', '비응도동',\n", + " '말도', '소룡동2', '삼기면', '용동면', '함열읍', '춘포면', '여산면', '금마면', '영파동',\n", + " '운봉읍', '계화면', '광활면', '봉동읍', '구이면', '관촌면', '청송읍', '군산항', '서해', '영종',\n", + " '남동', '주안', '중봉', '효성', '임학', '서창', '아암', '경인항', '인천항', '인천 신항',\n", + " '인천 북항', '인천 남항', '연평도', '울도'], dtype=object)" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air.loc[pd.isna(air['위도']), '측정소명'].unique() # 위도가 na인 측정소명 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['경기도 수원시 권선구 칠보로1번길 62', '경기도 의정부시 민락로243번길 94', '경기도 시흥시 시청로 20',\n", + " '경기도 시흥시 서해안로 277', '경기도 시흥시 배곧4로 102', '경기도 남양주시 경춘로 433',\n", + " '경기도 남양주시 와부읍 도곡길 7', '경기도 남양주시 진접읍 금강로 1509-26',\n", + " '경기도 평택시 청북읍 안청로2길 60', '경기도 평택시 고덕면 고덕국제2로 111',\n", + " '경기도 파주시 파주읍 교육길 13', '경기도 광주시 오포읍 오포로859번길 29',\n", + " '경기도 광주시 곤지암읍 광여로 59', '경기도 이천시 부발읍 무촌로 117',\n", + " '경기도 김포시 김포한강2로24번길 93', '경기도 하남시 아리수로 531', '경기도 화성시 수노을중앙로 178',\n", + " '경기도 화성시 봉담읍 샘마을1길 8-4', '경기도 화성시 서신면 궁평항로 1702',\n", + " '경기도 안성시 공도읍 공도4로 8', '경기도 안성시 죽산면 남부길 60',\n", + " '경기도 여주시 대신면 율촌1길 12-10', '경기도 여주시 가남읍 태평중앙1길 20',\n", + " '경기도 연천군 전곡읍 은전로 45', '경기도 가평군 설악면 한서로 8', '경기도 양평군 양평읍 마유산로 17',\n", + " '경기 연천군 중면 횡산리 산108-1', '강원특별자치도 춘천시 사우4길 26',\n", + " '강원특별자치도 춘천시 경춘로 2370', '강원특별자치도 동해시 대동로 210',\n", + " '강원특별자치도 동해시 임항로 121', '강원특별자치도 삼척시 원덕읍 호산리 338-14',\n", + " '강원특별자치도 철원군 철원읍 산명리 1345', '강원특별자치도 화천군 화천읍 풍산리 산269',\n", + " '강원특별자치도 고성군 수동면 신탄리 산6번지', '강원특별자치도 고성군 수동면 외면리 산14번지',\n", + " '부산광역시 영도구 청학남로13번길 18', '부산광역시 남구 이기대공원로 11',\n", + " '부산광역시 북구 용당로16번길 22', '부산광역시 사상구 모덕로 2',\n", + " '부산광역시 해운대구 해운대해변로 84 (우동)', '부산광역시 해운대구 센텀동로 191',\n", + " '부산광역시 강서구 명지동 3513-3', '부산광역시 금정구 금사로 217', '부산광역시 강서구 신항남로 354',\n", + " '부산광역시 강서구 신항남로 416', '부산광역시 동구 충장대로 314', '부산광역시 남구 북항로 105',\n", + " '경상남도 창원시 마산회원구 내서읍 광려로 8', '경상남도 진주시 정촌면 예하리 1340',\n", + " '경상남도 창원시 마산합포구 진동면 삼진의거대로 621', '경상남도 하동군 금성면 금성중앙길 14',\n", + " '경상남도 김해시 김해대로 2515', '경상남도 거제시 계룡로 125', '경상남도 사천시 향촌5길 28',\n", + " '경상남도 양산시 물금읍 황산로 384', '울산광역시 울주군 웅촌면 새초천길 12',\n", + " '울산광역시 울주군 범서읍 당앞로 14-50', '울산광역시 중구 태화동 310', '울산광역시 북구 송내14길 41',\n", + " '경상남도 창원시 성산구 적현로 424', '울산 남구 매암로 96', '경상남도 하동군 금성면 경제산업로 509',\n", + " '경상남도 사천시 향촌동 1292', '광주광역시 서구 천변우하로 203', '광주광역시 북구 모룡대길 68',\n", + " '광주광역시 광산구 우산동 1026-2', '전라남도 광양시 봉강면 조양길 46',\n", + " '전라남도 광양시 진월면 선소중앙길 31', '전라남도 영암군 영암읍 낭주로 202-2',\n", + " '전남 영광군 낙월면 영외리 산 118', '전라남도 신안군 흑산면 홍도1길 51-3',\n", + " '전남 신안군 흑산면 가거도리 산 4', '전라남도 보성군 보성읍 현충로 42-36',\n", + " '전남 영암군 삼호읍 용당리 2169-1', '전남 광양시 컨부두로 316', '전남 여수시 여객선터미널길 17',\n", + " '전라남도 광양시 항만9로 70', '전라남도 광양시 광양읍 율촌산단7로 111',\n", + " '제주특별자치도 제주시 조천읍 조천18길 11-1', '제주특별자치도 제주시 한림읍 한림중앙로 71-9',\n", + " '제주특별자치도 제주시 화북일동 1098', '제주특별자치도 제주시 애월읍 고내리 1319',\n", + " '제주특별자치도 서귀포시 일주서로 166', '대구광역시 중구 남산로2길 125', '대구광역시 북구 연암로 40',\n", + " '대구광역시 달서구 구마로26길 62', '대구광역시 서구 서대구로3길 46', '대구광역시 북구 옥산로17길 21',\n", + " '대구광역시 달성군 화원읍 인흥1길 12', '대구광역시 남구 앞산순환로 540',\n", + " '대구광역시 군위군 군위읍 군청로 158', '경상북도 포항시 북구 새천년대로 906',\n", + " '경상북도 포항시 남구 연일읍 동문로 67', '경상북도 포항시 남구 인덕로 52',\n", + " '경상북도 포항시 북구 천마로 161 (양덕동)', '경북 김천시 혁신4로 21', '경상북도 구미시 이계북로 149',\n", + " '경상북도 영주시 광복로 65', '경상북도 경산시 하양읍 하양로 119-1', '경상북도 경산시 진량읍 낙산길 7',\n", + " '경상북도 영덕군 강구면 강구리 167', '경상북도 영덕군 영해면 예주3길 7', '경북 문경시 시청2길 45',\n", + " '경상북도 성주군 성주읍 성주로 3258', '경북 의성군 의성읍 군청길 31',\n", + " '경상북도 의성군 안계면 안계길 114', '경상북도 봉화군 봉화읍 봉화로 1111',\n", + " '경상북도 영양군 영양읍 군청길 37', '경상북도 예천군 호명면 행복7길 25-4',\n", + " '경북 청도군 화양읍 도주관로 159', '경북 포항시 남구 신항로 99-98',\n", + " '대전광역시 유성구 테크노중앙로 88', '충청남도 공주시 탄천면 안터새말길 34',\n", + " '충청남도 당진시 합덕읍 합덕리 344', '충청남도 당진시 송악읍 신복운로 5',\n", + " '충청남도 아산시 배방읍 장재리 2116', '충청남도 아산시 송악면 송악로 790',\n", + " '충청남도 논산시 연무읍 안심로 50', '충청남도 논산시 성동면 산업단지로5길 73-28',\n", + " '충남 태안군 근흥면 가의도길 44-71번지', '충청남도 태안군 원북면 상리길 17-4',\n", + " '충청남도 예산군 삽교읍 두리3길 33', '충청남도 예산군 고덕면 예당산단4길 147',\n", + " '충남 보령시 오천면 외연도리 산64', '충청남도 청양군 정산면 칠갑산로 1861',\n", + " '충청남도 당진시 신평면 매산리 976', '충남 서산시 대산읍 대죽리 1114',\n", + " '충남 서천군 장항읍 장산로 270-3', '충청남도 당진시 송악읍 고대공단2길 79-30',\n", + " '충청남도 태안군 원북면 발전로 457', '충청남도 보령시 오천면 오천해안로 89-37',\n", + " '세종특별자치시 한누리대로 2107', '세종특별자치시 전의면 운주산로 1270',\n", + " '강원특별자치도 원주시 지정면 기업도시로 200', '강원특별자치도 강릉시 주문진읍 항구로 19',\n", + " '강원특별자치도 횡성군 우천면 우항1길 5-34', '충청북도 충주시 중앙탑면 기업도시로 237',\n", + " '충청북도 충주시 살미면 세성양지말길 41', '충청북도 제천시 청풍호로8길 7',\n", + " '충청북도 제천시 청풍면 청풍호로 2115', '충청북도 청주시 상당구 가덕면 보청대로 4650',\n", + " '충북 단양군 단성면 충혼로 52-1', '충청북도 단양군 단양읍 별곡6길 26',\n", + " '충청북도 괴산군 감물면 충민로신대길 13', '충청북도 진천군 덕산읍 대월로 90',\n", + " '충청북도 음성군 소이면 소이로 409', '충청북도 영동군 황간면 남성리 185',\n", + " '충청북도 증평군 증평읍 남하용강로 16', '전라북도 전주시 덕진구 중동로 150',\n", + " '전북특별자치도 전주시 덕진구 중동로 150', '전라북도 전주시 덕진구 여암2길 9',\n", + " '전북특별자치도 전주시 덕진구 여암2길 9', '전라북도 전주시 완산구 쑥고개로 259 (효자동2가)',\n", + " '전북특별자치도 전주시 완산구 쑥고개로 259 (효자동2가)', '전북 군산시 옥산면 산성로 200',\n", + " '전북특별자치도 군산시 옥산면 산성로 200', '전북 군산시 새만금북로 43',\n", + " '전북특별자치도 군산시 새만금북로 43', '전라북도 군산시 옥도면 말도2길 29', '전라북도 군산시 동장산2길 6',\n", + " '전북특별자치도 군산시 동장산2길 6', '전북 익산시 삼기면 황금로 513',\n", + " '전북특별자치도 익산시 삼기면 황금로 513', '전북 익산시 용동면 용동1길 80-4',\n", + " '전북특별자치도 익산시 용동면 용동1길 80-4', '전라북도 익산시 함열읍 함열중앙로 83',\n", + " '전북특별자치도 익산시 함열읍 함열중앙로 83', '전라북도 익산시 춘포면 춘포2길 11',\n", + " '전북특별자치도 익산시 춘포면 춘포2길 11', '전라북도 익산시 여산면 가람로 393',\n", + " '전북특별자치도 익산시 여산면 가람로 393', '전라북도 익산시 금마면 무왕로 1824',\n", + " '전북특별자치도 익산시 금마면 무왕로 1824', '전라북도 정읍시 영파동 232-1',\n", + " '전북특별자치도 정읍시 영파동 232-1', '전라북도 남원시 운봉읍 황산로 1083',\n", + " '전북특별자치도 남원시 운봉읍 황산로 1083', '전라북도 부안군 계화면 간재로 405',\n", + " '전북특별자치도 부안군 계화면 간재로 405', '전라북도 김제시 광활면 지평선로 638',\n", + " '전북특별자치도 김제시 광활면 지평선로 638', '전라북도 완주군 봉동읍 삼봉로 933',\n", + " '전북특별자치도 완주군 봉동읍 삼봉로 933', '전라북도 완주군 구이면 덕천전원길 232-58',\n", + " '전북특별자치도 완주군 구이면 덕천전원길 232-58', '전라북도 임실군 관촌면 사선1길 13',\n", + " '전북특별자치도 임실군 관촌면 사선1길 13', '경상북도 청송군 청송읍 금월로 230',\n", + " '전북 군산시 서해로 194', '인천광역시 중구 서해대로 365-1', '인천광역시 중구 하늘중앙로 132',\n", + " '인천광역시 남동구 남동대로 668', '인천광역시 미추홀구 구월남로 27', '인천광역시 서구 중봉대로 274',\n", + " '인천광역시 계양구 봉오대로600번길 14', '인천광역시 계양구 경명대로 1179 (병방동)',\n", + " '인천광역시 남동구 서창남로 101', '인천광역시 연수구 센트럴로 350', '인천 서구 오류동 경인항',\n", + " '인천 중구 항동7가 1-48', '인천광역시 연수구 인천신항대로 866-9',\n", + " '인천광역시 서구 원석로 41 (석남동)', '인천광역시 중구 축항대로118번길 147',\n", + " '인천 옹진군 연평면 연평리 631', '인천 옹진군 덕적면 울도리 85번지'], dtype=object)" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air.loc[pd.isna(air['위도']), '주소'].unique() # 위도가 na인 주소 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "206" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(air.loc[pd.isna(air['위도']), '주소'].unique()) # 위도가 na인 주소 개수 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour위도경도
0서울 중구111121중구2018-01-01 00:00:000.01300.028031.016.0서울 중구 덕수궁길 15201811037.5643126.9747
1서울 중구111121중구2018-01-01 01:00:000.02000.020034.019.0서울 중구 덕수궁길 15201811137.5643126.9747
2서울 중구111121중구2018-01-01 02:00:000.02400.016027.014.0서울 중구 덕수궁길 15201811237.5643126.9747
3서울 중구111121중구2018-01-01 03:00:000.01800.022026.014.0서울 중구 덕수궁길 15201811337.5643126.9747
4서울 중구111121중구2018-01-01 04:00:000.01000.030026.015.0서울 중구 덕수궁길 15201811437.5643126.9747
................................................
28178033인천 옹진군831495울도2023-12-31 19:00:000.04400.007567.057.0인천 옹진군 덕적면 울도리 85번지2023123119NaNNaN
28178034인천 옹진군831495울도2023-12-31 20:00:000.04150.008664.057.0인천 옹진군 덕적면 울도리 85번지2023123120NaNNaN
28178035인천 옹진군831495울도2023-12-31 21:00:000.04090.009562.050.0인천 옹진군 덕적면 울도리 85번지2023123121NaNNaN
28178036인천 옹진군831495울도2023-12-31 22:00:000.04140.011165.059.0인천 옹진군 덕적면 울도리 85번지2023123122NaNNaN
28178037인천 옹진군831495울도2023-12-31 23:00:000.04110.011263.054.0인천 옹진군 덕적면 울도리 85번지2023123123NaNNaN
\n", + "

28178038 rows × 15 columns

\n", + "
" + ], + "text/plain": [ + " 지역 측정소코드 측정소명 측정일시 O3 NO2 PM10 PM25 \\\n", + "0 서울 중구 111121 중구 2018-01-01 00:00:00 0.0130 0.0280 31.0 16.0 \n", + "1 서울 중구 111121 중구 2018-01-01 01:00:00 0.0200 0.0200 34.0 19.0 \n", + "2 서울 중구 111121 중구 2018-01-01 02:00:00 0.0240 0.0160 27.0 14.0 \n", + "3 서울 중구 111121 중구 2018-01-01 03:00:00 0.0180 0.0220 26.0 14.0 \n", + "4 서울 중구 111121 중구 2018-01-01 04:00:00 0.0100 0.0300 26.0 15.0 \n", + "... ... ... ... ... ... ... ... ... \n", + "28178033 인천 옹진군 831495 울도 2023-12-31 19:00:00 0.0440 0.0075 67.0 57.0 \n", + "28178034 인천 옹진군 831495 울도 2023-12-31 20:00:00 0.0415 0.0086 64.0 57.0 \n", + "28178035 인천 옹진군 831495 울도 2023-12-31 21:00:00 0.0409 0.0095 62.0 50.0 \n", + "28178036 인천 옹진군 831495 울도 2023-12-31 22:00:00 0.0414 0.0111 65.0 59.0 \n", + "28178037 인천 옹진군 831495 울도 2023-12-31 23:00:00 0.0411 0.0112 63.0 54.0 \n", + "\n", + " 주소 year month day hour 위도 경도 \n", + "0 서울 중구 덕수궁길 15 2018 1 1 0 37.5643 126.9747 \n", + "1 서울 중구 덕수궁길 15 2018 1 1 1 37.5643 126.9747 \n", + "2 서울 중구 덕수궁길 15 2018 1 1 2 37.5643 126.9747 \n", + "3 서울 중구 덕수궁길 15 2018 1 1 3 37.5643 126.9747 \n", + "4 서울 중구 덕수궁길 15 2018 1 1 4 37.5643 126.9747 \n", + "... ... ... ... ... ... ... ... \n", + "28178033 인천 옹진군 덕적면 울도리 85번지 2023 12 31 19 NaN NaN \n", + "28178034 인천 옹진군 덕적면 울도리 85번지 2023 12 31 20 NaN NaN \n", + "28178035 인천 옹진군 덕적면 울도리 85번지 2023 12 31 21 NaN NaN \n", + "28178036 인천 옹진군 덕적면 울도리 85번지 2023 12 31 22 NaN NaN \n", + "28178037 인천 옹진군 덕적면 울도리 85번지 2023 12 31 23 NaN NaN \n", + "\n", + "[28178038 rows x 15 columns]" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 206/206 [00:59<00:00, 3.47it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Address: 경기도 수원시 권선구 칠보로1번길 62\n", + "Latitude: 37.2687013\n", + "Longitude: 126.9354884\n", + "\n", + "Address: 경기도 의정부시 민락로243번길 94\n", + "Latitude: 37.7477055\n", + "Longitude: 127.1066326\n", + "\n", + "Address: 경기도 시흥시 시청로 20\n", + "Latitude: 37.3799469\n", + "Longitude: 126.8031765\n", + "\n", + "Address: 경기도 시흥시 서해안로 277\n", + "Latitude: 37.3944639\n", + "Longitude: 126.743953\n", + "\n", + "Address: 경기도 시흥시 배곧4로 102\n", + "Latitude: 37.3735088\n", + "Longitude: 126.7337514\n", + "\n", + "Address: 경기도 남양주시 경춘로 433\n", + "Latitude: 37.6079488\n", + "Longitude: 127.1593216\n", + "\n", + "Address: 경기도 남양주시 와부읍 도곡길 7\n", + "Latitude: 37.5804204\n", + "Longitude: 127.2260649\n", + "\n", + "Address: 경기도 남양주시 진접읍 금강로 1509-26\n", + "Latitude: 37.7263588\n", + "Longitude: 127.1898925\n", + "\n", + "Address: 경기도 평택시 청북읍 안청로2길 60\n", + "Latitude: 37.0215834\n", + "Longitude: 126.9163318\n", + "\n", + "Address: 경기도 평택시 고덕면 고덕국제2로 111\n", + "Latitude: 37.05311950000001\n", + "Longitude: 127.0462758\n", + "\n", + "Address: 경기도 파주시 파주읍 교육길 13\n", + "Latitude: 37.8308505\n", + "Longitude: 126.8330233\n", + "\n", + "Address: 경기도 광주시 오포읍 오포로859번길 29\n", + "Latitude: 37.366347\n", + "Longitude: 127.2285647\n", + "\n", + "Address: 경기도 광주시 곤지암읍 광여로 59\n", + "Latitude: 37.3509517\n", + "Longitude: 127.3521893\n", + "\n", + "Address: 경기도 이천시 부발읍 무촌로 117\n", + "Latitude: 37.283268\n", + "Longitude: 127.4866972\n", + "\n", + "Address: 경기도 김포시 김포한강2로24번길 93\n", + "Latitude: 37.6468307\n", + "Longitude: 126.6743716\n", + "\n", + "Address: 경기도 하남시 아리수로 531\n", + "Latitude: 37.5671161\n", + "Longitude: 127.1860594\n", + "\n", + "Address: 경기도 화성시 수노을중앙로 178\n", + "Latitude: 37.2812059\n", + "Longitude: 126.8187549\n", + "\n", + "Address: 경기도 화성시 봉담읍 샘마을1길 8-4\n", + "Latitude: 37.2194855\n", + "Longitude: 126.9490498\n", + "\n", + "Address: 경기도 화성시 서신면 궁평항로 1702\n", + "Latitude: 37.1662107\n", + "Longitude: 126.7088664\n", + "\n", + "Address: 경기도 안성시 공도읍 공도4로 8\n", + "Latitude: 37.0010908\n", + "Longitude: 127.1726414\n", + "\n", + "Address: 경기도 안성시 죽산면 남부길 60\n", + "Latitude: 37.0746422\n", + "Longitude: 127.4244675\n", + "\n", + "Address: 경기도 여주시 대신면 율촌1길 12-10\n", + "Latitude: 37.3733992\n", + "Longitude: 127.5863028\n", + "\n", + "Address: 경기도 여주시 가남읍 태평중앙1길 20\n", + "Latitude: 37.20167199999999\n", + "Longitude: 127.5452706\n", + "\n", + "Address: 경기도 연천군 전곡읍 은전로 45\n", + "Latitude: 38.0275947\n", + "Longitude: 127.0632063\n", + "\n", + "Address: 경기도 가평군 설악면 한서로 8\n", + "Latitude: 37.675968\n", + "Longitude: 127.494629\n", + "\n", + "Address: 경기도 양평군 양평읍 마유산로 17\n", + "Latitude: 37.4970925\n", + "Longitude: 127.4865458\n", + "\n", + "Address: 경기 연천군 중면 횡산리 산108-1\n", + "Latitude: 38.126438\n", + "Longitude: 126.9732781\n", + "\n", + "Address: 강원특별자치도 춘천시 사우4길 26\n", + "Latitude: 37.9056482\n", + "Longitude: 127.7280602\n", + "\n", + "Address: 강원특별자치도 춘천시 경춘로 2370\n", + "Latitude: 37.8648724\n", + "Longitude: 127.720974\n", + "\n", + "Address: 강원특별자치도 동해시 대동로 210\n", + "Latitude: 37.488497\n", + "Longitude: 129.1300356\n", + "\n", + "Address: 강원특별자치도 동해시 임항로 121\n", + "Latitude: 37.5484489\n", + "Longitude: 129.110772\n", + "\n", + "Address: 강원특별자치도 삼척시 원덕읍 호산리 338-14\n", + "Latitude: 37.1743425\n", + "Longitude: 129.343893\n", + "\n", + "Address: 강원특별자치도 철원군 철원읍 산명리 1345\n", + "Latitude: 38.2920178\n", + "Longitude: 127.1781293\n", + "\n", + "Address: 강원특별자치도 화천군 화천읍 풍산리 산269\n", + "Latitude: 38.2198155\n", + "Longitude: 127.7724077\n", + "\n", + "Address: 강원특별자치도 고성군 수동면 신탄리 산6번지\n", + "Latitude: 38.3811816\n", + "Longitude: 128.2577979\n", + "\n", + "Address: 강원특별자치도 고성군 수동면 외면리 산14번지\n", + "Latitude: 38.5632087\n", + "Longitude: 128.3414492\n", + "\n", + "Address: 부산광역시 영도구 청학남로13번길 18\n", + "Latitude: 35.0907485\n", + "Longitude: 129.0594904\n", + "\n", + "Address: 부산광역시 남구 이기대공원로 11\n", + "Latitude: 35.1258003\n", + "Longitude: 129.1164163\n", + "\n", + "Address: 부산광역시 북구 용당로16번길 22\n", + "Latitude: 35.2328515\n", + "Longitude: 129.0089178\n", + "\n", + "Address: 부산광역시 사상구 모덕로 2\n", + "Latitude: 35.1824537\n", + "Longitude: 128.976956\n", + "\n", + "Address: 부산광역시 해운대구 해운대해변로 84 (우동)\n", + "Latitude: 35.160586\n", + "Longitude: 129.1399465\n", + "\n", + "Address: 부산광역시 해운대구 센텀동로 191\n", + "Latitude: 35.1827807\n", + "Longitude: 129.1202801\n", + "\n", + "Address: 부산광역시 강서구 명지동 3513-3\n", + "Latitude: 35.1055728\n", + "Longitude: 128.9258618\n", + "\n", + "Address: 부산광역시 금정구 금사로 217\n", + "Latitude: 35.2301064\n", + "Longitude: 129.1206659\n", + "\n", + "Address: 부산광역시 강서구 신항남로 354\n", + "Latitude: 35.0802557\n", + "Longitude: 128.8268542\n", + "\n", + "Address: 부산광역시 강서구 신항남로 416\n", + "Latitude: 35.073104\n", + "Longitude: 128.833501\n", + "\n", + "Address: 부산광역시 동구 충장대로 314\n", + "Latitude: 35.1227863\n", + "Longitude: 129.0568997\n", + "\n", + "Address: 부산광역시 남구 북항로 105\n", + "Latitude: 35.1059456\n", + "Longitude: 129.0825838\n", + "\n", + "Address: 경상남도 창원시 마산회원구 내서읍 광려로 8\n", + "Latitude: 35.226291\n", + "Longitude: 128.5025384\n", + "\n", + "Address: 경상남도 진주시 정촌면 예하리 1340\n", + "Latitude: 35.124889\n", + "Longitude: 128.1004766\n", + "\n", + "Address: 경상남도 창원시 마산합포구 진동면 삼진의거대로 621\n", + "Latitude: 35.1161188\n", + "Longitude: 128.485312\n", + "\n", + "Address: 경상남도 하동군 금성면 금성중앙길 14\n", + "Latitude: 34.965974\n", + "Longitude: 127.7941908\n", + "\n", + "Address: 경상남도 김해시 김해대로 2515\n", + "Latitude: 35.228156\n", + "Longitude: 128.9006477\n", + "\n", + "Address: 경상남도 거제시 계룡로 125\n", + "Latitude: 34.8805937\n", + "Longitude: 128.6212211\n", + "\n", + "Address: 경상남도 사천시 향촌5길 28\n", + "Latitude: 34.9337743\n", + "Longitude: 128.0934556\n", + "\n", + "Address: 경상남도 양산시 물금읍 황산로 384\n", + "Latitude: 35.3103051\n", + "Longitude: 128.9872259\n", + "\n", + "Address: 울산광역시 울주군 웅촌면 새초천길 12\n", + "Latitude: 35.4612703\n", + "Longitude: 129.2084963\n", + "\n", + "Address: 울산광역시 울주군 범서읍 당앞로 14-50\n", + "Latitude: 35.57033029999999\n", + "Longitude: 129.223284\n", + "\n", + "Address: 울산광역시 중구 태화동 310\n", + "Latitude: 35.5579648\n", + "Longitude: 129.2814575\n", + "\n", + "Address: 울산광역시 북구 송내14길 41\n", + "Latitude: 35.5923096\n", + "Longitude: 129.3651871\n", + "\n", + "Address: 경상남도 창원시 성산구 적현로 424\n", + "Latitude: 35.1895435\n", + "Longitude: 128.5938474\n", + "\n", + "Address: 울산 남구 매암로 96\n", + "Latitude: 35.5167331\n", + "Longitude: 129.3763258\n", + "\n", + "Address: 경상남도 하동군 금성면 경제산업로 509\n", + "Latitude: 34.951636\n", + "Longitude: 127.8204985\n", + "\n", + "Address: 경상남도 사천시 향촌동 1292\n", + "Latitude: 34.9182613\n", + "Longitude: 128.0843048\n", + "\n", + "Address: 광주광역시 서구 천변우하로 203\n", + "Latitude: 35.1633863\n", + "Longitude: 126.8493017\n", + "\n", + "Address: 광주광역시 북구 모룡대길 68\n", + "Latitude: 35.2179317\n", + "Longitude: 126.8926976\n", + "\n", + "Address: 광주광역시 광산구 우산동 1026-2\n", + "Latitude: 35.1577625\n", + "Longitude: 126.8100651\n", + "\n", + "Address: 전라남도 광양시 봉강면 조양길 46\n", + "Latitude: 35.013973\n", + "Longitude: 127.5802854\n", + "\n", + "Address: 전라남도 광양시 진월면 선소중앙길 31\n", + "Latitude: 34.9784446\n", + "Longitude: 127.7580563\n", + "\n", + "Address: 전라남도 영암군 영암읍 낭주로 202-2\n", + "Latitude: 34.807237\n", + "Longitude: 126.701469\n", + "\n", + "Address: 전남 영광군 낙월면 영외리 산 118\n", + "Latitude: 35.3363281\n", + "Longitude: 126.0206231\n", + "\n", + "Address: 전라남도 신안군 흑산면 홍도1길 51-3\n", + "Latitude: 34.6853982\n", + "Longitude: 125.1918734\n", + "\n", + "Address: 전남 신안군 흑산면 가거도리 산 4\n", + "Latitude: 34.0908578\n", + "Longitude: 125.1013039\n", + "\n", + "Address: 전라남도 보성군 보성읍 현충로 42-36\n", + "Latitude: 34.7649425\n", + "Longitude: 127.0782547\n", + "\n", + "Address: 전남 영암군 삼호읍 용당리 2169-1\n", + "Latitude: 34.7717083\n", + "Longitude: 126.3922166\n", + "\n", + "Address: 전남 광양시 컨부두로 316\n", + "Latitude: 34.9068431\n", + "Longitude: 127.6680385\n", + "\n", + "Address: 전남 여수시 여객선터미널길 17\n", + "Latitude: 34.7385468\n", + "Longitude: 127.7326155\n", + "\n", + "Address: 전라남도 광양시 항만9로 70\n", + "Latitude: 34.921022\n", + "Longitude: 127.6959196\n", + "\n", + "Address: 전라남도 광양시 광양읍 율촌산단7로 111\n", + "Latitude: 34.89446119999999\n", + "Longitude: 127.6111959\n", + "\n", + "Address: 제주특별자치도 제주시 조천읍 조천18길 11-1\n", + "Latitude: 33.5390118\n", + "Longitude: 126.6427149\n", + "\n", + "Address: 제주특별자치도 제주시 한림읍 한림중앙로 71-9\n", + "Latitude: 33.4094321\n", + "Longitude: 126.2685964\n", + "\n", + "Address: 제주특별자치도 제주시 화북일동 1098\n", + "Latitude: 33.5170009\n", + "Longitude: 126.5702961\n", + "\n", + "Address: 제주특별자치도 제주시 애월읍 고내리 1319\n", + "Latitude: 33.4646987\n", + "Longitude: 126.3314337\n", + "\n", + "Address: 제주특별자치도 서귀포시 일주서로 166\n", + "Latitude: 33.2518481\n", + "Longitude: 126.4906021\n", + "\n", + "Address: 대구광역시 중구 남산로2길 125\n", + "Latitude: 35.857907\n", + "Longitude: 128.5894969\n", + "\n", + "Address: 대구광역시 북구 연암로 40\n", + "Latitude: 35.8926449\n", + "Longitude: 128.6007471\n", + "\n", + "Address: 대구광역시 달서구 구마로26길 62\n", + "Latitude: 35.8344259\n", + "Longitude: 128.5411162\n", + "\n", + "Address: 대구광역시 서구 서대구로3길 46\n", + "Latitude: 35.8589429\n", + "Longitude: 128.5519085\n", + "\n", + "Address: 대구광역시 북구 옥산로17길 21\n", + "Latitude: 35.8861362\n", + "Longitude: 128.5849779\n", + "\n", + "Address: 대구광역시 달성군 화원읍 인흥1길 12\n", + "Latitude: 35.7974305\n", + "Longitude: 128.5037874\n", + "\n", + "Address: 대구광역시 남구 앞산순환로 540\n", + "Latitude: 35.8317684\n", + "Longitude: 128.5827485\n", + "\n", + "Address: 대구광역시 군위군 군위읍 군청로 158\n", + "Latitude: 36.2372849\n", + "Longitude: 128.5744108\n", + "\n", + "Address: 경상북도 포항시 북구 새천년대로 906\n", + "Latitude: 36.0528499\n", + "Longitude: 129.3611936\n", + "\n", + "Address: 경상북도 포항시 남구 연일읍 동문로 67\n", + "Latitude: 35.9962626\n", + "Longitude: 129.3521476\n", + "\n", + "Address: 경상북도 포항시 남구 인덕로 52\n", + "Latitude: 35.9899753\n", + "Longitude: 129.3976328\n", + "\n", + "Address: 경상북도 포항시 북구 천마로 161 (양덕동)\n", + "Latitude: 36.0901685\n", + "Longitude: 129.3961353\n", + "\n", + "Address: 경북 김천시 혁신4로 21\n", + "Latitude: 36.121462\n", + "Longitude: 128.1833644\n", + "\n", + "Address: 경상북도 구미시 이계북로 149\n", + "Latitude: 36.1059908\n", + "Longitude: 128.418356\n", + "\n", + "Address: 경상북도 영주시 광복로 65\n", + "Latitude: 36.8286792\n", + "Longitude: 128.625912\n", + "\n", + "Address: 경상북도 경산시 하양읍 하양로 119-1\n", + "Latitude: 35.9146655\n", + "Longitude: 128.8200554\n", + "\n", + "Address: 경상북도 경산시 진량읍 낙산길 7\n", + "Latitude: 35.8756691\n", + "Longitude: 128.8124495\n", + "\n", + "Address: 경상북도 영덕군 강구면 강구리 167\n", + "Latitude: 36.3635446\n", + "Longitude: 129.3888018\n", + "\n", + "Address: 경상북도 영덕군 영해면 예주3길 7\n", + "Latitude: 36.53746539999999\n", + "Longitude: 129.4070884\n", + "\n", + "Address: 경북 문경시 시청2길 45\n", + "Latitude: 36.5867479\n", + "Longitude: 128.1861093\n", + "\n", + "Address: 경상북도 성주군 성주읍 성주로 3258\n", + "Latitude: 35.9174968\n", + "Longitude: 128.2901803\n", + "\n", + "Address: 경북 의성군 의성읍 군청길 31\n", + "Latitude: 36.3525152\n", + "Longitude: 128.6970106\n", + "\n", + "Address: 경상북도 의성군 안계면 안계길 114\n", + "Latitude: 36.3837643\n", + "Longitude: 128.4401647\n", + "\n", + "Address: 경상북도 봉화군 봉화읍 봉화로 1111\n", + "Latitude: 36.8931267\n", + "Longitude: 128.7325885\n", + "\n", + "Address: 경상북도 영양군 영양읍 군청길 37\n", + "Latitude: 36.6666895\n", + "Longitude: 129.1125208\n", + "\n", + "Address: 경상북도 예천군 호명면 행복7길 25-4\n", + "Latitude: 36.5767932\n", + "Longitude: 128.47329\n", + "\n", + "Address: 경북 청도군 화양읍 도주관로 159\n", + "Latitude: 35.6497741\n", + "Longitude: 128.706151\n", + "\n", + "Address: 경북 포항시 남구 신항로 99-98\n", + "Latitude: 36.0057836\n", + "Longitude: 129.4150523\n", + "\n", + "Address: 대전광역시 유성구 테크노중앙로 88\n", + "Latitude: 36.424847\n", + "Longitude: 127.3948613\n", + "\n", + "Address: 충청남도 공주시 탄천면 안터새말길 34\n", + "Latitude: 36.3084894\n", + "Longitude: 127.0677527\n", + "\n", + "Address: 충청남도 당진시 합덕읍 합덕리 344\n", + "Latitude: 36.7904994\n", + "Longitude: 126.785855\n", + "\n", + "Address: 충청남도 당진시 송악읍 신복운로 5\n", + "Latitude: 36.94439980000001\n", + "Longitude: 126.7836024\n", + "\n", + "Address: 충청남도 아산시 배방읍 장재리 2116\n", + "Latitude: 36.7844748\n", + "Longitude: 127.1013253\n", + "\n", + "Address: 충청남도 아산시 송악면 송악로 790\n", + "Latitude: 36.7316409\n", + "Longitude: 127.008961\n", + "\n", + "Address: 충청남도 논산시 연무읍 안심로 50\n", + "Latitude: 36.1253129\n", + "Longitude: 127.0989462\n", + "\n", + "Address: 충청남도 논산시 성동면 산업단지로5길 73-28\n", + "Latitude: 36.2151708\n", + "Longitude: 127.0439255\n", + "\n", + "Address: 충남 태안군 근흥면 가의도길 44-71번지\n", + "Latitude: 36.672586\n", + "Longitude: 126.0644856\n", + "\n", + "Address: 충청남도 태안군 원북면 상리길 17-4\n", + "Latitude: 36.8242316\n", + "Longitude: 126.2572303\n", + "\n", + "Address: 충청남도 예산군 삽교읍 두리3길 33\n", + "Latitude: 36.6880204\n", + "Longitude: 126.7393317\n", + "\n", + "Address: 충청남도 예산군 고덕면 예당산단4길 147\n", + "Latitude: 36.7626597\n", + "Longitude: 126.7302905\n", + "\n", + "Address: 충남 보령시 오천면 외연도리 산64\n", + "Latitude: 36.2294015\n", + "Longitude: 126.0830436\n", + "\n", + "Address: 충청남도 청양군 정산면 칠갑산로 1861\n", + "Latitude: 36.4149209\n", + "Longitude: 126.9455889\n", + "\n", + "Address: 충청남도 당진시 신평면 매산리 976\n", + "Latitude: 36.9554166\n", + "Longitude: 126.8277843\n", + "\n", + "Address: 충남 서산시 대산읍 대죽리 1114\n", + "Latitude: 37.0126847\n", + "Longitude: 126.4266258\n", + "\n", + "Address: 충남 서천군 장항읍 장산로 270-3\n", + "Latitude: 36.0080173\n", + "Longitude: 126.6902323\n", + "\n", + "Address: 충청남도 당진시 송악읍 고대공단2길 79-30\n", + "Latitude: 36.9858631\n", + "Longitude: 126.7458981\n", + "\n", + "Address: 충청남도 태안군 원북면 발전로 457\n", + "Latitude: 36.9033942\n", + "Longitude: 126.2313689\n", + "\n", + "Address: 충청남도 보령시 오천면 오천해안로 89-37\n", + "Latitude: 36.4021554\n", + "Longitude: 126.4931129\n", + "\n", + "Address: 세종특별자치시 한누리대로 2107\n", + "Latitude: 36.5016784\n", + "Longitude: 127.2872124\n", + "\n", + "Address: 세종특별자치시 전의면 운주산로 1270\n", + "Latitude: 36.6811539\n", + "Longitude: 127.1959765\n", + "\n", + "Address: 강원특별자치도 원주시 지정면 기업도시로 200\n", + "Latitude: 37.3716142\n", + "Longitude: 127.8740384\n", + "\n", + "Address: 강원특별자치도 강릉시 주문진읍 항구로 19\n", + "Latitude: 37.8938502\n", + "Longitude: 128.8233496\n", + "\n", + "Address: 강원특별자치도 횡성군 우천면 우항1길 5-34\n", + "Latitude: 37.4597138\n", + "Longitude: 128.062736\n", + "\n", + "Address: 충청북도 충주시 중앙탑면 기업도시로 237\n", + "Latitude: 37.0166313\n", + "Longitude: 127.8222303\n", + "\n", + "Address: 충청북도 충주시 살미면 세성양지말길 41\n", + "Latitude: 36.9053656\n", + "Longitude: 127.9645363\n", + "\n", + "Address: 충청북도 제천시 청풍호로8길 7\n", + "Latitude: 37.1246409\n", + "Longitude: 128.1984929\n", + "\n", + "Address: 충청북도 제천시 청풍면 청풍호로 2115\n", + "Latitude: 37.000632\n", + "Longitude: 128.1682847\n", + "\n", + "Address: 충청북도 청주시 상당구 가덕면 보청대로 4650\n", + "Latitude: 36.55342\n", + "Longitude: 127.5487467\n", + "\n", + "Address: 충북 단양군 단성면 충혼로 52-1\n", + "Latitude: 36.9390095\n", + "Longitude: 128.3207831\n", + "\n", + "Address: 충청북도 단양군 단양읍 별곡6길 26\n", + "Latitude: 36.9874489\n", + "Longitude: 128.3669855\n", + "\n", + "Address: 충청북도 괴산군 감물면 충민로신대길 13\n", + "Latitude: 36.8367039\n", + "Longitude: 127.8749123\n", + "\n", + "Address: 충청북도 진천군 덕산읍 대월로 90\n", + "Latitude: 36.9013547\n", + "Longitude: 127.5401008\n", + "\n", + "Address: 충청북도 음성군 소이면 소이로 409\n", + "Latitude: 36.9234047\n", + "Longitude: 127.7574516\n", + "\n", + "Address: 충청북도 영동군 황간면 남성리 185\n", + "Latitude: 36.2294858\n", + "Longitude: 127.9132126\n", + "\n", + "Address: 충청북도 증평군 증평읍 남하용강로 16\n", + "Latitude: 36.7670884\n", + "Longitude: 127.6044359\n", + "\n", + "Address: 전라북도 전주시 덕진구 중동로 150\n", + "Latitude: 35.8408284\n", + "Longitude: 127.0645461\n", + "\n", + "Address: 전북특별자치도 전주시 덕진구 중동로 150\n", + "Latitude: 35.8408284\n", + "Longitude: 127.0645461\n", + "\n", + "Address: 전라북도 전주시 덕진구 여암2길 9\n", + "Latitude: 35.8713543\n", + "Longitude: 127.0756245\n", + "\n", + "Address: 전북특별자치도 전주시 덕진구 여암2길 9\n", + "Latitude: 35.8713543\n", + "Longitude: 127.0756245\n", + "\n", + "Address: 전라북도 전주시 완산구 쑥고개로 259 (효자동2가)\n", + "Latitude: 35.8009096\n", + "Longitude: 127.0934069\n", + "\n", + "Address: 전북특별자치도 전주시 완산구 쑥고개로 259 (효자동2가)\n", + "Latitude: 35.8009096\n", + "Longitude: 127.0934069\n", + "\n", + "Address: 전북 군산시 옥산면 산성로 200\n", + "Latitude: 35.9395359\n", + "Longitude: 126.7482412\n", + "\n", + "Address: 전북특별자치도 군산시 옥산면 산성로 200\n", + "Latitude: 35.9395359\n", + "Longitude: 126.7482412\n", + "\n", + "Address: 전북 군산시 새만금북로 43\n", + "Latitude: 35.9438629\n", + "Longitude: 126.5410806\n", + "\n", + "Address: 전북특별자치도 군산시 새만금북로 43\n", + "Latitude: 35.9438629\n", + "Longitude: 126.5410806\n", + "\n", + "Address: 전라북도 군산시 옥도면 말도2길 29\n", + "Latitude: 35.8581473\n", + "Longitude: 126.3153337\n", + "\n", + "Address: 전라북도 군산시 동장산2길 6\n", + "Latitude: 35.9589156\n", + "Longitude: 126.5968199\n", + "\n", + "Address: 전북특별자치도 군산시 동장산2길 6\n", + "Latitude: 35.9589156\n", + "Longitude: 126.5968199\n", + "\n", + "Address: 전북 익산시 삼기면 황금로 513\n", + "Latitude: 36.0203572\n", + "Longitude: 126.984052\n", + "\n", + "Address: 전북특별자치도 익산시 삼기면 황금로 513\n", + "Latitude: 36.0203572\n", + "Longitude: 126.984052\n", + "\n", + "Address: 전북 익산시 용동면 용동1길 80-4\n", + "Latitude: 36.1096478\n", + "Longitude: 126.9916212\n", + "\n", + "Address: 전북특별자치도 익산시 용동면 용동1길 80-4\n", + "Latitude: 36.1096478\n", + "Longitude: 126.9916212\n", + "\n", + "Address: 전라북도 익산시 함열읍 함열중앙로 83\n", + "Latitude: 36.0783411\n", + "Longitude: 126.9664873\n", + "\n", + "Address: 전북특별자치도 익산시 함열읍 함열중앙로 83\n", + "Latitude: 36.0783411\n", + "Longitude: 126.9664873\n", + "\n", + "Address: 전라북도 익산시 춘포면 춘포2길 11\n", + "Latitude: 35.9009756\n", + "Longitude: 127.0051958\n", + "\n", + "Address: 전북특별자치도 익산시 춘포면 춘포2길 11\n", + "Latitude: 35.9009756\n", + "Longitude: 127.0051958\n", + "\n", + "Address: 전라북도 익산시 여산면 가람로 393\n", + "Latitude: 36.05981999999999\n", + "Longitude: 127.0834869\n", + "\n", + "Address: 전북특별자치도 익산시 여산면 가람로 393\n", + "Latitude: 36.05981999999999\n", + "Longitude: 127.0834869\n", + "\n", + "Address: 전라북도 익산시 금마면 무왕로 1824\n", + "Latitude: 35.9854726\n", + "Longitude: 127.0481811\n", + "\n", + "Address: 전북특별자치도 익산시 금마면 무왕로 1824\n", + "Latitude: 35.9854726\n", + "Longitude: 127.0481811\n", + "\n", + "Address: 전라북도 정읍시 영파동 232-1\n", + "Latitude: 35.6102898\n", + "Longitude: 126.8542513\n", + "\n", + "Address: 전북특별자치도 정읍시 영파동 232-1\n", + "Latitude: 35.6102898\n", + "Longitude: 126.8542513\n", + "\n", + "Address: 전라북도 남원시 운봉읍 황산로 1083\n", + "Latitude: 35.4393297\n", + "Longitude: 127.5292719\n", + "\n", + "Address: 전북특별자치도 남원시 운봉읍 황산로 1083\n", + "Latitude: 35.4393297\n", + "Longitude: 127.5292719\n", + "\n", + "Address: 전라북도 부안군 계화면 간재로 405\n", + "Latitude: 35.7614421\n", + "Longitude: 126.6977884\n", + "\n", + "Address: 전북특별자치도 부안군 계화면 간재로 405\n", + "Latitude: 35.7614421\n", + "Longitude: 126.6977884\n", + "\n", + "Address: 전라북도 김제시 광활면 지평선로 638\n", + "Latitude: 35.8357883\n", + "Longitude: 126.7405328\n", + "\n", + "Address: 전북특별자치도 김제시 광활면 지평선로 638\n", + "Latitude: 35.8357883\n", + "Longitude: 126.7405328\n", + "\n", + "Address: 전라북도 완주군 봉동읍 삼봉로 933\n", + "Latitude: 35.9413287\n", + "Longitude: 127.1655528\n", + "\n", + "Address: 전북특별자치도 완주군 봉동읍 삼봉로 933\n", + "Latitude: 35.9413287\n", + "Longitude: 127.1655528\n", + "\n", + "Address: 전라북도 완주군 구이면 덕천전원길 232-58\n", + "Latitude: 35.73745359999999\n", + "Longitude: 127.1338061\n", + "\n", + "Address: 전북특별자치도 완주군 구이면 덕천전원길 232-58\n", + "Latitude: 35.73745359999999\n", + "Longitude: 127.1338061\n", + "\n", + "Address: 전라북도 임실군 관촌면 사선1길 13\n", + "Latitude: 35.6737057\n", + "Longitude: 127.2707761\n", + "\n", + "Address: 전북특별자치도 임실군 관촌면 사선1길 13\n", + "Latitude: 35.6737057\n", + "Longitude: 127.2707761\n", + "\n", + "Address: 경상북도 청송군 청송읍 금월로 230\n", + "Latitude: 36.4293306\n", + "Longitude: 129.0560864\n", + "\n", + "Address: 전북 군산시 서해로 194\n", + "Latitude: 35.9752999\n", + "Longitude: 126.590464\n", + "\n", + "Address: 인천광역시 중구 서해대로 365-1\n", + "Latitude: 37.4599908\n", + "Longitude: 126.6297202\n", + "\n", + "Address: 인천광역시 중구 하늘중앙로 132\n", + "Latitude: 37.49500520000001\n", + "Longitude: 126.5607939\n", + "\n", + "Address: 인천광역시 남동구 남동대로 668\n", + "Latitude: 37.4419936\n", + "Longitude: 126.7073869\n", + "\n", + "Address: 인천광역시 미추홀구 구월남로 27\n", + "Latitude: 37.4552723\n", + "Longitude: 126.6937559\n", + "\n", + "Address: 인천광역시 서구 중봉대로 274\n", + "Latitude: 37.5035894\n", + "Longitude: 126.6489955\n", + "\n", + "Address: 인천광역시 계양구 봉오대로600번길 14\n", + "Latitude: 37.5290575\n", + "Longitude: 126.7151646\n", + "\n", + "Address: 인천광역시 계양구 경명대로 1179 (병방동)\n", + "Latitude: 37.5432967\n", + "Longitude: 126.7377312\n", + "\n", + "Address: 인천광역시 남동구 서창남로 101\n", + "Latitude: 37.4274542\n", + "Longitude: 126.7459827\n", + "\n", + "Address: 인천광역시 연수구 센트럴로 350\n", + "Latitude: 37.4063111\n", + "Longitude: 126.6352338\n", + "\n", + "Address: 인천 서구 오류동 경인항\n", + "Latitude: 37.5584727\n", + "Longitude: 126.6060332\n", + "\n", + "Address: 인천 중구 항동7가 1-48\n", + "Latitude: 37.462381\n", + "Longitude: 126.6232851\n", + "\n", + "Address: 인천광역시 연수구 인천신항대로 866-9\n", + "Latitude: 37.3540019\n", + "Longitude: 126.627735\n", + "\n", + "Address: 인천광역시 서구 원석로 41 (석남동)\n", + "Latitude: 37.5001301\n", + "Longitude: 126.6401558\n", + "\n", + "Address: 인천광역시 중구 축항대로118번길 147\n", + "Latitude: 37.4434015\n", + "Longitude: 126.5983328\n", + "\n", + "Address: 인천 옹진군 연평면 연평리 631\n", + "Latitude: 37.6661767\n", + "Longitude: 125.7023834\n", + "\n", + "Address: 인천 옹진군 덕적면 울도리 85번지\n", + "Latitude: 37.025088\n", + "Longitude: 125.9958066\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "# 아직 위도와 경도가 na인 데이터가 존재하기 때문에 주소를 기반으로 위도와 경도를 추가하기 위해서 \n", + "# 구글에서 제공하는 API를 사용하여 주소를 기반으로 위도와 경도를 추가한다.\n", + "\n", + "import requests\n", + "\n", + "api_key = \"AIzaSyDRI065JSqKKXqcmVbZQ7GiNnoKp0dA0ys\" # 구글 API 키\n", + "\n", + "\n", + "address_coordinates = {} # 주소를 기반으로 위도, 경도 데이터를 저장할 딕셔너리\n", + "for address in tqdm(air.loc[pd.isna(air['위도']), '주소'].unique()):\n", + " url = f\"https://maps.googleapis.com/maps/api/geocode/json?address={address}&key={api_key}\" # 구글 API를 이용하여 위도, 경도 데이터를 가져옴\n", + " \n", + " response = requests.get(url) # get 요청\n", + " \n", + " data = response.json() # json 데이터로 변환\n", + " \n", + " if data['status'] == 'OK': # 정상적으로 데이터를 가져왔을 때\n", + " lat = data['results'][0]['geometry']['location']['lat']\n", + " lng = data['results'][0]['geometry']['location']['lng']\n", + " address_coordinates[address] = (lat, lng) # 위도, 경도 데이터 추가\n", + "\n", + "for address, coordinates in address_coordinates.items():\n", + " print(f\"Address: {address}\")\n", + " print(f\"Latitude: {coordinates[0]}\")\n", + " print(f\"Longitude: {coordinates[1]}\")\n", + " print()" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 17.67 GB\n", + "현재 메모리 사용량: 15.9%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'경기도 수원시 권선구 칠보로1번길 62': (37.2687013, 126.9354884),\n", + " '경기도 의정부시 민락로243번길 94': (37.7477055, 127.1066326),\n", + " '경기도 시흥시 시청로 20': (37.3799469, 126.8031765),\n", + " '경기도 시흥시 서해안로 277': (37.3944639, 126.743953),\n", + " '경기도 시흥시 배곧4로 102': (37.3735088, 126.7337514),\n", + " '경기도 남양주시 경춘로 433': (37.6079488, 127.1593216),\n", + " '경기도 남양주시 와부읍 도곡길 7': (37.5804204, 127.2260649),\n", + " '경기도 남양주시 진접읍 금강로 1509-26': (37.7263588, 127.1898925),\n", + " '경기도 평택시 청북읍 안청로2길 60': (37.0215834, 126.9163318),\n", + " '경기도 평택시 고덕면 고덕국제2로 111': (37.05311950000001, 127.0462758),\n", + " '경기도 파주시 파주읍 교육길 13': (37.8308505, 126.8330233),\n", + " '경기도 광주시 오포읍 오포로859번길 29': (37.366347, 127.2285647),\n", + " '경기도 광주시 곤지암읍 광여로 59': (37.3509517, 127.3521893),\n", + " '경기도 이천시 부발읍 무촌로 117': (37.283268, 127.4866972),\n", + " '경기도 김포시 김포한강2로24번길 93': (37.6468307, 126.6743716),\n", + " '경기도 하남시 아리수로 531': (37.5671161, 127.1860594),\n", + " '경기도 화성시 수노을중앙로 178': (37.2812059, 126.8187549),\n", + " '경기도 화성시 봉담읍 샘마을1길 8-4': (37.2194855, 126.9490498),\n", + " '경기도 화성시 서신면 궁평항로 1702': (37.1662107, 126.7088664),\n", + " '경기도 안성시 공도읍 공도4로 8': (37.0010908, 127.1726414),\n", + " '경기도 안성시 죽산면 남부길 60': (37.0746422, 127.4244675),\n", + " '경기도 여주시 대신면 율촌1길 12-10': (37.3733992, 127.5863028),\n", + " '경기도 여주시 가남읍 태평중앙1길 20': (37.20167199999999, 127.5452706),\n", + " '경기도 연천군 전곡읍 은전로 45': (38.0275947, 127.0632063),\n", + " '경기도 가평군 설악면 한서로 8': (37.675968, 127.494629),\n", + " '경기도 양평군 양평읍 마유산로 17': (37.4970925, 127.4865458),\n", + " '경기 연천군 중면 횡산리 산108-1': (38.126438, 126.9732781),\n", + " '강원특별자치도 춘천시 사우4길 26': (37.9056482, 127.7280602),\n", + " '강원특별자치도 춘천시 경춘로 2370': (37.8648724, 127.720974),\n", + " '강원특별자치도 동해시 대동로 210': (37.488497, 129.1300356),\n", + " '강원특별자치도 동해시 임항로 121': (37.5484489, 129.110772),\n", + " '강원특별자치도 삼척시 원덕읍 호산리 338-14': (37.1743425, 129.343893),\n", + " '강원특별자치도 철원군 철원읍 산명리 1345': (38.2920178, 127.1781293),\n", + " '강원특별자치도 화천군 화천읍 풍산리 산269': (38.2198155, 127.7724077),\n", + " '강원특별자치도 고성군 수동면 신탄리 산6번지': (38.3811816, 128.2577979),\n", + " '강원특별자치도 고성군 수동면 외면리 산14번지': (38.5632087, 128.3414492),\n", + " '부산광역시 영도구 청학남로13번길 18': (35.0907485, 129.0594904),\n", + " '부산광역시 남구 이기대공원로 11': (35.1258003, 129.1164163),\n", + " '부산광역시 북구 용당로16번길 22': (35.2328515, 129.0089178),\n", + " '부산광역시 사상구 모덕로 2': (35.1824537, 128.976956),\n", + " '부산광역시 해운대구 해운대해변로 84 (우동)': (35.160586, 129.1399465),\n", + " '부산광역시 해운대구 센텀동로 191': (35.1827807, 129.1202801),\n", + " '부산광역시 강서구 명지동 3513-3': (35.1055728, 128.9258618),\n", + " '부산광역시 금정구 금사로 217': (35.2301064, 129.1206659),\n", + " '부산광역시 강서구 신항남로 354': (35.0802557, 128.8268542),\n", + " '부산광역시 강서구 신항남로 416': (35.073104, 128.833501),\n", + " '부산광역시 동구 충장대로 314': (35.1227863, 129.0568997),\n", + " '부산광역시 남구 북항로 105': (35.1059456, 129.0825838),\n", + " '경상남도 창원시 마산회원구 내서읍 광려로 8': (35.226291, 128.5025384),\n", + " '경상남도 진주시 정촌면 예하리 1340': (35.124889, 128.1004766),\n", + " '경상남도 창원시 마산합포구 진동면 삼진의거대로 621': (35.1161188, 128.485312),\n", + " '경상남도 하동군 금성면 금성중앙길 14': (34.965974, 127.7941908),\n", + " '경상남도 김해시 김해대로 2515': (35.228156, 128.9006477),\n", + " '경상남도 거제시 계룡로 125': (34.8805937, 128.6212211),\n", + " '경상남도 사천시 향촌5길 28': (34.9337743, 128.0934556),\n", + " '경상남도 양산시 물금읍 황산로 384': (35.3103051, 128.9872259),\n", + " '울산광역시 울주군 웅촌면 새초천길 12': (35.4612703, 129.2084963),\n", + " '울산광역시 울주군 범서읍 당앞로 14-50': (35.57033029999999, 129.223284),\n", + " '울산광역시 중구 태화동 310': (35.5579648, 129.2814575),\n", + " '울산광역시 북구 송내14길 41': (35.5923096, 129.3651871),\n", + " '경상남도 창원시 성산구 적현로 424': (35.1895435, 128.5938474),\n", + " '울산 남구 매암로 96': (35.5167331, 129.3763258),\n", + " '경상남도 하동군 금성면 경제산업로 509': (34.951636, 127.8204985),\n", + " '경상남도 사천시 향촌동 1292': (34.9182613, 128.0843048),\n", + " '광주광역시 서구 천변우하로 203': (35.1633863, 126.8493017),\n", + " '광주광역시 북구 모룡대길 68': (35.2179317, 126.8926976),\n", + " '광주광역시 광산구 우산동 1026-2': (35.1577625, 126.8100651),\n", + " '전라남도 광양시 봉강면 조양길 46': (35.013973, 127.5802854),\n", + " '전라남도 광양시 진월면 선소중앙길 31': (34.9784446, 127.7580563),\n", + " '전라남도 영암군 영암읍 낭주로 202-2': (34.807237, 126.701469),\n", + " '전남 영광군 낙월면 영외리 산 118': (35.3363281, 126.0206231),\n", + " '전라남도 신안군 흑산면 홍도1길 51-3': (34.6853982, 125.1918734),\n", + " '전남 신안군 흑산면 가거도리 산 4': (34.0908578, 125.1013039),\n", + " '전라남도 보성군 보성읍 현충로 42-36': (34.7649425, 127.0782547),\n", + " '전남 영암군 삼호읍 용당리 2169-1': (34.7717083, 126.3922166),\n", + " '전남 광양시 컨부두로 316': (34.9068431, 127.6680385),\n", + " '전남 여수시 여객선터미널길 17': (34.7385468, 127.7326155),\n", + " '전라남도 광양시 항만9로 70': (34.921022, 127.6959196),\n", + " '전라남도 광양시 광양읍 율촌산단7로 111': (34.89446119999999, 127.6111959),\n", + " '제주특별자치도 제주시 조천읍 조천18길 11-1': (33.5390118, 126.6427149),\n", + " '제주특별자치도 제주시 한림읍 한림중앙로 71-9': (33.4094321, 126.2685964),\n", + " '제주특별자치도 제주시 화북일동 1098': (33.5170009, 126.5702961),\n", + " '제주특별자치도 제주시 애월읍 고내리 1319': (33.4646987, 126.3314337),\n", + " '제주특별자치도 서귀포시 일주서로 166': (33.2518481, 126.4906021),\n", + " '대구광역시 중구 남산로2길 125': (35.857907, 128.5894969),\n", + " '대구광역시 북구 연암로 40': (35.8926449, 128.6007471),\n", + " '대구광역시 달서구 구마로26길 62': (35.8344259, 128.5411162),\n", + " '대구광역시 서구 서대구로3길 46': (35.8589429, 128.5519085),\n", + " '대구광역시 북구 옥산로17길 21': (35.8861362, 128.5849779),\n", + " '대구광역시 달성군 화원읍 인흥1길 12': (35.7974305, 128.5037874),\n", + " '대구광역시 남구 앞산순환로 540': (35.8317684, 128.5827485),\n", + " '대구광역시 군위군 군위읍 군청로 158': (36.2372849, 128.5744108),\n", + " '경상북도 포항시 북구 새천년대로 906': (36.0528499, 129.3611936),\n", + " '경상북도 포항시 남구 연일읍 동문로 67': (35.9962626, 129.3521476),\n", + " '경상북도 포항시 남구 인덕로 52': (35.9899753, 129.3976328),\n", + " '경상북도 포항시 북구 천마로 161 (양덕동)': (36.0901685, 129.3961353),\n", + " '경북 김천시 혁신4로 21': (36.121462, 128.1833644),\n", + " '경상북도 구미시 이계북로 149': (36.1059908, 128.418356),\n", + " '경상북도 영주시 광복로 65': (36.8286792, 128.625912),\n", + " '경상북도 경산시 하양읍 하양로 119-1': (35.9146655, 128.8200554),\n", + " '경상북도 경산시 진량읍 낙산길 7': (35.8756691, 128.8124495),\n", + " '경상북도 영덕군 강구면 강구리 167': (36.3635446, 129.3888018),\n", + " '경상북도 영덕군 영해면 예주3길 7': (36.53746539999999, 129.4070884),\n", + " '경북 문경시 시청2길 45': (36.5867479, 128.1861093),\n", + " '경상북도 성주군 성주읍 성주로 3258': (35.9174968, 128.2901803),\n", + " '경북 의성군 의성읍 군청길 31': (36.3525152, 128.6970106),\n", + " '경상북도 의성군 안계면 안계길 114': (36.3837643, 128.4401647),\n", + " '경상북도 봉화군 봉화읍 봉화로 1111': (36.8931267, 128.7325885),\n", + " '경상북도 영양군 영양읍 군청길 37': (36.6666895, 129.1125208),\n", + " '경상북도 예천군 호명면 행복7길 25-4': (36.5767932, 128.47329),\n", + " '경북 청도군 화양읍 도주관로 159': (35.6497741, 128.706151),\n", + " '경북 포항시 남구 신항로 99-98': (36.0057836, 129.4150523),\n", + " '대전광역시 유성구 테크노중앙로 88': (36.424847, 127.3948613),\n", + " '충청남도 공주시 탄천면 안터새말길 34': (36.3084894, 127.0677527),\n", + " '충청남도 당진시 합덕읍 합덕리 344': (36.7904994, 126.785855),\n", + " '충청남도 당진시 송악읍 신복운로 5': (36.94439980000001, 126.7836024),\n", + " '충청남도 아산시 배방읍 장재리 2116': (36.7844748, 127.1013253),\n", + " '충청남도 아산시 송악면 송악로 790': (36.7316409, 127.008961),\n", + " '충청남도 논산시 연무읍 안심로 50': (36.1253129, 127.0989462),\n", + " '충청남도 논산시 성동면 산업단지로5길 73-28': (36.2151708, 127.0439255),\n", + " '충남 태안군 근흥면 가의도길 44-71번지': (36.672586, 126.0644856),\n", + " '충청남도 태안군 원북면 상리길 17-4': (36.8242316, 126.2572303),\n", + " '충청남도 예산군 삽교읍 두리3길 33': (36.6880204, 126.7393317),\n", + " '충청남도 예산군 고덕면 예당산단4길 147': (36.7626597, 126.7302905),\n", + " '충남 보령시 오천면 외연도리 산64': (36.2294015, 126.0830436),\n", + " '충청남도 청양군 정산면 칠갑산로 1861': (36.4149209, 126.9455889),\n", + " '충청남도 당진시 신평면 매산리 976': (36.9554166, 126.8277843),\n", + " '충남 서산시 대산읍 대죽리 1114': (37.0126847, 126.4266258),\n", + " '충남 서천군 장항읍 장산로 270-3': (36.0080173, 126.6902323),\n", + " '충청남도 당진시 송악읍 고대공단2길 79-30': (36.9858631, 126.7458981),\n", + " '충청남도 태안군 원북면 발전로 457': (36.9033942, 126.2313689),\n", + " '충청남도 보령시 오천면 오천해안로 89-37': (36.4021554, 126.4931129),\n", + " '세종특별자치시 한누리대로 2107': (36.5016784, 127.2872124),\n", + " '세종특별자치시 전의면 운주산로 1270': (36.6811539, 127.1959765),\n", + " '강원특별자치도 원주시 지정면 기업도시로 200': (37.3716142, 127.8740384),\n", + " '강원특별자치도 강릉시 주문진읍 항구로 19': (37.8938502, 128.8233496),\n", + " '강원특별자치도 횡성군 우천면 우항1길 5-34': (37.4597138, 128.062736),\n", + " '충청북도 충주시 중앙탑면 기업도시로 237': (37.0166313, 127.8222303),\n", + " '충청북도 충주시 살미면 세성양지말길 41': (36.9053656, 127.9645363),\n", + " '충청북도 제천시 청풍호로8길 7': (37.1246409, 128.1984929),\n", + " '충청북도 제천시 청풍면 청풍호로 2115': (37.000632, 128.1682847),\n", + " '충청북도 청주시 상당구 가덕면 보청대로 4650': (36.55342, 127.5487467),\n", + " '충북 단양군 단성면 충혼로 52-1': (36.9390095, 128.3207831),\n", + " '충청북도 단양군 단양읍 별곡6길 26': (36.9874489, 128.3669855),\n", + " '충청북도 괴산군 감물면 충민로신대길 13': (36.8367039, 127.8749123),\n", + " '충청북도 진천군 덕산읍 대월로 90': (36.9013547, 127.5401008),\n", + " '충청북도 음성군 소이면 소이로 409': (36.9234047, 127.7574516),\n", + " '충청북도 영동군 황간면 남성리 185': (36.2294858, 127.9132126),\n", + " '충청북도 증평군 증평읍 남하용강로 16': (36.7670884, 127.6044359),\n", + " '전라북도 전주시 덕진구 중동로 150': (35.8408284, 127.0645461),\n", + " '전북특별자치도 전주시 덕진구 중동로 150': (35.8408284, 127.0645461),\n", + " '전라북도 전주시 덕진구 여암2길 9': (35.8713543, 127.0756245),\n", + " '전북특별자치도 전주시 덕진구 여암2길 9': (35.8713543, 127.0756245),\n", + " '전라북도 전주시 완산구 쑥고개로 259 (효자동2가)': (35.8009096, 127.0934069),\n", + " '전북특별자치도 전주시 완산구 쑥고개로 259 (효자동2가)': (35.8009096, 127.0934069),\n", + " '전북 군산시 옥산면 산성로 200': (35.9395359, 126.7482412),\n", + " '전북특별자치도 군산시 옥산면 산성로 200': (35.9395359, 126.7482412),\n", + " '전북 군산시 새만금북로 43': (35.9438629, 126.5410806),\n", + " '전북특별자치도 군산시 새만금북로 43': (35.9438629, 126.5410806),\n", + " '전라북도 군산시 옥도면 말도2길 29': (35.8581473, 126.3153337),\n", + " '전라북도 군산시 동장산2길 6': (35.9589156, 126.5968199),\n", + " '전북특별자치도 군산시 동장산2길 6': (35.9589156, 126.5968199),\n", + " '전북 익산시 삼기면 황금로 513': (36.0203572, 126.984052),\n", + " '전북특별자치도 익산시 삼기면 황금로 513': (36.0203572, 126.984052),\n", + " '전북 익산시 용동면 용동1길 80-4': (36.1096478, 126.9916212),\n", + " '전북특별자치도 익산시 용동면 용동1길 80-4': (36.1096478, 126.9916212),\n", + " '전라북도 익산시 함열읍 함열중앙로 83': (36.0783411, 126.9664873),\n", + " '전북특별자치도 익산시 함열읍 함열중앙로 83': (36.0783411, 126.9664873),\n", + " '전라북도 익산시 춘포면 춘포2길 11': (35.9009756, 127.0051958),\n", + " '전북특별자치도 익산시 춘포면 춘포2길 11': (35.9009756, 127.0051958),\n", + " '전라북도 익산시 여산면 가람로 393': (36.05981999999999, 127.0834869),\n", + " '전북특별자치도 익산시 여산면 가람로 393': (36.05981999999999, 127.0834869),\n", + " '전라북도 익산시 금마면 무왕로 1824': (35.9854726, 127.0481811),\n", + " '전북특별자치도 익산시 금마면 무왕로 1824': (35.9854726, 127.0481811),\n", + " '전라북도 정읍시 영파동 232-1': (35.6102898, 126.8542513),\n", + " '전북특별자치도 정읍시 영파동 232-1': (35.6102898, 126.8542513),\n", + " '전라북도 남원시 운봉읍 황산로 1083': (35.4393297, 127.5292719),\n", + " '전북특별자치도 남원시 운봉읍 황산로 1083': (35.4393297, 127.5292719),\n", + " '전라북도 부안군 계화면 간재로 405': (35.7614421, 126.6977884),\n", + " '전북특별자치도 부안군 계화면 간재로 405': (35.7614421, 126.6977884),\n", + " '전라북도 김제시 광활면 지평선로 638': (35.8357883, 126.7405328),\n", + " '전북특별자치도 김제시 광활면 지평선로 638': (35.8357883, 126.7405328),\n", + " '전라북도 완주군 봉동읍 삼봉로 933': (35.9413287, 127.1655528),\n", + " '전북특별자치도 완주군 봉동읍 삼봉로 933': (35.9413287, 127.1655528),\n", + " '전라북도 완주군 구이면 덕천전원길 232-58': (35.73745359999999, 127.1338061),\n", + " '전북특별자치도 완주군 구이면 덕천전원길 232-58': (35.73745359999999, 127.1338061),\n", + " '전라북도 임실군 관촌면 사선1길 13': (35.6737057, 127.2707761),\n", + " '전북특별자치도 임실군 관촌면 사선1길 13': (35.6737057, 127.2707761),\n", + " '경상북도 청송군 청송읍 금월로 230': (36.4293306, 129.0560864),\n", + " '전북 군산시 서해로 194': (35.9752999, 126.590464),\n", + " '인천광역시 중구 서해대로 365-1': (37.4599908, 126.6297202),\n", + " '인천광역시 중구 하늘중앙로 132': (37.49500520000001, 126.5607939),\n", + " '인천광역시 남동구 남동대로 668': (37.4419936, 126.7073869),\n", + " '인천광역시 미추홀구 구월남로 27': (37.4552723, 126.6937559),\n", + " '인천광역시 서구 중봉대로 274': (37.5035894, 126.6489955),\n", + " '인천광역시 계양구 봉오대로600번길 14': (37.5290575, 126.7151646),\n", + " '인천광역시 계양구 경명대로 1179 (병방동)': (37.5432967, 126.7377312),\n", + " '인천광역시 남동구 서창남로 101': (37.4274542, 126.7459827),\n", + " '인천광역시 연수구 센트럴로 350': (37.4063111, 126.6352338),\n", + " '인천 서구 오류동 경인항': (37.5584727, 126.6060332),\n", + " '인천 중구 항동7가 1-48': (37.462381, 126.6232851),\n", + " '인천광역시 연수구 인천신항대로 866-9': (37.3540019, 126.627735),\n", + " '인천광역시 서구 원석로 41 (석남동)': (37.5001301, 126.6401558),\n", + " '인천광역시 중구 축항대로118번길 147': (37.4434015, 126.5983328),\n", + " '인천 옹진군 연평면 연평리 631': (37.6661767, 125.7023834),\n", + " '인천 옹진군 덕적면 울도리 85번지': (37.025088, 125.9958066)}" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "address_coordinates" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "지역 0\n", + "측정소코드 0\n", + "측정소명 0\n", + "측정일시 0\n", + "O3 1152577\n", + "NO2 1172756\n", + "PM10 1441888\n", + "PM25 1970684\n", + "주소 0\n", + "year 0\n", + "month 0\n", + "day 0\n", + "hour 0\n", + "위도 4627988\n", + "경도 4627988\n", + "dtype: int64" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(air).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 206/206 [08:42<00:00, 2.54s/it]\n" + ] + } + ], + "source": [ + "# 주소를 기반으로 위도와 경도를 추가\n", + "for address, coordinates in tqdm(address_coordinates.items()):\n", + " air.loc[air['주소']==address, '위도']= coordinates[0]\n", + " air.loc[air['주소']==address, '경도']= coordinates[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "지역 0\n", + "측정소코드 0\n", + "측정소명 0\n", + "측정일시 0\n", + "O3 1152577\n", + "NO2 1172756\n", + "PM10 1441888\n", + "PM25 1970684\n", + "주소 0\n", + "year 0\n", + "month 0\n", + "day 0\n", + "hour 0\n", + "위도 0\n", + "경도 0\n", + "dtype: int64" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(air).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "air.loc[air['위도']==0, '위도']= np.nan # 위도가 0인 값 na로 변경\n", + "air.loc[air['경도']==0, '경도']= np.nan # 경도가 0인 값 na로 변경" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "지역 0\n", + "측정소코드 0\n", + "측정소명 0\n", + "측정일시 0\n", + "O3 1152577\n", + "NO2 1172756\n", + "PM10 1441888\n", + "PM25 1970684\n", + "주소 0\n", + "year 0\n", + "month 0\n", + "day 0\n", + "hour 0\n", + "위도 0\n", + "경도 0\n", + "dtype: int64" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(air).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 17.67 GB\n", + "현재 메모리 사용량: 15.9%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [], + "source": [ + "air.to_feather(\"../../data/대기질/air_add_위도경도.feather\") # 위도, 경도 추가한 대기질 데이터 feather 형태로 저장" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 위도와 경도를 추가한 air_add_위도경도 데이터와 위도와 경도를 추가한 asos_fill_위경 데이터를 불러 온다" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from scipy.spatial import cKDTree\n", + "import numpy as np\n", + "from tqdm import tqdm, notebook, trange" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "air = pd.read_feather('../../data/대기질/air_add_위도경도.feather') # 대기질 데이터 불러오기\n", + "asos = pd.read_feather('../../data/ASOS/asos_fill_위경.feather') # ASOS 데이터 불러오기" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지점지점명일시기온(°C)기온 QC플래그강수량(mm)강수량 QC플래그풍속(m/s)풍속 QC플래그풍향(16방위)...최저운고(100m )시정(10m)지면온도(°C)지면온도 QC플래그yearmonthdayhour위도경도
090속초2018-01-01 00:00-1.00.0NaNNaN1.1NaN250.0...NaN2000.0-2.30.0201811038.250850128.564730
190속초2018-01-01 01:00-2.10.0NaNNaN1.70.0230.0...NaN2000.0-2.70.0201811138.250850128.564730
290속초2018-01-01 02:00-2.10.0NaNNaN1.40.0160.0...NaN2000.0-3.00.0201811238.250850128.564730
390속초2018-01-01 03:00-2.20.0NaNNaN0.90.0230.0...NaN2000.0-3.20.0201811338.250850128.564730
490속초2018-01-01 04:00-2.00.0NaNNaN1.20.0250.0...NaN2000.0-3.30.0201811438.250850128.564730
..................................................................
5011260296북부산2023-12-31 19:006.6NaNNaN9.01.5NaN320.0...NaN4501.02.8NaN202312311935.217781128.960242
5011261296북부산2023-12-31 20:005.9NaNNaN9.01.8NaN320.0...NaN4240.02.1NaN202312312035.217781128.960242
5011262296북부산2023-12-31 21:005.1NaNNaN9.01.2NaN250.0...NaN3708.01.1NaN202312312135.217781128.960242
5011263296북부산2023-12-31 22:003.5NaNNaN9.00.7NaN290.0...NaN2751.00.2NaN202312312235.217781128.960242
5011264296북부산2023-12-31 23:001.8NaNNaN9.00.5NaN360.0...NaN2222.0-0.3NaN202312312335.217781128.960242
\n", + "

5011265 rows × 36 columns

\n", + "
" + ], + "text/plain": [ + " 지점 지점명 일시 기온(°C) 기온 QC플래그 강수량(mm) 강수량 QC플래그 \\\n", + "0 90 속초 2018-01-01 00:00 -1.0 0.0 NaN NaN \n", + "1 90 속초 2018-01-01 01:00 -2.1 0.0 NaN NaN \n", + "2 90 속초 2018-01-01 02:00 -2.1 0.0 NaN NaN \n", + "3 90 속초 2018-01-01 03:00 -2.2 0.0 NaN NaN \n", + "4 90 속초 2018-01-01 04:00 -2.0 0.0 NaN NaN \n", + "... ... ... ... ... ... ... ... \n", + "5011260 296 북부산 2023-12-31 19:00 6.6 NaN NaN 9.0 \n", + "5011261 296 북부산 2023-12-31 20:00 5.9 NaN NaN 9.0 \n", + "5011262 296 북부산 2023-12-31 21:00 5.1 NaN NaN 9.0 \n", + "5011263 296 북부산 2023-12-31 22:00 3.5 NaN NaN 9.0 \n", + "5011264 296 북부산 2023-12-31 23:00 1.8 NaN NaN 9.0 \n", + "\n", + " 풍속(m/s) 풍속 QC플래그 풍향(16방위) ... 최저운고(100m ) 시정(10m) 지면온도(°C) \\\n", + "0 1.1 NaN 250.0 ... NaN 2000.0 -2.3 \n", + "1 1.7 0.0 230.0 ... NaN 2000.0 -2.7 \n", + "2 1.4 0.0 160.0 ... NaN 2000.0 -3.0 \n", + "3 0.9 0.0 230.0 ... NaN 2000.0 -3.2 \n", + "4 1.2 0.0 250.0 ... NaN 2000.0 -3.3 \n", + "... ... ... ... ... ... ... ... \n", + "5011260 1.5 NaN 320.0 ... NaN 4501.0 2.8 \n", + "5011261 1.8 NaN 320.0 ... NaN 4240.0 2.1 \n", + "5011262 1.2 NaN 250.0 ... NaN 3708.0 1.1 \n", + "5011263 0.7 NaN 290.0 ... NaN 2751.0 0.2 \n", + "5011264 0.5 NaN 360.0 ... NaN 2222.0 -0.3 \n", + "\n", + " 지면온도 QC플래그 year month day hour 위도 경도 \n", + "0 0.0 2018 1 1 0 38.250850 128.564730 \n", + "1 0.0 2018 1 1 1 38.250850 128.564730 \n", + "2 0.0 2018 1 1 2 38.250850 128.564730 \n", + "3 0.0 2018 1 1 3 38.250850 128.564730 \n", + "4 0.0 2018 1 1 4 38.250850 128.564730 \n", + "... ... ... ... ... ... ... ... \n", + "5011260 NaN 2023 12 31 19 35.217781 128.960242 \n", + "5011261 NaN 2023 12 31 20 35.217781 128.960242 \n", + "5011262 NaN 2023 12 31 21 35.217781 128.960242 \n", + "5011263 NaN 2023 12 31 22 35.217781 128.960242 \n", + "5011264 NaN 2023 12 31 23 35.217781 128.960242 \n", + "\n", + "[5011265 rows x 36 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드측정소명측정일시O3NO2PM10PM25주소yearmonthdayhour위도경도
0서울 중구111121중구2018-01-01 00:00:000.01300.028031.016.0서울 중구 덕수궁길 15201811037.564300126.974700
1서울 중구111121중구2018-01-01 01:00:000.02000.020034.019.0서울 중구 덕수궁길 15201811137.564300126.974700
2서울 중구111121중구2018-01-01 02:00:000.02400.016027.014.0서울 중구 덕수궁길 15201811237.564300126.974700
3서울 중구111121중구2018-01-01 03:00:000.01800.022026.014.0서울 중구 덕수궁길 15201811337.564300126.974700
4서울 중구111121중구2018-01-01 04:00:000.01000.030026.015.0서울 중구 덕수궁길 15201811437.564300126.974700
................................................
28178033인천 옹진군831495울도2023-12-31 19:00:000.04400.007567.057.0인천 옹진군 덕적면 울도리 85번지202312311937.025088125.995807
28178034인천 옹진군831495울도2023-12-31 20:00:000.04150.008664.057.0인천 옹진군 덕적면 울도리 85번지202312312037.025088125.995807
28178035인천 옹진군831495울도2023-12-31 21:00:000.04090.009562.050.0인천 옹진군 덕적면 울도리 85번지202312312137.025088125.995807
28178036인천 옹진군831495울도2023-12-31 22:00:000.04140.011165.059.0인천 옹진군 덕적면 울도리 85번지202312312237.025088125.995807
28178037인천 옹진군831495울도2023-12-31 23:00:000.04110.011263.054.0인천 옹진군 덕적면 울도리 85번지202312312337.025088125.995807
\n", + "

28178038 rows × 15 columns

\n", + "
" + ], + "text/plain": [ + " 지역 측정소코드 측정소명 측정일시 O3 NO2 PM10 PM25 \\\n", + "0 서울 중구 111121 중구 2018-01-01 00:00:00 0.0130 0.0280 31.0 16.0 \n", + "1 서울 중구 111121 중구 2018-01-01 01:00:00 0.0200 0.0200 34.0 19.0 \n", + "2 서울 중구 111121 중구 2018-01-01 02:00:00 0.0240 0.0160 27.0 14.0 \n", + "3 서울 중구 111121 중구 2018-01-01 03:00:00 0.0180 0.0220 26.0 14.0 \n", + "4 서울 중구 111121 중구 2018-01-01 04:00:00 0.0100 0.0300 26.0 15.0 \n", + "... ... ... ... ... ... ... ... ... \n", + "28178033 인천 옹진군 831495 울도 2023-12-31 19:00:00 0.0440 0.0075 67.0 57.0 \n", + "28178034 인천 옹진군 831495 울도 2023-12-31 20:00:00 0.0415 0.0086 64.0 57.0 \n", + "28178035 인천 옹진군 831495 울도 2023-12-31 21:00:00 0.0409 0.0095 62.0 50.0 \n", + "28178036 인천 옹진군 831495 울도 2023-12-31 22:00:00 0.0414 0.0111 65.0 59.0 \n", + "28178037 인천 옹진군 831495 울도 2023-12-31 23:00:00 0.0411 0.0112 63.0 54.0 \n", + "\n", + " 주소 year month day hour 위도 경도 \n", + "0 서울 중구 덕수궁길 15 2018 1 1 0 37.564300 126.974700 \n", + "1 서울 중구 덕수궁길 15 2018 1 1 1 37.564300 126.974700 \n", + "2 서울 중구 덕수궁길 15 2018 1 1 2 37.564300 126.974700 \n", + "3 서울 중구 덕수궁길 15 2018 1 1 3 37.564300 126.974700 \n", + "4 서울 중구 덕수궁길 15 2018 1 1 4 37.564300 126.974700 \n", + "... ... ... ... ... ... ... ... \n", + "28178033 인천 옹진군 덕적면 울도리 85번지 2023 12 31 19 37.025088 125.995807 \n", + "28178034 인천 옹진군 덕적면 울도리 85번지 2023 12 31 20 37.025088 125.995807 \n", + "28178035 인천 옹진군 덕적면 울도리 85번지 2023 12 31 21 37.025088 125.995807 \n", + "28178036 인천 옹진군 덕적면 울도리 85번지 2023 12 31 22 37.025088 125.995807 \n", + "28178037 인천 옹진군 덕적면 울도리 85번지 2023 12 31 23 37.025088 125.995807 \n", + "\n", + "[28178038 rows x 15 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['지점', '지점명', '일시', '기온(°C)', '기온 QC플래그', '강수량(mm)', '강수량 QC플래그',\n", + " '풍속(m/s)', '풍속 QC플래그', '풍향(16방위)', '풍향 QC플래그', '습도(%)', '습도 QC플래그',\n", + " '증기압(hPa)', '이슬점온도(°C)', '현지기압(hPa)', '현지기압 QC플래그', '해면기압(hPa)',\n", + " '해면기압 QC플래그', '일조(hr)', '일조 QC플래그', '일사(MJ/m2)', '일사 QC플래그', '적설(cm)',\n", + " '전운량(10분위)', '중하층운량(10분위)', '최저운고(100m )', '시정(10m)', '지면온도(°C)',\n", + " '지면온도 QC플래그', 'year', 'month', 'day', 'hour', '위도', '경도'],\n", + " dtype='object')" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos.columns # ASOS 데이터 컬럼 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['지역', '측정소코드', '측정소명', '측정일시', 'O3', 'NO2', 'PM10', 'PM25', '주소',\n", + " 'year', 'month', 'day', 'hour', '위도', '경도'],\n", + " dtype='object')" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air.columns # 대기질 데이터 컬럼 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# 처음에는 측정소코드, year, month을 기준으로 데이터를 merge 하려고 했지만 측정소가 중간에 없어지거나 새로 생기는 경우가 있기때문에\n", + "# 측정소코드, year, month, day, hour을 기준으로 merge를 진행한다.\n", + "\n", + "# 중복된 값 제거\n", + "air_dup = air[['측정소코드', '위도', '경도', 'year','month','day','hour']].drop_duplicates(subset=['측정소코드', 'year','month','day','hour']).copy() \n", + "asos_dup = asos[['지점', '위도', '경도', 'year','month','day','hour']].drop_duplicates(subset=['지점', 'year','month','day','hour']).copy()\n", + "# 인덱스 초기화\n", + "air_dup = air_dup.reset_index(drop=True).copy() \n", + "asos_dup = asos_dup.reset_index(drop=True).copy() " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 19.87 GB\n", + "현재 메모리 사용량: 17.6%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# 측정소코드, 년, 월, 일 기준으로 정렬\n", + "air_dup.sort_values(by=['측정소코드', 'year','month','day','hour'], inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지점위도경도yearmonthdayhour
09038.250850128.5647302018110
19038.250850128.5647302018111
29038.250850128.5647302018112
39038.250850128.5647302018113
49038.250850128.5647302018114
........................
501126029635.217781128.9602422023123119
501126129635.217781128.9602422023123120
501126229635.217781128.9602422023123121
501126329635.217781128.9602422023123122
501126429635.217781128.9602422023123123
\n", + "

5011265 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " 지점 위도 경도 year month day hour\n", + "0 90 38.250850 128.564730 2018 1 1 0\n", + "1 90 38.250850 128.564730 2018 1 1 1\n", + "2 90 38.250850 128.564730 2018 1 1 2\n", + "3 90 38.250850 128.564730 2018 1 1 3\n", + "4 90 38.250850 128.564730 2018 1 1 4\n", + "... ... ... ... ... ... ... ...\n", + "5011260 296 35.217781 128.960242 2023 12 31 19\n", + "5011261 296 35.217781 128.960242 2023 12 31 20\n", + "5011262 296 35.217781 128.960242 2023 12 31 21\n", + "5011263 296 35.217781 128.960242 2023 12 31 22\n", + "5011264 296 35.217781 128.960242 2023 12 31 23\n", + "\n", + "[5011265 rows x 7 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos_dup" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "28178038 5011265\n" + ] + } + ], + "source": [ + "print(len(air_dup),len(asos_dup)) # 중복 제거한 데이터 개수 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
측정소코드위도경도yearmonthdayhour
011112137.564300126.9747002018110
111112137.564300126.9747002018111
211112137.564300126.9747002018112
311112137.564300126.9747002018113
411112137.564300126.9747002018114
........................
2817803383149537.025088125.9958072023123119
2817803483149537.025088125.9958072023123120
2817803583149537.025088125.9958072023123121
2817803683149537.025088125.9958072023123122
2817803783149537.025088125.9958072023123123
\n", + "

28178038 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " 측정소코드 위도 경도 year month day hour\n", + "0 111121 37.564300 126.974700 2018 1 1 0\n", + "1 111121 37.564300 126.974700 2018 1 1 1\n", + "2 111121 37.564300 126.974700 2018 1 1 2\n", + "3 111121 37.564300 126.974700 2018 1 1 3\n", + "4 111121 37.564300 126.974700 2018 1 1 4\n", + "... ... ... ... ... ... ... ...\n", + "28178033 831495 37.025088 125.995807 2023 12 31 19\n", + "28178034 831495 37.025088 125.995807 2023 12 31 20\n", + "28178035 831495 37.025088 125.995807 2023 12 31 21\n", + "28178036 831495 37.025088 125.995807 2023 12 31 22\n", + "28178037 831495 37.025088 125.995807 2023 12 31 23\n", + "\n", + "[28178038 rows x 7 columns]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air_dup # 중복 제거한 대기질 데이터 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지점위도경도yearmonthdayhour
09038.250850128.5647302018110
19038.250850128.5647302018111
29038.250850128.5647302018112
39038.250850128.5647302018113
49038.250850128.5647302018114
........................
501126029635.217781128.9602422023123119
501126129635.217781128.9602422023123120
501126229635.217781128.9602422023123121
501126329635.217781128.9602422023123122
501126429635.217781128.9602422023123123
\n", + "

5011265 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " 지점 위도 경도 year month day hour\n", + "0 90 38.250850 128.564730 2018 1 1 0\n", + "1 90 38.250850 128.564730 2018 1 1 1\n", + "2 90 38.250850 128.564730 2018 1 1 2\n", + "3 90 38.250850 128.564730 2018 1 1 3\n", + "4 90 38.250850 128.564730 2018 1 1 4\n", + "... ... ... ... ... ... ... ...\n", + "5011260 296 35.217781 128.960242 2023 12 31 19\n", + "5011261 296 35.217781 128.960242 2023 12 31 20\n", + "5011262 296 35.217781 128.960242 2023 12 31 21\n", + "5011263 296 35.217781 128.960242 2023 12 31 22\n", + "5011264 296 35.217781 128.960242 2023 12 31 23\n", + "\n", + "[5011265 rows x 7 columns]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos_dup # 중복 제거한 ASOS 데이터 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
측정소코드위도경도yearmonthdayhour
2280607863246138.2069128.588220191151
2280607963246138.2069128.588220191152
2280608063246138.2069128.588220191153
2280608163246138.2069128.588220191154
2280608263246138.2069128.588220191155
........................
2284956063246138.2069128.58822023123119
2284956163246138.2069128.58822023123120
2284956263246138.2069128.58822023123121
2284956363246138.2069128.58822023123122
2284956463246138.2069128.58822023123123
\n", + "

43487 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " 측정소코드 위도 경도 year month day hour\n", + "22806078 632461 38.2069 128.5882 2019 1 15 1\n", + "22806079 632461 38.2069 128.5882 2019 1 15 2\n", + "22806080 632461 38.2069 128.5882 2019 1 15 3\n", + "22806081 632461 38.2069 128.5882 2019 1 15 4\n", + "22806082 632461 38.2069 128.5882 2019 1 15 5\n", + "... ... ... ... ... ... ... ...\n", + "22849560 632461 38.2069 128.5882 2023 12 31 19\n", + "22849561 632461 38.2069 128.5882 2023 12 31 20\n", + "22849562 632461 38.2069 128.5882 2023 12 31 21\n", + "22849563 632461 38.2069 128.5882 2023 12 31 22\n", + "22849564 632461 38.2069 128.5882 2023 12 31 23\n", + "\n", + "[43487 rows x 7 columns]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air_dup.loc[air_dup['측정소코드']==632461,:] # 측정소코드 632461 데이터 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "air_dup.to_feather(\"../../data/대기질/air_dup.feather\") # 중복 제거한 대기질 데이터 feather 형태로 저장\n", + "asos_dup.to_feather(\"../../data/ASOS/asos_dup.feather\") # 중복 제거한 ASOS 데이터 feather 형태로 저장" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 0%| | 0/6 [00:00\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
측정소코드위도경도yearmonthdayhour
2280607863246138.2069128.588220191151
2280607963246138.2069128.588220191152
2280608063246138.2069128.588220191153
2280608163246138.2069128.588220191154
2280608263246138.2069128.588220191155
........................
2284956063246138.2069128.58822023123119
2284956163246138.2069128.58822023123120
2284956263246138.2069128.58822023123121
2284956363246138.2069128.58822023123122
2284956463246138.2069128.58822023123123
\n", + "

43487 rows × 7 columns

\n", + "" + ], + "text/plain": [ + " 측정소코드 위도 경도 year month day hour\n", + "22806078 632461 38.2069 128.5882 2019 1 15 1\n", + "22806079 632461 38.2069 128.5882 2019 1 15 2\n", + "22806080 632461 38.2069 128.5882 2019 1 15 3\n", + "22806081 632461 38.2069 128.5882 2019 1 15 4\n", + "22806082 632461 38.2069 128.5882 2019 1 15 5\n", + "... ... ... ... ... ... ... ...\n", + "22849560 632461 38.2069 128.5882 2023 12 31 19\n", + "22849561 632461 38.2069 128.5882 2023 12 31 20\n", + "22849562 632461 38.2069 128.5882 2023 12 31 21\n", + "22849563 632461 38.2069 128.5882 2023 12 31 22\n", + "22849564 632461 38.2069 128.5882 2023 12 31 23\n", + "\n", + "[43487 rows x 7 columns]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 측정소코드 632461 데이터 확인 (이 측정소는 19년 1월 15일 1시부터 존재)\n", + "air_dup.loc[air_dup['측정소코드']==632461,:].sort_values(by=['year','month','day','hour'])" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지점위도경도yearmonthdayhour근접 측정소코드거리차이(km)
90979038.25085128.56473201911516324615.299597
90989038.25085128.56473201911526324615.299597
90999038.25085128.56473201911536324615.299597
91009038.25085128.56473201911546324615.299597
91019038.25085128.56473201911556324615.299597
..............................
525799038.25085128.5647320231231196324615.299597
525809038.25085128.5647320231231206324615.299597
525819038.25085128.5647320231231216324615.299597
525829038.25085128.5647320231231226324615.299597
525839038.25085128.5647320231231236324615.299597
\n", + "

43487 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " 지점 위도 경도 year month day hour 근접 측정소코드 거리차이(km)\n", + "9097 90 38.25085 128.56473 2019 1 15 1 632461 5.299597\n", + "9098 90 38.25085 128.56473 2019 1 15 2 632461 5.299597\n", + "9099 90 38.25085 128.56473 2019 1 15 3 632461 5.299597\n", + "9100 90 38.25085 128.56473 2019 1 15 4 632461 5.299597\n", + "9101 90 38.25085 128.56473 2019 1 15 5 632461 5.299597\n", + "... .. ... ... ... ... ... ... ... ...\n", + "52579 90 38.25085 128.56473 2023 12 31 19 632461 5.299597\n", + "52580 90 38.25085 128.56473 2023 12 31 20 632461 5.299597\n", + "52581 90 38.25085 128.56473 2023 12 31 21 632461 5.299597\n", + "52582 90 38.25085 128.56473 2023 12 31 22 632461 5.299597\n", + "52583 90 38.25085 128.56473 2023 12 31 23 632461 5.299597\n", + "\n", + "[43487 rows x 9 columns]" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 근접 측정소코드가 632461인 데이터가 air_dup과 asos 데이터가 합쳐지고 19년 1월 15일 1시부터 잘 있는지 확인\n", + "asos_dup.loc[asos_dup['근접 측정소코드']==632461,:].sort_values(by=['year','month','day','hour']) " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
측정소코드위도경도yearmonthdayhour
011112137.564300126.9747002018110
111112137.564300126.9747002018111
211112137.564300126.9747002018112
311112137.564300126.9747002018113
411112137.564300126.9747002018114
........................
2817803383149537.025088125.9958072023123119
2817803483149537.025088125.9958072023123120
2817803583149537.025088125.9958072023123121
2817803683149537.025088125.9958072023123122
2817803783149537.025088125.9958072023123123
\n", + "

28178038 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " 측정소코드 위도 경도 year month day hour\n", + "0 111121 37.564300 126.974700 2018 1 1 0\n", + "1 111121 37.564300 126.974700 2018 1 1 1\n", + "2 111121 37.564300 126.974700 2018 1 1 2\n", + "3 111121 37.564300 126.974700 2018 1 1 3\n", + "4 111121 37.564300 126.974700 2018 1 1 4\n", + "... ... ... ... ... ... ... ...\n", + "28178033 831495 37.025088 125.995807 2023 12 31 19\n", + "28178034 831495 37.025088 125.995807 2023 12 31 20\n", + "28178035 831495 37.025088 125.995807 2023 12 31 21\n", + "28178036 831495 37.025088 125.995807 2023 12 31 22\n", + "28178037 831495 37.025088 125.995807 2023 12 31 23\n", + "\n", + "[28178038 rows x 7 columns]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "air_dup" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지점위도경도yearmonthdayhour근접 측정소코드거리차이(km)
09038.250850128.564730201811063242116.191384
525849337.947380127.75443020181101321128.518556
1051689538.147870127.30420020181101314519.479396
1577529837.901880127.06070020181101315711.748777
2103369937.885890126.76648020181101313733.839017
..............................
484499328835.491470128.74412020231231232384010.94567
489757728935.413000127.87910020231231232384710.504745
495016129434.888180128.60459020231231232382031.735756
500274529534.816620127.92641020231231232384613.024373
501126429635.217781128.96024220231231232212111.544059
\n", + "

5011265 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " 지점 위도 경도 year month day hour 근접 측정소코드 \\\n", + "0 90 38.250850 128.564730 2018 1 1 0 632421 \n", + "52584 93 37.947380 127.754430 2018 1 1 0 132112 \n", + "105168 95 38.147870 127.304200 2018 1 1 0 131451 \n", + "157752 98 37.901880 127.060700 2018 1 1 0 131571 \n", + "210336 99 37.885890 126.766480 2018 1 1 0 131373 \n", + "... ... ... ... ... ... ... ... ... \n", + "4844993 288 35.491470 128.744120 2023 12 31 23 238401 \n", + "4897577 289 35.413000 127.879100 2023 12 31 23 238471 \n", + "4950161 294 34.888180 128.604590 2023 12 31 23 238203 \n", + "5002745 295 34.816620 127.926410 2023 12 31 23 238461 \n", + "5011264 296 35.217781 128.960242 2023 12 31 23 221211 \n", + "\n", + " 거리차이(km) \n", + "0 16.191384 \n", + "52584 8.518556 \n", + "105168 9.479396 \n", + "157752 1.748777 \n", + "210336 3.839017 \n", + "... ... \n", + "4844993 0.94567 \n", + "4897577 0.504745 \n", + "4950161 1.735756 \n", + "5002745 3.024373 \n", + "5011264 1.544059 \n", + "\n", + "[5011265 rows x 9 columns]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos_dup.sort_values(by=['year','month','day','hour']) # asos 데이터 정렬" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "asos_dup.to_feather(\"../../data/ASOS/asos_dup.feather\") # asos 데이터 저장" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 20.75 GB\n", + "현재 메모리 사용량: 18.3%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "300" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import gc\n", + "gc.collect()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 커널 재시작" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import gc\n", + "gc.collect()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 13.13 GB\n", + "현재 메모리 사용량: 12.2%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "asos= pd.read_feather(\"../../data/ASOS/asos_fill_위경.feather\") # ASOS 데이터 불러오기\n", + "asos_dup= pd.read_feather(\"../../data/ASOS/asos_dup.feather\") # 중복 제거한 ASOS 데이터 불러오기" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지점지점명일시기온(°C)기온 QC플래그강수량(mm)강수량 QC플래그풍속(m/s)풍속 QC플래그풍향(16방위)...최저운고(100m )시정(10m)지면온도(°C)지면온도 QC플래그yearmonthdayhour위도경도
090속초2018-01-01 00:00-1.00.0NaNNaN1.1NaN250.0...NaN2000.0-2.30.0201811038.250850128.564730
190속초2018-01-01 01:00-2.10.0NaNNaN1.70.0230.0...NaN2000.0-2.70.0201811138.250850128.564730
290속초2018-01-01 02:00-2.10.0NaNNaN1.40.0160.0...NaN2000.0-3.00.0201811238.250850128.564730
390속초2018-01-01 03:00-2.20.0NaNNaN0.90.0230.0...NaN2000.0-3.20.0201811338.250850128.564730
490속초2018-01-01 04:00-2.00.0NaNNaN1.20.0250.0...NaN2000.0-3.30.0201811438.250850128.564730
..................................................................
5011260296북부산2023-12-31 19:006.6NaNNaN9.01.5NaN320.0...NaN4501.02.8NaN202312311935.217781128.960242
5011261296북부산2023-12-31 20:005.9NaNNaN9.01.8NaN320.0...NaN4240.02.1NaN202312312035.217781128.960242
5011262296북부산2023-12-31 21:005.1NaNNaN9.01.2NaN250.0...NaN3708.01.1NaN202312312135.217781128.960242
5011263296북부산2023-12-31 22:003.5NaNNaN9.00.7NaN290.0...NaN2751.00.2NaN202312312235.217781128.960242
5011264296북부산2023-12-31 23:001.8NaNNaN9.00.5NaN360.0...NaN2222.0-0.3NaN202312312335.217781128.960242
\n", + "

5011265 rows × 36 columns

\n", + "
" + ], + "text/plain": [ + " 지점 지점명 일시 기온(°C) 기온 QC플래그 강수량(mm) 강수량 QC플래그 \\\n", + "0 90 속초 2018-01-01 00:00 -1.0 0.0 NaN NaN \n", + "1 90 속초 2018-01-01 01:00 -2.1 0.0 NaN NaN \n", + "2 90 속초 2018-01-01 02:00 -2.1 0.0 NaN NaN \n", + "3 90 속초 2018-01-01 03:00 -2.2 0.0 NaN NaN \n", + "4 90 속초 2018-01-01 04:00 -2.0 0.0 NaN NaN \n", + "... ... ... ... ... ... ... ... \n", + "5011260 296 북부산 2023-12-31 19:00 6.6 NaN NaN 9.0 \n", + "5011261 296 북부산 2023-12-31 20:00 5.9 NaN NaN 9.0 \n", + "5011262 296 북부산 2023-12-31 21:00 5.1 NaN NaN 9.0 \n", + "5011263 296 북부산 2023-12-31 22:00 3.5 NaN NaN 9.0 \n", + "5011264 296 북부산 2023-12-31 23:00 1.8 NaN NaN 9.0 \n", + "\n", + " 풍속(m/s) 풍속 QC플래그 풍향(16방위) ... 최저운고(100m ) 시정(10m) 지면온도(°C) \\\n", + "0 1.1 NaN 250.0 ... NaN 2000.0 -2.3 \n", + "1 1.7 0.0 230.0 ... NaN 2000.0 -2.7 \n", + "2 1.4 0.0 160.0 ... NaN 2000.0 -3.0 \n", + "3 0.9 0.0 230.0 ... NaN 2000.0 -3.2 \n", + "4 1.2 0.0 250.0 ... NaN 2000.0 -3.3 \n", + "... ... ... ... ... ... ... ... \n", + "5011260 1.5 NaN 320.0 ... NaN 4501.0 2.8 \n", + "5011261 1.8 NaN 320.0 ... NaN 4240.0 2.1 \n", + "5011262 1.2 NaN 250.0 ... NaN 3708.0 1.1 \n", + "5011263 0.7 NaN 290.0 ... NaN 2751.0 0.2 \n", + "5011264 0.5 NaN 360.0 ... NaN 2222.0 -0.3 \n", + "\n", + " 지면온도 QC플래그 year month day hour 위도 경도 \n", + "0 0.0 2018 1 1 0 38.250850 128.564730 \n", + "1 0.0 2018 1 1 1 38.250850 128.564730 \n", + "2 0.0 2018 1 1 2 38.250850 128.564730 \n", + "3 0.0 2018 1 1 3 38.250850 128.564730 \n", + "4 0.0 2018 1 1 4 38.250850 128.564730 \n", + "... ... ... ... ... ... ... ... \n", + "5011260 NaN 2023 12 31 19 35.217781 128.960242 \n", + "5011261 NaN 2023 12 31 20 35.217781 128.960242 \n", + "5011262 NaN 2023 12 31 21 35.217781 128.960242 \n", + "5011263 NaN 2023 12 31 22 35.217781 128.960242 \n", + "5011264 NaN 2023 12 31 23 35.217781 128.960242 \n", + "\n", + "[5011265 rows x 36 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지점위도경도yearmonthdayhour근접 측정소코드거리차이(km)
09038.250850128.564730201811063242116.191384
19038.250850128.564730201811163242116.191384
29038.250850128.564730201811263242116.191384
39038.250850128.564730201811363242116.191384
49038.250850128.564730201811463242116.191384
..............................
501126029635.217781128.96024220231231192212111.544059
501126129635.217781128.96024220231231202212111.544059
501126229635.217781128.96024220231231212212111.544059
501126329635.217781128.96024220231231222212111.544059
501126429635.217781128.96024220231231232212111.544059
\n", + "

5011265 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " 지점 위도 경도 year month day hour 근접 측정소코드 \\\n", + "0 90 38.250850 128.564730 2018 1 1 0 632421 \n", + "1 90 38.250850 128.564730 2018 1 1 1 632421 \n", + "2 90 38.250850 128.564730 2018 1 1 2 632421 \n", + "3 90 38.250850 128.564730 2018 1 1 3 632421 \n", + "4 90 38.250850 128.564730 2018 1 1 4 632421 \n", + "... ... ... ... ... ... ... ... ... \n", + "5011260 296 35.217781 128.960242 2023 12 31 19 221211 \n", + "5011261 296 35.217781 128.960242 2023 12 31 20 221211 \n", + "5011262 296 35.217781 128.960242 2023 12 31 21 221211 \n", + "5011263 296 35.217781 128.960242 2023 12 31 22 221211 \n", + "5011264 296 35.217781 128.960242 2023 12 31 23 221211 \n", + "\n", + " 거리차이(km) \n", + "0 16.191384 \n", + "1 16.191384 \n", + "2 16.191384 \n", + "3 16.191384 \n", + "4 16.191384 \n", + "... ... \n", + "5011260 1.544059 \n", + "5011261 1.544059 \n", + "5011262 1.544059 \n", + "5011263 1.544059 \n", + "5011264 1.544059 \n", + "\n", + "[5011265 rows x 9 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos_dup" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# asos 데이터와 asos_dup 데이터를 자연조인을 통해 합친다.\n", + "asos_merge= pd.merge(asos, asos_dup, how='inner', left_on=['지점', 'year', 'month', 'day','hour','위도','경도'], right_on=['지점', 'year', 'month', 'day','hour','위도','경도'])" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "사용 중인 메모리: 16.47 GB\n", + "현재 메모리 사용량: 14.9%\n" + ] + } + ], + "source": [ + "import psutil\n", + "\n", + "# 전체 메모리 중 사용 중인 메모리 (바이트 단위)\n", + "used_memory = psutil.virtual_memory().used\n", + "\n", + "# 바이트 단위를 GB 단위로 변환\n", + "used_memory_in_gb = used_memory / (1024 ** 3)\n", + "\n", + "print(f\"사용 중인 메모리: {used_memory_in_gb:.2f} GB\")\n", + "print(f\"현재 메모리 사용량: {psutil.virtual_memory().percent}%\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "지점 0\n", + "지점명 0\n", + "일시 0\n", + "기온(°C) 4197\n", + "기온 QC플래그 4282900\n", + "강수량(mm) 4533611\n", + "강수량 QC플래그 4093970\n", + "풍속(m/s) 9726\n", + "풍속 QC플래그 4319125\n", + "풍향(16방위) 10294\n", + "풍향 QC플래그 4318626\n", + "습도(%) 6266\n", + "습도 QC플래그 4284220\n", + "증기압(hPa) 6486\n", + "이슬점온도(°C) 6534\n", + "현지기압(hPa) 4613\n", + "현지기압 QC플래그 4285584\n", + "해면기압(hPa) 5024\n", + "해면기압 QC플래그 4285200\n", + "일조(hr) 2275882\n", + "일조 QC플래그 2375218\n", + "일사(MJ/m2) 3691960\n", + "일사 QC플래그 1161673\n", + "적설(cm) 4905762\n", + "전운량(10분위) 479380\n", + "중하층운량(10분위) 517822\n", + "최저운고(100m ) 2791937\n", + "시정(10m) 71059\n", + "지면온도(°C) 9742\n", + "지면온도 QC플래그 4260093\n", + "year 0\n", + "month 0\n", + "day 0\n", + "hour 0\n", + "위도 0\n", + "경도 0\n", + "근접 측정소코드 0\n", + "거리차이(km) 0\n", + "dtype: int64" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(asos_merge).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "asos_merge.to_feather(\"../../data/ASOS/asos_merge.feather\") # asos_merge 데이터 저장" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 커널 재시작" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import gc" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "23" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gc.collect()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "asos_merge= pd.read_feather(\"../../data/ASOS/asos_merge.feather\") # asos_merge 데이터 불러오기\n", + "air= pd.read_feather(\"../../data/대기질/air_add_위도경도.feather\") # 대기질 데이터 불러오기" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "지역 0\n", + "측정소코드 0\n", + "측정소명 0\n", + "측정일시 0\n", + "O3 1152577\n", + "NO2 1172756\n", + "PM10 1441888\n", + "PM25 1970684\n", + "주소 0\n", + "year 0\n", + "month 0\n", + "day 0\n", + "hour 0\n", + "위도 0\n", + "경도 0\n", + "dtype: int64" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(air).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "지점 0\n", + "지점명 0\n", + "일시 0\n", + "기온(°C) 4197\n", + "기온 QC플래그 4282900\n", + "강수량(mm) 4533611\n", + "강수량 QC플래그 4093970\n", + "풍속(m/s) 9726\n", + "풍속 QC플래그 4319125\n", + "풍향(16방위) 10294\n", + "풍향 QC플래그 4318626\n", + "습도(%) 6266\n", + "습도 QC플래그 4284220\n", + "증기압(hPa) 6486\n", + "이슬점온도(°C) 6534\n", + "현지기압(hPa) 4613\n", + "현지기압 QC플래그 4285584\n", + "해면기압(hPa) 5024\n", + "해면기압 QC플래그 4285200\n", + "일조(hr) 2275882\n", + "일조 QC플래그 2375218\n", + "일사(MJ/m2) 3691960\n", + "일사 QC플래그 1161673\n", + "적설(cm) 4905762\n", + "전운량(10분위) 479380\n", + "중하층운량(10분위) 517822\n", + "최저운고(100m ) 2791937\n", + "시정(10m) 71059\n", + "지면온도(°C) 9742\n", + "지면온도 QC플래그 4260093\n", + "year 0\n", + "month 0\n", + "day 0\n", + "hour 0\n", + "위도 0\n", + "경도 0\n", + "근접 측정소코드 0\n", + "거리차이(km) 0\n", + "dtype: int64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(asos_merge).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지역측정소코드O3NO2PM10PM25yearmonthdayhour
0서울 중구1111210.01300.028031.016.02018110
1서울 중구1111210.02000.020034.019.02018111
2서울 중구1111210.02400.016027.014.02018112
3서울 중구1111210.01800.022026.014.02018113
4서울 중구1111210.01000.030026.015.02018114
.................................
28178033인천 옹진군8314950.04400.007567.057.02023123119
28178034인천 옹진군8314950.04150.008664.057.02023123120
28178035인천 옹진군8314950.04090.009562.050.02023123121
28178036인천 옹진군8314950.04140.011165.059.02023123122
28178037인천 옹진군8314950.04110.011263.054.02023123123
\n", + "

28178038 rows × 10 columns

\n", + "
" + ], + "text/plain": [ + " 지역 측정소코드 O3 NO2 PM10 PM25 year month day hour\n", + "0 서울 중구 111121 0.0130 0.0280 31.0 16.0 2018 1 1 0\n", + "1 서울 중구 111121 0.0200 0.0200 34.0 19.0 2018 1 1 1\n", + "2 서울 중구 111121 0.0240 0.0160 27.0 14.0 2018 1 1 2\n", + "3 서울 중구 111121 0.0180 0.0220 26.0 14.0 2018 1 1 3\n", + "4 서울 중구 111121 0.0100 0.0300 26.0 15.0 2018 1 1 4\n", + "... ... ... ... ... ... ... ... ... ... ...\n", + "28178033 인천 옹진군 831495 0.0440 0.0075 67.0 57.0 2023 12 31 19\n", + "28178034 인천 옹진군 831495 0.0415 0.0086 64.0 57.0 2023 12 31 20\n", + "28178035 인천 옹진군 831495 0.0409 0.0095 62.0 50.0 2023 12 31 21\n", + "28178036 인천 옹진군 831495 0.0414 0.0111 65.0 59.0 2023 12 31 22\n", + "28178037 인천 옹진군 831495 0.0411 0.0112 63.0 54.0 2023 12 31 23\n", + "\n", + "[28178038 rows x 10 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# air 데이터의 위도, 경도, 측정소명, 측정일시, 주소 컬럼 삭제 (asos가 기준이 되기 때문에 air 데이터에서는 필요 없음)\n", + "air.drop(columns=['위도', '경도','측정소명','측정일시','주소'], axis=1, inplace=True)\n", + "air" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# 지점, year, month, day, hour 순으로 정렬\n", + "asos_merge.sort_values(by=['지점', 'year', 'month', 'day', 'hour'], inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "asos_air = pd.merge( # asos 데이터와 대기질 데이터 병합\n", + " asos_merge, \n", + " air, \n", + " left_on=['근접 측정소코드', 'year','month','day','hour'], # 근접 측정소코드, year, month, day, hour를 기준으로 병합 \n", + " right_on=['측정소코드', 'year','month','day','hour'], # 측정소코드, year, month, day, hour를 기준으로 병합\n", + " how='inner' # inner join\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지점지점명일시기온(°C)기온 QC플래그강수량(mm)강수량 QC플래그풍속(m/s)풍속 QC플래그풍향(16방위)...위도경도근접 측정소코드거리차이(km)지역측정소코드O3NO2PM10PM25
090속초2018-01-01 00:00-1.00.0NaNNaN1.1NaN250.0...38.250850128.56473063242116.191384강원 고성군6324210.03500.004221.0NaN
190속초2018-01-01 01:00-2.10.0NaNNaN1.70.0230.0...38.250850128.56473063242116.191384강원 고성군6324210.03500.004123.0NaN
290속초2018-01-01 02:00-2.10.0NaNNaN1.40.0160.0...38.250850128.56473063242116.191384강원 고성군6324210.03400.004219.0NaN
390속초2018-01-01 03:00-2.20.0NaNNaN0.90.0230.0...38.250850128.56473063242116.191384강원 고성군6324210.03400.004323.0NaN
490속초2018-01-01 04:00-2.00.0NaNNaN1.20.0250.0...38.250850128.56473063242116.191384강원 고성군6324210.03300.004423.0NaN
..................................................................
5011260296북부산2023-12-31 19:006.6NaNNaN9.01.5NaN320.0...35.217781128.9602422212111.544059부산 강서구2212110.03950.007210.05.0
5011261296북부산2023-12-31 20:005.9NaNNaN9.01.8NaN320.0...35.217781128.9602422212111.544059부산 강서구2212110.03400.01029.07.0
5011262296북부산2023-12-31 21:005.1NaNNaN9.01.2NaN250.0...35.217781128.9602422212111.544059부산 강서구2212110.02830.013411.09.0
5011263296북부산2023-12-31 22:003.5NaNNaN9.00.7NaN290.0...35.217781128.9602422212111.544059부산 강서구2212110.02980.010011.011.0
5011264296북부산2023-12-31 23:001.8NaNNaN9.00.5NaN360.0...35.217781128.9602422212111.544059부산 강서구2212110.01410.022613.015.0
\n", + "

5011265 rows × 44 columns

\n", + "
" + ], + "text/plain": [ + " 지점 지점명 일시 기온(°C) 기온 QC플래그 강수량(mm) 강수량 QC플래그 \\\n", + "0 90 속초 2018-01-01 00:00 -1.0 0.0 NaN NaN \n", + "1 90 속초 2018-01-01 01:00 -2.1 0.0 NaN NaN \n", + "2 90 속초 2018-01-01 02:00 -2.1 0.0 NaN NaN \n", + "3 90 속초 2018-01-01 03:00 -2.2 0.0 NaN NaN \n", + "4 90 속초 2018-01-01 04:00 -2.0 0.0 NaN NaN \n", + "... ... ... ... ... ... ... ... \n", + "5011260 296 북부산 2023-12-31 19:00 6.6 NaN NaN 9.0 \n", + "5011261 296 북부산 2023-12-31 20:00 5.9 NaN NaN 9.0 \n", + "5011262 296 북부산 2023-12-31 21:00 5.1 NaN NaN 9.0 \n", + "5011263 296 북부산 2023-12-31 22:00 3.5 NaN NaN 9.0 \n", + "5011264 296 북부산 2023-12-31 23:00 1.8 NaN NaN 9.0 \n", + "\n", + " 풍속(m/s) 풍속 QC플래그 풍향(16방위) ... 위도 경도 근접 측정소코드 \\\n", + "0 1.1 NaN 250.0 ... 38.250850 128.564730 632421 \n", + "1 1.7 0.0 230.0 ... 38.250850 128.564730 632421 \n", + "2 1.4 0.0 160.0 ... 38.250850 128.564730 632421 \n", + "3 0.9 0.0 230.0 ... 38.250850 128.564730 632421 \n", + "4 1.2 0.0 250.0 ... 38.250850 128.564730 632421 \n", + "... ... ... ... ... ... ... ... \n", + "5011260 1.5 NaN 320.0 ... 35.217781 128.960242 221211 \n", + "5011261 1.8 NaN 320.0 ... 35.217781 128.960242 221211 \n", + "5011262 1.2 NaN 250.0 ... 35.217781 128.960242 221211 \n", + "5011263 0.7 NaN 290.0 ... 35.217781 128.960242 221211 \n", + "5011264 0.5 NaN 360.0 ... 35.217781 128.960242 221211 \n", + "\n", + " 거리차이(km) 지역 측정소코드 O3 NO2 PM10 PM25 \n", + "0 16.191384 강원 고성군 632421 0.0350 0.0042 21.0 NaN \n", + "1 16.191384 강원 고성군 632421 0.0350 0.0041 23.0 NaN \n", + "2 16.191384 강원 고성군 632421 0.0340 0.0042 19.0 NaN \n", + "3 16.191384 강원 고성군 632421 0.0340 0.0043 23.0 NaN \n", + "4 16.191384 강원 고성군 632421 0.0330 0.0044 23.0 NaN \n", + "... ... ... ... ... ... ... ... \n", + "5011260 1.544059 부산 강서구 221211 0.0395 0.0072 10.0 5.0 \n", + "5011261 1.544059 부산 강서구 221211 0.0340 0.0102 9.0 7.0 \n", + "5011262 1.544059 부산 강서구 221211 0.0283 0.0134 11.0 9.0 \n", + "5011263 1.544059 부산 강서구 221211 0.0298 0.0100 11.0 11.0 \n", + "5011264 1.544059 부산 강서구 221211 0.0141 0.0226 13.0 15.0 \n", + "\n", + "[5011265 rows x 44 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos_air" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "지점 0\n", + "지점명 0\n", + "일시 0\n", + "기온(°C) 4197\n", + "기온 QC플래그 4282900\n", + "강수량(mm) 4533611\n", + "강수량 QC플래그 4093970\n", + "풍속(m/s) 9726\n", + "풍속 QC플래그 4319125\n", + "풍향(16방위) 10294\n", + "풍향 QC플래그 4318626\n", + "습도(%) 6266\n", + "습도 QC플래그 4284220\n", + "증기압(hPa) 6486\n", + "이슬점온도(°C) 6534\n", + "현지기압(hPa) 4613\n", + "현지기압 QC플래그 4285584\n", + "해면기압(hPa) 5024\n", + "해면기압 QC플래그 4285200\n", + "일조(hr) 2275882\n", + "일조 QC플래그 2375218\n", + "일사(MJ/m2) 3691960\n", + "일사 QC플래그 1161673\n", + "적설(cm) 4905762\n", + "전운량(10분위) 479380\n", + "중하층운량(10분위) 517822\n", + "최저운고(100m ) 2791937\n", + "시정(10m) 71059\n", + "지면온도(°C) 9742\n", + "지면온도 QC플래그 4260093\n", + "dtype: int64" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(asos_air).sum()[:30] # na값 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "year 0\n", + "month 0\n", + "day 0\n", + "hour 0\n", + "위도 0\n", + "경도 0\n", + "근접 측정소코드 0\n", + "거리차이(km) 0\n", + "지역 0\n", + "측정소코드 0\n", + "O3 203654\n", + "NO2 191150\n", + "PM10 266474\n", + "PM25 466378\n", + "dtype: int64" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(asos_air).sum()[30:] # na값 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "asos_air.to_feather(\"../../data/asos_air_merge.feather\") # asos 데이터 feather 형태로 저장" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
지점지점명일시기온(°C)기온 QC플래그강수량(mm)강수량 QC플래그풍속(m/s)풍속 QC플래그풍향(16방위)...위도경도근접 측정소코드거리차이(km)지역측정소코드O3NO2PM10PM25
090속초2018-01-01 00:00-1.00.0NaNNaN1.1NaN250.0...38.250850128.56473063242116.191384강원 고성군6324210.03500.004221.0NaN
190속초2018-01-01 01:00-2.10.0NaNNaN1.70.0230.0...38.250850128.56473063242116.191384강원 고성군6324210.03500.004123.0NaN
290속초2018-01-01 02:00-2.10.0NaNNaN1.40.0160.0...38.250850128.56473063242116.191384강원 고성군6324210.03400.004219.0NaN
390속초2018-01-01 03:00-2.20.0NaNNaN0.90.0230.0...38.250850128.56473063242116.191384강원 고성군6324210.03400.004323.0NaN
490속초2018-01-01 04:00-2.00.0NaNNaN1.20.0250.0...38.250850128.56473063242116.191384강원 고성군6324210.03300.004423.0NaN
..................................................................
5011260296북부산2023-12-31 19:006.6NaNNaN9.01.5NaN320.0...35.217781128.9602422212111.544059부산 강서구2212110.03950.007210.05.0
5011261296북부산2023-12-31 20:005.9NaNNaN9.01.8NaN320.0...35.217781128.9602422212111.544059부산 강서구2212110.03400.01029.07.0
5011262296북부산2023-12-31 21:005.1NaNNaN9.01.2NaN250.0...35.217781128.9602422212111.544059부산 강서구2212110.02830.013411.09.0
5011263296북부산2023-12-31 22:003.5NaNNaN9.00.7NaN290.0...35.217781128.9602422212111.544059부산 강서구2212110.02980.010011.011.0
5011264296북부산2023-12-31 23:001.8NaNNaN9.00.5NaN360.0...35.217781128.9602422212111.544059부산 강서구2212110.01410.022613.015.0
\n", + "

5011265 rows × 44 columns

\n", + "
" + ], + "text/plain": [ + " 지점 지점명 일시 기온(°C) 기온 QC플래그 강수량(mm) 강수량 QC플래그 \\\n", + "0 90 속초 2018-01-01 00:00 -1.0 0.0 NaN NaN \n", + "1 90 속초 2018-01-01 01:00 -2.1 0.0 NaN NaN \n", + "2 90 속초 2018-01-01 02:00 -2.1 0.0 NaN NaN \n", + "3 90 속초 2018-01-01 03:00 -2.2 0.0 NaN NaN \n", + "4 90 속초 2018-01-01 04:00 -2.0 0.0 NaN NaN \n", + "... ... ... ... ... ... ... ... \n", + "5011260 296 북부산 2023-12-31 19:00 6.6 NaN NaN 9.0 \n", + "5011261 296 북부산 2023-12-31 20:00 5.9 NaN NaN 9.0 \n", + "5011262 296 북부산 2023-12-31 21:00 5.1 NaN NaN 9.0 \n", + "5011263 296 북부산 2023-12-31 22:00 3.5 NaN NaN 9.0 \n", + "5011264 296 북부산 2023-12-31 23:00 1.8 NaN NaN 9.0 \n", + "\n", + " 풍속(m/s) 풍속 QC플래그 풍향(16방위) ... 위도 경도 근접 측정소코드 \\\n", + "0 1.1 NaN 250.0 ... 38.250850 128.564730 632421 \n", + "1 1.7 0.0 230.0 ... 38.250850 128.564730 632421 \n", + "2 1.4 0.0 160.0 ... 38.250850 128.564730 632421 \n", + "3 0.9 0.0 230.0 ... 38.250850 128.564730 632421 \n", + "4 1.2 0.0 250.0 ... 38.250850 128.564730 632421 \n", + "... ... ... ... ... ... ... ... \n", + "5011260 1.5 NaN 320.0 ... 35.217781 128.960242 221211 \n", + "5011261 1.8 NaN 320.0 ... 35.217781 128.960242 221211 \n", + "5011262 1.2 NaN 250.0 ... 35.217781 128.960242 221211 \n", + "5011263 0.7 NaN 290.0 ... 35.217781 128.960242 221211 \n", + "5011264 0.5 NaN 360.0 ... 35.217781 128.960242 221211 \n", + "\n", + " 거리차이(km) 지역 측정소코드 O3 NO2 PM10 PM25 \n", + "0 16.191384 강원 고성군 632421 0.0350 0.0042 21.0 NaN \n", + "1 16.191384 강원 고성군 632421 0.0350 0.0041 23.0 NaN \n", + "2 16.191384 강원 고성군 632421 0.0340 0.0042 19.0 NaN \n", + "3 16.191384 강원 고성군 632421 0.0340 0.0043 23.0 NaN \n", + "4 16.191384 강원 고성군 632421 0.0330 0.0044 23.0 NaN \n", + "... ... ... ... ... ... ... ... \n", + "5011260 1.544059 부산 강서구 221211 0.0395 0.0072 10.0 5.0 \n", + "5011261 1.544059 부산 강서구 221211 0.0340 0.0102 9.0 7.0 \n", + "5011262 1.544059 부산 강서구 221211 0.0283 0.0134 11.0 9.0 \n", + "5011263 1.544059 부산 강서구 221211 0.0298 0.0100 11.0 11.0 \n", + "5011264 1.544059 부산 강서구 221211 0.0141 0.0226 13.0 15.0 \n", + "\n", + "[5011265 rows x 44 columns]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos_air" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['지점', '지점명', '일시', '기온(°C)', '기온 QC플래그', '강수량(mm)', '강수량 QC플래그',\n", + " '풍속(m/s)', '풍속 QC플래그', '풍향(16방위)', '풍향 QC플래그', '습도(%)', '습도 QC플래그',\n", + " '증기압(hPa)', '이슬점온도(°C)', '현지기압(hPa)', '현지기압 QC플래그', '해면기압(hPa)',\n", + " '해면기압 QC플래그', '일조(hr)', '일조 QC플래그', '일사(MJ/m2)', '일사 QC플래그', '적설(cm)',\n", + " '전운량(10분위)', '중하층운량(10분위)', '최저운고(100m )', '시정(10m)', '지면온도(°C)',\n", + " '지면온도 QC플래그', 'year', 'month', 'day', 'hour', '위도', '경도', '근접 측정소코드',\n", + " '거리차이(km)', '지역', '측정소코드', 'O3', 'NO2', 'PM10', 'PM25'],\n", + " dtype='object')" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asos_air.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "44" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(asos_air.columns)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "지점 0\n", + "지점명 0\n", + "일시 0\n", + "기온(°C) 4197\n", + "기온 QC플래그 4282900\n", + "강수량(mm) 4533611\n", + "강수량 QC플래그 4093970\n", + "풍속(m/s) 9726\n", + "풍속 QC플래그 4319125\n", + "풍향(16방위) 10294\n", + "풍향 QC플래그 4318626\n", + "습도(%) 6266\n", + "습도 QC플래그 4284220\n", + "증기압(hPa) 6486\n", + "이슬점온도(°C) 6534\n", + "현지기압(hPa) 4613\n", + "현지기압 QC플래그 4285584\n", + "해면기압(hPa) 5024\n", + "해면기압 QC플래그 4285200\n", + "일조(hr) 2275882\n", + "일조 QC플래그 2375218\n", + "일사(MJ/m2) 3691960\n", + "일사 QC플래그 1161673\n", + "dtype: int64" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(asos_air).sum()[:23] # na값 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "적설(cm) 4905762\n", + "전운량(10분위) 479380\n", + "중하층운량(10분위) 517822\n", + "최저운고(100m ) 2791937\n", + "시정(10m) 71059\n", + "지면온도(°C) 9742\n", + "지면온도 QC플래그 4260093\n", + "year 0\n", + "month 0\n", + "day 0\n", + "hour 0\n", + "위도 0\n", + "경도 0\n", + "근접 측정소코드 0\n", + "거리차이(km) 0\n", + "지역 0\n", + "측정소코드 0\n", + "O3 203654\n", + "NO2 191150\n", + "PM10 266474\n", + "PM25 466378\n", + "dtype: int64" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.isna(asos_air).sum()[23:] # na값 확인" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "PyTorch [Python/conda:env]", + "language": "python", + "name": "conda-env-PyTorch-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/Analysis_code/1.data_preprocessing/3.make_train_test.ipynb b/Analysis_code/1.data_preprocessing/3.make_train_test.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..2bca4733329113b7f0c55df158e58f4640e0d05a --- /dev/null +++ b/Analysis_code/1.data_preprocessing/3.make_train_test.ipynb @@ -0,0 +1,1099 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.model_selection import train_test_split\n", + "from collections import Counter" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "df_seoul = pd.read_feather(\"../../data/data_for_modeling/df_seoul.feather\")\n", + "df_busan = pd.read_feather(\"../../data/data_for_modeling/df_busan.feather\")\n", + "df_incheon = pd.read_feather(\"../../data/data_for_modeling/df_incheon.feather\")\n", + "df_daegu = pd.read_feather(\"../../data/data_for_modeling/df_daegu.feather\")\n", + "df_daejeon = pd.read_feather(\"../../data/data_for_modeling/df_daejeon.feather\")\n", + "df_gwangju = pd.read_feather(\"../../data/data_for_modeling/df_gwangju.feather\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Counter({2: 48534, 1: 3941, 0: 109})" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Counter(df_seoul['multi_class'])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Counter({2: 50069, 1: 2350, 0: 165})" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Counter(df_busan['multi_class'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Counter({2: 44944, 1: 6658, 0: 982})" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Counter(df_incheon['multi_class'])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Counter({2: 50919, 1: 1610, 0: 55})" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Counter(df_daegu['multi_class'])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Counter({2: 48047, 1: 4227, 0: 310})" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Counter(df_daejeon['multi_class'])" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Counter({2: 48405, 1: 4015, 0: 164})" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Counter(df_gwangju['multi_class'])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(52584, 30)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_seoul.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "df_seoul = df_seoul.loc[df_seoul['year'].isin([2018, 2019, 2020, 2021]),:].copy()\n", + "df_busan = df_busan.loc[df_busan['year'].isin([2018, 2019, 2020, 2021]),:].copy()\n", + "df_incheon = df_incheon.loc[df_incheon['year'].isin([2018, 2019, 2020, 2021]),:].copy()\n", + "df_daegu = df_daegu.loc[df_daegu['year'].isin([2018, 2019, 2020, 2021]),:].copy()\n", + "df_daejeon = df_daejeon.loc[df_daejeon['year'].isin([2018, 2019, 2020, 2021]),:].copy()\n", + "df_gwangju = df_gwangju.loc[df_gwangju['year'].isin([2018, 2019, 2020, 2021]),:].copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "cols = [col for col in df_seoul.columns if col != \"multi_class\"] + [\"multi_class\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "df_seoul = df_seoul[cols]\n", + "df_busan = df_busan[cols]\n", + "df_incheon = df_incheon[cols]\n", + "df_daegu = df_daegu[cols]\n", + "df_daejeon = df_daejeon[cols]\n", + "df_gwangju = df_gwangju[cols]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "df_seoul_train = df_seoul.loc[df_seoul['year'].isin([2018, 2019, 2020]),:].copy()\n", + "df_seoul_test = df_seoul.loc[df_seoul['year'].isin([2021]),:].copy()\n", + "\n", + "df_busan_train = df_busan.loc[df_busan['year'].isin([2018, 2019, 2020]),:].copy()\n", + "df_busan_test = df_busan.loc[df_busan['year'].isin([2021]),:].copy()\n", + "\n", + "df_incheon_train = df_incheon.loc[df_incheon['year'].isin([2018, 2019, 2020]),:].copy()\n", + "df_incheon_test = df_incheon.loc[df_incheon['year'].isin([2021]),:].copy()\n", + "\n", + "df_daegu_train = df_daegu.loc[df_daegu['year'].isin([2018, 2019, 2020]),:].copy()\n", + "df_daegu_test = df_daegu.loc[df_daegu['year'].isin([2021]),:].copy()\n", + "\n", + "df_daejeon_train = df_daejeon.loc[df_daejeon['year'].isin([2018, 2019, 2020]),:].copy()\n", + "df_daejeon_test = df_daejeon.loc[df_daejeon['year'].isin([2021]),:].copy()\n", + "\n", + "df_gwangju_train = df_gwangju.loc[df_gwangju['year'].isin([2018, 2019, 2020]),:].copy()\n", + "df_gwangju_test = df_gwangju.loc[df_gwangju['year'].isin([2021]),:].copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
temp_Cprecip_mmwind_speedwind_dirhmvap_pressuredewpoint_Cloc_pressuresea_pressuresolarRad...yearmonthhourground_temp - temp_Chour_sinhour_cosmonth_sinmonth_cosvisimulti_class
01.20.01.636035.02.3-12.61015.81024.60.00...201810-5.40.0000001.000000e+000.50.8660252000.02
10.50.01.336033.02.1-13.91015.51024.30.00...201811-5.40.2588199.659258e-010.50.8660252000.02
20.10.01.52034.02.1-13.91015.71024.50.00...201812-5.40.5000008.660254e-010.50.8660252000.02
30.00.02.132037.02.3-12.91015.91024.70.00...201813-5.00.7071077.071068e-010.50.8660252000.02
4-0.10.02.334042.02.5-11.51016.01024.90.00...201814-4.30.8660255.000000e-010.50.8660252000.02
5-0.10.02.85043.02.6-11.21016.01024.90.00...201815-4.00.9659262.588190e-010.50.8660252000.02
6-0.50.02.12045.02.6-11.01016.51025.40.00...201816-4.11.0000006.123234e-170.50.8660252000.02
7-0.80.02.534045.02.6-11.21017.11026.00.00...201817-4.50.965926-2.588190e-010.50.8660252000.02
8-0.50.01.236043.02.5-11.51017.41026.30.03...201818-4.00.866025-5.000000e-010.50.8660252000.02
91.70.02.12039.02.7-10.81018.11026.90.46...2018192.80.707107-7.071068e-010.50.8660251953.02
\n", + "

10 rows × 30 columns

\n", + "
" + ], + "text/plain": [ + " temp_C precip_mm wind_speed wind_dir hm vap_pressure dewpoint_C \\\n", + "0 1.2 0.0 1.6 360 35.0 2.3 -12.6 \n", + "1 0.5 0.0 1.3 360 33.0 2.1 -13.9 \n", + "2 0.1 0.0 1.5 20 34.0 2.1 -13.9 \n", + "3 0.0 0.0 2.1 320 37.0 2.3 -12.9 \n", + "4 -0.1 0.0 2.3 340 42.0 2.5 -11.5 \n", + "5 -0.1 0.0 2.8 50 43.0 2.6 -11.2 \n", + "6 -0.5 0.0 2.1 20 45.0 2.6 -11.0 \n", + "7 -0.8 0.0 2.5 340 45.0 2.6 -11.2 \n", + "8 -0.5 0.0 1.2 360 43.0 2.5 -11.5 \n", + "9 1.7 0.0 2.1 20 39.0 2.7 -10.8 \n", + "\n", + " loc_pressure sea_pressure solarRad ... year month hour \\\n", + "0 1015.8 1024.6 0.00 ... 2018 1 0 \n", + "1 1015.5 1024.3 0.00 ... 2018 1 1 \n", + "2 1015.7 1024.5 0.00 ... 2018 1 2 \n", + "3 1015.9 1024.7 0.00 ... 2018 1 3 \n", + "4 1016.0 1024.9 0.00 ... 2018 1 4 \n", + "5 1016.0 1024.9 0.00 ... 2018 1 5 \n", + "6 1016.5 1025.4 0.00 ... 2018 1 6 \n", + "7 1017.1 1026.0 0.00 ... 2018 1 7 \n", + "8 1017.4 1026.3 0.03 ... 2018 1 8 \n", + "9 1018.1 1026.9 0.46 ... 2018 1 9 \n", + "\n", + " ground_temp - temp_C hour_sin hour_cos month_sin month_cos visi \\\n", + "0 -5.4 0.000000 1.000000e+00 0.5 0.866025 2000.0 \n", + "1 -5.4 0.258819 9.659258e-01 0.5 0.866025 2000.0 \n", + "2 -5.4 0.500000 8.660254e-01 0.5 0.866025 2000.0 \n", + "3 -5.0 0.707107 7.071068e-01 0.5 0.866025 2000.0 \n", + "4 -4.3 0.866025 5.000000e-01 0.5 0.866025 2000.0 \n", + "5 -4.0 0.965926 2.588190e-01 0.5 0.866025 2000.0 \n", + "6 -4.1 1.000000 6.123234e-17 0.5 0.866025 2000.0 \n", + "7 -4.5 0.965926 -2.588190e-01 0.5 0.866025 2000.0 \n", + "8 -4.0 0.866025 -5.000000e-01 0.5 0.866025 2000.0 \n", + "9 2.8 0.707107 -7.071068e-01 0.5 0.866025 1953.0 \n", + "\n", + " multi_class \n", + "0 2 \n", + "1 2 \n", + "2 2 \n", + "3 2 \n", + "4 2 \n", + "5 2 \n", + "6 2 \n", + "7 2 \n", + "8 2 \n", + "9 2 \n", + "\n", + "[10 rows x 30 columns]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_busan_train.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
temp_Cprecip_mmwind_speedwind_dirhmvap_pressuredewpoint_Cloc_pressuresea_pressuresolarRad...yearmonthhourground_temp - temp_Chour_sinhour_cosmonth_sinmonth_cosvisimulti_class
262940.10.06.327037.02.3-12.91013.31022.12.07...202012145.8-0.500000-8.660254e-01-2.449294e-161.05000.02
262951.20.05.927035.02.3-12.61013.21022.01.71...202012155.6-0.707107-7.071068e-01-2.449294e-161.05000.02
262961.60.03.629034.02.3-12.61012.81021.61.14...202012161.4-0.866025-5.000000e-01-2.449294e-161.05000.02
262971.20.03.825038.02.5-11.51012.81021.60.48...20201217-0.4-0.965926-2.588190e-01-2.449294e-161.05000.02
262980.90.03.827040.02.6-11.21013.11021.90.02...20201218-0.8-1.000000-1.836970e-16-2.449294e-161.05000.02
262990.60.06.227041.02.6-11.11014.01022.80.00...20201219-1.1-0.9659262.588190e-01-2.449294e-161.05000.02
263000.10.06.027044.02.7-10.71014.81023.60.00...20201220-0.9-0.8660255.000000e-01-2.449294e-161.05000.02
26301-0.20.05.029048.02.9-9.91014.61023.40.00...20201221-0.8-0.7071077.071068e-01-2.449294e-161.05000.02
26302-0.70.02.727051.03.0-9.61014.81023.60.00...20201222-0.6-0.5000008.660254e-01-2.449294e-161.05000.02
26303-0.70.03.825055.03.2-8.61015.11024.00.00...20201223-0.6-0.2588199.659258e-01-2.449294e-161.05000.02
\n", + "

10 rows × 30 columns

\n", + "
" + ], + "text/plain": [ + " temp_C precip_mm wind_speed wind_dir hm vap_pressure dewpoint_C \\\n", + "26294 0.1 0.0 6.3 270 37.0 2.3 -12.9 \n", + "26295 1.2 0.0 5.9 270 35.0 2.3 -12.6 \n", + "26296 1.6 0.0 3.6 290 34.0 2.3 -12.6 \n", + "26297 1.2 0.0 3.8 250 38.0 2.5 -11.5 \n", + "26298 0.9 0.0 3.8 270 40.0 2.6 -11.2 \n", + "26299 0.6 0.0 6.2 270 41.0 2.6 -11.1 \n", + "26300 0.1 0.0 6.0 270 44.0 2.7 -10.7 \n", + "26301 -0.2 0.0 5.0 290 48.0 2.9 -9.9 \n", + "26302 -0.7 0.0 2.7 270 51.0 3.0 -9.6 \n", + "26303 -0.7 0.0 3.8 250 55.0 3.2 -8.6 \n", + "\n", + " loc_pressure sea_pressure solarRad ... year month hour \\\n", + "26294 1013.3 1022.1 2.07 ... 2020 12 14 \n", + "26295 1013.2 1022.0 1.71 ... 2020 12 15 \n", + "26296 1012.8 1021.6 1.14 ... 2020 12 16 \n", + "26297 1012.8 1021.6 0.48 ... 2020 12 17 \n", + "26298 1013.1 1021.9 0.02 ... 2020 12 18 \n", + "26299 1014.0 1022.8 0.00 ... 2020 12 19 \n", + "26300 1014.8 1023.6 0.00 ... 2020 12 20 \n", + "26301 1014.6 1023.4 0.00 ... 2020 12 21 \n", + "26302 1014.8 1023.6 0.00 ... 2020 12 22 \n", + "26303 1015.1 1024.0 0.00 ... 2020 12 23 \n", + "\n", + " ground_temp - temp_C hour_sin hour_cos month_sin month_cos \\\n", + "26294 5.8 -0.500000 -8.660254e-01 -2.449294e-16 1.0 \n", + "26295 5.6 -0.707107 -7.071068e-01 -2.449294e-16 1.0 \n", + "26296 1.4 -0.866025 -5.000000e-01 -2.449294e-16 1.0 \n", + "26297 -0.4 -0.965926 -2.588190e-01 -2.449294e-16 1.0 \n", + "26298 -0.8 -1.000000 -1.836970e-16 -2.449294e-16 1.0 \n", + "26299 -1.1 -0.965926 2.588190e-01 -2.449294e-16 1.0 \n", + "26300 -0.9 -0.866025 5.000000e-01 -2.449294e-16 1.0 \n", + "26301 -0.8 -0.707107 7.071068e-01 -2.449294e-16 1.0 \n", + "26302 -0.6 -0.500000 8.660254e-01 -2.449294e-16 1.0 \n", + "26303 -0.6 -0.258819 9.659258e-01 -2.449294e-16 1.0 \n", + "\n", + " visi multi_class \n", + "26294 5000.0 2 \n", + "26295 5000.0 2 \n", + "26296 5000.0 2 \n", + "26297 5000.0 2 \n", + "26298 5000.0 2 \n", + "26299 5000.0 2 \n", + "26300 5000.0 2 \n", + "26301 5000.0 2 \n", + "26302 5000.0 2 \n", + "26303 5000.0 2 \n", + "\n", + "[10 rows x 30 columns]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_busan_train.tail(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Index: 26304 entries, 0 to 26303\n", + "Data columns (total 30 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 temp_C 26304 non-null float64 \n", + " 1 precip_mm 26304 non-null float64 \n", + " 2 wind_speed 26304 non-null float64 \n", + " 3 wind_dir 26304 non-null category\n", + " 4 hm 26304 non-null float64 \n", + " 5 vap_pressure 26304 non-null float64 \n", + " 6 dewpoint_C 26304 non-null float64 \n", + " 7 loc_pressure 26304 non-null float64 \n", + " 8 sea_pressure 26304 non-null float64 \n", + " 9 solarRad 26304 non-null float64 \n", + " 10 snow_cm 26304 non-null float64 \n", + " 11 cloudcover 26304 non-null category\n", + " 12 lm_cloudcover 26304 non-null category\n", + " 13 low_cloudbase 26304 non-null float64 \n", + " 14 groundtemp 26304 non-null float64 \n", + " 15 O3 26304 non-null float64 \n", + " 16 NO2 26304 non-null float64 \n", + " 17 PM10 26304 non-null float64 \n", + " 18 PM25 26304 non-null float64 \n", + " 19 binary_class 26304 non-null int64 \n", + " 20 year 26304 non-null int64 \n", + " 21 month 26304 non-null int64 \n", + " 22 hour 26304 non-null int64 \n", + " 23 ground_temp - temp_C 26304 non-null float64 \n", + " 24 hour_sin 26304 non-null float64 \n", + " 25 hour_cos 26304 non-null float64 \n", + " 26 month_sin 26304 non-null float64 \n", + " 27 month_cos 26304 non-null float64 \n", + " 28 visi 26304 non-null float64 \n", + " 29 multi_class 26304 non-null int64 \n", + "dtypes: category(3), float64(22), int64(5)\n", + "memory usage: 5.7 MB\n" + ] + } + ], + "source": [ + "df_busan_train.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "df_seoul_train.to_csv(\"../../data/data_for_modeling/seoul_train.csv\")\n", + "df_seoul_test.to_csv(\"../../data/data_for_modeling/seoul_test.csv\")\n", + "\n", + "df_busan_train.to_csv(\"../../data/data_for_modeling/busan_train.csv\")\n", + "df_busan_test.to_csv(\"../../data/data_for_modeling/busan_test.csv\")\n", + "\n", + "df_incheon_train.to_csv(\"../../data/data_for_modeling/incheon_train.csv\")\n", + "df_incheon_test.to_csv(\"../../data/data_for_modeling/incheon_test.csv\")\n", + "\n", + "df_daegu_train.to_csv(\"../../data/data_for_modeling/daegu_train.csv\")\n", + "df_daegu_test.to_csv(\"../../data/data_for_modeling/daegu_test.csv\")\n", + "\n", + "df_daejeon_train.to_csv(\"../../data/data_for_modeling/daejeon_train.csv\")\n", + "df_daejeon_test.to_csv(\"../../data/data_for_modeling/daejeon_test.csv\")\n", + "\n", + "df_gwangju_train.to_csv(\"../../data/data_for_modeling/gwangju_train.csv\")\n", + "df_gwangju_test.to_csv(\"../../data/data_for_modeling/gwangju_test.csv\")\n", + "\n", + "df_seoul_train = pd.read_csv(\"../../data/data_for_modeling/seoul_train.csv\")\n", + "df_seoul_test = pd.read_csv(\"../../data/data_for_modeling/seoul_test.csv\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Counter({2: 8266, 1: 481, 0: 13})\n", + "Counter({2: 23686, 1: 2579, 0: 39})\n", + "Counter({2: 8455, 1: 281, 0: 24})\n", + "Counter({2: 24694, 1: 1516, 0: 94})\n", + "Counter({2: 7373, 1: 1205, 0: 182})\n", + "Counter({2: 21893, 1: 3892, 0: 519})\n", + "Counter({2: 8631, 1: 128, 0: 1})\n", + "Counter({2: 25149, 1: 1107, 0: 48})\n", + "Counter({2: 8089, 1: 618, 0: 53})\n", + "Counter({2: 23471, 1: 2660, 0: 173})\n", + "Counter({2: 8087, 1: 643, 0: 30})\n", + "Counter({2: 23798, 1: 2411, 0: 95})\n" + ] + } + ], + "source": [ + "print(Counter(df_seoul_test['multi_class']))\n", + "print(Counter(df_seoul_train['multi_class']))\n", + "\n", + "print(Counter(df_busan_test['multi_class']))\n", + "print(Counter(df_busan_train['multi_class']))\n", + "\n", + "print(Counter(df_incheon_test['multi_class']))\n", + "print(Counter(df_incheon_train['multi_class']))\n", + "\n", + "print(Counter(df_daegu_test['multi_class']))\n", + "print(Counter(df_daegu_train['multi_class']))\n", + "\n", + "print(Counter(df_daejeon_test['multi_class']))\n", + "print(Counter(df_daejeon_train['multi_class']))\n", + "\n", + "print(Counter(df_gwangju_test['multi_class']))\n", + "print(Counter(df_gwangju_train['multi_class']))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Analysis_code/2.make_oversample_data/gpu0.log b/Analysis_code/2.make_oversample_data/gpu0.log new file mode 100644 index 0000000000000000000000000000000000000000..4263d7f2c26569acca04690e9cbd359c553247de --- /dev/null +++ b/Analysis_code/2.make_oversample_data/gpu0.log @@ -0,0 +1,9259 @@ +nohup: ignoring input +/bin/bash: /opt/conda/lib/libtinfo.so.6: no version information available (required by /bin/bash) +========================================== +Starting CTGAN sample generation on GPU 0 +========================================== + +=== Processing 7000 samples === +Running ctgan_sample_7000_1.py... +[I 2025-12-17 11:10:00,009] A new study created in memory with name: no-name-62666be6-ea93-4bce-83e6-c7505848095b +[I 2025-12-17 11:10:21,026] Trial 0 finished with value: -16.958676822986835 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -16.958676822986835. +[I 2025-12-17 11:10:26,771] Trial 1 finished with value: -90.0565004361536 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -16.958676822986835. +[I 2025-12-17 11:10:36,893] Trial 2 finished with value: -6.8700827818163175 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -6.8700827818163175. +[I 2025-12-17 11:10:51,604] Trial 3 finished with value: -420.9820023585804 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -6.8700827818163175. +[I 2025-12-17 11:11:06,179] Trial 4 finished with value: -31.267797955799413 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -6.8700827818163175. +[I 2025-12-17 11:11:20,807] Trial 5 finished with value: -103.23149007290866 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -6.8700827818163175. +[I 2025-12-17 11:11:30,842] Trial 6 finished with value: -40.6504305875223 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -6.8700827818163175. +[I 2025-12-17 11:11:53,702] Trial 7 finished with value: -5.7676045948218215 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -5.7676045948218215. +[I 2025-12-17 11:12:00,149] Trial 8 finished with value: -38.098984626540854 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 7 with value: -5.7676045948218215. +[I 2025-12-17 11:12:23,008] Trial 9 finished with value: -6.945142252710051 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -5.7676045948218215. +[I 2025-12-17 11:12:53,992] Trial 10 finished with value: -62.35848386687617 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -5.7676045948218215. +[I 2025-12-17 11:13:03,950] Trial 11 finished with value: -34.54721217347493 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 7 with value: -5.7676045948218215. +[I 2025-12-17 11:13:17,259] Trial 12 finished with value: -17.523556530471474 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 7 with value: -5.7676045948218215. +[I 2025-12-17 11:13:27,056] Trial 13 finished with value: -13.402383326784395 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 7 with value: -5.7676045948218215. +[I 2025-12-17 11:13:32,752] Trial 14 finished with value: -6.621258002547933 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -5.7676045948218215. +[I 2025-12-17 11:13:40,341] Trial 15 finished with value: -41.36895368900822 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -5.7676045948218215. +[I 2025-12-17 11:13:46,267] Trial 16 finished with value: -65.33990291781267 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -5.7676045948218215. +[I 2025-12-17 11:13:53,813] Trial 17 finished with value: -6.851264163834833 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -5.7676045948218215. +[I 2025-12-17 11:13:59,495] Trial 18 finished with value: -4.010865985778317 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:14:14,075] Trial 19 finished with value: -228.7392304473735 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:14:19,782] Trial 20 finished with value: -89.20841410338474 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:14:25,486] Trial 21 finished with value: -293.66422139895565 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:14:31,198] Trial 22 finished with value: -6.517192682791781 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:14:36,915] Trial 23 finished with value: -7.270040272889316 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:14:42,592] Trial 24 finished with value: -76.1506268621222 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:15:05,336] Trial 25 finished with value: -14.806594086912861 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:15:12,872] Trial 26 finished with value: -93.28150223267565 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:15:27,564] Trial 27 finished with value: -15.578828226170488 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:15:33,318] Trial 28 finished with value: -4.179004400208213 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:15:40,879] Trial 29 finished with value: -20.154799214673982 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:16:03,891] Trial 30 finished with value: -23.887794695781228 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:16:09,666] Trial 31 finished with value: -31.569322179797666 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:16:15,371] Trial 32 finished with value: -47.226172508277266 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:16:21,086] Trial 33 finished with value: -18.01478886730849 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:16:26,803] Trial 34 finished with value: -86.6107742273914 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.010865985778317. +[I 2025-12-17 11:16:32,534] Trial 35 finished with value: -2.5088602779451867 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -2.5088602779451867. +[I 2025-12-17 11:16:38,268] Trial 36 finished with value: -87.77126400891709 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -2.5088602779451867. +[I 2025-12-17 11:16:52,941] Trial 37 finished with value: -298.6620750248493 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 35 with value: -2.5088602779451867. +[I 2025-12-17 11:16:58,688] Trial 38 finished with value: -7.955402964934908 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -2.5088602779451867. +[I 2025-12-17 11:17:13,321] Trial 39 finished with value: -13.785359546136497 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 35 with value: -2.5088602779451867. +[I 2025-12-17 11:17:19,042] Trial 40 finished with value: -32.46323891902347 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -2.5088602779451867. +[I 2025-12-17 11:17:24,745] Trial 41 finished with value: -47.34600171294361 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -2.5088602779451867. +[I 2025-12-17 11:17:30,392] Trial 42 finished with value: -194.55599202353642 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -2.5088602779451867. +[I 2025-12-17 11:17:36,141] Trial 43 finished with value: -7.078757693860089 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -2.5088602779451867. +[I 2025-12-17 11:17:46,153] Trial 44 finished with value: -0.4931555014802902 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -0.4931555014802902. +[I 2025-12-17 11:17:56,090] Trial 45 finished with value: -15.022363014181822 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -0.4931555014802902. +[I 2025-12-17 11:18:06,069] Trial 46 finished with value: -0.6097532651653054 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -0.4931555014802902. +[I 2025-12-17 11:18:15,975] Trial 47 finished with value: -76.88686787052801 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -0.4931555014802902. +[I 2025-12-17 11:18:26,026] Trial 48 finished with value: -8.096865269702544 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -0.4931555014802902. +[I 2025-12-17 11:18:35,995] Trial 49 finished with value: -290.1378158500697 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -0.4931555014802902. +[I 2025-12-17 11:18:46,089] A new study created in memory with name: no-name-0d737048-221a-4f46-8114-2dd0d05116b5 +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 11:19:25,562] Trial 0 finished with value: -821.7636827570874 and parameters: {'embedding_dim': 214, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -821.7636827570874. +[I 2025-12-17 11:20:21,287] Trial 1 finished with value: -353.90190406890827 and parameters: {'embedding_dim': 485, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -353.90190406890827. +[I 2025-12-17 11:22:13,774] Trial 2 finished with value: -516.8072146875494 and parameters: {'embedding_dim': 212, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -353.90190406890827. +[I 2025-12-17 11:23:08,121] Trial 3 finished with value: -185.76319381411972 and parameters: {'embedding_dim': 166, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -185.76319381411972. +[I 2025-12-17 11:24:39,411] Trial 4 finished with value: -90.77706367712344 and parameters: {'embedding_dim': 284, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -90.77706367712344. +[I 2025-12-17 11:25:36,211] Trial 5 finished with value: -11.404329151744724 and parameters: {'embedding_dim': 262, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:26:21,621] Trial 6 finished with value: -977.047796667229 and parameters: {'embedding_dim': 338, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:26:44,278] Trial 7 finished with value: -2557.089761788674 and parameters: {'embedding_dim': 400, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:27:03,780] Trial 8 finished with value: -219.87761237759958 and parameters: {'embedding_dim': 272, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:27:39,860] Trial 9 finished with value: -151.99864520849408 and parameters: {'embedding_dim': 293, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:28:37,663] Trial 10 finished with value: -40.93600515316799 and parameters: {'embedding_dim': 391, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:29:33,766] Trial 11 finished with value: -620.4484958765995 and parameters: {'embedding_dim': 403, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:30:33,029] Trial 12 finished with value: -15.524038088014787 and parameters: {'embedding_dim': 377, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:31:18,254] Trial 13 finished with value: -914.1741448646801 and parameters: {'embedding_dim': 470, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:32:16,698] Trial 14 finished with value: -21.802977505524545 and parameters: {'embedding_dim': 349, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:33:32,864] Trial 15 finished with value: -85.18218563783432 and parameters: {'embedding_dim': 134, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:34:01,108] Trial 16 finished with value: -165.42000457608367 and parameters: {'embedding_dim': 229, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:35:01,023] Trial 17 finished with value: -71.37683328988341 and parameters: {'embedding_dim': 443, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:35:47,787] Trial 18 finished with value: -1254.6627428063116 and parameters: {'embedding_dim': 360, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:36:57,187] Trial 19 finished with value: -157.9032689258669 and parameters: {'embedding_dim': 255, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:37:27,650] Trial 20 finished with value: -363.56497721985187 and parameters: {'embedding_dim': 308, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:38:27,747] Trial 21 finished with value: -315.87386343722955 and parameters: {'embedding_dim': 345, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:39:23,618] Trial 22 finished with value: -120.26478125832257 and parameters: {'embedding_dim': 373, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:40:33,620] Trial 23 finished with value: -135.45361462978838 and parameters: {'embedding_dim': 442, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:41:31,893] Trial 24 finished with value: -152.53849170597059 and parameters: {'embedding_dim': 327, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:42:18,049] Trial 25 finished with value: -413.6775711236502 and parameters: {'embedding_dim': 426, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:43:06,392] Trial 26 finished with value: -102.27408315639538 and parameters: {'embedding_dim': 248, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:44:02,391] Trial 27 finished with value: -121.6800176448688 and parameters: {'embedding_dim': 506, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:44:42,778] Trial 28 finished with value: -267.4162014152729 and parameters: {'embedding_dim': 184, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:45:50,444] Trial 29 finished with value: -697.6876354027655 and parameters: {'embedding_dim': 308, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 5 with value: -11.404329151744724. +[I 2025-12-17 11:46:50,828] A new study created in memory with name: no-name-24614dc9-5be6-4556-b053-3db3e3808855 +[I 2025-12-17 11:46:57,907] Trial 0 finished with value: -21.474104369158812 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -21.474104369158812. +[I 2025-12-17 11:47:04,552] Trial 1 finished with value: -14.370400071766554 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -14.370400071766554. +[I 2025-12-17 11:47:07,795] Trial 2 finished with value: -97.13592887594531 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -14.370400071766554. +[I 2025-12-17 11:47:11,157] Trial 3 finished with value: -148.1752058285005 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -14.370400071766554. +[I 2025-12-17 11:47:14,507] Trial 4 finished with value: -157.31049963879144 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -14.370400071766554. +[I 2025-12-17 11:47:21,599] Trial 5 finished with value: -3.0272642202342492 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:47:24,948] Trial 6 finished with value: -88.65377775730815 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:47:29,717] Trial 7 finished with value: -17.58443648142061 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:47:34,483] Trial 8 finished with value: -350.8625615849437 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:47:41,586] Trial 9 finished with value: -69.46395672862467 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:47:48,213] Trial 10 finished with value: -32.63074832212392 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:47:54,902] Trial 11 finished with value: -153.12020740731776 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:47:59,843] Trial 12 finished with value: -201.57855972008355 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:48:06,490] Trial 13 finished with value: -47.97700505249961 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:48:15,083] Trial 14 finished with value: -106.416964517987 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:48:20,334] Trial 15 finished with value: -110.45819860724336 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:48:26,995] Trial 16 finished with value: -18.150826564648618 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:48:31,951] Trial 17 finished with value: -226.4978408283464 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:48:39,092] Trial 18 finished with value: -96.11862581082674 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:48:45,495] Trial 19 finished with value: -236.58760838335246 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:48:50,720] Trial 20 finished with value: -7.338199798548944 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:48:55,925] Trial 21 finished with value: -12.914154447573654 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:49:01,121] Trial 22 finished with value: -8.7452097668574 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:49:06,345] Trial 23 finished with value: -31.950119378377746 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:49:11,573] Trial 24 finished with value: -67.56127844655697 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:49:16,802] Trial 25 finished with value: -52.743505404650676 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:49:22,029] Trial 26 finished with value: -226.84752376136123 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:49:25,412] Trial 27 finished with value: -30.56384299788826 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:49:33,052] Trial 28 finished with value: -5.919321312857142 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:49:38,337] Trial 29 finished with value: -32.88304621740904 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:49:41,686] Trial 30 finished with value: -88.45905149709179 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:49:46,913] Trial 31 finished with value: -120.22872098279827 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:49:52,252] Trial 32 finished with value: -58.48791402485922 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:49:57,616] Trial 33 finished with value: -40.61369214568828 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:50:02,898] Trial 34 finished with value: -9.267004806000909 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:50:08,136] Trial 35 finished with value: -41.33117896385108 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:50:11,552] Trial 36 finished with value: -52.22804998282513 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:50:16,779] Trial 37 finished with value: -31.955800154680606 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:50:21,552] Trial 38 finished with value: -230.89383219265963 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:50:24,924] Trial 39 finished with value: -33.21455433103248 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:50:30,163] Trial 40 finished with value: -69.89601891602258 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:50:35,393] Trial 41 finished with value: -17.60398640335753 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:50:40,632] Trial 42 finished with value: -56.7429923643068 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:50:45,847] Trial 43 finished with value: -29.232170065531122 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:50:51,080] Trial 44 finished with value: -6.027092770985961 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:50:55,842] Trial 45 finished with value: -18.02179320225248 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:51:03,596] Trial 46 finished with value: -65.85809953010822 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:51:12,695] Trial 47 finished with value: -85.38843046024729 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -3.0272642202342492. +[I 2025-12-17 11:51:18,851] Trial 48 finished with value: -0.25074543197165144 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 48 with value: -0.25074543197165144. +[I 2025-12-17 11:51:22,112] Trial 49 finished with value: -62.209136486168916 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 48 with value: -0.25074543197165144. +[I 2025-12-17 11:51:27,455] A new study created in memory with name: no-name-e8eb1e76-364e-4e5c-9482-03e4325320d3 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_1_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_1_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_1_incheon.csv: Class 0=6683 | Class 1=6793 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_1_incheon.csv: Class 0=6683 | Class 1=6793 | Class 2=14554 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 11:51:44,372] Trial 0 finished with value: -500.3546555551851 and parameters: {'embedding_dim': 507, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -500.3546555551851. +[I 2025-12-17 11:52:04,856] Trial 1 finished with value: -440.4675834157054 and parameters: {'embedding_dim': 218, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -440.4675834157054. +[I 2025-12-17 11:52:57,642] Trial 2 finished with value: -110.69551234225598 and parameters: {'embedding_dim': 373, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -110.69551234225598. +[I 2025-12-17 11:54:06,334] Trial 3 finished with value: -17.816582550957435 and parameters: {'embedding_dim': 366, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 11:54:21,997] Trial 4 finished with value: -907.9292592526531 and parameters: {'embedding_dim': 304, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 11:54:59,183] Trial 5 finished with value: -1313.8477278139762 and parameters: {'embedding_dim': 436, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 11:55:13,240] Trial 6 finished with value: -1917.1214665606433 and parameters: {'embedding_dim': 403, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 11:55:30,393] Trial 7 finished with value: -740.2383232258178 and parameters: {'embedding_dim': 288, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 11:56:35,772] Trial 8 finished with value: -410.45351749890864 and parameters: {'embedding_dim': 411, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 11:56:50,439] Trial 9 finished with value: -2173.5156815186356 and parameters: {'embedding_dim': 445, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 11:58:12,835] Trial 10 finished with value: -502.1570020011967 and parameters: {'embedding_dim': 144, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 11:59:08,021] Trial 11 finished with value: -45.282943259501835 and parameters: {'embedding_dim': 349, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 12:00:12,916] Trial 12 finished with value: -170.16966331825353 and parameters: {'embedding_dim': 340, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 12:00:52,268] Trial 13 finished with value: -407.726628356143 and parameters: {'embedding_dim': 253, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 12:01:34,017] Trial 14 finished with value: -877.502182484384 and parameters: {'embedding_dim': 349, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 12:02:27,871] Trial 15 finished with value: -657.4328832758082 and parameters: {'embedding_dim': 496, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 12:03:33,282] Trial 16 finished with value: -101.73751693989016 and parameters: {'embedding_dim': 193, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 12:03:46,465] Trial 17 finished with value: -276.69042267111934 and parameters: {'embedding_dim': 279, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 12:05:08,832] Trial 18 finished with value: -602.9294704344486 and parameters: {'embedding_dim': 370, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -17.816582550957435. +[I 2025-12-17 12:06:21,270] Trial 19 finished with value: -2.872103506204528 and parameters: {'embedding_dim': 464, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 19 with value: -2.872103506204528. +[I 2025-12-17 12:06:38,231] Trial 20 finished with value: -1125.1289257774029 and parameters: {'embedding_dim': 475, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 19 with value: -2.872103506204528. +[I 2025-12-17 12:07:33,267] Trial 21 finished with value: -262.62364127309195 and parameters: {'embedding_dim': 402, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -2.872103506204528. +[I 2025-12-17 12:08:28,250] Trial 22 finished with value: -96.27738919979177 and parameters: {'embedding_dim': 445, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -2.872103506204528. +[I 2025-12-17 12:09:33,868] Trial 23 finished with value: -627.8052501120043 and parameters: {'embedding_dim': 315, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 19 with value: -2.872103506204528. +[I 2025-12-17 12:10:52,205] Trial 24 finished with value: -165.9886563625875 and parameters: {'embedding_dim': 373, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 19 with value: -2.872103506204528. +[I 2025-12-17 12:11:57,445] Trial 25 finished with value: -392.1014728522503 and parameters: {'embedding_dim': 334, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 19 with value: -2.872103506204528. +[I 2025-12-17 12:12:37,123] Trial 26 finished with value: -64.60871913316971 and parameters: {'embedding_dim': 471, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 19 with value: -2.872103506204528. +[I 2025-12-17 12:13:29,749] Trial 27 finished with value: -76.62029876443188 and parameters: {'embedding_dim': 260, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -2.872103506204528. +[I 2025-12-17 12:13:47,669] Trial 28 finished with value: -485.25627786003724 and parameters: {'embedding_dim': 416, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 19 with value: -2.872103506204528. +[I 2025-12-17 12:15:07,023] Trial 29 finished with value: -1033.5126135494058 and parameters: {'embedding_dim': 493, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 19 with value: -2.872103506204528. +[I 2025-12-17 12:16:13,014] A new study created in memory with name: no-name-b06e1df7-3189-43a1-a45b-5fde225f4a27 +[I 2025-12-17 12:16:20,183] Trial 0 finished with value: -7.068092012124022 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:16:23,484] Trial 1 finished with value: -55.30883986468918 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:16:26,699] Trial 2 finished with value: -24.912861742418155 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:16:31,743] Trial 3 finished with value: -81.6446381368078 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:16:37,043] Trial 4 finished with value: -188.74323210478443 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:16:40,486] Trial 5 finished with value: -24.873148916714428 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:16:47,709] Trial 6 finished with value: -220.26249509588635 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:16:52,756] Trial 7 finished with value: -29.86270661860485 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:16:58,070] Trial 8 finished with value: -47.11404288179853 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:17:02,938] Trial 9 finished with value: -28.57858754726951 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:17:10,161] Trial 10 finished with value: -107.11767667040631 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:17:13,633] Trial 11 finished with value: -176.7313036958787 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:17:20,844] Trial 12 finished with value: -108.47712884047544 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:17:24,313] Trial 13 finished with value: -74.37003568199282 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:17:31,539] Trial 14 finished with value: -30.109235986029194 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:17:38,096] Trial 15 finished with value: -46.1950874092243 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:17:41,547] Trial 16 finished with value: -36.54604753877067 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:17:46,860] Trial 17 finished with value: -10.558007771133411 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:17:51,656] Trial 18 finished with value: -128.63733893185443 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:17:58,342] Trial 19 finished with value: -33.5126969871319 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:18:03,685] Trial 20 finished with value: -28.17343875281651 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:18:07,200] Trial 21 finished with value: -14.226506229868763 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:18:12,519] Trial 22 finished with value: -39.03556111340286 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:18:19,721] Trial 23 finished with value: -14.49510680965039 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -7.068092012124022. +[I 2025-12-17 12:18:23,161] Trial 24 finished with value: -5.290729858986952 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:18:28,477] Trial 25 finished with value: -17.63557168400608 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:18:33,807] Trial 26 finished with value: -70.48475638922022 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:18:37,256] Trial 27 finished with value: -48.041580018487615 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:18:43,981] Trial 28 finished with value: -59.92624316930932 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:18:47,182] Trial 29 finished with value: -17.521573390184333 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:18:52,213] Trial 30 finished with value: -55.6684046926566 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:18:55,755] Trial 31 finished with value: -50.76326887683744 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:18:59,398] Trial 32 finished with value: -29.96157857846569 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:19:03,074] Trial 33 finished with value: -150.10043050154758 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:19:06,639] Trial 34 finished with value: -22.073218426037492 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:19:10,100] Trial 35 finished with value: -190.73186943067154 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:19:13,697] Trial 36 finished with value: -220.39944825639546 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:19:16,912] Trial 37 finished with value: -162.48880623020796 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:19:21,916] Trial 38 finished with value: -103.61007649543944 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:19:27,236] Trial 39 finished with value: -84.31767359703673 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:19:32,560] Trial 40 finished with value: -12.050287161860904 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:19:37,903] Trial 41 finished with value: -17.419179799521952 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:19:43,226] Trial 42 finished with value: -313.3855646888912 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:19:48,556] Trial 43 finished with value: -100.6491325234961 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:19:53,870] Trial 44 finished with value: -98.72446933353392 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:20:01,062] Trial 45 finished with value: -22.09569777555626 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:20:04,499] Trial 46 finished with value: -21.391309121211616 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 24 with value: -5.290729858986952. +[I 2025-12-17 12:20:11,761] Trial 47 finished with value: -4.2269040440736445 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 47 with value: -4.2269040440736445. +[I 2025-12-17 12:20:18,549] Trial 48 finished with value: -75.38029318083343 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 47 with value: -4.2269040440736445. +[I 2025-12-17 12:20:25,934] Trial 49 finished with value: -41.458329508086806 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 47 with value: -4.2269040440736445. +[I 2025-12-17 12:20:33,231] A new study created in memory with name: no-name-02d401cd-805e-48a0-96bc-ec3080a20011 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_1_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_1_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_1_seoul.csv: Class 0=6418 | Class 1=6915 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_1_seoul.csv: Class 0=6418 | Class 1=6915 | Class 2=15676 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 12:20:46,142] Trial 0 finished with value: -1012.7169904076343 and parameters: {'embedding_dim': 145, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -1012.7169904076343. +[I 2025-12-17 12:20:56,539] Trial 1 finished with value: -279.5043840375275 and parameters: {'embedding_dim': 159, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 1 with value: -279.5043840375275. +[I 2025-12-17 12:21:07,691] Trial 2 finished with value: -215.82077575110344 and parameters: {'embedding_dim': 207, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -215.82077575110344. +[I 2025-12-17 12:21:22,283] Trial 3 finished with value: -642.6821769666765 and parameters: {'embedding_dim': 276, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 2 with value: -215.82077575110344. +[I 2025-12-17 12:21:30,479] Trial 4 finished with value: -381.0449595225708 and parameters: {'embedding_dim': 458, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -215.82077575110344. +[I 2025-12-17 12:21:40,370] Trial 5 finished with value: -1709.103057015991 and parameters: {'embedding_dim': 347, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -215.82077575110344. +[I 2025-12-17 12:21:51,088] Trial 6 finished with value: -257.9742369794771 and parameters: {'embedding_dim': 323, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -215.82077575110344. +[I 2025-12-17 12:22:07,026] Trial 7 finished with value: -304.6378831492277 and parameters: {'embedding_dim': 388, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 2 with value: -215.82077575110344. +[I 2025-12-17 12:22:36,158] Trial 8 finished with value: -355.1397983605338 and parameters: {'embedding_dim': 233, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -215.82077575110344. +[I 2025-12-17 12:23:10,834] Trial 9 finished with value: -381.9970684990176 and parameters: {'embedding_dim': 442, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -215.82077575110344. +[I 2025-12-17 12:23:18,495] Trial 10 finished with value: -2984.2575475016083 and parameters: {'embedding_dim': 216, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -215.82077575110344. +[I 2025-12-17 12:23:32,306] Trial 11 finished with value: -302.2727124981888 and parameters: {'embedding_dim': 319, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 2 with value: -215.82077575110344. +[I 2025-12-17 12:23:39,224] Trial 12 finished with value: -27.84143038249798 and parameters: {'embedding_dim': 269, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:23:46,865] Trial 13 finished with value: -866.0349909665015 and parameters: {'embedding_dim': 210, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:23:55,192] Trial 14 finished with value: -2755.7732965768946 and parameters: {'embedding_dim': 266, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:24:05,599] Trial 15 finished with value: -463.96903022766605 and parameters: {'embedding_dim': 185, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:24:18,083] Trial 16 finished with value: -12684.309692326658 and parameters: {'embedding_dim': 265, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:24:27,690] Trial 17 finished with value: -1769.4404240176987 and parameters: {'embedding_dim': 502, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:24:35,331] Trial 18 finished with value: -2104.22791499199 and parameters: {'embedding_dim': 371, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:24:49,458] Trial 19 finished with value: -883.3275393919077 and parameters: {'embedding_dim': 287, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:25:18,891] Trial 20 finished with value: -1309.3679538275317 and parameters: {'embedding_dim': 130, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:25:32,462] Trial 21 finished with value: -514.5134111875473 and parameters: {'embedding_dim': 334, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:25:40,947] Trial 22 finished with value: -623.1278172699942 and parameters: {'embedding_dim': 299, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:25:51,640] Trial 23 finished with value: -356.80583111724764 and parameters: {'embedding_dim': 242, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:26:01,968] Trial 24 finished with value: -1145.2189580130453 and parameters: {'embedding_dim': 180, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:26:08,207] Trial 25 finished with value: -342.38661081586974 and parameters: {'embedding_dim': 376, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:26:20,908] Trial 26 finished with value: -444.92139513482334 and parameters: {'embedding_dim': 310, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:26:36,241] Trial 27 finished with value: -724.2627549738556 and parameters: {'embedding_dim': 403, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:26:54,399] Trial 28 finished with value: -3089.190312389719 and parameters: {'embedding_dim': 253, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:27:05,385] Trial 29 finished with value: -501.1343045639209 and parameters: {'embedding_dim': 189, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 12 with value: -27.84143038249798. +[I 2025-12-17 12:27:14,465] A new study created in memory with name: no-name-05ee563b-8b0f-4360-8faa-156a7a97510b +[I 2025-12-17 12:27:19,311] Trial 0 finished with value: -5.454173489908031 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:27:25,840] Trial 1 finished with value: -90.54899549272709 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:27:32,370] Trial 2 finished with value: -59.52080130178628 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:27:35,627] Trial 3 finished with value: -81.1445060035648 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:27:42,366] Trial 4 finished with value: -78.9915418007211 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:27:45,481] Trial 5 finished with value: -424.729826414981 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:27:52,131] Trial 6 finished with value: -59.52763769435807 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:27:57,110] Trial 7 finished with value: -49.24834874981865 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:28:03,577] Trial 8 finished with value: -11.054062911661026 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:28:10,237] Trial 9 finished with value: -80.46755638705167 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:28:15,448] Trial 10 finished with value: -65.40685257588372 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:28:20,211] Trial 11 finished with value: -161.99393913084873 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:28:24,952] Trial 12 finished with value: -51.663312144611695 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:28:28,076] Trial 13 finished with value: -244.16063091943715 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:28:32,832] Trial 14 finished with value: -88.5462076427367 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:28:38,041] Trial 15 finished with value: -27.868932109774804 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:28:44,359] Trial 16 finished with value: -84.1229455547961 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:28:47,442] Trial 17 finished with value: -189.4194284980554 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:28:52,125] Trial 18 finished with value: -171.75494172860454 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:28:57,367] Trial 19 finished with value: -184.980296129688 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:29:03,771] Trial 20 finished with value: -115.7264208354288 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:29:08,978] Trial 21 finished with value: -53.102856538027936 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:29:14,199] Trial 22 finished with value: -12.32936418907997 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:29:19,405] Trial 23 finished with value: -129.00597187686174 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:29:24,616] Trial 24 finished with value: -52.92696218846211 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:29:27,734] Trial 25 finished with value: -326.1735733684283 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:29:32,953] Trial 26 finished with value: -141.466535019952 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:29:39,331] Trial 27 finished with value: -194.40110500550185 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:29:44,568] Trial 28 finished with value: -61.350463808120544 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:29:50,958] Trial 29 finished with value: -270.9872597996821 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:29:58,083] Trial 30 finished with value: -112.38068434957165 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:30:03,292] Trial 31 finished with value: -59.36508214612204 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:30:08,515] Trial 32 finished with value: -71.95721759613235 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:30:13,745] Trial 33 finished with value: -46.4410821935723 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:30:18,953] Trial 34 finished with value: -219.32534308046516 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:30:22,049] Trial 35 finished with value: -432.6186440644882 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:30:26,985] Trial 36 finished with value: -342.8721554992195 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:30:34,059] Trial 37 finished with value: -256.765291056285 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:30:37,271] Trial 38 finished with value: -129.19583181112864 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:30:43,616] Trial 39 finished with value: -77.82764154281158 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:30:48,824] Trial 40 finished with value: -72.71948784410324 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:30:54,020] Trial 41 finished with value: -204.14240411811056 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:30:59,346] Trial 42 finished with value: -165.27686750634575 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:31:04,552] Trial 43 finished with value: -38.42296313202119 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:31:09,450] Trial 44 finished with value: -95.4557930892131 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:31:14,645] Trial 45 finished with value: -275.8981187004693 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:31:19,362] Trial 46 finished with value: -124.16217616091166 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:31:24,571] Trial 47 finished with value: -193.4429254917798 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:31:29,311] Trial 48 finished with value: -166.5750204485426 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:31:35,966] Trial 49 finished with value: -54.6645965064598 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -5.454173489908031. +[I 2025-12-17 12:31:40,910] A new study created in memory with name: no-name-97f854d7-de7c-4ba3-97f4-d1fcfe0cb60f +[I 2025-12-17 12:32:02,716] Trial 0 finished with value: -736.9576210790337 and parameters: {'embedding_dim': 146, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -736.9576210790337. +[I 2025-12-17 12:32:20,723] Trial 1 finished with value: -2666.453309560677 and parameters: {'embedding_dim': 395, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -736.9576210790337. +[I 2025-12-17 12:32:30,768] Trial 2 finished with value: -722.7918892022223 and parameters: {'embedding_dim': 367, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -722.7918892022223. +[I 2025-12-17 12:32:44,931] Trial 3 finished with value: -424.234159638869 and parameters: {'embedding_dim': 318, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -424.234159638869. +[I 2025-12-17 12:33:03,689] Trial 4 finished with value: -800.0498798012828 and parameters: {'embedding_dim': 397, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -424.234159638869. +[I 2025-12-17 12:33:14,663] Trial 5 finished with value: -4907.967696095072 and parameters: {'embedding_dim': 482, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -424.234159638869. +[I 2025-12-17 12:33:25,149] Trial 6 finished with value: -220.2746844084473 and parameters: {'embedding_dim': 132, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -220.2746844084473. +[I 2025-12-17 12:33:35,941] Trial 7 finished with value: -3450.116906184774 and parameters: {'embedding_dim': 184, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -220.2746844084473. +[I 2025-12-17 12:33:52,011] Trial 8 finished with value: -196.87904603731315 and parameters: {'embedding_dim': 251, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -196.87904603731315. +[I 2025-12-17 12:34:02,445] Trial 9 finished with value: -660.2401365645137 and parameters: {'embedding_dim': 385, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 8 with value: -196.87904603731315. +[I 2025-12-17 12:34:18,398] Trial 10 finished with value: -464.09290776110225 and parameters: {'embedding_dim': 245, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 8 with value: -196.87904603731315. +[I 2025-12-17 12:34:36,540] Trial 11 finished with value: -1436.0244829085357 and parameters: {'embedding_dim': 239, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -196.87904603731315. +[I 2025-12-17 12:34:52,592] Trial 12 finished with value: -388.4858904853203 and parameters: {'embedding_dim': 133, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -196.87904603731315. +[I 2025-12-17 12:35:08,614] Trial 13 finished with value: -230.4758387745408 and parameters: {'embedding_dim': 236, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -196.87904603731315. +[I 2025-12-17 12:35:13,930] Trial 14 finished with value: -221.85609309152693 and parameters: {'embedding_dim': 312, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 8 with value: -196.87904603731315. +[I 2025-12-17 12:35:22,518] Trial 15 finished with value: -837.4616486671334 and parameters: {'embedding_dim': 191, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 8 with value: -196.87904603731315. +[I 2025-12-17 12:35:46,109] Trial 16 finished with value: -780.5984737994794 and parameters: {'embedding_dim': 279, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -196.87904603731315. +[I 2025-12-17 12:36:16,422] Trial 17 finished with value: -95.40098787540165 and parameters: {'embedding_dim': 187, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 17 with value: -95.40098787540165. +[I 2025-12-17 12:36:31,861] Trial 18 finished with value: -626.8607801192956 and parameters: {'embedding_dim': 196, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 17 with value: -95.40098787540165. +[I 2025-12-17 12:36:43,662] Trial 19 finished with value: -499.17373662036533 and parameters: {'embedding_dim': 268, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 17 with value: -95.40098787540165. +[I 2025-12-17 12:37:05,654] Trial 20 finished with value: -758.0215963156809 and parameters: {'embedding_dim': 462, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 17 with value: -95.40098787540165. +[I 2025-12-17 12:37:32,994] Trial 21 finished with value: -1399.702062902588 and parameters: {'embedding_dim': 162, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 17 with value: -95.40098787540165. +[I 2025-12-17 12:37:43,821] Trial 22 finished with value: -3091.3184905720746 and parameters: {'embedding_dim': 194, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 17 with value: -95.40098787540165. +[I 2025-12-17 12:38:02,234] Trial 23 finished with value: -364.2868334387317 and parameters: {'embedding_dim': 219, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 17 with value: -95.40098787540165. +[I 2025-12-17 12:38:35,268] Trial 24 finished with value: -167.60192858898301 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 17 with value: -95.40098787540165. +[I 2025-12-17 12:39:11,014] Trial 25 finished with value: -115.15781059742393 and parameters: {'embedding_dim': 166, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 17 with value: -95.40098787540165. +[I 2025-12-17 12:39:46,471] Trial 26 finished with value: -1425.6616650753128 and parameters: {'embedding_dim': 163, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 17 with value: -95.40098787540165. +[I 2025-12-17 12:40:21,030] Trial 27 finished with value: -87.48401890458666 and parameters: {'embedding_dim': 217, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 27 with value: -87.48401890458666. +[I 2025-12-17 12:40:35,366] Trial 28 finished with value: -426.3701332707577 and parameters: {'embedding_dim': 282, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 27 with value: -87.48401890458666. +[I 2025-12-17 12:40:51,682] Trial 29 finished with value: -508.07512004171184 and parameters: {'embedding_dim': 167, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 27 with value: -87.48401890458666. +[I 2025-12-17 12:41:27,252] A new study created in memory with name: no-name-eb54a9fc-7704-4ae2-8b1a-0ca130177acb +[I 2025-12-17 12:41:30,845] Trial 0 finished with value: -366.1541665581818 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -366.1541665581818. +[I 2025-12-17 12:41:40,544] Trial 1 finished with value: -65.09559480202361 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -65.09559480202361. +[I 2025-12-17 12:41:53,277] Trial 2 finished with value: -10.421075769716 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:41:58,786] Trial 3 finished with value: -322.4000507209691 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:42:08,169] Trial 4 finished with value: -37.43134885374281 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:42:11,587] Trial 5 finished with value: -552.8942139340413 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:42:16,324] Trial 6 finished with value: -152.0494601368586 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:42:22,481] Trial 7 finished with value: -23.37462181858609 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:42:26,069] Trial 8 finished with value: -25.36438269322395 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:42:31,544] Trial 9 finished with value: -84.15778729969254 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:42:45,635] Trial 10 finished with value: -20.439612809793942 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:42:58,939] Trial 11 finished with value: -41.67185540790695 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:43:11,529] Trial 12 finished with value: -17.36271229277249 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:43:26,252] Trial 13 finished with value: -24.540343919751884 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:43:38,890] Trial 14 finished with value: -54.57818478168671 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:43:51,504] Trial 15 finished with value: -61.049845323583824 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:44:06,068] Trial 16 finished with value: -361.77321287843245 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:44:15,432] Trial 17 finished with value: -83.63327793087495 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:44:29,574] Trial 18 finished with value: -128.73298665895862 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:44:43,302] Trial 19 finished with value: -24.18455544476223 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:44:50,839] Trial 20 finished with value: -27.720329409426498 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:45:05,317] Trial 21 finished with value: -86.95969140185005 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:45:18,324] Trial 22 finished with value: -65.26889223649432 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:45:31,852] Trial 23 finished with value: -187.11212307080413 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:45:46,014] Trial 24 finished with value: -182.96111252990164 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:45:55,727] Trial 25 finished with value: -96.67674110361457 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:46:10,328] Trial 26 finished with value: -25.26330885115499 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:46:22,724] Trial 27 finished with value: -151.87325019676925 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:46:28,337] Trial 28 finished with value: -46.097026039861014 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:46:41,438] Trial 29 finished with value: -77.93569551782244 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:46:50,552] Trial 30 finished with value: -223.38160204793755 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:46:55,730] Trial 31 finished with value: -183.39711040755842 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:47:00,902] Trial 32 finished with value: -236.9586228572768 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:47:06,060] Trial 33 finished with value: -195.3262885337371 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:47:12,051] Trial 34 finished with value: -24.1314464385227 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -10.421075769716. +[I 2025-12-17 12:47:18,075] Trial 35 finished with value: -9.422069837231707 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:47:21,526] Trial 36 finished with value: -29.526676799295945 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:47:34,134] Trial 37 finished with value: -111.5238228101669 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:47:39,269] Trial 38 finished with value: -257.0822208793668 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:47:42,901] Trial 39 finished with value: -55.304645722257625 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:47:48,085] Trial 40 finished with value: -112.92781235853379 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:47:53,919] Trial 41 finished with value: -192.84125930971635 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:48:01,116] Trial 42 finished with value: -12.327808506450946 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:48:06,201] Trial 43 finished with value: -355.3591973041408 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:48:11,384] Trial 44 finished with value: -172.70312276977774 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:48:24,070] Trial 45 finished with value: -39.314658866011385 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:48:29,237] Trial 46 finished with value: -49.520322355932244 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:48:36,574] Trial 47 finished with value: -192.10540880027668 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:48:49,215] Trial 48 finished with value: -78.12404884354544 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:48:57,057] Trial 49 finished with value: -21.215393034988768 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 35 with value: -9.422069837231707. +[I 2025-12-17 12:49:02,489] A new study created in memory with name: no-name-571c726d-80ea-456a-8cbf-f787d91ba14b +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_1_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_1_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_1_busan.csv: Class 0=5499 | Class 1=6204 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_1_busan.csv: Class 0=5499 | Class 1=6204 | Class 2=16492 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_1_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_1_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_1_daegu.csv: Class 0=6375 | Class 1=6626 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_1_daegu.csv: Class 0=6375 | Class 1=6626 | Class 2=16582 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 12:50:01,536] Trial 0 finished with value: -169.24730726379008 and parameters: {'embedding_dim': 455, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -169.24730726379008. +[I 2025-12-17 12:50:24,977] Trial 1 finished with value: -394.71071542666243 and parameters: {'embedding_dim': 400, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -169.24730726379008. +[I 2025-12-17 12:50:53,957] Trial 2 finished with value: -514.6040901204162 and parameters: {'embedding_dim': 482, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -169.24730726379008. +[I 2025-12-17 12:51:09,012] Trial 3 finished with value: -784.002911986915 and parameters: {'embedding_dim': 213, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -169.24730726379008. +[I 2025-12-17 12:51:44,398] Trial 4 finished with value: -178.9417463639661 and parameters: {'embedding_dim': 369, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -169.24730726379008. +[I 2025-12-17 12:53:04,757] Trial 5 finished with value: -673.4729252789606 and parameters: {'embedding_dim': 156, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -169.24730726379008. +[I 2025-12-17 12:53:58,444] Trial 6 finished with value: -350.82503206519584 and parameters: {'embedding_dim': 138, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -169.24730726379008. +[I 2025-12-17 12:54:54,471] Trial 7 finished with value: -290.2817254744043 and parameters: {'embedding_dim': 325, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -169.24730726379008. +[I 2025-12-17 12:55:15,639] Trial 8 finished with value: -349.837926671086 and parameters: {'embedding_dim': 290, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -169.24730726379008. +[I 2025-12-17 12:55:31,530] Trial 9 finished with value: -269.75147578908275 and parameters: {'embedding_dim': 371, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 0 with value: -169.24730726379008. +[I 2025-12-17 12:55:59,349] Trial 10 finished with value: -17.33229140176314 and parameters: {'embedding_dim': 497, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 12:56:27,778] Trial 11 finished with value: -294.07291367942656 and parameters: {'embedding_dim': 512, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 12:57:09,223] Trial 12 finished with value: -300.2909532247963 and parameters: {'embedding_dim': 448, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 12:57:49,525] Trial 13 finished with value: -443.330454203609 and parameters: {'embedding_dim': 446, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 12:58:30,200] Trial 14 finished with value: -67.15556525447316 and parameters: {'embedding_dim': 436, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 12:59:11,271] Trial 15 finished with value: -232.09973293430275 and parameters: {'embedding_dim': 512, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 12:59:38,662] Trial 16 finished with value: -990.8252289191684 and parameters: {'embedding_dim': 403, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 13:00:18,478] Trial 17 finished with value: -575.713743293899 and parameters: {'embedding_dim': 291, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 13:00:27,136] Trial 18 finished with value: -801.5941136619956 and parameters: {'embedding_dim': 418, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 13:00:48,531] Trial 19 finished with value: -896.3611895956426 and parameters: {'embedding_dim': 343, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 13:01:55,347] Trial 20 finished with value: -255.0193439206809 and parameters: {'embedding_dim': 479, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 13:03:04,530] Trial 21 finished with value: -54.158592739314116 and parameters: {'embedding_dim': 452, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 13:04:15,836] Trial 22 finished with value: -58.556918417257464 and parameters: {'embedding_dim': 426, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 13:05:29,492] Trial 23 finished with value: -693.9097667652926 and parameters: {'embedding_dim': 474, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 13:06:44,147] Trial 24 finished with value: -107.31658734666027 and parameters: {'embedding_dim': 382, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 13:07:58,171] Trial 25 finished with value: -678.2888718238218 and parameters: {'embedding_dim': 481, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 13:09:11,767] Trial 26 finished with value: -69.29112657317782 and parameters: {'embedding_dim': 427, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 13:10:36,421] Trial 27 finished with value: -296.25141267450186 and parameters: {'embedding_dim': 266, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 13:11:11,852] Trial 28 finished with value: -69.42281927758532 and parameters: {'embedding_dim': 510, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 13:11:32,451] Trial 29 finished with value: -367.319254351256 and parameters: {'embedding_dim': 459, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 10 with value: -17.33229140176314. +[I 2025-12-17 13:11:59,185] A new study created in memory with name: no-name-96c0f44a-dc3a-4410-b1b3-b85f04dd8032 +[I 2025-12-17 13:12:02,678] Trial 0 finished with value: -35.9324435462535 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -35.9324435462535. +[I 2025-12-17 13:12:07,566] Trial 1 finished with value: -35.846751212231176 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -35.846751212231176. +[I 2025-12-17 13:12:14,139] Trial 2 finished with value: -132.70806501421575 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -35.846751212231176. +[I 2025-12-17 13:12:17,618] Trial 3 finished with value: -47.61611075064128 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -35.846751212231176. +[I 2025-12-17 13:12:22,766] Trial 4 finished with value: -7.454839914353274 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:12:29,510] Trial 5 finished with value: -42.682060932360045 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:12:36,063] Trial 6 finished with value: -114.04455856392626 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:12:42,793] Trial 7 finished with value: -28.615650823466645 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:12:49,989] Trial 8 finished with value: -8.857007630671955 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:12:53,460] Trial 9 finished with value: -260.567333626546 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:12:58,511] Trial 10 finished with value: -166.05605712412353 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:13:03,534] Trial 11 finished with value: -80.34165442994153 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:13:08,884] Trial 12 finished with value: -78.25029007281096 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:13:14,237] Trial 13 finished with value: -23.245070264159708 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:13:21,028] Trial 14 finished with value: -132.4044362751124 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:13:26,113] Trial 15 finished with value: -174.00876769546522 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:13:33,390] Trial 16 finished with value: -70.61814689520975 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:13:36,729] Trial 17 finished with value: -177.87096146050646 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:13:42,072] Trial 18 finished with value: -18.07824272407339 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:13:48,577] Trial 19 finished with value: -20.70361884768787 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:13:53,920] Trial 20 finished with value: -22.598991940031432 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:13:59,339] Trial 21 finished with value: -27.909881111946667 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -7.454839914353274. +[I 2025-12-17 13:14:05,022] Trial 22 finished with value: -6.223176200590712 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:14:10,413] Trial 23 finished with value: -144.04887979808308 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:14:13,894] Trial 24 finished with value: -120.25168380594673 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:14:18,934] Trial 25 finished with value: -33.38890893286935 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:14:26,301] Trial 26 finished with value: -62.85350413006152 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:14:31,821] Trial 27 finished with value: -23.498478376749595 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:14:36,747] Trial 28 finished with value: -52.732243521393116 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:14:40,261] Trial 29 finished with value: -522.8604091333732 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:14:47,606] Trial 30 finished with value: -84.90806144190884 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:14:53,115] Trial 31 finished with value: -21.250506945888773 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:14:58,466] Trial 32 finished with value: -37.32143018811486 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:15:03,808] Trial 33 finished with value: -37.661019076803086 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:15:09,135] Trial 34 finished with value: -46.1269191710778 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:15:14,060] Trial 35 finished with value: -39.535949284618724 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:15:17,806] Trial 36 finished with value: -780.7884761611498 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:15:22,775] Trial 37 finished with value: -22.386394988645172 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:15:30,044] Trial 38 finished with value: -53.13372557706943 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:15:35,136] Trial 39 finished with value: -160.58280147766177 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:15:42,326] Trial 40 finished with value: -91.68235430477448 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:15:48,836] Trial 41 finished with value: -47.1870360699384 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:15:55,392] Trial 42 finished with value: -126.61529297609519 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:16:01,939] Trial 43 finished with value: -8.313483978528833 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:16:08,462] Trial 44 finished with value: -250.5768133859568 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:16:13,411] Trial 45 finished with value: -246.86107596698855 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:16:20,307] Trial 46 finished with value: -47.67354952311384 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:16:25,606] Trial 47 finished with value: -41.30304460627281 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:16:32,195] Trial 48 finished with value: -83.35548294050159 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:16:37,747] Trial 49 finished with value: -45.28760819351347 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -6.223176200590712. +[I 2025-12-17 13:16:43,583] A new study created in memory with name: no-name-bb8bc151-3063-4e0b-993c-9c554446b059 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_1_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_1_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_1_daejeon.csv: Class 0=5597 | Class 1=6741 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_1_daejeon.csv: Class 0=5597 | Class 1=6741 | Class 2=15441 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 13:16:54,716] Trial 0 finished with value: -1390.561691637669 and parameters: {'embedding_dim': 175, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -1390.561691637669. +[I 2025-12-17 13:18:05,643] Trial 1 finished with value: -805.9554605159901 and parameters: {'embedding_dim': 431, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -805.9554605159901. +[I 2025-12-17 13:18:20,137] Trial 2 finished with value: -862.2545309000618 and parameters: {'embedding_dim': 174, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 1 with value: -805.9554605159901. +[I 2025-12-17 13:19:07,167] Trial 3 finished with value: -1324.7640448078357 and parameters: {'embedding_dim': 277, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -805.9554605159901. +[I 2025-12-17 13:19:50,067] Trial 4 finished with value: -989.9235762393762 and parameters: {'embedding_dim': 234, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -805.9554605159901. +[I 2025-12-17 13:20:24,804] Trial 5 finished with value: -744.9612859743063 and parameters: {'embedding_dim': 234, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -744.9612859743063. +[I 2025-12-17 13:20:33,327] Trial 6 finished with value: -7484.286309749936 and parameters: {'embedding_dim': 283, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 5 with value: -744.9612859743063. +[I 2025-12-17 13:20:48,474] Trial 7 finished with value: -321.4246270144987 and parameters: {'embedding_dim': 247, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 7 with value: -321.4246270144987. +[I 2025-12-17 13:21:17,434] Trial 8 finished with value: -450.8696708866775 and parameters: {'embedding_dim': 427, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 7 with value: -321.4246270144987. +[I 2025-12-17 13:22:13,675] Trial 9 finished with value: -735.326125068229 and parameters: {'embedding_dim': 175, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 7 with value: -321.4246270144987. +[I 2025-12-17 13:22:35,284] Trial 10 finished with value: -770.1667279881376 and parameters: {'embedding_dim': 357, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 7 with value: -321.4246270144987. +[I 2025-12-17 13:22:57,359] Trial 11 finished with value: -199.18160503423582 and parameters: {'embedding_dim': 498, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 11 with value: -199.18160503423582. +[I 2025-12-17 13:23:18,898] Trial 12 finished with value: -346.86775934699335 and parameters: {'embedding_dim': 479, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 11 with value: -199.18160503423582. +[I 2025-12-17 13:23:34,339] Trial 13 finished with value: -421.41180284603763 and parameters: {'embedding_dim': 357, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 11 with value: -199.18160503423582. +[I 2025-12-17 13:23:55,608] Trial 14 finished with value: -114.18213989573701 and parameters: {'embedding_dim': 507, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 14 with value: -114.18213989573701. +[I 2025-12-17 13:24:16,316] Trial 15 finished with value: -435.723172569188 and parameters: {'embedding_dim': 512, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 14 with value: -114.18213989573701. +[I 2025-12-17 13:24:51,310] Trial 16 finished with value: -189.10319268407056 and parameters: {'embedding_dim': 442, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 14 with value: -114.18213989573701. +[I 2025-12-17 13:25:29,251] Trial 17 finished with value: -527.3801813061768 and parameters: {'embedding_dim': 452, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 14 with value: -114.18213989573701. +[I 2025-12-17 13:26:06,086] Trial 18 finished with value: -318.6190378995227 and parameters: {'embedding_dim': 392, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 14 with value: -114.18213989573701. +[I 2025-12-17 13:26:26,765] Trial 19 finished with value: -353.0951863287295 and parameters: {'embedding_dim': 462, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 14 with value: -114.18213989573701. +[I 2025-12-17 13:27:14,621] Trial 20 finished with value: -523.4759960030368 and parameters: {'embedding_dim': 392, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 14 with value: -114.18213989573701. +[I 2025-12-17 13:27:37,401] Trial 21 finished with value: -680.7038502228763 and parameters: {'embedding_dim': 509, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 14 with value: -114.18213989573701. +[I 2025-12-17 13:28:08,669] Trial 22 finished with value: -401.10949161905194 and parameters: {'embedding_dim': 483, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 14 with value: -114.18213989573701. +[I 2025-12-17 13:28:30,375] Trial 23 finished with value: -581.9084321042735 and parameters: {'embedding_dim': 413, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 14 with value: -114.18213989573701. +[I 2025-12-17 13:28:59,414] Trial 24 finished with value: -193.8596057655352 and parameters: {'embedding_dim': 483, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 14 with value: -114.18213989573701. +[I 2025-12-17 13:29:35,688] Trial 25 finished with value: -359.86069182490303 and parameters: {'embedding_dim': 451, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 14 with value: -114.18213989573701. +[I 2025-12-17 13:30:06,715] Trial 26 finished with value: -25.247128265834668 and parameters: {'embedding_dim': 349, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 26 with value: -25.247128265834668. +[I 2025-12-17 13:30:41,621] Trial 27 finished with value: -643.8131460242248 and parameters: {'embedding_dim': 344, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 26 with value: -25.247128265834668. +[I 2025-12-17 13:31:30,926] Trial 28 finished with value: -1438.1681620629329 and parameters: {'embedding_dim': 324, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 26 with value: -25.247128265834668. +[I 2025-12-17 13:31:46,547] Trial 29 finished with value: -1365.13430212702 and parameters: {'embedding_dim': 391, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 26 with value: -25.247128265834668. +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_1_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_1_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_1_gwangju.csv: Class 0=6274 | Class 1=6730 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_1_gwangju.csv: Class 0=6274 | Class 1=6730 | Class 2=15692 + +Running ctgan_sample_7000_2.py... +[I 2025-12-17 13:32:19,553] A new study created in memory with name: no-name-25601cbd-7250-4c92-a123-50dcc5f7d683 +[I 2025-12-17 13:32:31,442] Trial 0 finished with value: -6.039771501998899 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -6.039771501998899. +[I 2025-12-17 13:32:46,223] Trial 1 finished with value: -28.87713880065418 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -6.039771501998899. +[I 2025-12-17 13:32:55,979] Trial 2 finished with value: -72.44888217454869 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -6.039771501998899. +[I 2025-12-17 13:33:20,096] Trial 3 finished with value: -179.89305825779442 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -6.039771501998899. +[I 2025-12-17 13:33:34,684] Trial 4 finished with value: -10.759608446555069 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -6.039771501998899. +[I 2025-12-17 13:33:49,445] Trial 5 finished with value: -4.2310053234764045 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 5 with value: -4.2310053234764045. +[I 2025-12-17 13:34:23,584] Trial 6 finished with value: -108.21700914636101 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -4.2310053234764045. +[I 2025-12-17 13:34:29,355] Trial 7 finished with value: -44.274290930611045 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -4.2310053234764045. +[I 2025-12-17 13:34:53,326] Trial 8 finished with value: -17.259332513132087 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -4.2310053234764045. +[I 2025-12-17 13:34:57,239] Trial 9 finished with value: -57.47352899473359 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -4.2310053234764045. +[I 2025-12-17 13:35:12,843] Trial 10 finished with value: -58.16585868062887 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 5 with value: -4.2310053234764045. +[I 2025-12-17 13:35:19,447] Trial 11 finished with value: -51.40285582273643 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -4.2310053234764045. +[I 2025-12-17 13:35:30,480] Trial 12 finished with value: -37.54709823983908 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -4.2310053234764045. +[I 2025-12-17 13:35:37,072] Trial 13 finished with value: -116.76055430171745 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -4.2310053234764045. +[I 2025-12-17 13:35:47,098] Trial 14 finished with value: -1.4231361318656623 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:36:04,648] Trial 15 finished with value: -63.96704293539972 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:36:18,076] Trial 16 finished with value: -46.67832124379861 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:36:41,167] Trial 17 finished with value: -16.81750503281018 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:36:47,751] Trial 18 finished with value: -42.31883073484536 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:36:53,543] Trial 19 finished with value: -22.527718628428726 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:37:07,052] Trial 20 finished with value: -16.816141762469385 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:37:17,107] Trial 21 finished with value: -289.8393897351886 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:37:27,187] Trial 22 finished with value: -55.27377466820539 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:37:37,356] Trial 23 finished with value: -87.49577069329787 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:37:43,931] Trial 24 finished with value: -28.190739598103068 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:38:06,926] Trial 25 finished with value: -7.201863551441156 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:38:20,476] Trial 26 finished with value: -60.87653749748941 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:38:30,542] Trial 27 finished with value: -12.45960578983072 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:38:34,438] Trial 28 finished with value: -25.761835491544936 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:38:57,602] Trial 29 finished with value: -146.07316272500933 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:39:12,329] Trial 30 finished with value: -97.27327375232647 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:39:35,173] Trial 31 finished with value: -11.881811672019083 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:39:58,663] Trial 32 finished with value: -12.447844351741777 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:40:21,745] Trial 33 finished with value: -10.155330178868486 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:40:53,024] Trial 34 finished with value: -84.37964327275387 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:41:16,473] Trial 35 finished with value: -83.59437924690266 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:41:24,187] Trial 36 finished with value: -20.056601635268528 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:41:47,256] Trial 37 finished with value: -67.46839622329819 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:41:57,606] Trial 38 finished with value: -17.36471022280484 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:42:20,680] Trial 39 finished with value: -4.20267062064582 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:42:24,629] Trial 40 finished with value: -2.100573223661184 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:42:28,569] Trial 41 finished with value: -284.8582872261464 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:42:32,467] Trial 42 finished with value: -296.86009874965424 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:42:36,360] Trial 43 finished with value: -49.19514050153556 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:42:40,480] Trial 44 finished with value: -103.45269268442587 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:42:44,500] Trial 45 finished with value: -27.306271756444218 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:42:51,102] Trial 46 finished with value: -14.894892998398117 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:43:14,013] Trial 47 finished with value: -27.9390190690054 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:43:20,557] Trial 48 finished with value: -47.219696829663704 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:43:43,395] Trial 49 finished with value: -138.76953780883784 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -1.4231361318656623. +[I 2025-12-17 13:43:53,584] A new study created in memory with name: no-name-e742f6c7-1b46-42b7-857c-8bee19f4141c +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 13:44:20,527] Trial 0 finished with value: -872.6802570982177 and parameters: {'embedding_dim': 420, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 0 with value: -872.6802570982177. +[I 2025-12-17 13:44:58,148] Trial 1 finished with value: -163.24123226592448 and parameters: {'embedding_dim': 395, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -163.24123226592448. +[I 2025-12-17 13:45:17,803] Trial 2 finished with value: -78.43872091984129 and parameters: {'embedding_dim': 157, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:45:48,719] Trial 3 finished with value: -242.24473002780516 and parameters: {'embedding_dim': 155, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:46:38,167] Trial 4 finished with value: -250.62275083564407 and parameters: {'embedding_dim': 276, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:47:11,290] Trial 5 finished with value: -195.61842650014626 and parameters: {'embedding_dim': 508, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:47:56,926] Trial 6 finished with value: -195.12640896342148 and parameters: {'embedding_dim': 357, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:48:28,225] Trial 7 finished with value: -170.71179599561387 and parameters: {'embedding_dim': 152, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:49:01,834] Trial 8 finished with value: -88.6639652742536 and parameters: {'embedding_dim': 233, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:50:26,866] Trial 9 finished with value: -254.5220049635309 and parameters: {'embedding_dim': 173, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:50:55,251] Trial 10 finished with value: -320.6257198636077 and parameters: {'embedding_dim': 274, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:51:13,928] Trial 11 finished with value: -399.95742362091045 and parameters: {'embedding_dim': 213, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:51:33,197] Trial 12 finished with value: -8805.55774673739 and parameters: {'embedding_dim': 239, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:52:22,875] Trial 13 finished with value: -181.30722543429133 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:52:41,816] Trial 14 finished with value: -540.5528874839849 and parameters: {'embedding_dim': 210, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:53:31,693] Trial 15 finished with value: -362.31790960660936 and parameters: {'embedding_dim': 277, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:54:08,674] Trial 16 finished with value: -354.135845797156 and parameters: {'embedding_dim': 337, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:54:42,341] Trial 17 finished with value: -381.9285065096834 and parameters: {'embedding_dim': 206, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:55:10,179] Trial 18 finished with value: -109.05685945553495 and parameters: {'embedding_dim': 248, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:56:17,352] Trial 19 finished with value: -203.3277211328641 and parameters: {'embedding_dim': 184, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:56:50,688] Trial 20 finished with value: -6063.120498692326 and parameters: {'embedding_dim': 236, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -78.43872091984129. +[I 2025-12-17 13:57:18,534] Trial 21 finished with value: -58.951125091600574 and parameters: {'embedding_dim': 255, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 21 with value: -58.951125091600574. +[I 2025-12-17 13:57:47,222] Trial 22 finished with value: -1070.9663262928852 and parameters: {'embedding_dim': 311, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 21 with value: -58.951125091600574. +[I 2025-12-17 13:58:06,535] Trial 23 finished with value: -834.1967796352857 and parameters: {'embedding_dim': 310, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 21 with value: -58.951125091600574. +[I 2025-12-17 13:58:35,608] Trial 24 finished with value: -226.10497794004206 and parameters: {'embedding_dim': 135, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 21 with value: -58.951125091600574. +[I 2025-12-17 13:58:54,315] Trial 25 finished with value: -404.9328128983784 and parameters: {'embedding_dim': 193, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 21 with value: -58.951125091600574. +[I 2025-12-17 13:59:22,926] Trial 26 finished with value: -2.9447075996645418 and parameters: {'embedding_dim': 254, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 26 with value: -2.9447075996645418. +[I 2025-12-17 14:00:02,632] Trial 27 finished with value: -78.28694125779285 and parameters: {'embedding_dim': 371, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 26 with value: -2.9447075996645418. +[I 2025-12-17 14:00:40,898] Trial 28 finished with value: -122.6904291256364 and parameters: {'embedding_dim': 378, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 26 with value: -2.9447075996645418. +[I 2025-12-17 14:01:06,012] Trial 29 finished with value: -87.71439227806947 and parameters: {'embedding_dim': 462, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 26 with value: -2.9447075996645418. +[I 2025-12-17 14:01:35,146] A new study created in memory with name: no-name-b5b3b5a6-06a7-4995-891c-9e7d3f061895 +[I 2025-12-17 14:01:38,399] Trial 0 finished with value: -0.30341578823867 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:01:43,235] Trial 1 finished with value: -12.110811194096508 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:01:46,406] Trial 2 finished with value: -44.44009833410004 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:01:51,871] Trial 3 finished with value: -17.2801259839506 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:01:58,911] Trial 4 finished with value: -0.8850278282119286 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:02:02,322] Trial 5 finished with value: -13.367560558321909 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:02:05,681] Trial 6 finished with value: -3.9083136439013098 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:02:09,218] Trial 7 finished with value: -171.62137049327916 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:02:16,521] Trial 8 finished with value: -26.110745075807 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:02:23,334] Trial 9 finished with value: -145.42532989135708 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:02:26,532] Trial 10 finished with value: -5.840587380856331 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:02:31,414] Trial 11 finished with value: -53.481369644082804 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:02:36,239] Trial 12 finished with value: -343.71619719099044 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:02:42,729] Trial 13 finished with value: -95.2782933573919 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:02:47,537] Trial 14 finished with value: -79.67198475026552 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:02:50,760] Trial 15 finished with value: -100.78686086702763 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:02:57,214] Trial 16 finished with value: -73.18386376175647 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:03:02,019] Trial 17 finished with value: -26.75879315007704 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:03:05,495] Trial 18 finished with value: -93.30353700604942 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:03:10,518] Trial 19 finished with value: -48.625142719196475 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:03:16,963] Trial 20 finished with value: -56.71988376189631 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:03:21,854] Trial 21 finished with value: -133.683452657111 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:03:25,420] Trial 22 finished with value: -132.81241238476184 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:03:28,718] Trial 23 finished with value: -113.38525924049172 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:03:32,076] Trial 24 finished with value: -337.21412601629703 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:03:35,473] Trial 25 finished with value: -172.8245381230863 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:03:40,468] Trial 26 finished with value: -1.9200563699810547 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:03:48,900] Trial 27 finished with value: -74.98004499786788 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:03:55,543] Trial 28 finished with value: -18.764131038927886 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:04:00,470] Trial 29 finished with value: -58.12737184202003 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:04:05,310] Trial 30 finished with value: -7.695447111839662 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:04:10,197] Trial 31 finished with value: -189.29438404392292 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:04:13,409] Trial 32 finished with value: -303.4010931916707 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.30341578823867. +[I 2025-12-17 14:04:16,853] Trial 33 finished with value: -0.030829043253997865 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:04:20,283] Trial 34 finished with value: -81.50543005344309 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:04:25,572] Trial 35 finished with value: -139.97862382968373 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:04:31,809] Trial 36 finished with value: -69.72999242739795 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:04:36,813] Trial 37 finished with value: -52.23516318877221 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:04:44,086] Trial 38 finished with value: -69.74413822087394 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:04:47,521] Trial 39 finished with value: -71.13481068643307 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:04:52,404] Trial 40 finished with value: -75.84577375745926 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:04:55,798] Trial 41 finished with value: -17.74938379560531 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:04:59,097] Trial 42 finished with value: -17.37696098367415 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:05:02,400] Trial 43 finished with value: -65.45568593862211 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:05:05,578] Trial 44 finished with value: -176.39682602407956 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:05:09,669] Trial 45 finished with value: -41.336477167011566 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:05:18,670] Trial 46 finished with value: -76.89188552021584 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:05:23,712] Trial 47 finished with value: -53.62613316029633 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:05:27,030] Trial 48 finished with value: -64.95804410833989 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:05:33,917] Trial 49 finished with value: -52.61933320226266 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 33 with value: -0.030829043253997865. +[I 2025-12-17 14:05:38,512] A new study created in memory with name: no-name-6725d502-25b6-46d6-a746-7945782ec1fa +[I 2025-12-17 14:05:51,913] Trial 0 finished with value: -250.11833346518802 and parameters: {'embedding_dim': 132, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -250.11833346518802. +[I 2025-12-17 14:06:37,535] Trial 1 finished with value: -596.7383578330042 and parameters: {'embedding_dim': 278, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -250.11833346518802. +[I 2025-12-17 14:06:53,089] Trial 2 finished with value: -986.4509429065641 and parameters: {'embedding_dim': 170, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 0 with value: -250.11833346518802. +[I 2025-12-17 14:07:12,884] Trial 3 finished with value: -568.7638830979699 and parameters: {'embedding_dim': 434, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -250.11833346518802. +[I 2025-12-17 14:08:13,508] Trial 4 finished with value: -419.6931055133325 and parameters: {'embedding_dim': 328, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -250.11833346518802. +[I 2025-12-17 14:08:33,356] Trial 5 finished with value: -225.69976367887594 and parameters: {'embedding_dim': 396, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -225.69976367887594. +[I 2025-12-17 14:08:54,564] Trial 6 finished with value: -391.0933148618638 and parameters: {'embedding_dim': 345, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -225.69976367887594. +[I 2025-12-17 14:09:55,105] Trial 7 finished with value: -335.6190087226484 and parameters: {'embedding_dim': 142, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 5 with value: -225.69976367887594. +[I 2025-12-17 14:10:06,578] Trial 8 finished with value: -577.5919726633979 and parameters: {'embedding_dim': 505, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 5 with value: -225.69976367887594. +[I 2025-12-17 14:10:17,649] Trial 9 finished with value: -5199.45769741414 and parameters: {'embedding_dim': 341, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 5 with value: -225.69976367887594. +[I 2025-12-17 14:10:54,375] Trial 10 finished with value: -102.31729532069738 and parameters: {'embedding_dim': 424, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -102.31729532069738. +[I 2025-12-17 14:11:31,946] Trial 11 finished with value: -657.7882691515532 and parameters: {'embedding_dim': 427, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -102.31729532069738. +[I 2025-12-17 14:12:14,855] Trial 12 finished with value: -226.51352238347783 and parameters: {'embedding_dim': 419, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -102.31729532069738. +[I 2025-12-17 14:12:50,898] Trial 13 finished with value: -151.7121846657423 and parameters: {'embedding_dim': 512, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -102.31729532069738. +[I 2025-12-17 14:13:05,766] Trial 14 finished with value: -858.8617939736623 and parameters: {'embedding_dim': 498, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 10 with value: -102.31729532069738. +[I 2025-12-17 14:13:41,557] Trial 15 finished with value: -199.5283487362176 and parameters: {'embedding_dim': 469, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -102.31729532069738. +[I 2025-12-17 14:14:11,749] Trial 16 finished with value: -63.719622692716285 and parameters: {'embedding_dim': 254, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -63.719622692716285. +[I 2025-12-17 14:14:41,390] Trial 17 finished with value: -69.94241260714703 and parameters: {'embedding_dim': 251, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -63.719622692716285. +[I 2025-12-17 14:15:12,390] Trial 18 finished with value: -262.1346139901135 and parameters: {'embedding_dim': 230, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -63.719622692716285. +[I 2025-12-17 14:15:35,681] Trial 19 finished with value: -165.56700567021824 and parameters: {'embedding_dim': 244, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 16 with value: -63.719622692716285. +[I 2025-12-17 14:15:51,008] Trial 20 finished with value: -228.6842509063712 and parameters: {'embedding_dim': 201, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 16 with value: -63.719622692716285. +[I 2025-12-17 14:16:21,402] Trial 21 finished with value: -104.8153160692727 and parameters: {'embedding_dim': 281, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -63.719622692716285. +[I 2025-12-17 14:16:49,072] Trial 22 finished with value: -167.43902442057788 and parameters: {'embedding_dim': 284, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -63.719622692716285. +[I 2025-12-17 14:17:17,885] Trial 23 finished with value: -197.0485274201696 and parameters: {'embedding_dim': 370, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -63.719622692716285. +[I 2025-12-17 14:17:56,701] Trial 24 finished with value: -61.14575361369437 and parameters: {'embedding_dim': 214, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 24 with value: -61.14575361369437. +[I 2025-12-17 14:18:27,210] Trial 25 finished with value: -79.33922270320255 and parameters: {'embedding_dim': 207, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 24 with value: -61.14575361369437. +[I 2025-12-17 14:19:03,445] Trial 26 finished with value: -613.9670529335856 and parameters: {'embedding_dim': 249, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -61.14575361369437. +[I 2025-12-17 14:19:38,521] Trial 27 finished with value: -483.1408211406212 and parameters: {'embedding_dim': 295, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 24 with value: -61.14575361369437. +[I 2025-12-17 14:20:07,151] Trial 28 finished with value: -41.30578185681668 and parameters: {'embedding_dim': 182, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 28 with value: -41.30578185681668. +[I 2025-12-17 14:20:28,312] Trial 29 finished with value: -107.06900305922073 and parameters: {'embedding_dim': 136, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 28 with value: -41.30578185681668. +[I 2025-12-17 14:20:56,523] A new study created in memory with name: no-name-b4948e45-101f-4c4d-946e-9aed2a879326 +[I 2025-12-17 14:21:01,580] Trial 0 finished with value: -15.639070818440524 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -15.639070818440524. +[I 2025-12-17 14:21:08,084] Trial 1 finished with value: -26.37640675347026 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -15.639070818440524. +[I 2025-12-17 14:21:14,893] Trial 2 finished with value: -86.87005461685197 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -15.639070818440524. +[I 2025-12-17 14:21:20,266] Trial 3 finished with value: -16.27547365314236 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -15.639070818440524. +[I 2025-12-17 14:21:25,168] Trial 4 finished with value: -51.200307728193216 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -15.639070818440524. +[I 2025-12-17 14:21:30,166] Trial 5 finished with value: -23.46244885374338 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -15.639070818440524. +[I 2025-12-17 14:21:36,518] Trial 6 finished with value: -24.821670902422664 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -15.639070818440524. +[I 2025-12-17 14:21:40,199] Trial 7 finished with value: -13.39424955035504 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -13.39424955035504. +[I 2025-12-17 14:21:43,680] Trial 8 finished with value: -80.21710125688647 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -13.39424955035504. +[I 2025-12-17 14:21:49,009] Trial 9 finished with value: -15.976906073538409 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -13.39424955035504. +[I 2025-12-17 14:21:52,576] Trial 10 finished with value: -15.270386310236287 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -13.39424955035504. +[I 2025-12-17 14:21:56,025] Trial 11 finished with value: -156.95456736800452 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -13.39424955035504. +[I 2025-12-17 14:21:59,511] Trial 12 finished with value: -478.3178827964135 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -13.39424955035504. +[I 2025-12-17 14:22:03,060] Trial 13 finished with value: -87.39237394327597 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -13.39424955035504. +[I 2025-12-17 14:22:06,665] Trial 14 finished with value: -118.22432375025497 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -13.39424955035504. +[I 2025-12-17 14:22:10,341] Trial 15 finished with value: -54.67746304568389 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -13.39424955035504. +[I 2025-12-17 14:22:13,629] Trial 16 finished with value: -157.53939210944236 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 7 with value: -13.39424955035504. +[I 2025-12-17 14:22:17,080] Trial 17 finished with value: -53.87937610441519 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -13.39424955035504. +[I 2025-12-17 14:22:20,661] Trial 18 finished with value: -44.07630202685088 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -13.39424955035504. +[I 2025-12-17 14:22:25,667] Trial 19 finished with value: -40.802573727082105 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -13.39424955035504. +[I 2025-12-17 14:22:29,137] Trial 20 finished with value: -7.290011995965833 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 20 with value: -7.290011995965833. +[I 2025-12-17 14:22:32,586] Trial 21 finished with value: -5.329193999007046 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:22:36,047] Trial 22 finished with value: -123.68154350079847 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:22:39,526] Trial 23 finished with value: -291.69475645445726 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:22:42,986] Trial 24 finished with value: -123.7672973827118 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:22:48,336] Trial 25 finished with value: -211.59651578739297 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:22:51,794] Trial 26 finished with value: -239.61061123414123 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:22:55,266] Trial 27 finished with value: -275.2737717228309 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:23:00,280] Trial 28 finished with value: -25.602023876952426 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:23:05,149] Trial 29 finished with value: -258.16242138306893 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:23:08,451] Trial 30 finished with value: -39.18674940495131 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:23:11,956] Trial 31 finished with value: -71.29513837005382 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:23:15,442] Trial 32 finished with value: -22.65012591964783 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:23:18,908] Trial 33 finished with value: -72.0128739115105 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:23:26,163] Trial 34 finished with value: -79.67532484549363 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:23:29,637] Trial 35 finished with value: -12.197547643270262 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:23:32,936] Trial 36 finished with value: -21.390056303411974 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:23:37,855] Trial 37 finished with value: -48.33534326656006 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:23:45,292] Trial 38 finished with value: -65.56146489635917 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:23:48,725] Trial 39 finished with value: -56.56858598200838 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:23:54,135] Trial 40 finished with value: -81.87374229561942 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:23:57,868] Trial 41 finished with value: -46.97385323241646 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:24:01,358] Trial 42 finished with value: -16.978522870860452 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:24:04,873] Trial 43 finished with value: -73.28482040505975 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:24:08,351] Trial 44 finished with value: -36.60155614106208 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:24:11,851] Trial 45 finished with value: -42.42474227807317 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:24:15,543] Trial 46 finished with value: -78.49797935580219 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:24:19,162] Trial 47 finished with value: -5.412718058463285 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:24:22,511] Trial 48 finished with value: -218.92699427242883 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:24:26,037] Trial 49 finished with value: -70.13503067489883 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -5.329193999007046. +[I 2025-12-17 14:24:29,796] A new study created in memory with name: no-name-7de0db63-a0e6-418d-899f-bae5e85b806a +[I 2025-12-17 14:24:37,529] Trial 0 finished with value: -1012.2225997933912 and parameters: {'embedding_dim': 363, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -1012.2225997933912. +[I 2025-12-17 14:24:55,464] Trial 1 finished with value: -959.0787752110878 and parameters: {'embedding_dim': 447, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -959.0787752110878. +[I 2025-12-17 14:25:04,621] Trial 2 finished with value: -3765.631031504158 and parameters: {'embedding_dim': 396, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -959.0787752110878. +[I 2025-12-17 14:25:39,521] Trial 3 finished with value: -2095.199291790879 and parameters: {'embedding_dim': 358, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -959.0787752110878. +[I 2025-12-17 14:26:15,000] Trial 4 finished with value: -389.81463924694185 and parameters: {'embedding_dim': 446, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 4 with value: -389.81463924694185. +[I 2025-12-17 14:26:44,966] Trial 5 finished with value: -649.3554222801743 and parameters: {'embedding_dim': 492, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -389.81463924694185. +[I 2025-12-17 14:27:02,677] Trial 6 finished with value: -1584.6329353721394 and parameters: {'embedding_dim': 158, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -389.81463924694185. +[I 2025-12-17 14:27:17,597] Trial 7 finished with value: -607.6626235889372 and parameters: {'embedding_dim': 246, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 4 with value: -389.81463924694185. +[I 2025-12-17 14:27:29,181] Trial 8 finished with value: -716.5642001836563 and parameters: {'embedding_dim': 419, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 4 with value: -389.81463924694185. +[I 2025-12-17 14:27:36,796] Trial 9 finished with value: -2625.116739615375 and parameters: {'embedding_dim': 263, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 4 with value: -389.81463924694185. +[I 2025-12-17 14:28:00,634] Trial 10 finished with value: -1385.5877522320093 and parameters: {'embedding_dim': 488, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -389.81463924694185. +[I 2025-12-17 14:28:13,833] Trial 11 finished with value: -468.8282957001685 and parameters: {'embedding_dim': 261, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 4 with value: -389.81463924694185. +[I 2025-12-17 14:28:42,961] Trial 12 finished with value: -438.9197500746797 and parameters: {'embedding_dim': 273, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -389.81463924694185. +[I 2025-12-17 14:29:11,934] Trial 13 finished with value: -620.8150812902904 and parameters: {'embedding_dim': 306, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -389.81463924694185. +[I 2025-12-17 14:29:41,290] Trial 14 finished with value: -176.0501896478027 and parameters: {'embedding_dim': 165, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 14 with value: -176.0501896478027. +[I 2025-12-17 14:30:11,124] Trial 15 finished with value: -130.99143578910756 and parameters: {'embedding_dim': 133, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:30:35,484] Trial 16 finished with value: -1146.5402923489978 and parameters: {'embedding_dim': 141, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:30:53,369] Trial 17 finished with value: -465.74229382733046 and parameters: {'embedding_dim': 191, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:31:22,059] Trial 18 finished with value: -224.9042840347794 and parameters: {'embedding_dim': 198, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:31:39,640] Trial 19 finished with value: -1283.3203983867845 and parameters: {'embedding_dim': 129, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:32:03,467] Trial 20 finished with value: -459.15212867811533 and parameters: {'embedding_dim': 200, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:32:32,441] Trial 21 finished with value: -205.4527187571726 and parameters: {'embedding_dim': 197, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:33:01,698] Trial 22 finished with value: -1383.6381419233703 and parameters: {'embedding_dim': 168, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:33:31,198] Trial 23 finished with value: -146.09870889424326 and parameters: {'embedding_dim': 228, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:33:59,939] Trial 24 finished with value: -335.9457654396321 and parameters: {'embedding_dim': 232, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:34:23,782] Trial 25 finished with value: -512.2763530111807 and parameters: {'embedding_dim': 222, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:34:47,381] Trial 26 finished with value: -619.1412507737698 and parameters: {'embedding_dim': 167, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:35:16,997] Trial 27 finished with value: -342.5802730433215 and parameters: {'embedding_dim': 302, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:35:35,955] Trial 28 finished with value: -517.962895982157 and parameters: {'embedding_dim': 160, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:35:49,145] Trial 29 finished with value: -596.7626213745635 and parameters: {'embedding_dim': 348, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 15 with value: -130.99143578910756. +[I 2025-12-17 14:36:18,850] A new study created in memory with name: no-name-3b58680c-b8b4-41c7-af5d-9ccf81b65f93 +[I 2025-12-17 14:36:22,224] Trial 0 finished with value: -312.9851780031683 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -312.9851780031683. +[I 2025-12-17 14:36:29,283] Trial 1 finished with value: -29.78665838998119 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -29.78665838998119. +[I 2025-12-17 14:36:34,029] Trial 2 finished with value: -10.18481756096566 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:36:38,816] Trial 3 finished with value: -62.041617961962025 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:36:45,892] Trial 4 finished with value: -72.42009598356574 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:36:49,114] Trial 5 finished with value: -114.09798269216232 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:36:55,544] Trial 6 finished with value: -20.46540399321287 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:37:00,390] Trial 7 finished with value: -28.35873672214006 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:37:07,567] Trial 8 finished with value: -15.7706564276981 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:37:10,799] Trial 9 finished with value: -30.153159585948593 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:37:15,632] Trial 10 finished with value: -74.7352237972808 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:37:21,068] Trial 11 finished with value: -62.05308828367134 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:37:27,438] Trial 12 finished with value: -260.5441830778105 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:37:32,674] Trial 13 finished with value: -32.431904427971716 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:37:39,273] Trial 14 finished with value: -64.09673679960179 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:37:44,036] Trial 15 finished with value: -42.83728311779916 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:37:51,088] Trial 16 finished with value: -48.621218072901996 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:37:54,219] Trial 17 finished with value: -53.4059030316773 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:37:59,426] Trial 18 finished with value: -61.11705350074029 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:38:06,077] Trial 19 finished with value: -14.079387445558583 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -10.18481756096566. +[I 2025-12-17 14:38:11,116] Trial 20 finished with value: -0.537647277081665 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:38:16,077] Trial 21 finished with value: -58.64767469556867 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:38:21,040] Trial 22 finished with value: -21.22341952201368 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:38:26,012] Trial 23 finished with value: -49.75770503355768 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:38:29,246] Trial 24 finished with value: -86.4421146739201 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:38:34,217] Trial 25 finished with value: -90.2844608823995 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:38:39,148] Trial 26 finished with value: -95.77286248555504 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:38:45,804] Trial 27 finished with value: -97.38912533528615 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:38:52,478] Trial 28 finished with value: -81.05047195290473 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:38:55,679] Trial 29 finished with value: -117.60077158958424 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:39:00,633] Trial 30 finished with value: -213.71049422294254 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:39:07,687] Trial 31 finished with value: -13.43814930813372 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:39:14,880] Trial 32 finished with value: -3.639792032929612 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:39:21,993] Trial 33 finished with value: -20.53320527136011 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:39:29,063] Trial 34 finished with value: -9.177965735898642 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:39:34,290] Trial 35 finished with value: -124.60401316205751 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:39:41,313] Trial 36 finished with value: -1.0526388648146656 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:39:48,530] Trial 37 finished with value: -30.346257397277558 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:39:55,682] Trial 38 finished with value: -26.056969663860194 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:40:02,767] Trial 39 finished with value: -15.215978240496675 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:40:09,866] Trial 40 finished with value: -31.00756425170437 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:40:16,948] Trial 41 finished with value: -41.86748397130763 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:40:21,693] Trial 42 finished with value: -25.666333650074655 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:40:29,019] Trial 43 finished with value: -143.8454161736745 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:40:33,839] Trial 44 finished with value: -39.27439317518788 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:40:40,913] Trial 45 finished with value: -220.45718799518824 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:40:46,131] Trial 46 finished with value: -55.17304861020244 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:40:52,572] Trial 47 finished with value: -33.46266729116897 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:40:58,168] Trial 48 finished with value: -31.999285636647564 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:41:04,560] Trial 49 finished with value: -265.55986359834793 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.537647277081665. +[I 2025-12-17 14:41:09,645] A new study created in memory with name: no-name-5bef535e-67c7-411f-a1bd-45bf596ce621 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_2_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_2_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_2_incheon.csv: Class 0=6745 | Class 1=6868 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_2_incheon.csv: Class 0=6745 | Class 1=6868 | Class 2=14637 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_2_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_2_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_2_seoul.csv: Class 0=6352 | Class 1=6766 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_2_seoul.csv: Class 0=6352 | Class 1=6766 | Class 2=15823 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_2_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_2_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_2_busan.csv: Class 0=6372 | Class 1=6419 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_2_busan.csv: Class 0=6372 | Class 1=6419 | Class 2=16457 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 14:41:17,177] Trial 0 finished with value: -6643.811093609529 and parameters: {'embedding_dim': 460, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -6643.811093609529. +[I 2025-12-17 14:41:24,070] Trial 1 finished with value: -1942.3988790204517 and parameters: {'embedding_dim': 474, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -1942.3988790204517. +[I 2025-12-17 14:41:31,018] Trial 2 finished with value: -1923.2095518666438 and parameters: {'embedding_dim': 281, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -1923.2095518666438. +[I 2025-12-17 14:41:35,910] Trial 3 finished with value: -6267.085940699357 and parameters: {'embedding_dim': 261, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 2 with value: -1923.2095518666438. +[I 2025-12-17 14:41:50,063] Trial 4 finished with value: -858.5608866712923 and parameters: {'embedding_dim': 375, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 4 with value: -858.5608866712923. +[I 2025-12-17 14:41:57,203] Trial 5 finished with value: -607.5564163010644 and parameters: {'embedding_dim': 396, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 5 with value: -607.5564163010644. +[I 2025-12-17 14:42:02,032] Trial 6 finished with value: -2299.3595498169466 and parameters: {'embedding_dim': 296, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 5 with value: -607.5564163010644. +[I 2025-12-17 14:42:15,712] Trial 7 finished with value: -206.2861220485283 and parameters: {'embedding_dim': 163, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 7 with value: -206.2861220485283. +[I 2025-12-17 14:42:34,260] Trial 8 finished with value: -920.7815661457473 and parameters: {'embedding_dim': 507, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 7 with value: -206.2861220485283. +[I 2025-12-17 14:42:38,810] Trial 9 finished with value: -435.18035983880156 and parameters: {'embedding_dim': 151, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 7 with value: -206.2861220485283. +[I 2025-12-17 14:42:55,167] Trial 10 finished with value: -250.83180579594782 and parameters: {'embedding_dim': 138, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 7 with value: -206.2861220485283. +[I 2025-12-17 14:43:11,576] Trial 11 finished with value: -74.971086553062 and parameters: {'embedding_dim': 146, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:43:25,249] Trial 12 finished with value: -444.3509467497749 and parameters: {'embedding_dim': 214, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:43:38,776] Trial 13 finished with value: -367.48621366570256 and parameters: {'embedding_dim': 202, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:44:01,232] Trial 14 finished with value: -385.5657141253515 and parameters: {'embedding_dim': 196, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:44:12,149] Trial 15 finished with value: -238.39858278769333 and parameters: {'embedding_dim': 133, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:44:26,042] Trial 16 finished with value: -366.56502351924047 and parameters: {'embedding_dim': 244, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:44:48,474] Trial 17 finished with value: -300.63107794572477 and parameters: {'embedding_dim': 170, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:44:59,283] Trial 18 finished with value: -710.3697058661833 and parameters: {'embedding_dim': 335, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:45:17,803] Trial 19 finished with value: -170.27696616575716 and parameters: {'embedding_dim': 228, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:45:33,390] Trial 20 finished with value: -360.3607412222356 and parameters: {'embedding_dim': 234, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:45:52,500] Trial 21 finished with value: -161.2890763508171 and parameters: {'embedding_dim': 174, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:46:08,879] Trial 22 finished with value: -201.34702396725564 and parameters: {'embedding_dim': 180, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:46:25,721] Trial 23 finished with value: -376.07614280335713 and parameters: {'embedding_dim': 218, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:46:40,917] Trial 24 finished with value: -269.0229881247558 and parameters: {'embedding_dim': 323, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:46:57,353] Trial 25 finished with value: -183.03485016385022 and parameters: {'embedding_dim': 184, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:47:10,936] Trial 26 finished with value: -402.3600664978427 and parameters: {'embedding_dim': 250, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:47:24,636] Trial 27 finished with value: -616.0353040671113 and parameters: {'embedding_dim': 132, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:47:48,676] Trial 28 finished with value: -143.5551241359208 and parameters: {'embedding_dim': 282, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:48:09,474] Trial 29 finished with value: -367.1697832529961 and parameters: {'embedding_dim': 284, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -74.971086553062. +[I 2025-12-17 14:48:26,317] A new study created in memory with name: no-name-8a5ea139-6006-4b19-b6c1-4d56b19c05e5 +[I 2025-12-17 14:48:32,252] Trial 0 finished with value: -55.26023001532667 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -55.26023001532667. +[I 2025-12-17 14:48:35,711] Trial 1 finished with value: -45.81516160449396 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -45.81516160449396. +[I 2025-12-17 14:48:41,323] Trial 2 finished with value: -25.257571187540947 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -25.257571187540947. +[I 2025-12-17 14:48:46,230] Trial 3 finished with value: -83.37408025346687 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -25.257571187540947. +[I 2025-12-17 14:48:53,519] Trial 4 finished with value: -77.83554586380623 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -25.257571187540947. +[I 2025-12-17 14:49:00,713] Trial 5 finished with value: -111.45111228036157 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -25.257571187540947. +[I 2025-12-17 14:49:05,936] Trial 6 finished with value: -247.25956087043664 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -25.257571187540947. +[I 2025-12-17 14:49:09,612] Trial 7 finished with value: -78.01896363811781 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -25.257571187540947. +[I 2025-12-17 14:49:16,481] Trial 8 finished with value: -25.187600871854848 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -25.187600871854848. +[I 2025-12-17 14:49:22,073] Trial 9 finished with value: -322.6578342541041 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 8 with value: -25.187600871854848. +[I 2025-12-17 14:49:28,975] Trial 10 finished with value: -38.40177287621369 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -25.187600871854848. +[I 2025-12-17 14:49:35,816] Trial 11 finished with value: -322.75907145671584 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -25.187600871854848. +[I 2025-12-17 14:49:43,136] Trial 12 finished with value: -104.47816558565881 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -25.187600871854848. +[I 2025-12-17 14:49:48,237] Trial 13 finished with value: -31.91670482948667 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -25.187600871854848. +[I 2025-12-17 14:49:53,190] Trial 14 finished with value: -32.11117768119579 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -25.187600871854848. +[I 2025-12-17 14:50:00,478] Trial 15 finished with value: -25.48765938770018 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -25.187600871854848. +[I 2025-12-17 14:50:05,602] Trial 16 finished with value: -36.64143557210289 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -25.187600871854848. +[I 2025-12-17 14:50:12,908] Trial 17 finished with value: -40.53398981653572 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -25.187600871854848. +[I 2025-12-17 14:50:18,043] Trial 18 finished with value: -97.11852425413718 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -25.187600871854848. +[I 2025-12-17 14:50:22,992] Trial 19 finished with value: -2.6908663531063066 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:50:31,689] Trial 20 finished with value: -120.5214531064602 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:50:36,552] Trial 21 finished with value: -35.917508322506286 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:50:41,504] Trial 22 finished with value: -47.531233098823584 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:50:46,466] Trial 23 finished with value: -142.87879895932477 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:50:51,576] Trial 24 finished with value: -70.96859662774554 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:50:54,890] Trial 25 finished with value: -198.96086332630563 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:51:02,152] Trial 26 finished with value: -98.31159579358334 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:51:07,100] Trial 27 finished with value: -120.80182468581768 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:51:14,413] Trial 28 finished with value: -62.94768382648125 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:51:17,815] Trial 29 finished with value: -778.4988283097321 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:51:23,371] Trial 30 finished with value: -102.59284486623999 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:51:32,867] Trial 31 finished with value: -47.95968515613455 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:51:40,181] Trial 32 finished with value: -21.19239232422766 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:51:47,490] Trial 33 finished with value: -20.905905995737832 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:51:54,796] Trial 34 finished with value: -125.73818022732847 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -2.6908663531063066. +[I 2025-12-17 14:52:02,085] Trial 35 finished with value: -1.1656918582395654 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:52:09,395] Trial 36 finished with value: -173.5839782742025 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:52:16,679] Trial 37 finished with value: -16.85995625055659 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:52:24,040] Trial 38 finished with value: -18.951745643866847 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:52:31,333] Trial 39 finished with value: -113.04485780805355 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:52:40,552] Trial 40 finished with value: -10.316705810437021 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:52:47,887] Trial 41 finished with value: -67.11849218947151 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:52:55,263] Trial 42 finished with value: -27.854200783553633 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:53:02,534] Trial 43 finished with value: -58.02588521158401 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:53:09,834] Trial 44 finished with value: -10.824922542005154 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:53:17,680] Trial 45 finished with value: -234.89896782798036 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:53:24,229] Trial 46 finished with value: -47.9552348803429 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:53:31,628] Trial 47 finished with value: -16.735107038622345 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:53:38,913] Trial 48 finished with value: -71.28572750724638 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:53:44,343] Trial 49 finished with value: -114.86256382731526 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -1.1656918582395654. +[I 2025-12-17 14:53:51,744] A new study created in memory with name: no-name-d96c9895-7e64-4842-a42d-460b74c4cad9 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_2_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_2_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_2_daegu.csv: Class 0=6904 | Class 1=6500 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_2_daegu.csv: Class 0=6904 | Class 1=6500 | Class 2=16803 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 14:54:16,064] Trial 0 finished with value: -568.7127550900086 and parameters: {'embedding_dim': 162, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -568.7127550900086. +[I 2025-12-17 14:54:24,742] Trial 1 finished with value: -3480.086711469972 and parameters: {'embedding_dim': 339, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -568.7127550900086. +[I 2025-12-17 14:55:11,216] Trial 2 finished with value: -543.8006302591862 and parameters: {'embedding_dim': 421, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -543.8006302591862. +[I 2025-12-17 14:55:26,049] Trial 3 finished with value: -8495.287364581616 and parameters: {'embedding_dim': 397, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 2 with value: -543.8006302591862. +[I 2025-12-17 14:56:07,749] Trial 4 finished with value: -321.8509092451828 and parameters: {'embedding_dim': 359, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 4 with value: -321.8509092451828. +[I 2025-12-17 14:56:30,823] Trial 5 finished with value: -601.8079627144277 and parameters: {'embedding_dim': 151, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 4 with value: -321.8509092451828. +[I 2025-12-17 14:57:17,601] Trial 6 finished with value: -601.3833385658722 and parameters: {'embedding_dim': 412, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -321.8509092451828. +[I 2025-12-17 14:57:40,869] Trial 7 finished with value: -105.81036005415939 and parameters: {'embedding_dim': 467, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -105.81036005415939. +[I 2025-12-17 14:58:26,478] Trial 8 finished with value: -862.7762899598871 and parameters: {'embedding_dim': 204, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -105.81036005415939. +[I 2025-12-17 14:58:37,881] Trial 9 finished with value: -549.1908352795303 and parameters: {'embedding_dim': 371, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 7 with value: -105.81036005415939. +[I 2025-12-17 14:59:38,301] Trial 10 finished with value: -578.3898491719544 and parameters: {'embedding_dim': 501, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 7 with value: -105.81036005415939. +[I 2025-12-17 15:00:21,971] Trial 11 finished with value: -307.94416693867686 and parameters: {'embedding_dim': 263, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 7 with value: -105.81036005415939. +[I 2025-12-17 15:00:59,848] Trial 12 finished with value: -813.0850415878268 and parameters: {'embedding_dim': 262, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 7 with value: -105.81036005415939. +[I 2025-12-17 15:01:33,937] Trial 13 finished with value: -161.66253270691786 and parameters: {'embedding_dim': 276, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -105.81036005415939. +[I 2025-12-17 15:02:08,114] Trial 14 finished with value: -1.999833889758735 and parameters: {'embedding_dim': 507, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:02:34,839] Trial 15 finished with value: -673.4536368761788 and parameters: {'embedding_dim': 512, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:03:08,935] Trial 16 finished with value: -4.109347892284179 and parameters: {'embedding_dim': 461, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:03:46,433] Trial 17 finished with value: -1070.2236407154583 and parameters: {'embedding_dim': 452, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:04:34,527] Trial 18 finished with value: -170.76742435391415 and parameters: {'embedding_dim': 460, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:05:08,610] Trial 19 finished with value: -20.39810782412804 and parameters: {'embedding_dim': 485, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:05:24,938] Trial 20 finished with value: -299.5099301889373 and parameters: {'embedding_dim': 439, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:06:02,586] Trial 21 finished with value: -269.832958610828 and parameters: {'embedding_dim': 487, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:06:38,252] Trial 22 finished with value: -186.96582939735737 and parameters: {'embedding_dim': 510, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:07:13,576] Trial 23 finished with value: -21.17464990974954 and parameters: {'embedding_dim': 478, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:07:37,142] Trial 24 finished with value: -73.14005491413658 and parameters: {'embedding_dim': 397, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:08:12,133] Trial 25 finished with value: -576.1548000754358 and parameters: {'embedding_dim': 432, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:09:01,775] Trial 26 finished with value: -2226.45003571342 and parameters: {'embedding_dim': 299, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:09:38,908] Trial 27 finished with value: -1853.2751843466547 and parameters: {'embedding_dim': 475, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:09:51,738] Trial 28 finished with value: -525.1912529347928 and parameters: {'embedding_dim': 376, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:10:39,884] Trial 29 finished with value: -767.6516926936382 and parameters: {'embedding_dim': 445, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -1.999833889758735. +[I 2025-12-17 15:11:17,213] A new study created in memory with name: no-name-68a8d683-c789-4fa7-bcfd-c1d2d36571aa +[I 2025-12-17 15:11:20,636] Trial 0 finished with value: -88.34374594910767 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -88.34374594910767. +[I 2025-12-17 15:11:25,903] Trial 1 finished with value: -103.69668366420112 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -88.34374594910767. +[I 2025-12-17 15:11:29,308] Trial 2 finished with value: -11.501840573461147 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -11.501840573461147. +[I 2025-12-17 15:11:32,626] Trial 3 finished with value: -267.57943444903225 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -11.501840573461147. +[I 2025-12-17 15:11:37,609] Trial 4 finished with value: -74.94788684320176 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -11.501840573461147. +[I 2025-12-17 15:11:40,839] Trial 5 finished with value: -30.046619566074078 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -11.501840573461147. +[I 2025-12-17 15:11:44,231] Trial 6 finished with value: -313.58428790924467 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -11.501840573461147. +[I 2025-12-17 15:11:47,532] Trial 7 finished with value: -243.6551025473574 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -11.501840573461147. +[I 2025-12-17 15:11:50,919] Trial 8 finished with value: -125.63405101557859 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -11.501840573461147. +[I 2025-12-17 15:11:54,157] Trial 9 finished with value: -116.95999631818813 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -11.501840573461147. +[I 2025-12-17 15:12:00,572] Trial 10 finished with value: -102.04890966912227 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -11.501840573461147. +[I 2025-12-17 15:12:05,355] Trial 11 finished with value: -150.83121199404238 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -11.501840573461147. +[I 2025-12-17 15:12:12,519] Trial 12 finished with value: -58.94523851576544 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -11.501840573461147. +[I 2025-12-17 15:12:17,469] Trial 13 finished with value: -63.33338481852885 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -11.501840573461147. +[I 2025-12-17 15:12:20,625] Trial 14 finished with value: -48.40062298731413 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -11.501840573461147. +[I 2025-12-17 15:12:25,868] Trial 15 finished with value: -8.156439625871473 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:12:33,004] Trial 16 finished with value: -145.57316762314068 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:12:38,282] Trial 17 finished with value: -93.47519042357462 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:12:45,439] Trial 18 finished with value: -72.25231487274709 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:12:50,689] Trial 19 finished with value: -42.743248298799955 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:12:55,982] Trial 20 finished with value: -84.98172272138333 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:12:59,236] Trial 21 finished with value: -89.33398718360431 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:13:02,473] Trial 22 finished with value: -40.1413657526568 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:13:05,629] Trial 23 finished with value: -137.03101186886883 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:13:10,877] Trial 24 finished with value: -15.570941881148276 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:13:16,146] Trial 25 finished with value: -18.905284407962938 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:13:21,430] Trial 26 finished with value: -186.02702152355127 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:13:28,596] Trial 27 finished with value: -69.9492389877989 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:13:34,002] Trial 28 finished with value: -86.86045195789517 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:13:39,254] Trial 29 finished with value: -68.42350805366499 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:13:46,378] Trial 30 finished with value: -17.338959407454116 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:13:53,496] Trial 31 finished with value: -26.845858822580364 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:14:00,592] Trial 32 finished with value: -28.845274897502126 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:14:05,897] Trial 33 finished with value: -21.32005370630816 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:14:13,039] Trial 34 finished with value: -43.76677496871775 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -8.156439625871473. +[I 2025-12-17 15:14:18,287] Trial 35 finished with value: -2.3251571916305456 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -2.3251571916305456. +[I 2025-12-17 15:14:23,588] Trial 36 finished with value: -22.198661884775035 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -2.3251571916305456. +[I 2025-12-17 15:14:28,952] Trial 37 finished with value: -158.18609250527797 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -2.3251571916305456. +[I 2025-12-17 15:14:33,842] Trial 38 finished with value: -265.5647402524756 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 35 with value: -2.3251571916305456. +[I 2025-12-17 15:14:39,142] Trial 39 finished with value: -44.69348921627205 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -2.3251571916305456. +[I 2025-12-17 15:14:42,537] Trial 40 finished with value: -19.41869248979269 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 35 with value: -2.3251571916305456. +[I 2025-12-17 15:14:47,801] Trial 41 finished with value: -64.06014216859705 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -2.3251571916305456. +[I 2025-12-17 15:14:53,044] Trial 42 finished with value: -65.33790735539822 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -2.3251571916305456. +[I 2025-12-17 15:15:00,246] Trial 43 finished with value: -9.32108868048632 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -2.3251571916305456. +[I 2025-12-17 15:15:05,593] Trial 44 finished with value: -37.85794344471672 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -2.3251571916305456. +[I 2025-12-17 15:15:10,940] Trial 45 finished with value: -0.8541462592401081 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 45 with value: -0.8541462592401081. +[I 2025-12-17 15:15:14,182] Trial 46 finished with value: -271.7780906864045 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 45 with value: -0.8541462592401081. +[I 2025-12-17 15:15:21,325] Trial 47 finished with value: -51.89669872370273 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 45 with value: -0.8541462592401081. +[I 2025-12-17 15:15:24,566] Trial 48 finished with value: -102.00197705656805 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 45 with value: -0.8541462592401081. +[I 2025-12-17 15:15:29,829] Trial 49 finished with value: -160.47101733518275 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 45 with value: -0.8541462592401081. +[I 2025-12-17 15:15:35,204] A new study created in memory with name: no-name-6801cfb1-9e80-46b5-9179-8c64129733fe +[I 2025-12-17 15:15:43,106] Trial 0 finished with value: -4819.273858766554 and parameters: {'embedding_dim': 193, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -4819.273858766554. +[I 2025-12-17 15:16:24,375] Trial 1 finished with value: -763.0481454867564 and parameters: {'embedding_dim': 471, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -763.0481454867564. +[I 2025-12-17 15:17:32,449] Trial 2 finished with value: -357.03511434581276 and parameters: {'embedding_dim': 271, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -357.03511434581276. +[I 2025-12-17 15:18:14,453] Trial 3 finished with value: -1570.6707186294423 and parameters: {'embedding_dim': 209, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 2 with value: -357.03511434581276. +[I 2025-12-17 15:18:34,869] Trial 4 finished with value: -973.0569515557154 and parameters: {'embedding_dim': 456, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -357.03511434581276. +[I 2025-12-17 15:18:43,544] Trial 5 finished with value: -3019.927321849143 and parameters: {'embedding_dim': 156, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -357.03511434581276. +[I 2025-12-17 15:19:11,489] Trial 6 finished with value: -434.31833147749563 and parameters: {'embedding_dim': 361, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -357.03511434581276. +[I 2025-12-17 15:19:39,591] Trial 7 finished with value: -520.4178005554261 and parameters: {'embedding_dim': 506, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -357.03511434581276. +[I 2025-12-17 15:20:01,272] Trial 8 finished with value: -2659.203760256683 and parameters: {'embedding_dim': 355, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -357.03511434581276. +[I 2025-12-17 15:20:59,425] Trial 9 finished with value: -110.65633198951686 and parameters: {'embedding_dim': 296, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -110.65633198951686. +[I 2025-12-17 15:21:56,909] Trial 10 finished with value: -885.7011315658092 and parameters: {'embedding_dim': 274, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -110.65633198951686. +[I 2025-12-17 15:22:54,176] Trial 11 finished with value: -621.0262147472042 and parameters: {'embedding_dim': 290, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -110.65633198951686. +[I 2025-12-17 15:23:54,596] Trial 12 finished with value: -343.8498204188784 and parameters: {'embedding_dim': 252, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -110.65633198951686. +[I 2025-12-17 15:24:51,172] Trial 13 finished with value: -399.70688880350593 and parameters: {'embedding_dim': 390, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -110.65633198951686. +[I 2025-12-17 15:25:52,083] Trial 14 finished with value: -97.06409302558119 and parameters: {'embedding_dim': 220, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 14 with value: -97.06409302558119. +[I 2025-12-17 15:26:40,484] Trial 15 finished with value: -375.09079419717193 and parameters: {'embedding_dim': 128, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -97.06409302558119. +[I 2025-12-17 15:27:15,031] Trial 16 finished with value: -35.47502814726607 and parameters: {'embedding_dim': 210, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 16 with value: -35.47502814726607. +[I 2025-12-17 15:27:52,018] Trial 17 finished with value: -34.56043983913314 and parameters: {'embedding_dim': 220, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 17 with value: -34.56043983913314. +[I 2025-12-17 15:28:27,900] Trial 18 finished with value: -29.666014119761435 and parameters: {'embedding_dim': 172, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -29.666014119761435. +[I 2025-12-17 15:29:05,270] Trial 19 finished with value: -111.21009768415036 and parameters: {'embedding_dim': 172, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -29.666014119761435. +[I 2025-12-17 15:29:19,050] Trial 20 finished with value: -345.4011301284093 and parameters: {'embedding_dim': 136, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 18 with value: -29.666014119761435. +[I 2025-12-17 15:29:55,079] Trial 21 finished with value: -218.01740292105205 and parameters: {'embedding_dim': 237, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -29.666014119761435. +[I 2025-12-17 15:30:17,865] Trial 22 finished with value: -21.564871262617547 and parameters: {'embedding_dim': 187, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 22 with value: -21.564871262617547. +[I 2025-12-17 15:30:43,385] Trial 23 finished with value: -30.11761234733315 and parameters: {'embedding_dim': 184, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 22 with value: -21.564871262617547. +[I 2025-12-17 15:31:05,826] Trial 24 finished with value: -578.2948604541735 and parameters: {'embedding_dim': 180, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 22 with value: -21.564871262617547. +[I 2025-12-17 15:31:30,917] Trial 25 finished with value: -2528.9367985412796 and parameters: {'embedding_dim': 162, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 22 with value: -21.564871262617547. +[I 2025-12-17 15:31:53,986] Trial 26 finished with value: -423.45535079085624 and parameters: {'embedding_dim': 322, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 22 with value: -21.564871262617547. +[I 2025-12-17 15:32:15,972] Trial 27 finished with value: -89.73922855794906 and parameters: {'embedding_dim': 185, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 22 with value: -21.564871262617547. +[I 2025-12-17 15:32:26,741] Trial 28 finished with value: -983.8700421874483 and parameters: {'embedding_dim': 246, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 22 with value: -21.564871262617547. +[I 2025-12-17 15:32:49,368] Trial 29 finished with value: -118.44890597954938 and parameters: {'embedding_dim': 147, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 22 with value: -21.564871262617547. +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_2_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_2_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_2_daejeon.csv: Class 0=6348 | Class 1=6712 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_2_daejeon.csv: Class 0=6348 | Class 1=6712 | Class 2=15717 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_2_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_2_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_2_gwangju.csv: Class 0=5908 | Class 1=6554 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_2_gwangju.csv: Class 0=5908 | Class 1=6554 | Class 2=15760 + +Running ctgan_sample_7000_3.py... +[I 2025-12-17 15:33:15,759] A new study created in memory with name: no-name-8beeb359-037d-45fa-9395-c3f114e3b3e0 +[I 2025-12-17 15:33:41,736] Trial 0 finished with value: -27.265615906483113 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -27.265615906483113. +[I 2025-12-17 15:34:07,138] Trial 1 finished with value: -12.381896093075754 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -12.381896093075754. +[I 2025-12-17 15:34:27,534] Trial 2 finished with value: -19.014359552540533 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -12.381896093075754. +[I 2025-12-17 15:34:37,544] Trial 3 finished with value: -35.50069492116436 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -12.381896093075754. +[I 2025-12-17 15:34:45,143] Trial 4 finished with value: -39.257248128139516 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -12.381896093075754. +[I 2025-12-17 15:35:10,191] Trial 5 finished with value: -9.436429052159784 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -9.436429052159784. +[I 2025-12-17 15:35:14,069] Trial 6 finished with value: -336.985924996185 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -9.436429052159784. +[I 2025-12-17 15:35:17,959] Trial 7 finished with value: -70.11911772059807 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -9.436429052159784. +[I 2025-12-17 15:35:28,018] Trial 8 finished with value: -8.160233014711144 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:35:38,059] Trial 9 finished with value: -10.632302302291748 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:35:44,732] Trial 10 finished with value: -58.43208995558714 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:35:56,810] Trial 11 finished with value: -75.30109702391616 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:36:21,682] Trial 12 finished with value: -37.37658972664035 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:36:31,728] Trial 13 finished with value: -17.730955512973793 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:36:56,609] Trial 14 finished with value: -44.02354102775708 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:37:15,089] Trial 15 finished with value: -247.39799474697986 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:37:30,334] Trial 16 finished with value: -176.47454310972464 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:37:38,565] Trial 17 finished with value: -166.60564044122395 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:37:57,384] Trial 18 finished with value: -29.9245579920982 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:38:03,148] Trial 19 finished with value: -216.47311564507473 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:38:16,696] Trial 20 finished with value: -8.271176003807405 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:38:30,203] Trial 21 finished with value: -72.00831689703526 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:38:43,718] Trial 22 finished with value: -14.683210465275128 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -8.160233014711144. +[I 2025-12-17 15:39:00,431] Trial 23 finished with value: -3.834540219213892 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:39:10,537] Trial 24 finished with value: -28.89796452359193 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:39:24,013] Trial 25 finished with value: -6.605304763333832 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:39:37,475] Trial 26 finished with value: -5.859121494567483 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:39:50,967] Trial 27 finished with value: -50.90898002704324 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:40:04,462] Trial 28 finished with value: -69.17801902652013 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:40:17,943] Trial 29 finished with value: -27.313647067634083 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:40:34,168] Trial 30 finished with value: -13.638365415499171 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:40:44,221] Trial 31 finished with value: -19.04982634425547 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:40:57,702] Trial 32 finished with value: -32.97440688531451 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:41:11,257] Trial 33 finished with value: -11.795963538112453 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:41:24,566] Trial 34 finished with value: -6.932516625719194 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:41:37,967] Trial 35 finished with value: -30.74934542318297 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:41:45,669] Trial 36 finished with value: -12.525009220490375 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:41:59,148] Trial 37 finished with value: -199.78604929639263 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:42:06,805] Trial 38 finished with value: -11.925937140051506 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:42:20,297] Trial 39 finished with value: -12.049760629256058 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:42:35,711] Trial 40 finished with value: -38.14610126536892 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:42:45,857] Trial 41 finished with value: -4.607601536287547 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:42:55,809] Trial 42 finished with value: -79.44488366914098 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:43:05,876] Trial 43 finished with value: -7.081415262300387 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -3.834540219213892. +[I 2025-12-17 15:43:19,279] Trial 44 finished with value: -3.6951485571915104 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 44 with value: -3.6951485571915104. +[I 2025-12-17 15:43:32,818] Trial 45 finished with value: -10.785128602175952 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 44 with value: -3.6951485571915104. +[I 2025-12-17 15:43:36,678] Trial 46 finished with value: -103.43790544269179 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 44 with value: -3.6951485571915104. +[I 2025-12-17 15:44:01,730] Trial 47 finished with value: -129.93969008422795 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 44 with value: -3.6951485571915104. +[I 2025-12-17 15:44:11,775] Trial 48 finished with value: -118.97718941216148 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -3.6951485571915104. +[I 2025-12-17 15:44:21,636] Trial 49 finished with value: -119.19152544656673 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -3.6951485571915104. +[I 2025-12-17 15:44:37,357] A new study created in memory with name: no-name-1c8b1a8e-3b69-495a-a014-7e7077a6fefa +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 15:45:14,871] Trial 0 finished with value: -137.36590537753597 and parameters: {'embedding_dim': 333, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -137.36590537753597. +[I 2025-12-17 15:45:34,995] Trial 1 finished with value: -965.9792403769179 and parameters: {'embedding_dim': 349, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -137.36590537753597. +[I 2025-12-17 15:46:05,469] Trial 2 finished with value: -72.60002858290314 and parameters: {'embedding_dim': 167, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -72.60002858290314. +[I 2025-12-17 15:47:02,861] Trial 3 finished with value: -112.2621772099959 and parameters: {'embedding_dim': 433, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -72.60002858290314. +[I 2025-12-17 15:47:28,229] Trial 4 finished with value: -385.00737516901046 and parameters: {'embedding_dim': 506, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 2 with value: -72.60002858290314. +[I 2025-12-17 15:47:42,788] Trial 5 finished with value: -499.5131119591729 and parameters: {'embedding_dim': 503, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -72.60002858290314. +[I 2025-12-17 15:48:41,128] Trial 6 finished with value: -540.968352787802 and parameters: {'embedding_dim': 157, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -72.60002858290314. +[I 2025-12-17 15:49:20,410] Trial 7 finished with value: -204.1232983772694 and parameters: {'embedding_dim': 229, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -72.60002858290314. +[I 2025-12-17 15:49:54,559] Trial 8 finished with value: -91.79277162026095 and parameters: {'embedding_dim': 489, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -72.60002858290314. +[I 2025-12-17 15:51:04,288] Trial 9 finished with value: -34.59920007728677 and parameters: {'embedding_dim': 301, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 15:52:12,716] Trial 10 finished with value: -1000.2723024030928 and parameters: {'embedding_dim': 264, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 15:52:51,917] Trial 11 finished with value: -155.27627944625598 and parameters: {'embedding_dim': 143, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 15:53:49,814] Trial 12 finished with value: -278.7290885988669 and parameters: {'embedding_dim': 230, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 15:54:24,153] Trial 13 finished with value: -283.81470198452524 and parameters: {'embedding_dim': 372, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 15:56:18,231] Trial 14 finished with value: -1365.6893559310438 and parameters: {'embedding_dim': 289, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 15:57:14,545] Trial 15 finished with value: -147.48995124287143 and parameters: {'embedding_dim': 190, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 15:57:42,073] Trial 16 finished with value: -443.6551784309497 and parameters: {'embedding_dim': 406, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 15:58:21,073] Trial 17 finished with value: -389.1349865965383 and parameters: {'embedding_dim': 298, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 15:59:06,969] Trial 18 finished with value: -505.29039608433135 and parameters: {'embedding_dim': 189, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 16:00:42,192] Trial 19 finished with value: -682.6099536899227 and parameters: {'embedding_dim': 248, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 16:01:19,227] Trial 20 finished with value: -87.77883470551147 and parameters: {'embedding_dim': 192, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 16:01:56,995] Trial 21 finished with value: -295.1697129906832 and parameters: {'embedding_dim': 180, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 16:02:37,503] Trial 22 finished with value: -366.1873166498417 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 16:03:08,932] Trial 23 finished with value: -260.98812117676806 and parameters: {'embedding_dim': 212, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 16:03:47,247] Trial 24 finished with value: -76.37159485066974 and parameters: {'embedding_dim': 269, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 16:04:46,990] Trial 25 finished with value: -57.06736631022631 and parameters: {'embedding_dim': 292, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 16:05:33,374] Trial 26 finished with value: -767.2371396549313 and parameters: {'embedding_dim': 310, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 16:06:32,868] Trial 27 finished with value: -51.16216162852875 and parameters: {'embedding_dim': 355, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 16:07:29,223] Trial 28 finished with value: -327.42251970908575 and parameters: {'embedding_dim': 389, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 16:08:15,897] Trial 29 finished with value: -1234.6629025694817 and parameters: {'embedding_dim': 346, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 9 with value: -34.59920007728677. +[I 2025-12-17 16:09:23,899] A new study created in memory with name: no-name-dbb1a2cc-8e2e-4ff9-ad61-8ec68ad3644f +[I 2025-12-17 16:09:26,962] Trial 0 finished with value: -413.6456513462744 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -413.6456513462744. +[I 2025-12-17 16:09:32,138] Trial 1 finished with value: -260.6251761457483 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -260.6251761457483. +[I 2025-12-17 16:09:37,305] Trial 2 finished with value: -371.1588288577295 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -260.6251761457483. +[I 2025-12-17 16:09:40,330] Trial 3 finished with value: -283.5431355592728 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -260.6251761457483. +[I 2025-12-17 16:09:43,407] Trial 4 finished with value: -766.8154048327365 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -260.6251761457483. +[I 2025-12-17 16:09:46,552] Trial 5 finished with value: -92.65934708960975 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 5 with value: -92.65934708960975. +[I 2025-12-17 16:09:51,724] Trial 6 finished with value: -78.25594703079607 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -78.25594703079607. +[I 2025-12-17 16:09:56,451] Trial 7 finished with value: -498.96646284268235 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 6 with value: -78.25594703079607. +[I 2025-12-17 16:09:59,646] Trial 8 finished with value: -946.2204314266194 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -78.25594703079607. +[I 2025-12-17 16:10:04,347] Trial 9 finished with value: -185.56050970515884 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 6 with value: -78.25594703079607. +[I 2025-12-17 16:10:11,360] Trial 10 finished with value: -225.64543001898082 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -78.25594703079607. +[I 2025-12-17 16:10:18,002] Trial 11 finished with value: -474.55298134196653 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 6 with value: -78.25594703079607. +[I 2025-12-17 16:10:25,051] Trial 12 finished with value: -178.96468536948402 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -78.25594703079607. +[I 2025-12-17 16:10:28,371] Trial 13 finished with value: -461.7431364586294 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -78.25594703079607. +[I 2025-12-17 16:10:33,291] Trial 14 finished with value: -276.99195305376065 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -78.25594703079607. +[I 2025-12-17 16:10:36,344] Trial 15 finished with value: -814.0683512626282 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 6 with value: -78.25594703079607. +[I 2025-12-17 16:10:43,632] Trial 16 finished with value: -168.658232384949 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -78.25594703079607. +[I 2025-12-17 16:10:48,318] Trial 17 finished with value: -531.0074259313922 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 6 with value: -78.25594703079607. +[I 2025-12-17 16:10:53,603] Trial 18 finished with value: -56.93243193163911 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -56.93243193163911. +[I 2025-12-17 16:10:58,733] Trial 19 finished with value: -114.49542878473929 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -56.93243193163911. +[I 2025-12-17 16:11:03,885] Trial 20 finished with value: -189.3746939920648 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -56.93243193163911. +[I 2025-12-17 16:11:09,060] Trial 21 finished with value: -414.10475367243765 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -56.93243193163911. +[I 2025-12-17 16:11:12,374] Trial 22 finished with value: -260.8308472395542 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -56.93243193163911. +[I 2025-12-17 16:11:18,963] Trial 23 finished with value: -514.3328286154346 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 18 with value: -56.93243193163911. +[I 2025-12-17 16:11:24,160] Trial 24 finished with value: -607.2733019409923 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -56.93243193163911. +[I 2025-12-17 16:11:27,222] Trial 25 finished with value: -352.8442362658214 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -56.93243193163911. +[I 2025-12-17 16:11:32,358] Trial 26 finished with value: -324.78099762572333 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -56.93243193163911. +[I 2025-12-17 16:11:39,457] Trial 27 finished with value: -346.84095321766824 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -56.93243193163911. +[I 2025-12-17 16:11:42,643] Trial 28 finished with value: -245.2784848714242 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 18 with value: -56.93243193163911. +[I 2025-12-17 16:11:45,702] Trial 29 finished with value: -663.2049678667804 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -56.93243193163911. +[I 2025-12-17 16:11:50,455] Trial 30 finished with value: -226.85437524109193 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -56.93243193163911. +[I 2025-12-17 16:11:55,622] Trial 31 finished with value: -157.0210422312201 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -56.93243193163911. +[I 2025-12-17 16:12:00,773] Trial 32 finished with value: -45.598297620281514 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:12:05,907] Trial 33 finished with value: -101.75980437754356 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:12:11,056] Trial 34 finished with value: -276.6935797612167 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:12:16,219] Trial 35 finished with value: -444.94172702482354 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:12:19,522] Trial 36 finished with value: -758.0193306742864 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:12:24,216] Trial 37 finished with value: -117.04287602089455 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:12:29,369] Trial 38 finished with value: -73.62143111853767 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:12:34,603] Trial 39 finished with value: -441.6972024946784 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:12:39,811] Trial 40 finished with value: -68.2457902972368 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:12:44,986] Trial 41 finished with value: -302.8336874149085 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:12:50,215] Trial 42 finished with value: -89.33754588112204 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:12:55,365] Trial 43 finished with value: -123.2615142229982 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:13:00,520] Trial 44 finished with value: -181.33324736822033 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:13:05,663] Trial 45 finished with value: -98.92619876861 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:13:10,825] Trial 46 finished with value: -332.78590578126403 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:13:15,967] Trial 47 finished with value: -150.63911171244305 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:13:20,917] Trial 48 finished with value: -552.0584389795051 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:13:28,538] Trial 49 finished with value: -164.56165598990646 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 32 with value: -45.598297620281514. +[I 2025-12-17 16:13:33,781] A new study created in memory with name: no-name-a9fe7b1c-9aaf-423b-af14-ca34327b62d2 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_3_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_3_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_3_incheon.csv: Class 0=6740 | Class 1=6821 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_3_incheon.csv: Class 0=6740 | Class 1=6821 | Class 2=14595 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 16:14:09,884] Trial 0 finished with value: -534.6758669450095 and parameters: {'embedding_dim': 328, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -534.6758669450095. +[I 2025-12-17 16:14:38,551] Trial 1 finished with value: -609.7705089725682 and parameters: {'embedding_dim': 245, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -534.6758669450095. +[I 2025-12-17 16:15:12,438] Trial 2 finished with value: -508.62767448354487 and parameters: {'embedding_dim': 491, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -508.62767448354487. +[I 2025-12-17 16:15:46,694] Trial 3 finished with value: -387.85026481283734 and parameters: {'embedding_dim': 373, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -387.85026481283734. +[I 2025-12-17 16:16:01,588] Trial 4 finished with value: -306.74306782135614 and parameters: {'embedding_dim': 155, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 4 with value: -306.74306782135614. +[I 2025-12-17 16:16:46,487] Trial 5 finished with value: -1242.8534443554424 and parameters: {'embedding_dim': 282, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -306.74306782135614. +[I 2025-12-17 16:17:02,907] Trial 6 finished with value: -338.7479475485176 and parameters: {'embedding_dim': 252, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -306.74306782135614. +[I 2025-12-17 16:17:25,813] Trial 7 finished with value: -4885.7389287454835 and parameters: {'embedding_dim': 387, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -306.74306782135614. +[I 2025-12-17 16:17:37,299] Trial 8 finished with value: -406.0720524989741 and parameters: {'embedding_dim': 196, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -306.74306782135614. +[I 2025-12-17 16:18:22,638] Trial 9 finished with value: -242.8032697129932 and parameters: {'embedding_dim': 168, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -242.8032697129932. +[I 2025-12-17 16:19:31,139] Trial 10 finished with value: -1200.6282867717657 and parameters: {'embedding_dim': 145, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 9 with value: -242.8032697129932. +[I 2025-12-17 16:19:45,791] Trial 11 finished with value: -245.82414319546103 and parameters: {'embedding_dim': 131, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 9 with value: -242.8032697129932. +[I 2025-12-17 16:20:00,583] Trial 12 finished with value: -795.9286339567168 and parameters: {'embedding_dim': 138, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 9 with value: -242.8032697129932. +[I 2025-12-17 16:20:43,114] Trial 13 finished with value: -325.10301123175003 and parameters: {'embedding_dim': 197, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 9 with value: -242.8032697129932. +[I 2025-12-17 16:21:00,730] Trial 14 finished with value: -301.4642612005372 and parameters: {'embedding_dim': 203, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 9 with value: -242.8032697129932. +[I 2025-12-17 16:21:35,023] Trial 15 finished with value: -912.0181987413326 and parameters: {'embedding_dim': 183, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 9 with value: -242.8032697129932. +[I 2025-12-17 16:22:03,010] Trial 16 finished with value: -81.66315775281124 and parameters: {'embedding_dim': 507, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -81.66315775281124. +[I 2025-12-17 16:22:30,229] Trial 17 finished with value: -86.82009895100175 and parameters: {'embedding_dim': 466, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -81.66315775281124. +[I 2025-12-17 16:22:58,587] Trial 18 finished with value: -1021.8463778164328 and parameters: {'embedding_dim': 507, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -81.66315775281124. +[I 2025-12-17 16:23:33,578] Trial 19 finished with value: -54.55108968552272 and parameters: {'embedding_dim': 457, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 19 with value: -54.55108968552272. +[I 2025-12-17 16:24:08,386] Trial 20 finished with value: -178.4290100149456 and parameters: {'embedding_dim': 433, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 19 with value: -54.55108968552272. +[I 2025-12-17 16:24:36,764] Trial 21 finished with value: -268.4072115188902 and parameters: {'embedding_dim': 456, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 19 with value: -54.55108968552272. +[I 2025-12-17 16:25:11,701] Trial 22 finished with value: -405.60669239156215 and parameters: {'embedding_dim': 457, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 19 with value: -54.55108968552272. +[I 2025-12-17 16:25:53,819] Trial 23 finished with value: -291.44418921730767 and parameters: {'embedding_dim': 416, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 19 with value: -54.55108968552272. +[I 2025-12-17 16:26:30,944] Trial 24 finished with value: -313.9829203060643 and parameters: {'embedding_dim': 477, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 19 with value: -54.55108968552272. +[I 2025-12-17 16:26:59,050] Trial 25 finished with value: -343.0709645555164 and parameters: {'embedding_dim': 390, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 19 with value: -54.55108968552272. +[I 2025-12-17 16:27:13,134] Trial 26 finished with value: -659.5595389859991 and parameters: {'embedding_dim': 353, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 19 with value: -54.55108968552272. +[I 2025-12-17 16:27:34,286] Trial 27 finished with value: -40.36377547449093 and parameters: {'embedding_dim': 512, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 27 with value: -40.36377547449093. +[I 2025-12-17 16:27:55,593] Trial 28 finished with value: -83.60905337932354 and parameters: {'embedding_dim': 510, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 27 with value: -40.36377547449093. +[I 2025-12-17 16:28:17,071] Trial 29 finished with value: -1424.304478909864 and parameters: {'embedding_dim': 419, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 27 with value: -40.36377547449093. +[I 2025-12-17 16:28:39,068] A new study created in memory with name: no-name-89521490-2052-4b7c-bdea-28248920401a +[I 2025-12-17 16:28:43,935] Trial 0 finished with value: -251.51165169043117 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -251.51165169043117. +[I 2025-12-17 16:28:50,731] Trial 1 finished with value: -30.41417837246038 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -30.41417837246038. +[I 2025-12-17 16:28:57,522] Trial 2 finished with value: -24.373070052060157 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -24.373070052060157. +[I 2025-12-17 16:29:00,995] Trial 3 finished with value: -421.4872354347029 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -24.373070052060157. +[I 2025-12-17 16:29:08,174] Trial 4 finished with value: -0.15912415497417692 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:29:13,201] Trial 5 finished with value: -1.1817515217106465 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:29:16,620] Trial 6 finished with value: -105.25862740561159 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:29:23,384] Trial 7 finished with value: -19.4331152395454 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:29:26,611] Trial 8 finished with value: -158.71610811331783 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:29:33,800] Trial 9 finished with value: -61.3876511652369 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:29:39,166] Trial 10 finished with value: -130.44076025778688 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:29:44,450] Trial 11 finished with value: -45.85655505218172 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:29:49,723] Trial 12 finished with value: -18.251334759242294 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:29:54,759] Trial 13 finished with value: -56.118163950421334 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:30:01,290] Trial 14 finished with value: -179.15753531644552 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:30:06,435] Trial 15 finished with value: -13.072731802818488 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:30:13,684] Trial 16 finished with value: -122.65195463449193 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:30:16,994] Trial 17 finished with value: -19.822775848087165 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:30:22,329] Trial 18 finished with value: -22.301039019601244 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:30:28,845] Trial 19 finished with value: -57.04245605098347 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:30:34,192] Trial 20 finished with value: -55.46084758276897 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:30:39,212] Trial 21 finished with value: -58.92788029533952 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:30:44,246] Trial 22 finished with value: -85.06641433464108 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:30:49,260] Trial 23 finished with value: -2.8443925158284404 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:30:52,575] Trial 24 finished with value: -63.3739588144257 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:30:57,599] Trial 25 finished with value: -21.79532119366041 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:31:04,361] Trial 26 finished with value: -77.65899405023517 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:31:09,392] Trial 27 finished with value: -55.273981135053916 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:31:14,324] Trial 28 finished with value: -158.38705936538707 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:31:17,801] Trial 29 finished with value: -166.71182353001026 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:31:24,271] Trial 30 finished with value: -103.25902510917794 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:31:29,301] Trial 31 finished with value: -13.693907904856502 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:31:34,322] Trial 32 finished with value: -23.198364327958092 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:31:39,343] Trial 33 finished with value: -4.823341000976239 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:31:44,392] Trial 34 finished with value: -62.903302147675724 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:31:49,417] Trial 35 finished with value: -63.376979176015126 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:31:56,122] Trial 36 finished with value: -31.21479054741351 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:31:59,477] Trial 37 finished with value: -183.23057239483694 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:32:04,824] Trial 38 finished with value: -42.82246294169659 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:32:11,515] Trial 39 finished with value: -16.302334798988195 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:32:15,064] Trial 40 finished with value: -52.64020037708976 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:32:20,079] Trial 41 finished with value: -24.76709141829963 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:32:25,104] Trial 42 finished with value: -61.5349621929585 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:32:30,118] Trial 43 finished with value: -2.1929209127703473 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:32:35,145] Trial 44 finished with value: -59.458936762784646 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:32:40,169] Trial 45 finished with value: -43.00878600395817 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:32:45,141] Trial 46 finished with value: -108.18908596115114 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:32:50,210] Trial 47 finished with value: -16.772875147212417 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:32:55,618] Trial 48 finished with value: -31.724529368490714 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:33:00,698] Trial 49 finished with value: -94.3048677323145 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.15912415497417692. +[I 2025-12-17 16:33:08,104] A new study created in memory with name: no-name-dd4d9325-9aaa-494d-9ffb-ab506fd2fbab +[I 2025-12-17 16:33:26,529] Trial 0 finished with value: -778.0925614901305 and parameters: {'embedding_dim': 455, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -778.0925614901305. +[I 2025-12-17 16:33:54,030] Trial 1 finished with value: -585.156291925492 and parameters: {'embedding_dim': 339, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -585.156291925492. +[I 2025-12-17 16:34:17,329] Trial 2 finished with value: -468.60420118750005 and parameters: {'embedding_dim': 202, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -468.60420118750005. +[I 2025-12-17 16:34:24,886] Trial 3 finished with value: -626.0713198996459 and parameters: {'embedding_dim': 366, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -468.60420118750005. +[I 2025-12-17 16:34:43,368] Trial 4 finished with value: -1195.8017239790927 and parameters: {'embedding_dim': 315, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -468.60420118750005. +[I 2025-12-17 16:34:53,200] Trial 5 finished with value: -870.7798249096506 and parameters: {'embedding_dim': 204, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -468.60420118750005. +[I 2025-12-17 16:35:08,519] Trial 6 finished with value: -849.9524168676373 and parameters: {'embedding_dim': 432, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -468.60420118750005. +[I 2025-12-17 16:35:28,709] Trial 7 finished with value: -1726.7044063775825 and parameters: {'embedding_dim': 277, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -468.60420118750005. +[I 2025-12-17 16:35:39,359] Trial 8 finished with value: -2003.179028997435 and parameters: {'embedding_dim': 503, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -468.60420118750005. +[I 2025-12-17 16:35:52,548] Trial 9 finished with value: -1358.3557676687597 and parameters: {'embedding_dim': 511, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 2 with value: -468.60420118750005. +[I 2025-12-17 16:36:31,931] Trial 10 finished with value: -293.208114204633 and parameters: {'embedding_dim': 145, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -293.208114204633. +[I 2025-12-17 16:37:12,688] Trial 11 finished with value: -313.48904685471683 and parameters: {'embedding_dim': 128, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -293.208114204633. +[I 2025-12-17 16:37:54,698] Trial 12 finished with value: -1872.2433752489421 and parameters: {'embedding_dim': 133, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -293.208114204633. +[I 2025-12-17 16:38:37,848] Trial 13 finished with value: -112.86269278391758 and parameters: {'embedding_dim': 130, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:39:16,451] Trial 14 finished with value: -519.4039946380163 and parameters: {'embedding_dim': 204, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:40:04,420] Trial 15 finished with value: -360.10759482619306 and parameters: {'embedding_dim': 251, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:40:44,356] Trial 16 finished with value: -912.0942900837762 and parameters: {'embedding_dim': 171, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:41:07,468] Trial 17 finished with value: -890.5785383452883 and parameters: {'embedding_dim': 259, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:41:40,560] Trial 18 finished with value: -603.3326137431221 and parameters: {'embedding_dim': 170, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:42:26,622] Trial 19 finished with value: -383.7262178822844 and parameters: {'embedding_dim': 166, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:43:09,981] Trial 20 finished with value: -187.06950975007436 and parameters: {'embedding_dim': 230, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:43:49,663] Trial 21 finished with value: -445.26422060445634 and parameters: {'embedding_dim': 208, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:44:32,045] Trial 22 finished with value: -426.12273015366225 and parameters: {'embedding_dim': 235, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:45:19,198] Trial 23 finished with value: -2307.5685332954513 and parameters: {'embedding_dim': 153, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:46:00,870] Trial 24 finished with value: -2249.435184375623 and parameters: {'embedding_dim': 302, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:46:34,694] Trial 25 finished with value: -891.3132915029064 and parameters: {'embedding_dim': 129, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:47:18,648] Trial 26 finished with value: -1227.404943673228 and parameters: {'embedding_dim': 221, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:48:07,429] Trial 27 finished with value: -441.989371679034 and parameters: {'embedding_dim': 164, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:48:26,705] Trial 28 finished with value: -384.61057719578525 and parameters: {'embedding_dim': 180, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:49:17,526] Trial 29 finished with value: -1453.5225109531325 and parameters: {'embedding_dim': 403, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -112.86269278391758. +[I 2025-12-17 16:49:58,022] A new study created in memory with name: no-name-66a63ae7-adcf-44fa-a7c8-970c2746b93b +[I 2025-12-17 16:50:04,424] Trial 0 finished with value: -498.0051854557756 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -498.0051854557756. +[I 2025-12-17 16:50:09,443] Trial 1 finished with value: -16.701277526911323 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:50:14,442] Trial 2 finished with value: -35.253212295928044 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:50:19,370] Trial 3 finished with value: -130.7317081133906 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:50:24,139] Trial 4 finished with value: -226.2321043928891 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:50:29,364] Trial 5 finished with value: -181.6790268365446 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:50:35,984] Trial 6 finished with value: -160.3304591708759 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:50:43,780] Trial 7 finished with value: -163.08791881009168 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:50:49,806] Trial 8 finished with value: -123.90596085838364 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:50:54,780] Trial 9 finished with value: -573.2735014434555 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:50:58,031] Trial 10 finished with value: -117.54956535601342 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:51:01,264] Trial 11 finished with value: -326.99353932085904 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:51:04,544] Trial 12 finished with value: -384.31610418414135 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:51:09,502] Trial 13 finished with value: -618.9508615897482 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:51:12,955] Trial 14 finished with value: -455.424109881652 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:51:19,481] Trial 15 finished with value: -49.93174910957607 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:51:24,449] Trial 16 finished with value: -631.444549011801 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:51:31,191] Trial 17 finished with value: -138.04542995788165 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:51:36,005] Trial 18 finished with value: -765.5005656207985 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:51:39,423] Trial 19 finished with value: -354.34740141195834 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:51:44,416] Trial 20 finished with value: -532.7813928085118 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:51:51,148] Trial 21 finished with value: -329.84995583232393 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:51:57,893] Trial 22 finished with value: -205.35175868260603 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:52:02,911] Trial 23 finished with value: -131.88439656042593 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:52:09,575] Trial 24 finished with value: -251.03693805241798 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:52:14,544] Trial 25 finished with value: -57.48807910272625 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:52:19,512] Trial 26 finished with value: -111.32934726471561 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:52:26,277] Trial 27 finished with value: -168.55250627734912 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:52:31,050] Trial 28 finished with value: -206.49332513621772 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:52:38,145] Trial 29 finished with value: -63.74455746868775 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:52:44,552] Trial 30 finished with value: -199.31859308077898 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:52:49,451] Trial 31 finished with value: -144.95222450467364 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:52:54,402] Trial 32 finished with value: -301.1908805291248 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:52:59,420] Trial 33 finished with value: -86.45910571686386 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:53:04,395] Trial 34 finished with value: -378.9639141434845 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:53:09,183] Trial 35 finished with value: -265.9727950485354 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:53:14,291] Trial 36 finished with value: -86.41934829692909 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:53:19,050] Trial 37 finished with value: -199.0057957120263 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:53:24,287] Trial 38 finished with value: -63.53235788685127 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:53:27,694] Trial 39 finished with value: -183.34823460646737 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:53:32,630] Trial 40 finished with value: -205.99273163229054 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:53:38,068] Trial 41 finished with value: -115.75285937914532 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:53:43,322] Trial 42 finished with value: -318.62456747141414 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:53:48,763] Trial 43 finished with value: -107.49907656237639 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:53:54,135] Trial 44 finished with value: -234.84315315905926 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:53:59,430] Trial 45 finished with value: -111.43361144075853 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:54:04,395] Trial 46 finished with value: -67.32092192140502 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:54:09,686] Trial 47 finished with value: -55.4432711552697 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:54:13,021] Trial 48 finished with value: -72.7400181452357 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:54:19,418] Trial 49 finished with value: -630.513271965863 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -16.701277526911323. +[I 2025-12-17 16:54:25,090] A new study created in memory with name: no-name-77e4db52-6049-43eb-89ee-ea6777f49c8c +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_3_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_3_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_3_seoul.csv: Class 0=5269 | Class 1=6861 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_3_seoul.csv: Class 0=5269 | Class 1=6861 | Class 2=15873 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_3_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_3_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_3_busan.csv: Class 0=6642 | Class 1=6592 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_3_busan.csv: Class 0=6642 | Class 1=6592 | Class 2=16439 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 16:54:36,783] Trial 0 finished with value: -567.3604362909616 and parameters: {'embedding_dim': 387, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -567.3604362909616. +[I 2025-12-17 16:54:55,380] Trial 1 finished with value: -3822.1893292050086 and parameters: {'embedding_dim': 199, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -567.3604362909616. +[I 2025-12-17 16:55:06,412] Trial 2 finished with value: -497.67836525661954 and parameters: {'embedding_dim': 382, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -497.67836525661954. +[I 2025-12-17 16:55:23,013] Trial 3 finished with value: -578.5449149242843 and parameters: {'embedding_dim': 188, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -497.67836525661954. +[I 2025-12-17 16:55:37,593] Trial 4 finished with value: -1625.6670521974909 and parameters: {'embedding_dim': 252, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -497.67836525661954. +[I 2025-12-17 16:55:48,272] Trial 5 finished with value: -416.5098705018092 and parameters: {'embedding_dim': 240, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -416.5098705018092. +[I 2025-12-17 16:55:55,256] Trial 6 finished with value: -375.7247316361628 and parameters: {'embedding_dim': 433, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -375.7247316361628. +[I 2025-12-17 16:56:03,145] Trial 7 finished with value: -1937.1189256270382 and parameters: {'embedding_dim': 167, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 6 with value: -375.7247316361628. +[I 2025-12-17 16:56:14,094] Trial 8 finished with value: -758.3966939426213 and parameters: {'embedding_dim': 234, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -375.7247316361628. +[I 2025-12-17 16:56:27,534] Trial 9 finished with value: -765.4880534086245 and parameters: {'embedding_dim': 374, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -375.7247316361628. +[I 2025-12-17 16:56:32,239] Trial 10 finished with value: -517.5215191334489 and parameters: {'embedding_dim': 501, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 6 with value: -375.7247316361628. +[I 2025-12-17 16:56:38,934] Trial 11 finished with value: -894.1832182838197 and parameters: {'embedding_dim': 474, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -375.7247316361628. +[I 2025-12-17 16:56:44,184] Trial 12 finished with value: -2729.7765574504974 and parameters: {'embedding_dim': 308, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 6 with value: -375.7247316361628. +[I 2025-12-17 16:56:51,183] Trial 13 finished with value: -726.0968413528716 and parameters: {'embedding_dim': 314, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -375.7247316361628. +[I 2025-12-17 16:57:01,878] Trial 14 finished with value: -237.54336653637557 and parameters: {'embedding_dim': 439, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 14 with value: -237.54336653637557. +[I 2025-12-17 16:57:06,945] Trial 15 finished with value: -163.52754077143175 and parameters: {'embedding_dim': 446, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:57:23,523] Trial 16 finished with value: -224.54570379919346 and parameters: {'embedding_dim': 441, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:57:39,726] Trial 17 finished with value: -317.8341813681097 and parameters: {'embedding_dim': 511, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:57:56,004] Trial 18 finished with value: -364.3844054382227 and parameters: {'embedding_dim': 443, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:58:01,216] Trial 19 finished with value: -1515.8741337852439 and parameters: {'embedding_dim': 350, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:58:14,680] Trial 20 finished with value: -237.56154963646398 and parameters: {'embedding_dim': 413, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:58:25,415] Trial 21 finished with value: -211.1596274542001 and parameters: {'embedding_dim': 460, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:58:41,914] Trial 22 finished with value: -322.7512873567225 and parameters: {'embedding_dim': 468, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:58:55,479] Trial 23 finished with value: -626.1606396264458 and parameters: {'embedding_dim': 482, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:59:00,638] Trial 24 finished with value: -1033.058925650314 and parameters: {'embedding_dim': 415, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:59:15,430] Trial 25 finished with value: -1102.1324451349396 and parameters: {'embedding_dim': 344, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:59:23,488] Trial 26 finished with value: -417.45357456286985 and parameters: {'embedding_dim': 456, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:59:37,348] Trial 27 finished with value: -354.56913006763887 and parameters: {'embedding_dim': 410, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:59:42,407] Trial 28 finished with value: -219.7959419094393 and parameters: {'embedding_dim': 484, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:59:49,629] Trial 29 finished with value: -1216.7529096918834 and parameters: {'embedding_dim': 496, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -163.52754077143175. +[I 2025-12-17 16:59:55,192] A new study created in memory with name: no-name-238d1f10-4984-4343-afe1-2a1819ee805c +[I 2025-12-17 17:00:02,471] Trial 0 finished with value: -45.37032108480602 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -45.37032108480602. +[I 2025-12-17 17:00:05,861] Trial 1 finished with value: -61.49658152445841 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -45.37032108480602. +[I 2025-12-17 17:00:11,260] Trial 2 finished with value: -4.843314966391603 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:00:18,430] Trial 3 finished with value: -12.787391855947087 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:00:25,569] Trial 4 finished with value: -48.238908288013846 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:00:28,905] Trial 5 finished with value: -169.58620788778242 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:00:35,309] Trial 6 finished with value: -14.117688587603315 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:00:40,330] Trial 7 finished with value: -19.356972608672503 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:00:45,401] Trial 8 finished with value: -99.8254766920601 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:00:48,917] Trial 9 finished with value: -161.04381572950106 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:00:53,974] Trial 10 finished with value: -368.93122092322153 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:00:59,358] Trial 11 finished with value: -22.217352601546885 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:01:06,547] Trial 12 finished with value: -96.71419770214732 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:01:11,918] Trial 13 finished with value: -143.79019412488842 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:01:19,181] Trial 14 finished with value: -82.35016345073296 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:01:24,562] Trial 15 finished with value: -37.71470198031431 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:01:31,121] Trial 16 finished with value: -124.15891055507211 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:01:34,640] Trial 17 finished with value: -91.22016660535904 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:01:40,116] Trial 18 finished with value: -153.20894119490268 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:01:45,056] Trial 19 finished with value: -71.39223204478968 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:01:52,294] Trial 20 finished with value: -58.0205765087345 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:01:58,794] Trial 21 finished with value: -39.646191769636644 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:02:05,304] Trial 22 finished with value: -82.75909425953122 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:02:11,927] Trial 23 finished with value: -34.218367072454356 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:02:16,847] Trial 24 finished with value: -60.529798812402305 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:02:23,395] Trial 25 finished with value: -43.07475086923608 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:02:30,676] Trial 26 finished with value: -144.83299088789587 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:02:36,058] Trial 27 finished with value: -65.5745557599194 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:02:42,852] Trial 28 finished with value: -56.87535023451585 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:02:49,416] Trial 29 finished with value: -147.85577007300026 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:02:56,738] Trial 30 finished with value: -15.507378557781305 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:03:03,990] Trial 31 finished with value: -64.17431238930354 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:03:11,261] Trial 32 finished with value: -68.27955282234254 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:03:18,548] Trial 33 finished with value: -54.25879411151914 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:03:24,045] Trial 34 finished with value: -23.79147336105786 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:03:30,806] Trial 35 finished with value: -113.1644065406587 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:03:34,326] Trial 36 finished with value: -23.2911518468762 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:03:41,133] Trial 37 finished with value: -177.08621014735283 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:03:46,581] Trial 38 finished with value: -4.965689353572942 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:03:51,981] Trial 39 finished with value: -24.1792134604796 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:03:55,344] Trial 40 finished with value: -24.65594750107568 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:04:00,812] Trial 41 finished with value: -11.115016641872085 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:04:06,219] Trial 42 finished with value: -83.08937540956953 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:04:11,613] Trial 43 finished with value: -45.02278872705836 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:04:17,055] Trial 44 finished with value: -17.449380003347567 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:04:22,519] Trial 45 finished with value: -66.51288117859669 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:04:27,978] Trial 46 finished with value: -21.993809600318848 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:04:32,921] Trial 47 finished with value: -59.73995525399721 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:04:38,348] Trial 48 finished with value: -34.64507171177982 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:04:43,744] Trial 49 finished with value: -109.26625037116649 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.843314966391603. +[I 2025-12-17 17:04:49,210] A new study created in memory with name: no-name-1eec9f0b-3fb8-48f3-af55-bbf93829983a +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_3_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_3_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_3_daegu.csv: Class 0=5115 | Class 1=6379 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_3_daegu.csv: Class 0=5115 | Class 1=6379 | Class 2=16913 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +/opt/conda/envs/py39/lib/python3.9/site-packages/joblib/externals/loky/process_executor.py:752: UserWarning: A worker stopped while some jobs were given to the executor. This can be caused by a too short worker timeout or by a memory leak. + warnings.warn( +[I 2025-12-17 17:05:08,255] Trial 0 finished with value: -769.5732136841211 and parameters: {'embedding_dim': 465, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 0 with value: -769.5732136841211. +[I 2025-12-17 17:05:27,826] Trial 1 finished with value: -1311.3436250780192 and parameters: {'embedding_dim': 372, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -769.5732136841211. +[I 2025-12-17 17:06:37,303] Trial 2 finished with value: -1507.1707793167025 and parameters: {'embedding_dim': 261, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -769.5732136841211. +[I 2025-12-17 17:07:33,589] Trial 3 finished with value: -805.4282337462653 and parameters: {'embedding_dim': 465, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -769.5732136841211. +[I 2025-12-17 17:08:20,350] Trial 4 finished with value: -577.8017666851255 and parameters: {'embedding_dim': 340, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -577.8017666851255. +[I 2025-12-17 17:08:43,792] Trial 5 finished with value: -422.08105768686977 and parameters: {'embedding_dim': 324, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -422.08105768686977. +[I 2025-12-17 17:09:40,299] Trial 6 finished with value: -531.9427065373809 and parameters: {'embedding_dim': 378, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 5 with value: -422.08105768686977. +[I 2025-12-17 17:09:57,668] Trial 7 finished with value: -467.38299591385686 and parameters: {'embedding_dim': 280, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 5 with value: -422.08105768686977. +[I 2025-12-17 17:10:08,975] Trial 8 finished with value: -1479.9977969985744 and parameters: {'embedding_dim': 377, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 5 with value: -422.08105768686977. +[I 2025-12-17 17:10:23,256] Trial 9 finished with value: -1713.1445972403828 and parameters: {'embedding_dim': 452, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -422.08105768686977. +[I 2025-12-17 17:10:37,671] Trial 10 finished with value: -1496.7776450118736 and parameters: {'embedding_dim': 147, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 5 with value: -422.08105768686977. +[I 2025-12-17 17:10:52,052] Trial 11 finished with value: -264.260176277027 and parameters: {'embedding_dim': 252, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:11:06,909] Trial 12 finished with value: -2279.3125605987443 and parameters: {'embedding_dim': 204, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:11:28,825] Trial 13 finished with value: -298.5444297471502 and parameters: {'embedding_dim': 243, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:11:52,171] Trial 14 finished with value: -461.0599189461682 and parameters: {'embedding_dim': 219, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:12:16,037] Trial 15 finished with value: -609.21962989145 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:12:39,649] Trial 16 finished with value: -2216.2280764308807 and parameters: {'embedding_dim': 218, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:12:56,771] Trial 17 finished with value: -1892.3852333280927 and parameters: {'embedding_dim': 268, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:13:18,033] Trial 18 finished with value: -1103.6865942476118 and parameters: {'embedding_dim': 183, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:13:34,972] Trial 19 finished with value: -425.7469016270846 and parameters: {'embedding_dim': 289, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:13:58,309] Trial 20 finished with value: -802.4661937840611 and parameters: {'embedding_dim': 242, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:14:21,858] Trial 21 finished with value: -432.60143439159344 and parameters: {'embedding_dim': 321, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:14:44,330] Trial 22 finished with value: -504.8539082674268 and parameters: {'embedding_dim': 319, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:15:02,429] Trial 23 finished with value: -2180.115960129647 and parameters: {'embedding_dim': 423, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:15:41,742] Trial 24 finished with value: -499.27630251487653 and parameters: {'embedding_dim': 306, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:15:57,638] Trial 25 finished with value: -729.4974811365512 and parameters: {'embedding_dim': 178, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:16:36,528] Trial 26 finished with value: -337.33539027787253 and parameters: {'embedding_dim': 346, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -264.260176277027. +[I 2025-12-17 17:17:05,252] Trial 27 finished with value: -263.24858069376023 and parameters: {'embedding_dim': 247, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 27 with value: -263.24858069376023. +[I 2025-12-17 17:17:36,468] Trial 28 finished with value: -482.17218294222533 and parameters: {'embedding_dim': 244, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 27 with value: -263.24858069376023. +[I 2025-12-17 17:18:05,860] Trial 29 finished with value: -759.385041984038 and parameters: {'embedding_dim': 180, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 27 with value: -263.24858069376023. +[I 2025-12-17 17:18:36,982] A new study created in memory with name: no-name-76410745-9456-489f-919d-2022d102206f +[I 2025-12-17 17:18:40,169] Trial 0 finished with value: -4.847504309102946 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -4.847504309102946. +[I 2025-12-17 17:18:43,576] Trial 1 finished with value: -1.2576471415433854 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:18:48,874] Trial 2 finished with value: -227.0458069472635 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:18:52,083] Trial 3 finished with value: -587.2087258298524 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:18:57,416] Trial 4 finished with value: -55.94567079164854 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:19:03,511] Trial 5 finished with value: -449.24005387861365 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:19:07,263] Trial 6 finished with value: -230.5680772944823 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:19:10,687] Trial 7 finished with value: -200.6482320736128 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:19:15,782] Trial 8 finished with value: -48.66418561536127 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:19:22,406] Trial 9 finished with value: -124.31692693317801 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:19:30,169] Trial 10 finished with value: -69.75169186050906 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:19:33,452] Trial 11 finished with value: -269.08839569404324 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:19:38,162] Trial 12 finished with value: -105.79163387829064 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:19:46,130] Trial 13 finished with value: -60.8650475937318 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:19:49,369] Trial 14 finished with value: -221.36332774891977 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:19:54,325] Trial 15 finished with value: -249.14646138898013 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:19:57,512] Trial 16 finished with value: -340.6527263235025 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:20:05,533] Trial 17 finished with value: -42.0836663574741 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:20:11,841] Trial 18 finished with value: -20.52195807390845 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:20:15,151] Trial 19 finished with value: -17.18768904370716 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:20:19,309] Trial 20 finished with value: -71.3732361984139 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:20:22,699] Trial 21 finished with value: -41.1370327666723 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:20:26,044] Trial 22 finished with value: -19.155575238573956 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:20:31,307] Trial 23 finished with value: -77.05452640568902 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:20:34,810] Trial 24 finished with value: -97.26485373742489 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:20:41,343] Trial 25 finished with value: -11.780685549472093 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:20:46,375] Trial 26 finished with value: -127.27014223429113 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:20:52,781] Trial 27 finished with value: -70.18842332887422 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:20:58,140] Trial 28 finished with value: -101.11121979746724 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:21:03,171] Trial 29 finished with value: -188.77025854156463 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:21:10,369] Trial 30 finished with value: -43.76429080683479 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:21:13,648] Trial 31 finished with value: -457.46263418679786 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:21:16,970] Trial 32 finished with value: -30.174237626271605 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:21:20,391] Trial 33 finished with value: -20.309288605161896 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:21:25,487] Trial 34 finished with value: -37.22826496580319 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:21:30,346] Trial 35 finished with value: -72.93386855203303 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:21:33,581] Trial 36 finished with value: -7.587343353009796 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:21:37,246] Trial 37 finished with value: -173.9817044372558 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:21:42,062] Trial 38 finished with value: -50.39154614381549 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:21:45,381] Trial 39 finished with value: -35.624336521121194 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:21:48,520] Trial 40 finished with value: -49.175176280649765 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:21:51,814] Trial 41 finished with value: -70.22656944066601 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -1.2576471415433854. +[I 2025-12-17 17:21:55,118] Trial 42 finished with value: -0.14530457631510396 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -0.14530457631510396. +[I 2025-12-17 17:21:58,412] Trial 43 finished with value: -226.92978418291528 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -0.14530457631510396. +[I 2025-12-17 17:22:01,700] Trial 44 finished with value: -133.3257416489413 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -0.14530457631510396. +[I 2025-12-17 17:22:04,987] Trial 45 finished with value: -21.2581928229118 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -0.14530457631510396. +[I 2025-12-17 17:22:08,234] Trial 46 finished with value: -436.94130729298433 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 42 with value: -0.14530457631510396. +[I 2025-12-17 17:22:13,256] Trial 47 finished with value: -16.21570399280582 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 42 with value: -0.14530457631510396. +[I 2025-12-17 17:22:16,535] Trial 48 finished with value: -535.2669827622781 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 42 with value: -0.14530457631510396. +[I 2025-12-17 17:22:20,203] Trial 49 finished with value: -405.0210892624173 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 42 with value: -0.14530457631510396. +[I 2025-12-17 17:22:23,741] A new study created in memory with name: no-name-b311081e-37dc-4708-8031-53eae981e52c +[I 2025-12-17 17:22:40,370] Trial 0 finished with value: -1024.3575560118747 and parameters: {'embedding_dim': 422, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -1024.3575560118747. +[I 2025-12-17 17:23:27,832] Trial 1 finished with value: -1352.1566598928162 and parameters: {'embedding_dim': 403, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -1024.3575560118747. +[I 2025-12-17 17:23:38,692] Trial 2 finished with value: -830.4027751050203 and parameters: {'embedding_dim': 504, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 2 with value: -830.4027751050203. +[I 2025-12-17 17:24:16,828] Trial 3 finished with value: -352.794952839144 and parameters: {'embedding_dim': 140, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -352.794952839144. +[I 2025-12-17 17:24:27,603] Trial 4 finished with value: -861.8761938517889 and parameters: {'embedding_dim': 384, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 3 with value: -352.794952839144. +[I 2025-12-17 17:24:51,144] Trial 5 finished with value: -271.62929188516625 and parameters: {'embedding_dim': 269, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -271.62929188516625. +[I 2025-12-17 17:25:07,874] Trial 6 finished with value: -600.9277033947322 and parameters: {'embedding_dim': 460, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 5 with value: -271.62929188516625. +[I 2025-12-17 17:25:26,669] Trial 7 finished with value: -628.6056436586321 and parameters: {'embedding_dim': 159, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -271.62929188516625. +[I 2025-12-17 17:25:41,510] Trial 8 finished with value: -914.5824209985898 and parameters: {'embedding_dim': 317, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 5 with value: -271.62929188516625. +[I 2025-12-17 17:26:00,594] Trial 9 finished with value: -305.0484142250919 and parameters: {'embedding_dim': 282, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -271.62929188516625. +[I 2025-12-17 17:26:21,237] Trial 10 finished with value: -627.7256558940587 and parameters: {'embedding_dim': 235, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 5 with value: -271.62929188516625. +[I 2025-12-17 17:26:50,609] Trial 11 finished with value: -739.5655279996895 and parameters: {'embedding_dim': 278, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 5 with value: -271.62929188516625. +[I 2025-12-17 17:27:09,757] Trial 12 finished with value: -395.7197361709443 and parameters: {'embedding_dim': 264, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -271.62929188516625. +[I 2025-12-17 17:27:34,273] Trial 13 finished with value: -92.3992282319681 and parameters: {'embedding_dim': 210, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:27:58,658] Trial 14 finished with value: -1056.1455700089139 and parameters: {'embedding_dim': 201, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:28:17,665] Trial 15 finished with value: -451.11083757172844 and parameters: {'embedding_dim': 208, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:28:41,184] Trial 16 finished with value: -2411.501966485572 and parameters: {'embedding_dim': 353, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:28:56,046] Trial 17 finished with value: -986.489734728225 and parameters: {'embedding_dim': 182, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:29:44,275] Trial 18 finished with value: -1104.7376397250673 and parameters: {'embedding_dim': 323, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:30:05,193] Trial 19 finished with value: -374.90853180444276 and parameters: {'embedding_dim': 251, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:30:25,083] Trial 20 finished with value: -952.5042421298499 and parameters: {'embedding_dim': 129, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:30:44,635] Trial 21 finished with value: -647.7520788880184 and parameters: {'embedding_dim': 301, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:31:03,815] Trial 22 finished with value: -575.7472892573313 and parameters: {'embedding_dim': 221, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:31:52,151] Trial 23 finished with value: -695.7960690702781 and parameters: {'embedding_dim': 283, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:32:20,444] Trial 24 finished with value: -1000.6458626180593 and parameters: {'embedding_dim': 361, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:32:36,958] Trial 25 finished with value: -1082.1847913759564 and parameters: {'embedding_dim': 184, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:33:05,104] Trial 26 finished with value: -258.0174609418343 and parameters: {'embedding_dim': 241, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:33:29,982] Trial 27 finished with value: -497.95006266702535 and parameters: {'embedding_dim': 245, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:33:57,469] Trial 28 finished with value: -256.7471247679324 and parameters: {'embedding_dim': 165, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 13 with value: -92.3992282319681. +[I 2025-12-17 17:34:25,824] Trial 29 finished with value: -435.7039256109186 and parameters: {'embedding_dim': 160, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 13 with value: -92.3992282319681. +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_3_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_3_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_3_daejeon.csv: Class 0=5815 | Class 1=6319 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_3_daejeon.csv: Class 0=5815 | Class 1=6319 | Class 2=15784 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_7000_3_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_7000_3_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan7000_3_gwangju.csv: Class 0=5943 | Class 1=6475 +Saved ../../data/data_oversampled/ctgan7000/ctgan7000_3_gwangju.csv: Class 0=5943 | Class 1=6475 | Class 2=16144 + +=== Processing 10000 samples === +Running ctgan_sample_10000_1.py... +[I 2025-12-17 17:34:53,078] A new study created in memory with name: no-name-3b8c956c-6d2d-4009-ad65-e72166f85761 +[I 2025-12-17 17:35:07,375] Trial 0 finished with value: -49.22201429332661 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -49.22201429332661. +[I 2025-12-17 17:35:30,391] Trial 1 finished with value: -22.747949068724004 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -22.747949068724004. +[I 2025-12-17 17:35:36,923] Trial 2 finished with value: -492.33546865992116 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -22.747949068724004. +[I 2025-12-17 17:35:40,816] Trial 3 finished with value: -19.93195239088434 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -19.93195239088434. +[I 2025-12-17 17:35:48,632] Trial 4 finished with value: -9.30205952226806 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -9.30205952226806. +[I 2025-12-17 17:35:58,639] Trial 5 finished with value: -28.751137254327 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -9.30205952226806. +[I 2025-12-17 17:36:04,356] Trial 6 finished with value: -5.519876522212156 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -5.519876522212156. +[I 2025-12-17 17:36:35,613] Trial 7 finished with value: -79.64991338462482 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 6 with value: -5.519876522212156. +[I 2025-12-17 17:36:42,135] Trial 8 finished with value: -17.6498778368646 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -5.519876522212156. +[I 2025-12-17 17:37:13,231] Trial 9 finished with value: -85.11959493497018 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 6 with value: -5.519876522212156. +[I 2025-12-17 17:37:18,961] Trial 10 finished with value: -9.210400002273394 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -5.519876522212156. +[I 2025-12-17 17:37:24,743] Trial 11 finished with value: -2.77332883658777 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -2.77332883658777. +[I 2025-12-17 17:37:30,490] Trial 12 finished with value: -51.77764480889331 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -2.77332883658777. +[I 2025-12-17 17:37:36,226] Trial 13 finished with value: -33.88489779883267 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -2.77332883658777. +[I 2025-12-17 17:37:42,167] Trial 14 finished with value: -3.1460862959286082 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -2.77332883658777. +[I 2025-12-17 17:37:46,060] Trial 15 finished with value: -50.32538729371511 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 11 with value: -2.77332883658777. +[I 2025-12-17 17:37:51,866] Trial 16 finished with value: -11.657786739704308 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -2.77332883658777. +[I 2025-12-17 17:37:59,743] Trial 17 finished with value: -11.722230235579586 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -2.77332883658777. +[I 2025-12-17 17:38:05,519] Trial 18 finished with value: -2.072734482318714 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -2.072734482318714. +[I 2025-12-17 17:38:20,505] Trial 19 finished with value: -104.0425301417662 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -2.072734482318714. +[I 2025-12-17 17:38:26,304] Trial 20 finished with value: -28.706199114418226 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -2.072734482318714. +[I 2025-12-17 17:38:32,024] Trial 21 finished with value: -205.56653006421598 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -2.072734482318714. +[I 2025-12-17 17:38:37,776] Trial 22 finished with value: -0.5260007033847117 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -0.5260007033847117. +[I 2025-12-17 17:38:43,492] Trial 23 finished with value: -50.04594466676612 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -0.5260007033847117. +[I 2025-12-17 17:38:49,235] Trial 24 finished with value: -48.8870375346162 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -0.5260007033847117. +[I 2025-12-17 17:38:54,974] Trial 25 finished with value: -0.4360448851012551 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:39:02,652] Trial 26 finished with value: -1.7605263423699475 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:39:10,337] Trial 27 finished with value: -103.74967136223934 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:39:23,695] Trial 28 finished with value: -28.23787685412253 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:39:54,959] Trial 29 finished with value: -89.74203531086896 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:40:08,455] Trial 30 finished with value: -60.84292524461791 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:40:14,201] Trial 31 finished with value: -38.167660018299856 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:40:20,010] Trial 32 finished with value: -53.96732441820222 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:40:25,745] Trial 33 finished with value: -104.68464915790211 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:40:29,674] Trial 34 finished with value: -73.24195004029319 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:40:35,430] Trial 35 finished with value: -53.20981137202826 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:40:41,291] Trial 36 finished with value: -276.63012517940643 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:40:48,014] Trial 37 finished with value: -1.520673945904865 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:40:54,653] Trial 38 finished with value: -66.65142420419251 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:41:01,226] Trial 39 finished with value: -5.727108778288758 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:41:07,805] Trial 40 finished with value: -92.76127353220387 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:41:21,358] Trial 41 finished with value: -151.79739078778337 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:41:36,159] Trial 42 finished with value: -624.9905184766379 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:41:46,359] Trial 43 finished with value: -79.31249257754837 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:41:54,045] Trial 44 finished with value: -173.0325797862142 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:42:04,109] Trial 45 finished with value: -114.10658549704914 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:42:07,962] Trial 46 finished with value: -142.4509933940463 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:42:30,858] Trial 47 finished with value: -43.928835271666074 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:42:36,894] Trial 48 finished with value: -3.1065943158188443 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:42:44,778] Trial 49 finished with value: -1.3449277979615066 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.4360448851012551. +[I 2025-12-17 17:42:50,674] A new study created in memory with name: no-name-54742274-78e4-46ff-88a2-60b6cc7cca2e +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 17:43:12,848] Trial 0 finished with value: -359.40022721049775 and parameters: {'embedding_dim': 163, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -359.40022721049775. +[I 2025-12-17 17:44:28,098] Trial 1 finished with value: -2653.084327948987 and parameters: {'embedding_dim': 259, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -359.40022721049775. +[I 2025-12-17 17:45:41,460] Trial 2 finished with value: -1613.4303299178487 and parameters: {'embedding_dim': 224, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -359.40022721049775. +[I 2025-12-17 17:47:15,771] Trial 3 finished with value: -182.0759203861932 and parameters: {'embedding_dim': 282, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -182.0759203861932. +[I 2025-12-17 17:47:46,314] Trial 4 finished with value: -336.5161174096217 and parameters: {'embedding_dim': 355, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -182.0759203861932. +[I 2025-12-17 17:48:00,346] Trial 5 finished with value: -636.8759186446061 and parameters: {'embedding_dim': 270, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 3 with value: -182.0759203861932. +[I 2025-12-17 17:48:45,349] Trial 6 finished with value: -144.96909226588377 and parameters: {'embedding_dim': 289, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 6 with value: -144.96909226588377. +[I 2025-12-17 17:49:22,095] Trial 7 finished with value: -460.84596165670473 and parameters: {'embedding_dim': 504, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -144.96909226588377. +[I 2025-12-17 17:50:30,709] Trial 8 finished with value: -294.8703860423357 and parameters: {'embedding_dim': 343, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 6 with value: -144.96909226588377. +[I 2025-12-17 17:50:56,214] Trial 9 finished with value: -342.7654813836935 and parameters: {'embedding_dim': 323, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 6 with value: -144.96909226588377. +[I 2025-12-17 17:52:02,997] Trial 10 finished with value: -170.79531990371214 and parameters: {'embedding_dim': 429, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 6 with value: -144.96909226588377. +[I 2025-12-17 17:53:10,979] Trial 11 finished with value: -49.67487770080678 and parameters: {'embedding_dim': 436, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 17:54:08,013] Trial 12 finished with value: -673.5085581263957 and parameters: {'embedding_dim': 423, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 17:54:42,177] Trial 13 finished with value: -296.801639644428 and parameters: {'embedding_dim': 413, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 17:55:15,349] Trial 14 finished with value: -349.04321854653335 and parameters: {'embedding_dim': 485, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 17:56:22,483] Trial 15 finished with value: -82.40430047044632 and parameters: {'embedding_dim': 188, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 17:57:34,630] Trial 16 finished with value: -213.60559214776373 and parameters: {'embedding_dim': 164, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 17:58:44,649] Trial 17 finished with value: -51.2760658295499 and parameters: {'embedding_dim': 377, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 17:59:44,143] Trial 18 finished with value: -138.8669376525316 and parameters: {'embedding_dim': 389, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 18:00:59,758] Trial 19 finished with value: -1031.1788367302624 and parameters: {'embedding_dim': 445, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 18:01:58,517] Trial 20 finished with value: -98.89919453685741 and parameters: {'embedding_dim': 377, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 18:03:11,611] Trial 21 finished with value: -875.9200835284524 and parameters: {'embedding_dim': 217, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 18:04:29,139] Trial 22 finished with value: -824.1030395346584 and parameters: {'embedding_dim': 133, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 18:05:46,104] Trial 23 finished with value: -178.29669505136047 and parameters: {'embedding_dim': 457, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 18:06:44,353] Trial 24 finished with value: -404.06464361179945 and parameters: {'embedding_dim': 391, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 18:08:00,499] Trial 25 finished with value: -84.24762308827037 and parameters: {'embedding_dim': 461, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 18:09:03,370] Trial 26 finished with value: -135.5472219400864 and parameters: {'embedding_dim': 357, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 18:10:16,588] Trial 27 finished with value: -250.96280411205163 and parameters: {'embedding_dim': 309, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 18:11:55,559] Trial 28 finished with value: -108.38501711551959 and parameters: {'embedding_dim': 401, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 18:12:32,258] Trial 29 finished with value: -490.43746076540083 and parameters: {'embedding_dim': 183, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 11 with value: -49.67487770080678. +[I 2025-12-17 18:13:41,220] A new study created in memory with name: no-name-e15daebe-8139-4c15-b411-bf3cb721a8aa +[I 2025-12-17 18:13:48,282] Trial 0 finished with value: -39.96006923848732 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -39.96006923848732. +[I 2025-12-17 18:13:51,688] Trial 1 finished with value: -84.77667299588586 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -39.96006923848732. +[I 2025-12-17 18:13:54,821] Trial 2 finished with value: -8.011113339161273 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:13:58,094] Trial 3 finished with value: -333.34462088522025 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:14:04,875] Trial 4 finished with value: -39.28276907813935 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:14:08,082] Trial 5 finished with value: -148.40984225614955 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:14:14,593] Trial 6 finished with value: -29.46221075817879 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:14:19,488] Trial 7 finished with value: -95.34845970863843 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:14:26,587] Trial 8 finished with value: -82.05403022208714 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:14:29,693] Trial 9 finished with value: -100.38399198551906 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:14:34,502] Trial 10 finished with value: -44.468431986941425 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:14:39,302] Trial 11 finished with value: -59.3304408183923 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:14:45,747] Trial 12 finished with value: -68.76512547113026 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:14:50,662] Trial 13 finished with value: -28.191157753495023 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:14:55,441] Trial 14 finished with value: -97.50918321676471 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:14:58,608] Trial 15 finished with value: -84.75650433159342 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:15:03,332] Trial 16 finished with value: -78.42444113657176 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:15:06,562] Trial 17 finished with value: -150.39293858542942 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:15:11,435] Trial 18 finished with value: -31.002933703199524 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:15:16,805] Trial 19 finished with value: -42.20031024428078 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:15:19,935] Trial 20 finished with value: -142.44902490419992 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:15:26,373] Trial 21 finished with value: -122.3173628448265 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:15:32,857] Trial 22 finished with value: -33.3502467349031 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:15:39,292] Trial 23 finished with value: -11.422023283070619 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:15:44,062] Trial 24 finished with value: -37.46622550413048 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:15:48,832] Trial 25 finished with value: -46.78790776920904 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:15:53,618] Trial 26 finished with value: -87.56209379643877 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:15:56,733] Trial 27 finished with value: -16.289077010129777 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:15:59,917] Trial 28 finished with value: -34.48486028260494 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:16:03,370] Trial 29 finished with value: -64.35597800170588 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:16:06,751] Trial 30 finished with value: -64.5886357424697 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:16:09,916] Trial 31 finished with value: -39.72293792718092 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:16:16,321] Trial 32 finished with value: -41.74851041002282 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:16:19,475] Trial 33 finished with value: -50.279961908392366 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -8.011113339161273. +[I 2025-12-17 18:16:22,676] Trial 34 finished with value: -3.188320199070745 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 34 with value: -3.188320199070745. +[I 2025-12-17 18:16:26,015] Trial 35 finished with value: -105.09962465482398 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 34 with value: -3.188320199070745. +[I 2025-12-17 18:16:29,293] Trial 36 finished with value: -40.4848932933057 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 34 with value: -3.188320199070745. +[I 2025-12-17 18:16:32,540] Trial 37 finished with value: -1.9716778952435086 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 37 with value: -1.9716778952435086. +[I 2025-12-17 18:16:35,793] Trial 38 finished with value: -336.9877237784035 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 37 with value: -1.9716778952435086. +[I 2025-12-17 18:16:39,027] Trial 39 finished with value: -178.10346437156534 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 37 with value: -1.9716778952435086. +[I 2025-12-17 18:16:42,235] Trial 40 finished with value: -136.53991686819384 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 37 with value: -1.9716778952435086. +[I 2025-12-17 18:16:45,456] Trial 41 finished with value: -28.63442589368733 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 37 with value: -1.9716778952435086. +[I 2025-12-17 18:16:48,685] Trial 42 finished with value: -1.724242554818303 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -1.724242554818303. +[I 2025-12-17 18:16:51,890] Trial 43 finished with value: -188.14962279027839 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -1.724242554818303. +[I 2025-12-17 18:16:55,116] Trial 44 finished with value: -86.60129142277081 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -1.724242554818303. +[I 2025-12-17 18:16:58,345] Trial 45 finished with value: -56.03528933111559 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -1.724242554818303. +[I 2025-12-17 18:17:01,552] Trial 46 finished with value: -241.50187363945247 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -1.724242554818303. +[I 2025-12-17 18:17:04,937] Trial 47 finished with value: -23.470276334444623 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 42 with value: -1.724242554818303. +[I 2025-12-17 18:17:11,670] Trial 48 finished with value: -21.419545891452724 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 42 with value: -1.724242554818303. +[I 2025-12-17 18:17:16,546] Trial 49 finished with value: -124.04575098882938 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 42 with value: -1.724242554818303. +[I 2025-12-17 18:17:19,967] A new study created in memory with name: no-name-cc5cc4e9-04b6-4c0f-95cf-499c175b3cce +[I 2025-12-17 18:17:34,389] Trial 0 finished with value: -1415.1650893321128 and parameters: {'embedding_dim': 479, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -1415.1650893321128. +[I 2025-12-17 18:18:03,502] Trial 1 finished with value: -68.91751813871862 and parameters: {'embedding_dim': 282, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -68.91751813871862. +[I 2025-12-17 18:18:45,272] Trial 2 finished with value: -452.5595318176431 and parameters: {'embedding_dim': 412, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -68.91751813871862. +[I 2025-12-17 18:19:50,739] Trial 3 finished with value: -21.65559039958045 and parameters: {'embedding_dim': 187, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:20:02,326] Trial 4 finished with value: -1045.3114728983032 and parameters: {'embedding_dim': 469, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:21:21,918] Trial 5 finished with value: -54.49438177376361 and parameters: {'embedding_dim': 268, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:21:38,269] Trial 6 finished with value: -557.9834576944124 and parameters: {'embedding_dim': 383, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:22:30,879] Trial 7 finished with value: -247.2889020333135 and parameters: {'embedding_dim': 415, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:22:48,518] Trial 8 finished with value: -486.27152865273376 and parameters: {'embedding_dim': 309, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:22:56,766] Trial 9 finished with value: -908.6193666598774 and parameters: {'embedding_dim': 502, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:24:03,281] Trial 10 finished with value: -39.266646724841564 and parameters: {'embedding_dim': 158, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:25:09,274] Trial 11 finished with value: -435.1154664315105 and parameters: {'embedding_dim': 139, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:26:15,242] Trial 12 finished with value: -638.4913121594241 and parameters: {'embedding_dim': 141, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:27:39,859] Trial 13 finished with value: -591.4208786976639 and parameters: {'embedding_dim': 211, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:28:33,921] Trial 14 finished with value: -505.5147449173316 and parameters: {'embedding_dim': 183, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:29:12,901] Trial 15 finished with value: -114.17587428122326 and parameters: {'embedding_dim': 224, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:30:19,806] Trial 16 finished with value: -369.460396173351 and parameters: {'embedding_dim': 182, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:31:01,733] Trial 17 finished with value: -1397.9266559779344 and parameters: {'embedding_dim': 234, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:32:20,079] Trial 18 finished with value: -1005.6287226390125 and parameters: {'embedding_dim': 341, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:32:59,084] Trial 19 finished with value: -188.88936691498992 and parameters: {'embedding_dim': 173, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:33:56,226] Trial 20 finished with value: -649.1769252250344 and parameters: {'embedding_dim': 133, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:35:22,454] Trial 21 finished with value: -339.48664647716885 and parameters: {'embedding_dim': 265, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:36:57,177] Trial 22 finished with value: -80.4570179349952 and parameters: {'embedding_dim': 248, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:38:26,371] Trial 23 finished with value: -707.0370520090871 and parameters: {'embedding_dim': 197, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -21.65559039958045. +[I 2025-12-17 18:39:38,768] Trial 24 finished with value: -15.9225331026793 and parameters: {'embedding_dim': 297, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 24 with value: -15.9225331026793. +[I 2025-12-17 18:40:49,280] Trial 25 finished with value: -1093.0792905827602 and parameters: {'embedding_dim': 325, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 24 with value: -15.9225331026793. +[I 2025-12-17 18:41:41,714] Trial 26 finished with value: -2192.738471965633 and parameters: {'embedding_dim': 359, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 24 with value: -15.9225331026793. +[I 2025-12-17 18:42:47,162] Trial 27 finished with value: -371.9049537448667 and parameters: {'embedding_dim': 160, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 24 with value: -15.9225331026793. +[I 2025-12-17 18:43:22,332] Trial 28 finished with value: -1225.9675419540526 and parameters: {'embedding_dim': 285, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 24 with value: -15.9225331026793. +[I 2025-12-17 18:43:36,690] Trial 29 finished with value: -601.8666964801505 and parameters: {'embedding_dim': 206, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 24 with value: -15.9225331026793. +[I 2025-12-17 18:44:43,846] A new study created in memory with name: no-name-f7dd17de-e12a-4a6a-a5ef-24278d172302 +[I 2025-12-17 18:44:50,389] Trial 0 finished with value: -78.4902297764721 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -78.4902297764721. +[I 2025-12-17 18:44:53,626] Trial 1 finished with value: -79.78346185569109 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -78.4902297764721. +[I 2025-12-17 18:45:00,436] Trial 2 finished with value: -187.91797056655767 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -78.4902297764721. +[I 2025-12-17 18:45:03,929] Trial 3 finished with value: -91.31408686207165 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -78.4902297764721. +[I 2025-12-17 18:45:07,273] Trial 4 finished with value: -38.7009940671079 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -38.7009940671079. +[I 2025-12-17 18:45:10,587] Trial 5 finished with value: -39.93735071912228 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -38.7009940671079. +[I 2025-12-17 18:45:14,284] Trial 6 finished with value: -37.860402129099356 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -37.860402129099356. +[I 2025-12-17 18:45:20,846] Trial 7 finished with value: -49.02516395080848 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 6 with value: -37.860402129099356. +[I 2025-12-17 18:45:27,334] Trial 8 finished with value: -40.67238654819597 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 6 with value: -37.860402129099356. +[I 2025-12-17 18:45:32,325] Trial 9 finished with value: -87.92311095412217 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -37.860402129099356. +[I 2025-12-17 18:45:37,662] Trial 10 finished with value: -21.360098163277495 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -21.360098163277495. +[I 2025-12-17 18:45:42,985] Trial 11 finished with value: -21.296634720444665 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -21.296634720444665. +[I 2025-12-17 18:45:48,323] Trial 12 finished with value: -73.62299160656518 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -21.296634720444665. +[I 2025-12-17 18:45:53,664] Trial 13 finished with value: -51.85410968500427 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -21.296634720444665. +[I 2025-12-17 18:45:58,988] Trial 14 finished with value: -14.76799046292875 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.76799046292875. +[I 2025-12-17 18:46:04,357] Trial 15 finished with value: -74.1708538400342 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.76799046292875. +[I 2025-12-17 18:46:09,699] Trial 16 finished with value: -41.25553596600402 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.76799046292875. +[I 2025-12-17 18:46:15,088] Trial 17 finished with value: -41.840030842962435 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.76799046292875. +[I 2025-12-17 18:46:22,316] Trial 18 finished with value: -73.85508647311039 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -14.76799046292875. +[I 2025-12-17 18:46:27,646] Trial 19 finished with value: -45.36398838879964 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.76799046292875. +[I 2025-12-17 18:46:32,970] Trial 20 finished with value: -35.682126468828024 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.76799046292875. +[I 2025-12-17 18:46:38,305] Trial 21 finished with value: -105.2467251795031 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.76799046292875. +[I 2025-12-17 18:46:43,632] Trial 22 finished with value: -173.53058968687031 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.76799046292875. +[I 2025-12-17 18:46:48,953] Trial 23 finished with value: -20.07438934875609 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.76799046292875. +[I 2025-12-17 18:46:54,307] Trial 24 finished with value: -31.146992165660006 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.76799046292875. +[I 2025-12-17 18:46:59,637] Trial 25 finished with value: -14.314004502848233 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -14.314004502848233. +[I 2025-12-17 18:47:03,169] Trial 26 finished with value: -92.209628255603 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 25 with value: -14.314004502848233. +[I 2025-12-17 18:47:10,471] Trial 27 finished with value: -33.67047732249514 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -14.314004502848233. +[I 2025-12-17 18:47:15,339] Trial 28 finished with value: -32.10408019270135 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 25 with value: -14.314004502848233. +[I 2025-12-17 18:47:22,106] Trial 29 finished with value: -27.694956819137975 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 25 with value: -14.314004502848233. +[I 2025-12-17 18:47:26,970] Trial 30 finished with value: -101.31130055980469 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 25 with value: -14.314004502848233. +[I 2025-12-17 18:47:32,314] Trial 31 finished with value: -48.54230269505784 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -14.314004502848233. +[I 2025-12-17 18:47:37,667] Trial 32 finished with value: -1.8982525541949884 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:47:43,000] Trial 33 finished with value: -76.63000573689234 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:47:48,337] Trial 34 finished with value: -67.09234831235568 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:47:51,815] Trial 35 finished with value: -51.600271643409755 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:47:56,836] Trial 36 finished with value: -10.81877801900151 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:48:00,159] Trial 37 finished with value: -26.885345841034898 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:48:03,467] Trial 38 finished with value: -64.5874961886723 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:48:08,536] Trial 39 finished with value: -7.171092653022217 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:48:15,324] Trial 40 finished with value: -33.79338676586834 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:48:20,395] Trial 41 finished with value: -46.910982453125214 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:48:25,518] Trial 42 finished with value: -224.07890546504547 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:48:30,512] Trial 43 finished with value: -66.64894126749893 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:48:35,450] Trial 44 finished with value: -28.418600507244424 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:48:40,414] Trial 45 finished with value: -74.87410858636738 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:48:45,733] Trial 46 finished with value: -28.52147265804105 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:48:50,784] Trial 47 finished with value: -61.813983830427134 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:48:55,807] Trial 48 finished with value: -41.49668008150094 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:49:02,298] Trial 49 finished with value: -39.2641384223451 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 32 with value: -1.8982525541949884. +[I 2025-12-17 18:49:07,762] A new study created in memory with name: no-name-1b6f4a93-97d4-43dc-983a-72940cf9d9e0 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_1_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_1_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_1_incheon.csv: Class 0=9293 | Class 1=9617 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_1_incheon.csv: Class 0=9293 | Class 1=9617 | Class 2=14554 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_1_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_1_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_1_seoul.csv: Class 0=9402 | Class 1=9927 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_1_seoul.csv: Class 0=9402 | Class 1=9927 | Class 2=15676 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 18:49:19,699] Trial 0 finished with value: -7370.525410516945 and parameters: {'embedding_dim': 263, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -7370.525410516945. +[I 2025-12-17 18:49:27,180] Trial 1 finished with value: -275.72518086605163 and parameters: {'embedding_dim': 378, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:50:02,699] Trial 2 finished with value: -1323.8863691942356 and parameters: {'embedding_dim': 132, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:50:18,430] Trial 3 finished with value: -405.7385292786847 and parameters: {'embedding_dim': 464, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:50:29,348] Trial 4 finished with value: -1330.6497490598542 and parameters: {'embedding_dim': 134, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:50:40,007] Trial 5 finished with value: -510.96667138685837 and parameters: {'embedding_dim': 163, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:51:09,519] Trial 6 finished with value: -3498.1075143893563 and parameters: {'embedding_dim': 326, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:51:45,627] Trial 7 finished with value: -1282.896067827549 and parameters: {'embedding_dim': 305, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:52:01,109] Trial 8 finished with value: -475.1486693977967 and parameters: {'embedding_dim': 319, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:52:16,855] Trial 9 finished with value: -857.4965857984606 and parameters: {'embedding_dim': 220, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:52:24,380] Trial 10 finished with value: -1894.2626138886033 and parameters: {'embedding_dim': 437, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:52:30,543] Trial 11 finished with value: -1355.599176328549 and parameters: {'embedding_dim': 506, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:52:42,172] Trial 12 finished with value: -455.9669063812342 and parameters: {'embedding_dim': 403, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:52:53,644] Trial 13 finished with value: -1878.4071722479855 and parameters: {'embedding_dim': 407, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:53:08,979] Trial 14 finished with value: -1056.8250849834021 and parameters: {'embedding_dim': 501, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:53:15,684] Trial 15 finished with value: -3608.8427653503672 and parameters: {'embedding_dim': 447, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:53:26,275] Trial 16 finished with value: -422.47321428813837 and parameters: {'embedding_dim': 380, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:53:35,322] Trial 17 finished with value: -346.39521049414145 and parameters: {'embedding_dim': 357, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -275.72518086605163. +[I 2025-12-17 18:53:44,839] Trial 18 finished with value: -178.8663197135195 and parameters: {'embedding_dim': 370, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 18 with value: -178.8663197135195. +[I 2025-12-17 18:53:51,396] Trial 19 finished with value: -708.7800634595806 and parameters: {'embedding_dim': 270, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 18 with value: -178.8663197135195. +[I 2025-12-17 18:54:01,348] Trial 20 finished with value: -616.2507395575938 and parameters: {'embedding_dim': 353, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 18 with value: -178.8663197135195. +[I 2025-12-17 18:54:11,073] Trial 21 finished with value: -258.8323668756531 and parameters: {'embedding_dim': 356, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 18 with value: -178.8663197135195. +[I 2025-12-17 18:54:17,971] Trial 22 finished with value: -1951.0818302051116 and parameters: {'embedding_dim': 376, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 18 with value: -178.8663197135195. +[I 2025-12-17 18:54:28,084] Trial 23 finished with value: -483.74565167731214 and parameters: {'embedding_dim': 406, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 18 with value: -178.8663197135195. +[I 2025-12-17 18:54:38,383] Trial 24 finished with value: -1687.4348467352995 and parameters: {'embedding_dim': 290, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 18 with value: -178.8663197135195. +[I 2025-12-17 18:54:46,038] Trial 25 finished with value: -1662.1651276742152 and parameters: {'embedding_dim': 349, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 18 with value: -178.8663197135195. +[I 2025-12-17 18:54:59,217] Trial 26 finished with value: -1374.1038128944388 and parameters: {'embedding_dim': 237, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 18 with value: -178.8663197135195. +[I 2025-12-17 18:55:16,653] Trial 27 finished with value: -1205.8352463495296 and parameters: {'embedding_dim': 427, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -178.8663197135195. +[I 2025-12-17 18:55:23,856] Trial 28 finished with value: -4828.943372111573 and parameters: {'embedding_dim': 469, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 18 with value: -178.8663197135195. +[I 2025-12-17 18:55:36,127] Trial 29 finished with value: -1478.4465379699893 and parameters: {'embedding_dim': 334, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 18 with value: -178.8663197135195. +[I 2025-12-17 18:55:47,905] A new study created in memory with name: no-name-6a98390c-0665-4c45-acfc-3b0107d9d80f +[I 2025-12-17 18:55:54,292] Trial 0 finished with value: -121.35977768405475 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -121.35977768405475. +[I 2025-12-17 18:56:01,348] Trial 1 finished with value: -68.5664945045001 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -68.5664945045001. +[I 2025-12-17 18:56:08,737] Trial 2 finished with value: -98.24547404183002 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -68.5664945045001. +[I 2025-12-17 18:56:11,967] Trial 3 finished with value: -17.584834904329103 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:56:18,930] Trial 4 finished with value: -97.47828592582843 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:56:21,982] Trial 5 finished with value: -88.81858380879854 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:56:28,350] Trial 6 finished with value: -35.26798993781809 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:56:35,428] Trial 7 finished with value: -177.8998200201475 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:56:38,677] Trial 8 finished with value: -179.17940202596645 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:56:43,643] Trial 9 finished with value: -69.43524748058823 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:56:48,555] Trial 10 finished with value: -112.38257350935376 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:56:51,701] Trial 11 finished with value: -312.3164832018398 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:56:56,458] Trial 12 finished with value: -104.94424284354005 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:56:59,671] Trial 13 finished with value: -192.4271141430964 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:57:04,433] Trial 14 finished with value: -234.43723580202607 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:57:09,463] Trial 15 finished with value: -274.46722932261565 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:57:12,602] Trial 16 finished with value: -252.31889940083664 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:57:17,554] Trial 17 finished with value: -106.25998419638782 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:57:22,481] Trial 18 finished with value: -83.76421766040045 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -17.584834904329103. +[I 2025-12-17 18:57:25,614] Trial 19 finished with value: -16.520218167792596 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:57:28,743] Trial 20 finished with value: -43.372296156635265 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:57:31,860] Trial 21 finished with value: -253.31261394750578 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:57:34,995] Trial 22 finished with value: -269.31288608002893 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:57:38,148] Trial 23 finished with value: -97.56593661266156 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:57:42,903] Trial 24 finished with value: -55.084195625232404 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:57:46,117] Trial 25 finished with value: -552.3015206306551 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:57:52,503] Trial 26 finished with value: -108.10299383136214 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:57:57,262] Trial 27 finished with value: -83.62732092491598 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:58:00,629] Trial 28 finished with value: -160.50316256782108 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:58:07,256] Trial 29 finished with value: -33.96201773159294 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:58:13,936] Trial 30 finished with value: -31.5947824277752 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:58:20,639] Trial 31 finished with value: -104.58436161886875 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:58:27,283] Trial 32 finished with value: -155.5972409400914 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:58:33,955] Trial 33 finished with value: -52.28294403594987 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:58:40,665] Trial 34 finished with value: -144.9121560461917 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:58:47,328] Trial 35 finished with value: -177.4468521300475 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:58:54,427] Trial 36 finished with value: -175.65319782497176 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:59:01,062] Trial 37 finished with value: -261.56206516312744 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:59:07,581] Trial 38 finished with value: -82.68244982385451 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:59:11,155] Trial 39 finished with value: -271.1734312505714 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:59:16,064] Trial 40 finished with value: -49.26195349882819 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:59:22,474] Trial 41 finished with value: -41.77531739612928 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:59:29,105] Trial 42 finished with value: -167.24250188792632 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:59:36,206] Trial 43 finished with value: -39.785999284672634 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:59:42,831] Trial 44 finished with value: -120.36860900622294 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:59:49,217] Trial 45 finished with value: -132.6720269793482 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:59:54,133] Trial 46 finished with value: -320.7001127418713 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 18:59:57,295] Trial 47 finished with value: -159.4866531640818 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 19:00:02,290] Trial 48 finished with value: -456.86466832460405 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 19:00:08,681] Trial 49 finished with value: -207.29388610310352 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -16.520218167792596. +[I 2025-12-17 19:00:12,055] A new study created in memory with name: no-name-371bafb5-4440-4899-9347-4c37b0a28da4 +[I 2025-12-17 19:00:16,865] Trial 0 finished with value: -4692.557328842285 and parameters: {'embedding_dim': 367, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -4692.557328842285. +[I 2025-12-17 19:00:27,989] Trial 1 finished with value: -1482.1105859807585 and parameters: {'embedding_dim': 489, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 1 with value: -1482.1105859807585. +[I 2025-12-17 19:00:36,500] Trial 2 finished with value: -518.1112196740971 and parameters: {'embedding_dim': 219, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -518.1112196740971. +[I 2025-12-17 19:00:53,105] Trial 3 finished with value: -858.3529294979705 and parameters: {'embedding_dim': 415, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -518.1112196740971. +[I 2025-12-17 19:01:01,581] Trial 4 finished with value: -590.5008616563533 and parameters: {'embedding_dim': 402, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -518.1112196740971. +[I 2025-12-17 19:01:12,781] Trial 5 finished with value: -1437.8553241848458 and parameters: {'embedding_dim': 204, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 2 with value: -518.1112196740971. +[I 2025-12-17 19:01:29,199] Trial 6 finished with value: -1447.2345984617407 and parameters: {'embedding_dim': 369, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -518.1112196740971. +[I 2025-12-17 19:01:40,129] Trial 7 finished with value: -523.1688944870534 and parameters: {'embedding_dim': 477, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 2 with value: -518.1112196740971. +[I 2025-12-17 19:01:53,796] Trial 8 finished with value: -950.0706710173117 and parameters: {'embedding_dim': 361, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -518.1112196740971. +[I 2025-12-17 19:02:05,409] Trial 9 finished with value: -460.1964294971882 and parameters: {'embedding_dim': 414, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 9 with value: -460.1964294971882. +[I 2025-12-17 19:02:18,861] Trial 10 finished with value: -450.94879352985106 and parameters: {'embedding_dim': 292, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -450.94879352985106. +[I 2025-12-17 19:02:32,347] Trial 11 finished with value: -1506.382157254884 and parameters: {'embedding_dim': 268, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -450.94879352985106. +[I 2025-12-17 19:02:43,575] Trial 12 finished with value: -459.3415855724912 and parameters: {'embedding_dim': 138, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -450.94879352985106. +[I 2025-12-17 19:02:54,821] Trial 13 finished with value: -890.4120440902036 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -450.94879352985106. +[I 2025-12-17 19:03:08,676] Trial 14 finished with value: -898.8281181076741 and parameters: {'embedding_dim': 133, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -450.94879352985106. +[I 2025-12-17 19:03:36,365] Trial 15 finished with value: -864.7973377407045 and parameters: {'embedding_dim': 285, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -450.94879352985106. +[I 2025-12-17 19:03:49,731] Trial 16 finished with value: -438.1470483281794 and parameters: {'embedding_dim': 186, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 16 with value: -438.1470483281794. +[I 2025-12-17 19:04:03,340] Trial 17 finished with value: -492.99546240092224 and parameters: {'embedding_dim': 202, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 16 with value: -438.1470483281794. +[I 2025-12-17 19:04:16,821] Trial 18 finished with value: -753.5197357972403 and parameters: {'embedding_dim': 271, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 16 with value: -438.1470483281794. +[I 2025-12-17 19:04:49,857] Trial 19 finished with value: -918.343518838779 and parameters: {'embedding_dim': 325, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 16 with value: -438.1470483281794. +[I 2025-12-17 19:04:58,899] Trial 20 finished with value: -695.604446641099 and parameters: {'embedding_dim': 176, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -438.1470483281794. +[I 2025-12-17 19:05:10,207] Trial 21 finished with value: -652.7413807620833 and parameters: {'embedding_dim': 163, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 16 with value: -438.1470483281794. +[I 2025-12-17 19:05:21,573] Trial 22 finished with value: -951.6967712651427 and parameters: {'embedding_dim': 234, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 16 with value: -438.1470483281794. +[I 2025-12-17 19:05:35,206] Trial 23 finished with value: -473.4719580857227 and parameters: {'embedding_dim': 162, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 16 with value: -438.1470483281794. +[I 2025-12-17 19:05:46,455] Trial 24 finished with value: -647.7880291089349 and parameters: {'embedding_dim': 304, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 16 with value: -438.1470483281794. +[I 2025-12-17 19:06:00,115] Trial 25 finished with value: -397.9562635256158 and parameters: {'embedding_dim': 248, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 25 with value: -397.9562635256158. +[I 2025-12-17 19:06:33,454] Trial 26 finished with value: -216.80218991415236 and parameters: {'embedding_dim': 239, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 26 with value: -216.80218991415236. +[I 2025-12-17 19:07:06,601] Trial 27 finished with value: -261.39433436032425 and parameters: {'embedding_dim': 243, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 26 with value: -216.80218991415236. +[I 2025-12-17 19:07:44,623] Trial 28 finished with value: -116.72495834568821 and parameters: {'embedding_dim': 240, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 28 with value: -116.72495834568821. +[I 2025-12-17 19:08:17,484] Trial 29 finished with value: -340.9331994642369 and parameters: {'embedding_dim': 325, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 28 with value: -116.72495834568821. +[I 2025-12-17 19:08:51,667] A new study created in memory with name: no-name-47ae91bf-448e-4149-b324-a1b26b6979b2 +[I 2025-12-17 19:09:04,414] Trial 0 finished with value: -45.650960169223865 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -45.650960169223865. +[I 2025-12-17 19:09:09,901] Trial 1 finished with value: -120.03011435872529 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -45.650960169223865. +[I 2025-12-17 19:09:15,090] Trial 2 finished with value: -25.145991624002104 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -25.145991624002104. +[I 2025-12-17 19:09:21,303] Trial 3 finished with value: -126.19995884887066 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -25.145991624002104. +[I 2025-12-17 19:09:34,046] Trial 4 finished with value: -216.03529816758382 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -25.145991624002104. +[I 2025-12-17 19:09:42,257] Trial 5 finished with value: -224.79933948296232 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -25.145991624002104. +[I 2025-12-17 19:09:47,540] Trial 6 finished with value: -301.5029580402239 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -25.145991624002104. +[I 2025-12-17 19:09:52,400] Trial 7 finished with value: -213.82090105349738 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -25.145991624002104. +[I 2025-12-17 19:09:56,968] Trial 8 finished with value: -307.11795223274396 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -25.145991624002104. +[I 2025-12-17 19:10:02,153] Trial 9 finished with value: -105.36936836263747 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -25.145991624002104. +[I 2025-12-17 19:10:09,550] Trial 10 finished with value: -9.399812530591564 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:10:16,919] Trial 11 finished with value: -36.796353232399866 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:10:24,293] Trial 12 finished with value: -35.822371137610475 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:10:29,783] Trial 13 finished with value: -52.21683954742658 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:10:34,956] Trial 14 finished with value: -20.4644778179386 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:10:45,279] Trial 15 finished with value: -38.6189105546316 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:10:50,484] Trial 16 finished with value: -31.264147588347807 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:10:57,949] Trial 17 finished with value: -108.5546088382095 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:11:06,571] Trial 18 finished with value: -32.44401935300032 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:11:11,873] Trial 19 finished with value: -16.64102205400474 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:11:18,690] Trial 20 finished with value: -16.887133344748744 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:11:25,605] Trial 21 finished with value: -152.10553044985116 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:11:32,500] Trial 22 finished with value: -21.265987346674684 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:11:39,421] Trial 23 finished with value: -45.164729950292426 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:11:46,333] Trial 24 finished with value: -72.17271492072656 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:11:51,821] Trial 25 finished with value: -60.00587932847298 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:11:58,831] Trial 26 finished with value: -10.692110008480284 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:12:03,988] Trial 27 finished with value: -426.68442311295007 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:12:18,457] Trial 28 finished with value: -80.0141522001839 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:12:27,124] Trial 29 finished with value: -69.62966794929827 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:12:36,416] Trial 30 finished with value: -30.630240088712156 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:12:43,409] Trial 31 finished with value: -150.681381620212 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:12:52,055] Trial 32 finished with value: -150.61319354049976 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:13:00,214] Trial 33 finished with value: -44.86115583755674 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:13:07,148] Trial 34 finished with value: -38.55947002184735 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:13:12,347] Trial 35 finished with value: -30.6803035023297 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:13:27,465] Trial 36 finished with value: -24.233474683558015 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:13:31,993] Trial 37 finished with value: -124.27972971579783 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:13:37,504] Trial 38 finished with value: -166.37204073698084 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:13:44,453] Trial 39 finished with value: -20.791841117262713 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:13:53,080] Trial 40 finished with value: -175.65224295016074 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:13:58,265] Trial 41 finished with value: -94.78762776097172 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:14:03,468] Trial 42 finished with value: -112.74905274512896 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:14:08,681] Trial 43 finished with value: -114.9268206215697 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:14:13,920] Trial 44 finished with value: -18.314652153390227 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:14:20,805] Trial 45 finished with value: -70.52496626669709 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:14:26,885] Trial 46 finished with value: -44.968443853214524 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:14:36,035] Trial 47 finished with value: -57.02530469683609 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:14:39,483] Trial 48 finished with value: -86.4390808848199 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 10 with value: -9.399812530591564. +[I 2025-12-17 19:14:45,035] Trial 49 finished with value: -4.647727881631673 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 49 with value: -4.647727881631673. +[I 2025-12-17 19:14:50,641] A new study created in memory with name: no-name-2a3b2542-352e-4b51-8922-4e388acc3971 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_1_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_1_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_1_busan.csv: Class 0=9572 | Class 1=8855 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_1_busan.csv: Class 0=9572 | Class 1=8855 | Class 2=16492 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_1_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_1_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_1_daegu.csv: Class 0=8787 | Class 1=9506 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_1_daegu.csv: Class 0=8787 | Class 1=9506 | Class 2=16582 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 19:16:06,583] Trial 0 finished with value: -45.84995374567559 and parameters: {'embedding_dim': 215, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:16:23,203] Trial 1 finished with value: -1956.924809193025 and parameters: {'embedding_dim': 509, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:16:35,896] Trial 2 finished with value: -261.95058472403673 and parameters: {'embedding_dim': 439, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:16:50,055] Trial 3 finished with value: -376.8996318086928 and parameters: {'embedding_dim': 365, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:17:45,423] Trial 4 finished with value: -833.1956237769599 and parameters: {'embedding_dim': 384, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:18:43,806] Trial 5 finished with value: -307.67981003220905 and parameters: {'embedding_dim': 466, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:18:52,851] Trial 6 finished with value: -5748.576643756939 and parameters: {'embedding_dim': 481, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:19:13,796] Trial 7 finished with value: -384.4198177490798 and parameters: {'embedding_dim': 334, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:19:58,142] Trial 8 finished with value: -1281.3025029089524 and parameters: {'embedding_dim': 169, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:20:19,943] Trial 9 finished with value: -533.7899532723652 and parameters: {'embedding_dim': 204, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:21:42,192] Trial 10 finished with value: -476.4706348785866 and parameters: {'embedding_dim': 248, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:22:27,077] Trial 11 finished with value: -423.17938977283825 and parameters: {'embedding_dim': 265, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:22:46,888] Trial 12 finished with value: -159.2288782056262 and parameters: {'embedding_dim': 136, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:23:04,957] Trial 13 finished with value: -221.1722283026166 and parameters: {'embedding_dim': 137, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:24:22,667] Trial 14 finished with value: -1436.6350550720326 and parameters: {'embedding_dim': 225, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:24:42,605] Trial 15 finished with value: -301.7471660926917 and parameters: {'embedding_dim': 139, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:26:04,322] Trial 16 finished with value: -250.13173196558725 and parameters: {'embedding_dim': 297, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:26:25,676] Trial 17 finished with value: -692.3479288755119 and parameters: {'embedding_dim': 187, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:27:45,539] Trial 18 finished with value: -479.5452650996404 and parameters: {'embedding_dim': 176, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:28:20,211] Trial 19 finished with value: -53.56467477742262 and parameters: {'embedding_dim': 285, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:28:48,887] Trial 20 finished with value: -483.2389744173175 and parameters: {'embedding_dim': 277, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:29:24,060] Trial 21 finished with value: -493.6418309793746 and parameters: {'embedding_dim': 229, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:29:58,698] Trial 22 finished with value: -646.2501635010492 and parameters: {'embedding_dim': 315, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:30:27,563] Trial 23 finished with value: -237.33509496510868 and parameters: {'embedding_dim': 158, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:30:48,250] Trial 24 finished with value: -350.99840545653365 and parameters: {'embedding_dim': 205, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:31:22,669] Trial 25 finished with value: -233.90530360090813 and parameters: {'embedding_dim': 128, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:32:15,630] Trial 26 finished with value: -62.76219387963834 and parameters: {'embedding_dim': 235, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:33:08,072] Trial 27 finished with value: -1896.9141112256918 and parameters: {'embedding_dim': 288, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -45.84995374567559. +[I 2025-12-17 19:33:47,748] Trial 28 finished with value: -25.681403111083156 and parameters: {'embedding_dim': 343, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 28 with value: -25.681403111083156. +[I 2025-12-17 19:34:14,316] Trial 29 finished with value: -3055.7056132420685 and parameters: {'embedding_dim': 399, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 28 with value: -25.681403111083156. +[I 2025-12-17 19:34:54,106] A new study created in memory with name: no-name-ea21e6ff-b809-4a94-bbeb-8f3548862df9 +[I 2025-12-17 19:35:00,878] Trial 0 finished with value: -129.37197252176287 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -129.37197252176287. +[I 2025-12-17 19:35:07,356] Trial 1 finished with value: -104.42261008699191 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -104.42261008699191. +[I 2025-12-17 19:35:14,117] Trial 2 finished with value: -29.735232615952167 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -29.735232615952167. +[I 2025-12-17 19:35:20,662] Trial 3 finished with value: -152.5675388577862 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -29.735232615952167. +[I 2025-12-17 19:35:24,132] Trial 4 finished with value: -66.49529741753642 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -29.735232615952167. +[I 2025-12-17 19:35:30,918] Trial 5 finished with value: -150.4287617573088 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -29.735232615952167. +[I 2025-12-17 19:35:35,955] Trial 6 finished with value: -153.70752806315008 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -29.735232615952167. +[I 2025-12-17 19:35:39,358] Trial 7 finished with value: -136.99840974207365 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -29.735232615952167. +[I 2025-12-17 19:35:45,864] Trial 8 finished with value: -63.33105089673761 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -29.735232615952167. +[I 2025-12-17 19:35:49,165] Trial 9 finished with value: -38.86255259352047 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -29.735232615952167. +[I 2025-12-17 19:35:54,504] Trial 10 finished with value: -2.3795075181200165 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:35:59,846] Trial 11 finished with value: -32.53724390503852 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:36:05,172] Trial 12 finished with value: -97.00837315916768 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:36:10,538] Trial 13 finished with value: -98.68661903402905 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:36:15,903] Trial 14 finished with value: -33.518475835687674 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:36:20,974] Trial 15 finished with value: -34.74261559355247 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:36:28,257] Trial 16 finished with value: -3.056836718796432 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:36:31,725] Trial 17 finished with value: -195.11758953417834 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:36:37,112] Trial 18 finished with value: -209.85492985869055 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:36:44,424] Trial 19 finished with value: -100.89419636928757 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:36:49,840] Trial 20 finished with value: -35.59778383786883 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:36:57,138] Trial 21 finished with value: -115.32187957714595 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:37:03,978] Trial 22 finished with value: -34.302918735075174 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:37:10,556] Trial 23 finished with value: -181.99334627320212 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:37:15,953] Trial 24 finished with value: -159.2415715607013 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:37:22,725] Trial 25 finished with value: -8.244717606857494 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:37:29,970] Trial 26 finished with value: -60.45346427278479 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:37:35,330] Trial 27 finished with value: -115.49415269258348 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:37:41,974] Trial 28 finished with value: -38.402601946217594 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:37:48,770] Trial 29 finished with value: -31.175216898663656 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:37:53,813] Trial 30 finished with value: -47.76085598363006 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:38:00,583] Trial 31 finished with value: -28.678947423714426 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:38:07,342] Trial 32 finished with value: -14.863513743388097 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:38:14,183] Trial 33 finished with value: -247.9100942022685 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:38:21,003] Trial 34 finished with value: -117.38008178324422 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:38:27,787] Trial 35 finished with value: -63.550862771553795 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:38:34,370] Trial 36 finished with value: -99.07542111541966 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:38:41,241] Trial 37 finished with value: -26.606312984199633 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:38:48,453] Trial 38 finished with value: -91.05339995529373 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:38:51,805] Trial 39 finished with value: -22.45371309952503 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:38:56,734] Trial 40 finished with value: -76.59308981638338 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:39:00,247] Trial 41 finished with value: -52.465291469693824 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:39:03,577] Trial 42 finished with value: -254.60701941707723 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:39:06,924] Trial 43 finished with value: -20.970031474092686 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:39:10,275] Trial 44 finished with value: -419.7615616141689 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:39:17,043] Trial 45 finished with value: -71.29765521722499 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:39:20,689] Trial 46 finished with value: -44.497963304126344 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:39:28,052] Trial 47 finished with value: -167.90394160164865 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:39:33,093] Trial 48 finished with value: -26.076626344871602 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:39:40,300] Trial 49 finished with value: -16.044438247891165 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -2.3795075181200165. +[I 2025-12-17 19:39:45,801] A new study created in memory with name: no-name-6224ee47-2cd9-4bd9-8c88-4822fe395b9c +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_1_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_1_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_1_daejeon.csv: Class 0=7951 | Class 1=9879 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_1_daejeon.csv: Class 0=7951 | Class 1=9879 | Class 2=15441 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 19:40:06,252] Trial 0 finished with value: -578.570636369471 and parameters: {'embedding_dim': 417, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -578.570636369471. +[I 2025-12-17 19:40:56,512] Trial 1 finished with value: -1118.2921008676394 and parameters: {'embedding_dim': 322, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -578.570636369471. +[I 2025-12-17 19:41:41,838] Trial 2 finished with value: -630.4394118767987 and parameters: {'embedding_dim': 501, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -578.570636369471. +[I 2025-12-17 19:42:01,044] Trial 3 finished with value: -947.4885499126938 and parameters: {'embedding_dim': 376, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -578.570636369471. +[I 2025-12-17 19:42:20,853] Trial 4 finished with value: -533.2632938147892 and parameters: {'embedding_dim': 475, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -533.2632938147892. +[I 2025-12-17 19:42:49,256] Trial 5 finished with value: -518.0198575181287 and parameters: {'embedding_dim': 370, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 5 with value: -518.0198575181287. +[I 2025-12-17 19:42:59,911] Trial 6 finished with value: -744.3924488585371 and parameters: {'embedding_dim': 222, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 5 with value: -518.0198575181287. +[I 2025-12-17 19:43:08,149] Trial 7 finished with value: -807.4028591677862 and parameters: {'embedding_dim': 508, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 5 with value: -518.0198575181287. +[I 2025-12-17 19:43:20,312] Trial 8 finished with value: -3178.1198133798416 and parameters: {'embedding_dim': 197, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 5 with value: -518.0198575181287. +[I 2025-12-17 19:43:45,107] Trial 9 finished with value: -2337.8284907880034 and parameters: {'embedding_dim': 359, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 5 with value: -518.0198575181287. +[I 2025-12-17 19:44:12,987] Trial 10 finished with value: -106.8575090290698 and parameters: {'embedding_dim': 265, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:44:43,328] Trial 11 finished with value: -206.61638791818098 and parameters: {'embedding_dim': 262, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:45:19,364] Trial 12 finished with value: -235.35610223661115 and parameters: {'embedding_dim': 253, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:45:50,412] Trial 13 finished with value: -506.15563849485716 and parameters: {'embedding_dim': 142, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:46:28,890] Trial 14 finished with value: -332.23285367377576 and parameters: {'embedding_dim': 275, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:46:43,949] Trial 15 finished with value: -1945.5001878615487 and parameters: {'embedding_dim': 292, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:47:18,617] Trial 16 finished with value: -141.62603298090448 and parameters: {'embedding_dim': 180, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:48:21,613] Trial 17 finished with value: -822.5180322549202 and parameters: {'embedding_dim': 130, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:49:03,035] Trial 18 finished with value: -139.2619349144477 and parameters: {'embedding_dim': 208, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:49:46,562] Trial 19 finished with value: -141.53830514989536 and parameters: {'embedding_dim': 210, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:50:28,896] Trial 20 finished with value: -682.2011196006601 and parameters: {'embedding_dim': 323, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:51:10,365] Trial 21 finished with value: -253.26426949198083 and parameters: {'embedding_dim': 224, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:51:53,890] Trial 22 finished with value: -206.22015089400023 and parameters: {'embedding_dim': 179, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:52:28,133] Trial 23 finished with value: -440.4672023762768 and parameters: {'embedding_dim': 222, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:53:11,322] Trial 24 finished with value: -115.1205849068594 and parameters: {'embedding_dim': 167, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:54:10,317] Trial 25 finished with value: -140.31792985412503 and parameters: {'embedding_dim': 162, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:54:40,119] Trial 26 finished with value: -1632.9662666894858 and parameters: {'embedding_dim': 242, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:55:22,864] Trial 27 finished with value: -383.72009456506964 and parameters: {'embedding_dim': 297, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:55:52,261] Trial 28 finished with value: -377.9819018837941 and parameters: {'embedding_dim': 179, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 10 with value: -106.8575090290698. +[I 2025-12-17 19:56:50,636] Trial 29 finished with value: -352.5984071403577 and parameters: {'embedding_dim': 155, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -106.8575090290698. +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_1_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_1_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_1_gwangju.csv: Class 0=9015 | Class 1=9456 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_1_gwangju.csv: Class 0=9015 | Class 1=9456 | Class 2=15692 + +Running ctgan_sample_10000_2.py... +[I 2025-12-17 19:57:22,485] A new study created in memory with name: no-name-1032ea77-4366-44b3-9775-e77fb6c237f9 +[I 2025-12-17 19:57:30,965] Trial 0 finished with value: -50.84948183130197 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -50.84948183130197. +[I 2025-12-17 19:57:45,793] Trial 1 finished with value: -20.948591811503704 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -20.948591811503704. +[I 2025-12-17 19:57:55,760] Trial 2 finished with value: -80.72105124734627 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -20.948591811503704. +[I 2025-12-17 19:58:11,029] Trial 3 finished with value: -9.714445983783698 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -9.714445983783698. +[I 2025-12-17 19:58:25,570] Trial 4 finished with value: -21.083401387768454 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -9.714445983783698. +[I 2025-12-17 19:58:35,693] Trial 5 finished with value: -238.71684027342988 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -9.714445983783698. +[I 2025-12-17 19:58:49,231] Trial 6 finished with value: -14.24203264874851 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -9.714445983783698. +[I 2025-12-17 19:59:12,372] Trial 7 finished with value: -104.86754467933248 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -9.714445983783698. +[I 2025-12-17 19:59:20,629] Trial 8 finished with value: -106.52783967068348 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -9.714445983783698. +[I 2025-12-17 19:59:32,017] Trial 9 finished with value: -15.424000902753635 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -9.714445983783698. +[I 2025-12-17 19:59:45,490] Trial 10 finished with value: -5.043513573656929 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -5.043513573656929. +[I 2025-12-17 19:59:58,923] Trial 11 finished with value: -4.280785697633835 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:00:12,421] Trial 12 finished with value: -93.2649336644752 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:00:27,877] Trial 13 finished with value: -14.262046563094462 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:00:35,541] Trial 14 finished with value: -30.002819842277557 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:00:45,587] Trial 15 finished with value: -71.66644931654461 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:00:59,099] Trial 16 finished with value: -7.6884863314954375 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:01:05,645] Trial 17 finished with value: -24.969817002474194 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:01:36,974] Trial 18 finished with value: -33.86094623915246 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:01:44,238] Trial 19 finished with value: -87.02156222772521 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:01:54,332] Trial 20 finished with value: -4.95770949611519 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:02:04,263] Trial 21 finished with value: -130.70281428026087 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:02:14,182] Trial 22 finished with value: -233.47861071682215 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:02:28,811] Trial 23 finished with value: -116.2051831557996 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:02:36,245] Trial 24 finished with value: -85.56624776987316 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:02:46,130] Trial 25 finished with value: -128.21895457011314 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:02:59,626] Trial 26 finished with value: -36.82025086218876 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:03:09,684] Trial 27 finished with value: -28.098127894514654 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:03:43,275] Trial 28 finished with value: -173.18689734829093 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:03:50,980] Trial 29 finished with value: -18.950743201863926 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:03:56,787] Trial 30 finished with value: -26.002378379814065 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:04:10,339] Trial 31 finished with value: -22.281438315538896 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:04:23,849] Trial 32 finished with value: -113.69080244523751 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -4.280785697633835. +[I 2025-12-17 20:04:37,346] Trial 33 finished with value: -0.7183962526633656 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 33 with value: -0.7183962526633656. +[I 2025-12-17 20:04:53,042] Trial 34 finished with value: -23.913471060237814 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 33 with value: -0.7183962526633656. +[I 2025-12-17 20:05:08,146] Trial 35 finished with value: -54.4233414690326 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 33 with value: -0.7183962526633656. +[I 2025-12-17 20:05:31,064] Trial 36 finished with value: -202.20127443666811 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.7183962526633656. +[I 2025-12-17 20:05:37,720] Trial 37 finished with value: -150.07166544472213 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 33 with value: -0.7183962526633656. +[I 2025-12-17 20:05:51,190] Trial 38 finished with value: -59.37448735518463 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 33 with value: -0.7183962526633656. +[I 2025-12-17 20:06:02,895] Trial 39 finished with value: -121.41309988179125 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.7183962526633656. +[I 2025-12-17 20:06:33,916] Trial 40 finished with value: -0.2656926524769329 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 40 with value: -0.2656926524769329. +[I 2025-12-17 20:07:05,100] Trial 41 finished with value: -44.298512007687115 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 40 with value: -0.2656926524769329. +[I 2025-12-17 20:07:36,154] Trial 42 finished with value: -44.08740534007484 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 40 with value: -0.2656926524769329. +[I 2025-12-17 20:08:07,432] Trial 43 finished with value: -114.15158339061733 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 40 with value: -0.2656926524769329. +[I 2025-12-17 20:08:38,626] Trial 44 finished with value: -42.58452272099496 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 40 with value: -0.2656926524769329. +[I 2025-12-17 20:09:09,746] Trial 45 finished with value: -120.2102187080338 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 40 with value: -0.2656926524769329. +[I 2025-12-17 20:09:23,508] Trial 46 finished with value: -87.95430073001155 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 40 with value: -0.2656926524769329. +[I 2025-12-17 20:09:29,285] Trial 47 finished with value: -4.323344347147661 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 40 with value: -0.2656926524769329. +[I 2025-12-17 20:09:35,091] Trial 48 finished with value: -10.420622560061517 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 40 with value: -0.2656926524769329. +[I 2025-12-17 20:09:40,884] Trial 49 finished with value: -41.86959546734201 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 40 with value: -0.2656926524769329. +[I 2025-12-17 20:10:12,582] A new study created in memory with name: no-name-9d82b59d-96a2-4f53-b100-103c288e9095 +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 20:10:34,346] Trial 0 finished with value: -1092.768723070435 and parameters: {'embedding_dim': 189, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -1092.768723070435. +[I 2025-12-17 20:11:26,006] Trial 1 finished with value: -194.0805031355266 and parameters: {'embedding_dim': 436, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -194.0805031355266. +[I 2025-12-17 20:11:58,583] Trial 2 finished with value: -142.5208369798003 and parameters: {'embedding_dim': 498, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -142.5208369798003. +[I 2025-12-17 20:12:17,946] Trial 3 finished with value: -288.08732102635224 and parameters: {'embedding_dim': 285, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -142.5208369798003. +[I 2025-12-17 20:12:50,088] Trial 4 finished with value: -66.73040885579978 and parameters: {'embedding_dim': 369, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -66.73040885579978. +[I 2025-12-17 20:13:27,991] Trial 5 finished with value: -328.56033865598204 and parameters: {'embedding_dim': 205, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -66.73040885579978. +[I 2025-12-17 20:14:36,208] Trial 6 finished with value: -984.9896331384256 and parameters: {'embedding_dim': 405, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -66.73040885579978. +[I 2025-12-17 20:14:49,805] Trial 7 finished with value: -2024.1760243489011 and parameters: {'embedding_dim': 148, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 4 with value: -66.73040885579978. +[I 2025-12-17 20:15:26,424] Trial 8 finished with value: -565.6043830831361 and parameters: {'embedding_dim': 367, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -66.73040885579978. +[I 2025-12-17 20:16:33,063] Trial 9 finished with value: -218.2192074881689 and parameters: {'embedding_dim': 133, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -66.73040885579978. +[I 2025-12-17 20:17:18,471] Trial 10 finished with value: -420.46546919373446 and parameters: {'embedding_dim': 288, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 4 with value: -66.73040885579978. +[I 2025-12-17 20:18:05,444] Trial 11 finished with value: -650.9554341905655 and parameters: {'embedding_dim': 507, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 4 with value: -66.73040885579978. +[I 2025-12-17 20:18:38,322] Trial 12 finished with value: -808.5413438170625 and parameters: {'embedding_dim': 510, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -66.73040885579978. +[I 2025-12-17 20:20:02,386] Trial 13 finished with value: -175.38915499519223 and parameters: {'embedding_dim': 436, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -66.73040885579978. +[I 2025-12-17 20:20:49,041] Trial 14 finished with value: -60.3259649942897 and parameters: {'embedding_dim': 358, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 14 with value: -60.3259649942897. +[I 2025-12-17 20:21:35,258] Trial 15 finished with value: -94.22051407725606 and parameters: {'embedding_dim': 346, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 14 with value: -60.3259649942897. +[I 2025-12-17 20:22:33,085] Trial 16 finished with value: -526.7190806090422 and parameters: {'embedding_dim': 301, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 14 with value: -60.3259649942897. +[I 2025-12-17 20:23:16,472] Trial 17 finished with value: -353.8720746120001 and parameters: {'embedding_dim': 248, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 14 with value: -60.3259649942897. +[I 2025-12-17 20:24:06,335] Trial 18 finished with value: -181.63671558466382 and parameters: {'embedding_dim': 367, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 14 with value: -60.3259649942897. +[I 2025-12-17 20:24:44,225] Trial 19 finished with value: -420.2204024613178 and parameters: {'embedding_dim': 399, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 14 with value: -60.3259649942897. +[I 2025-12-17 20:25:09,989] Trial 20 finished with value: -204.0364828119416 and parameters: {'embedding_dim': 333, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 14 with value: -60.3259649942897. +[I 2025-12-17 20:25:57,942] Trial 21 finished with value: -376.85196298121963 and parameters: {'embedding_dim': 357, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 14 with value: -60.3259649942897. +[I 2025-12-17 20:26:44,111] Trial 22 finished with value: -25.05615157241079 and parameters: {'embedding_dim': 325, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 22 with value: -25.05615157241079. +[I 2025-12-17 20:27:32,637] Trial 23 finished with value: -736.6056591112231 and parameters: {'embedding_dim': 254, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 22 with value: -25.05615157241079. +[I 2025-12-17 20:28:10,612] Trial 24 finished with value: -667.8205933020888 and parameters: {'embedding_dim': 404, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 22 with value: -25.05615157241079. +[I 2025-12-17 20:29:09,444] Trial 25 finished with value: -15.698458642708497 and parameters: {'embedding_dim': 311, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 25 with value: -15.698458642708497. +[I 2025-12-17 20:30:05,976] Trial 26 finished with value: -88.90154516033334 and parameters: {'embedding_dim': 311, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 25 with value: -15.698458642708497. +[I 2025-12-17 20:31:03,453] Trial 27 finished with value: -268.8261481996696 and parameters: {'embedding_dim': 232, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 25 with value: -15.698458642708497. +[I 2025-12-17 20:32:00,629] Trial 28 finished with value: -437.6710572950491 and parameters: {'embedding_dim': 274, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 25 with value: -15.698458642708497. +[I 2025-12-17 20:32:47,563] Trial 29 finished with value: -469.6329630262559 and parameters: {'embedding_dim': 322, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 25 with value: -15.698458642708497. +[I 2025-12-17 20:33:48,821] A new study created in memory with name: no-name-b85d7509-5752-4221-9dcb-32c4e3f7bd9a +[I 2025-12-17 20:33:53,698] Trial 0 finished with value: -51.160821498995475 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -51.160821498995475. +[I 2025-12-17 20:34:00,916] Trial 1 finished with value: -23.624560378752292 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -23.624560378752292. +[I 2025-12-17 20:34:06,277] Trial 2 finished with value: -4.276731969938876 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -4.276731969938876. +[I 2025-12-17 20:34:13,028] Trial 3 finished with value: -52.53973231128766 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -4.276731969938876. +[I 2025-12-17 20:34:20,564] Trial 4 finished with value: -2.1522266515169184 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:34:23,874] Trial 5 finished with value: -373.8847895566226 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:34:30,647] Trial 6 finished with value: -53.10221003606449 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:34:34,042] Trial 7 finished with value: -192.2412951055116 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:34:38,895] Trial 8 finished with value: -108.39603286401812 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:34:42,072] Trial 9 finished with value: -31.292881799632376 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:34:48,554] Trial 10 finished with value: -41.93840551784044 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:34:53,877] Trial 11 finished with value: -83.03467034266151 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:34:59,642] Trial 12 finished with value: -102.74933543020074 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:35:07,217] Trial 13 finished with value: -51.11243722567663 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:35:14,417] Trial 14 finished with value: -15.623469771168768 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:35:19,251] Trial 15 finished with value: -12.620439836215775 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:35:26,483] Trial 16 finished with value: -8.64662727786039 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:35:29,700] Trial 17 finished with value: -3.903840079045669 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:35:32,951] Trial 18 finished with value: -97.87827540622733 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:35:37,770] Trial 19 finished with value: -147.3185705509817 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:35:41,027] Trial 20 finished with value: -23.565021372534545 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:35:45,887] Trial 21 finished with value: -28.20124412756827 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:35:52,490] Trial 22 finished with value: -122.84887570722813 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:35:55,937] Trial 23 finished with value: -8.5392280180623 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:36:01,785] Trial 24 finished with value: -4.099738687921926 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:36:07,589] Trial 25 finished with value: -33.20211708700722 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:36:14,079] Trial 26 finished with value: -40.1150407981651 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:36:17,292] Trial 27 finished with value: -165.9194567239467 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:36:22,166] Trial 28 finished with value: -25.0260146222446 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:36:27,020] Trial 29 finished with value: -103.97521991868895 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:36:33,497] Trial 30 finished with value: -78.32107080937195 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:36:38,798] Trial 31 finished with value: -118.16681144991702 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:36:44,755] Trial 32 finished with value: -47.00842693127063 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:36:50,143] Trial 33 finished with value: -106.81702078389235 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:36:53,478] Trial 34 finished with value: -140.92026195240186 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:37:00,258] Trial 35 finished with value: -81.05772871787218 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:37:05,137] Trial 36 finished with value: -353.9585994545302 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:37:10,146] Trial 37 finished with value: -27.88748706803295 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:37:13,645] Trial 38 finished with value: -113.3930310002026 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:37:21,692] Trial 39 finished with value: -121.19676084412036 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:37:26,621] Trial 40 finished with value: -196.676176402004 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:37:30,175] Trial 41 finished with value: -64.46589178312999 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:37:33,643] Trial 42 finished with value: -49.37140710783328 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:37:37,197] Trial 43 finished with value: -82.89982111491099 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:37:42,933] Trial 44 finished with value: -75.01894879074557 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:37:46,430] Trial 45 finished with value: -44.55107739809211 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:37:51,434] Trial 46 finished with value: -47.555871452771626 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:37:55,524] Trial 47 finished with value: -22.322203024562295 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:38:04,936] Trial 48 finished with value: -25.711151233065067 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:38:09,788] Trial 49 finished with value: -21.37824118545819 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -2.1522266515169184. +[I 2025-12-17 20:38:16,517] A new study created in memory with name: no-name-0cb25b6f-94a6-4714-b798-a4616c79afd4 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_2_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_2_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_2_incheon.csv: Class 0=9583 | Class 1=9739 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_2_incheon.csv: Class 0=9583 | Class 1=9739 | Class 2=14637 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 20:38:41,114] Trial 0 finished with value: -571.897944241779 and parameters: {'embedding_dim': 455, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -571.897944241779. +[I 2025-12-17 20:39:02,798] Trial 1 finished with value: -2963.645345402436 and parameters: {'embedding_dim': 294, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -571.897944241779. +[I 2025-12-17 20:39:22,253] Trial 2 finished with value: -323.0807853187522 and parameters: {'embedding_dim': 266, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -323.0807853187522. +[I 2025-12-17 20:39:39,159] Trial 3 finished with value: -651.957401119985 and parameters: {'embedding_dim': 448, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -323.0807853187522. +[I 2025-12-17 20:39:53,562] Trial 4 finished with value: -260.07943161588037 and parameters: {'embedding_dim': 209, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 4 with value: -260.07943161588037. +[I 2025-12-17 20:40:29,359] Trial 5 finished with value: -332.1606138494504 and parameters: {'embedding_dim': 366, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 4 with value: -260.07943161588037. +[I 2025-12-17 20:40:51,902] Trial 6 finished with value: -626.5803054815773 and parameters: {'embedding_dim': 411, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 4 with value: -260.07943161588037. +[I 2025-12-17 20:41:03,661] Trial 7 finished with value: -948.5528860186337 and parameters: {'embedding_dim': 491, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -260.07943161588037. +[I 2025-12-17 20:41:45,848] Trial 8 finished with value: -292.24491029489275 and parameters: {'embedding_dim': 149, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 4 with value: -260.07943161588037. +[I 2025-12-17 20:41:56,993] Trial 9 finished with value: -269.78776540972115 and parameters: {'embedding_dim': 281, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -260.07943161588037. +[I 2025-12-17 20:42:19,698] Trial 10 finished with value: -182.80827791455295 and parameters: {'embedding_dim': 170, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -182.80827791455295. +[I 2025-12-17 20:42:42,477] Trial 11 finished with value: -394.68511498956804 and parameters: {'embedding_dim': 160, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -182.80827791455295. +[I 2025-12-17 20:43:05,177] Trial 12 finished with value: -1505.6794554739786 and parameters: {'embedding_dim': 210, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -182.80827791455295. +[I 2025-12-17 20:43:51,159] Trial 13 finished with value: -536.9095623988236 and parameters: {'embedding_dim': 221, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -182.80827791455295. +[I 2025-12-17 20:44:37,106] Trial 14 finished with value: -396.320709988775 and parameters: {'embedding_dim': 198, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -182.80827791455295. +[I 2025-12-17 20:44:53,543] Trial 15 finished with value: -277.4847243160634 and parameters: {'embedding_dim': 338, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 10 with value: -182.80827791455295. +[I 2025-12-17 20:45:15,921] Trial 16 finished with value: -270.50692421275204 and parameters: {'embedding_dim': 141, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -182.80827791455295. +[I 2025-12-17 20:45:30,258] Trial 17 finished with value: -208.65533941351524 and parameters: {'embedding_dim': 255, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 10 with value: -182.80827791455295. +[I 2025-12-17 20:46:15,920] Trial 18 finished with value: -19.68207787611027 and parameters: {'embedding_dim': 253, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -19.68207787611027. +[I 2025-12-17 20:46:39,377] Trial 19 finished with value: -860.5257848527709 and parameters: {'embedding_dim': 335, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -19.68207787611027. +[I 2025-12-17 20:47:37,178] Trial 20 finished with value: -52.76982362256746 and parameters: {'embedding_dim': 175, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -19.68207787611027. +[I 2025-12-17 20:48:34,801] Trial 21 finished with value: -552.9687918841131 and parameters: {'embedding_dim': 177, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -19.68207787611027. +[I 2025-12-17 20:49:43,892] Trial 22 finished with value: -254.99083999714725 and parameters: {'embedding_dim': 239, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -19.68207787611027. +[I 2025-12-17 20:50:41,764] Trial 23 finished with value: -163.78225306578906 and parameters: {'embedding_dim': 133, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -19.68207787611027. +[I 2025-12-17 20:51:38,811] Trial 24 finished with value: -201.5067868450143 and parameters: {'embedding_dim': 133, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -19.68207787611027. +[I 2025-12-17 20:52:36,899] Trial 25 finished with value: -44.44827515274875 and parameters: {'embedding_dim': 238, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -19.68207787611027. +[I 2025-12-17 20:53:22,572] Trial 26 finished with value: -68.57313622974397 and parameters: {'embedding_dim': 301, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -19.68207787611027. +[I 2025-12-17 20:54:31,463] Trial 27 finished with value: -34.60125242104334 and parameters: {'embedding_dim': 188, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -19.68207787611027. +[I 2025-12-17 20:55:41,047] Trial 28 finished with value: -406.6107567076311 and parameters: {'embedding_dim': 230, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -19.68207787611027. +[I 2025-12-17 20:56:50,066] Trial 29 finished with value: -218.26841383549151 and parameters: {'embedding_dim': 364, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -19.68207787611027. +[I 2025-12-17 20:57:36,906] A new study created in memory with name: no-name-563284e5-d0b9-4178-bb5d-4bd0bfe8235f +[I 2025-12-17 20:57:40,387] Trial 0 finished with value: -112.86838662647631 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -112.86838662647631. +[I 2025-12-17 20:57:46,904] Trial 1 finished with value: -63.25119429277383 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -63.25119429277383. +[I 2025-12-17 20:57:54,136] Trial 2 finished with value: -7.036957705714914 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:58:01,433] Trial 3 finished with value: -59.896428638052924 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:58:04,829] Trial 4 finished with value: -107.93263797899615 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:58:09,899] Trial 5 finished with value: -57.91818216047634 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:58:16,691] Trial 6 finished with value: -166.21598648462583 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:58:21,781] Trial 7 finished with value: -15.155278838521232 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:58:25,118] Trial 8 finished with value: -49.36615280691767 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:58:28,610] Trial 9 finished with value: -146.2169775289128 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:58:35,180] Trial 10 finished with value: -56.325735144030475 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:58:40,535] Trial 11 finished with value: -76.05342442799909 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:58:45,917] Trial 12 finished with value: -41.87714832543831 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:58:50,994] Trial 13 finished with value: -13.887456022576124 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:58:56,012] Trial 14 finished with value: -168.5087114464499 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:59:02,687] Trial 15 finished with value: -10.51294293810312 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:59:09,932] Trial 16 finished with value: -131.40497915028945 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:59:16,761] Trial 17 finished with value: -85.42367220356601 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:59:23,984] Trial 18 finished with value: -19.58724150145163 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:59:30,582] Trial 19 finished with value: -37.70218686951584 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:59:37,399] Trial 20 finished with value: -43.354358013030286 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:59:42,469] Trial 21 finished with value: -33.04035546655268 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:59:47,550] Trial 22 finished with value: -109.75031360644857 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:59:52,624] Trial 23 finished with value: -85.21582848186252 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 20:59:59,399] Trial 24 finished with value: -16.483083274089186 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 21:00:05,115] Trial 25 finished with value: -85.31714226252952 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 21:00:11,976] Trial 26 finished with value: -89.99036309057539 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 21:00:17,102] Trial 27 finished with value: -54.77495848396299 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 21:00:23,666] Trial 28 finished with value: -167.963296646692 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 21:00:27,217] Trial 29 finished with value: -27.90833643195853 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 21:00:32,605] Trial 30 finished with value: -35.33103321785672 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 21:00:37,710] Trial 31 finished with value: -37.6967729158107 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 21:00:42,790] Trial 32 finished with value: -51.3414299730517 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 21:00:47,884] Trial 33 finished with value: -16.51380449921858 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 21:00:54,663] Trial 34 finished with value: -61.78498159589792 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 21:00:59,892] Trial 35 finished with value: -44.67334955424695 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 21:01:03,406] Trial 36 finished with value: -78.66003102974848 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 21:01:08,466] Trial 37 finished with value: -198.8101024918054 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -7.036957705714914. +[I 2025-12-17 21:01:15,760] Trial 38 finished with value: -6.728554871758213 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 38 with value: -6.728554871758213. +[I 2025-12-17 21:01:23,026] Trial 39 finished with value: -39.67531296349361 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 38 with value: -6.728554871758213. +[I 2025-12-17 21:01:30,296] Trial 40 finished with value: -18.737285188010603 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 38 with value: -6.728554871758213. +[I 2025-12-17 21:01:37,578] Trial 41 finished with value: -78.16270699706381 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 38 with value: -6.728554871758213. +[I 2025-12-17 21:01:44,832] Trial 42 finished with value: -29.81208110288935 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 38 with value: -6.728554871758213. +[I 2025-12-17 21:01:52,095] Trial 43 finished with value: -69.92560950505883 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 38 with value: -6.728554871758213. +[I 2025-12-17 21:01:59,407] Trial 44 finished with value: -9.004935099602479 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 38 with value: -6.728554871758213. +[I 2025-12-17 21:02:06,229] Trial 45 finished with value: -77.3796046238512 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 38 with value: -6.728554871758213. +[I 2025-12-17 21:02:13,551] Trial 46 finished with value: -17.035007143458625 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 38 with value: -6.728554871758213. +[I 2025-12-17 21:02:20,367] Trial 47 finished with value: -30.449013225477152 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 38 with value: -6.728554871758213. +[I 2025-12-17 21:02:26,965] Trial 48 finished with value: -168.49471733112216 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 38 with value: -6.728554871758213. +[I 2025-12-17 21:02:34,233] Trial 49 finished with value: -168.26912502456724 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 38 with value: -6.728554871758213. +[I 2025-12-17 21:02:41,694] A new study created in memory with name: no-name-c0f9384f-bf13-435d-ae6d-a7f931d5d955 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_2_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_2_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_2_seoul.csv: Class 0=9265 | Class 1=9731 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_2_seoul.csv: Class 0=9265 | Class 1=9731 | Class 2=15823 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 21:02:50,711] Trial 0 finished with value: -4086.4176797430996 and parameters: {'embedding_dim': 350, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -4086.4176797430996. +[I 2025-12-17 21:03:03,861] Trial 1 finished with value: -423.8530483243156 and parameters: {'embedding_dim': 308, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -423.8530483243156. +[I 2025-12-17 21:03:11,056] Trial 2 finished with value: -3622.681779806086 and parameters: {'embedding_dim': 243, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 1 with value: -423.8530483243156. +[I 2025-12-17 21:03:29,826] Trial 3 finished with value: -1192.5552409042234 and parameters: {'embedding_dim': 145, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -423.8530483243156. +[I 2025-12-17 21:03:59,232] Trial 4 finished with value: -289.72995597931964 and parameters: {'embedding_dim': 147, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -289.72995597931964. +[I 2025-12-17 21:04:06,364] Trial 5 finished with value: -786.7770832662925 and parameters: {'embedding_dim': 470, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 4 with value: -289.72995597931964. +[I 2025-12-17 21:04:17,663] Trial 6 finished with value: -904.7646312081752 and parameters: {'embedding_dim': 267, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 4 with value: -289.72995597931964. +[I 2025-12-17 21:04:30,232] Trial 7 finished with value: -389.48426854614183 and parameters: {'embedding_dim': 329, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 4 with value: -289.72995597931964. +[I 2025-12-17 21:04:45,379] Trial 8 finished with value: -763.8314195797943 and parameters: {'embedding_dim': 353, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 4 with value: -289.72995597931964. +[I 2025-12-17 21:05:15,532] Trial 9 finished with value: -515.7712492823613 and parameters: {'embedding_dim': 350, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -289.72995597931964. +[I 2025-12-17 21:05:33,783] Trial 10 finished with value: -930.7106703567586 and parameters: {'embedding_dim': 129, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -289.72995597931964. +[I 2025-12-17 21:05:57,292] Trial 11 finished with value: -498.31025131953413 and parameters: {'embedding_dim': 479, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -289.72995597931964. +[I 2025-12-17 21:06:13,187] Trial 12 finished with value: -589.918805084402 and parameters: {'embedding_dim': 207, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -289.72995597931964. +[I 2025-12-17 21:06:31,342] Trial 13 finished with value: -1738.705659411451 and parameters: {'embedding_dim': 437, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -289.72995597931964. +[I 2025-12-17 21:06:44,890] Trial 14 finished with value: -337.06581967877617 and parameters: {'embedding_dim': 402, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 4 with value: -289.72995597931964. +[I 2025-12-17 21:07:15,602] Trial 15 finished with value: -456.37743849418837 and parameters: {'embedding_dim': 412, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -289.72995597931964. +[I 2025-12-17 21:07:25,378] Trial 16 finished with value: -2091.9081802938135 and parameters: {'embedding_dim': 400, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -289.72995597931964. +[I 2025-12-17 21:08:00,389] Trial 17 finished with value: -228.3442369536398 and parameters: {'embedding_dim': 191, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 17 with value: -228.3442369536398. +[I 2025-12-17 21:08:36,636] Trial 18 finished with value: -979.9099048314704 and parameters: {'embedding_dim': 181, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 17 with value: -228.3442369536398. +[I 2025-12-17 21:09:11,982] Trial 19 finished with value: -281.24534909748525 and parameters: {'embedding_dim': 174, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 17 with value: -228.3442369536398. +[I 2025-12-17 21:09:47,553] Trial 20 finished with value: -338.1634794302599 and parameters: {'embedding_dim': 212, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 17 with value: -228.3442369536398. +[I 2025-12-17 21:10:22,757] Trial 21 finished with value: -983.7181291301807 and parameters: {'embedding_dim': 168, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 17 with value: -228.3442369536398. +[I 2025-12-17 21:10:51,941] Trial 22 finished with value: -1076.093932829475 and parameters: {'embedding_dim': 245, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 17 with value: -228.3442369536398. +[I 2025-12-17 21:11:27,265] Trial 23 finished with value: -433.33894894489896 and parameters: {'embedding_dim': 174, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 17 with value: -228.3442369536398. +[I 2025-12-17 21:11:57,511] Trial 24 finished with value: -250.83630899037146 and parameters: {'embedding_dim': 207, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 17 with value: -228.3442369536398. +[I 2025-12-17 21:12:32,391] Trial 25 finished with value: -526.8281942944112 and parameters: {'embedding_dim': 273, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 17 with value: -228.3442369536398. +[I 2025-12-17 21:13:03,343] Trial 26 finished with value: -395.04212891779224 and parameters: {'embedding_dim': 221, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 17 with value: -228.3442369536398. +[I 2025-12-17 21:13:38,057] Trial 27 finished with value: -490.0054316122895 and parameters: {'embedding_dim': 196, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 17 with value: -228.3442369536398. +[I 2025-12-17 21:14:07,505] Trial 28 finished with value: -143.4780553949397 and parameters: {'embedding_dim': 293, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 28 with value: -143.4780553949397. +[I 2025-12-17 21:14:20,435] Trial 29 finished with value: -901.1172981783925 and parameters: {'embedding_dim': 284, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 28 with value: -143.4780553949397. +[I 2025-12-17 21:14:50,943] A new study created in memory with name: no-name-b1d21953-e4d9-4ad1-ad22-ee04dfef3f3e +[I 2025-12-17 21:14:57,337] Trial 0 finished with value: -21.69043159731435 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -21.69043159731435. +[I 2025-12-17 21:15:02,333] Trial 1 finished with value: -4.674811431440093 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:15:05,446] Trial 2 finished with value: -4.8384873031257305 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:15:08,530] Trial 3 finished with value: -218.1396713245498 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:15:11,638] Trial 4 finished with value: -218.88317602219524 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:15:18,297] Trial 5 finished with value: -238.7282523254339 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:15:25,451] Trial 6 finished with value: -36.7061455553572 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:15:30,272] Trial 7 finished with value: -21.141694492497116 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:15:36,711] Trial 8 finished with value: -62.11584557113752 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:15:41,927] Trial 9 finished with value: -41.37087063735456 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:15:46,890] Trial 10 finished with value: -196.01269592101755 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:15:50,227] Trial 11 finished with value: -31.812121715124427 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:15:53,461] Trial 12 finished with value: -6.771920693163789 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:15:58,467] Trial 13 finished with value: -24.681732417047765 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:01,901] Trial 14 finished with value: -122.710900393848 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:06,589] Trial 15 finished with value: -58.59752352838401 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:09,815] Trial 16 finished with value: -37.01819522207898 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:14,749] Trial 17 finished with value: -40.27458960086301 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:19,464] Trial 18 finished with value: -274.95523082590756 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:22,930] Trial 19 finished with value: -32.76592359006606 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:27,651] Trial 20 finished with value: -59.26699084708872 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:30,937] Trial 21 finished with value: -41.29024910143705 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:34,167] Trial 22 finished with value: -43.16654204518687 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:37,519] Trial 23 finished with value: -150.24586595042243 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:40,750] Trial 24 finished with value: -162.87567127113311 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:43,974] Trial 25 finished with value: -36.889249659588174 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:48,908] Trial 26 finished with value: -15.41378558650735 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:52,149] Trial 27 finished with value: -282.349961782482 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:16:57,402] Trial 28 finished with value: -188.70164303441229 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:17:03,806] Trial 29 finished with value: -28.175654217255016 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:17:10,221] Trial 30 finished with value: -5.404015574992943 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:17:16,639] Trial 31 finished with value: -34.06504899901981 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:17:23,081] Trial 32 finished with value: -68.76601959658876 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:17:29,490] Trial 33 finished with value: -34.71961141366984 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:17:32,634] Trial 34 finished with value: -45.948269032574316 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:17:39,043] Trial 35 finished with value: -30.621266625933497 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:17:42,200] Trial 36 finished with value: -26.4196873105856 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:17:47,045] Trial 37 finished with value: -13.036166339181872 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:17:53,715] Trial 38 finished with value: -71.87443831738514 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:17:58,979] Trial 39 finished with value: -132.36943069543287 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -4.674811431440093. +[I 2025-12-17 21:18:02,123] Trial 40 finished with value: -2.886859100526434 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 40 with value: -2.886859100526434. +[I 2025-12-17 21:18:05,268] Trial 41 finished with value: -33.296660752988664 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 40 with value: -2.886859100526434. +[I 2025-12-17 21:18:08,420] Trial 42 finished with value: -38.63005570188702 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 40 with value: -2.886859100526434. +[I 2025-12-17 21:18:11,554] Trial 43 finished with value: -116.37990225579325 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 40 with value: -2.886859100526434. +[I 2025-12-17 21:18:14,736] Trial 44 finished with value: -53.273071878192205 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 40 with value: -2.886859100526434. +[I 2025-12-17 21:18:17,882] Trial 45 finished with value: -142.60492421870777 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 40 with value: -2.886859100526434. +[I 2025-12-17 21:18:22,851] Trial 46 finished with value: -107.60873799216893 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 40 with value: -2.886859100526434. +[I 2025-12-17 21:18:25,979] Trial 47 finished with value: -55.20401256249218 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 40 with value: -2.886859100526434. +[I 2025-12-17 21:18:31,280] Trial 48 finished with value: -14.475406981028671 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 40 with value: -2.886859100526434. +[I 2025-12-17 21:18:34,511] Trial 49 finished with value: -15.401412255709703 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 40 with value: -2.886859100526434. +[I 2025-12-17 21:18:37,935] A new study created in memory with name: no-name-2d71249f-a2b7-4a81-9bd4-6206415c5bbb +[I 2025-12-17 21:18:48,824] Trial 0 finished with value: -559.8898351862952 and parameters: {'embedding_dim': 137, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 0 with value: -559.8898351862952. +[I 2025-12-17 21:18:58,290] Trial 1 finished with value: -680.6694913013756 and parameters: {'embedding_dim': 142, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -559.8898351862952. +[I 2025-12-17 21:19:05,119] Trial 2 finished with value: -5936.129993307162 and parameters: {'embedding_dim': 329, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -559.8898351862952. +[I 2025-12-17 21:19:10,594] Trial 3 finished with value: -1483.436182138388 and parameters: {'embedding_dim': 400, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -559.8898351862952. +[I 2025-12-17 21:19:22,249] Trial 4 finished with value: -353.27424144590594 and parameters: {'embedding_dim': 348, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 4 with value: -353.27424144590594. +[I 2025-12-17 21:19:27,488] Trial 5 finished with value: -568.1215221139057 and parameters: {'embedding_dim': 259, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 4 with value: -353.27424144590594. +[I 2025-12-17 21:19:34,329] Trial 6 finished with value: -632.8006150967823 and parameters: {'embedding_dim': 160, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 4 with value: -353.27424144590594. +[I 2025-12-17 21:19:45,200] Trial 7 finished with value: -717.283007945731 and parameters: {'embedding_dim': 185, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 4 with value: -353.27424144590594. +[I 2025-12-17 21:19:58,837] Trial 8 finished with value: -328.05916119036397 and parameters: {'embedding_dim': 348, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 8 with value: -328.05916119036397. +[I 2025-12-17 21:20:12,517] Trial 9 finished with value: -509.5836017919495 and parameters: {'embedding_dim': 144, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 8 with value: -328.05916119036397. +[I 2025-12-17 21:20:34,937] Trial 10 finished with value: -306.223960208647 and parameters: {'embedding_dim': 490, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 10 with value: -306.223960208647. +[I 2025-12-17 21:20:57,465] Trial 11 finished with value: -1127.331084008331 and parameters: {'embedding_dim': 506, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 10 with value: -306.223960208647. +[I 2025-12-17 21:21:16,161] Trial 12 finished with value: -755.1898456395655 and parameters: {'embedding_dim': 501, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -306.223960208647. +[I 2025-12-17 21:21:34,824] Trial 13 finished with value: -558.9244544847875 and parameters: {'embedding_dim': 432, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -306.223960208647. +[I 2025-12-17 21:21:57,362] Trial 14 finished with value: -176.93882184035942 and parameters: {'embedding_dim': 441, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 14 with value: -176.93882184035942. +[I 2025-12-17 21:22:19,915] Trial 15 finished with value: -585.4729634771522 and parameters: {'embedding_dim': 451, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 14 with value: -176.93882184035942. +[I 2025-12-17 21:22:42,329] Trial 16 finished with value: -723.8388970320193 and parameters: {'embedding_dim': 455, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 14 with value: -176.93882184035942. +[I 2025-12-17 21:23:04,774] Trial 17 finished with value: -519.0992422352074 and parameters: {'embedding_dim': 397, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 14 with value: -176.93882184035942. +[I 2025-12-17 21:23:23,293] Trial 18 finished with value: -135.50552670436878 and parameters: {'embedding_dim': 292, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -135.50552670436878. +[I 2025-12-17 21:23:41,766] Trial 19 finished with value: -612.3670945168567 and parameters: {'embedding_dim': 275, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -135.50552670436878. +[I 2025-12-17 21:23:56,698] Trial 20 finished with value: -707.5471674381713 and parameters: {'embedding_dim': 263, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -135.50552670436878. +[I 2025-12-17 21:24:19,158] Trial 21 finished with value: -277.2059534784021 and parameters: {'embedding_dim': 211, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -135.50552670436878. +[I 2025-12-17 21:24:37,814] Trial 22 finished with value: -439.82010549359245 and parameters: {'embedding_dim': 222, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -135.50552670436878. +[I 2025-12-17 21:25:00,216] Trial 23 finished with value: -890.1950494240632 and parameters: {'embedding_dim': 218, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -135.50552670436878. +[I 2025-12-17 21:25:18,866] Trial 24 finished with value: -1256.3619528364657 and parameters: {'embedding_dim': 296, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -135.50552670436878. +[I 2025-12-17 21:25:41,319] Trial 25 finished with value: -377.4040479806062 and parameters: {'embedding_dim': 222, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -135.50552670436878. +[I 2025-12-17 21:26:00,142] Trial 26 finished with value: -3217.5711975889953 and parameters: {'embedding_dim': 305, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -135.50552670436878. +[I 2025-12-17 21:26:22,873] Trial 27 finished with value: -348.98780274124545 and parameters: {'embedding_dim': 393, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -135.50552670436878. +[I 2025-12-17 21:26:45,278] Trial 28 finished with value: -809.0862929200752 and parameters: {'embedding_dim': 186, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -135.50552670436878. +[I 2025-12-17 21:27:04,037] Trial 29 finished with value: -222.92297292032688 and parameters: {'embedding_dim': 376, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -135.50552670436878. +[I 2025-12-17 21:27:23,595] A new study created in memory with name: no-name-b949abb6-abe1-43da-bbf9-6ab1b125a9f7 +[I 2025-12-17 21:27:27,355] Trial 0 finished with value: -29.807842545907327 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -29.807842545907327. +[I 2025-12-17 21:27:32,876] Trial 1 finished with value: -154.79463441195193 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -29.807842545907327. +[I 2025-12-17 21:27:37,859] Trial 2 finished with value: -17.369522891155384 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -17.369522891155384. +[I 2025-12-17 21:27:43,297] Trial 3 finished with value: -55.27768959767927 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -17.369522891155384. +[I 2025-12-17 21:27:49,947] Trial 4 finished with value: -105.83745975251065 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -17.369522891155384. +[I 2025-12-17 21:27:56,559] Trial 5 finished with value: -34.094541261464414 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -17.369522891155384. +[I 2025-12-17 21:28:01,685] Trial 6 finished with value: -59.2992392156232 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -17.369522891155384. +[I 2025-12-17 21:28:08,304] Trial 7 finished with value: -177.05055360077404 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -17.369522891155384. +[I 2025-12-17 21:28:11,629] Trial 8 finished with value: -13.045705583929639 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:28:18,939] Trial 9 finished with value: -48.30648821536565 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:28:22,396] Trial 10 finished with value: -65.27803216809666 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:28:25,853] Trial 11 finished with value: -17.04863812212699 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:28:29,266] Trial 12 finished with value: -27.988260436681102 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:28:32,629] Trial 13 finished with value: -108.37795209424073 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:28:36,099] Trial 14 finished with value: -757.4709058180357 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:28:39,479] Trial 15 finished with value: -242.73597470649415 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:28:42,874] Trial 16 finished with value: -85.8962824827366 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:28:47,853] Trial 17 finished with value: -25.616752476384995 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:28:51,192] Trial 18 finished with value: -26.43211260526107 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:28:56,378] Trial 19 finished with value: -355.6757925023273 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:28:59,740] Trial 20 finished with value: -17.875494036702715 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:29:04,724] Trial 21 finished with value: -291.6572228339785 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:29:09,705] Trial 22 finished with value: -67.60153321493598 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:29:13,051] Trial 23 finished with value: -494.2357954006663 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:29:16,390] Trial 24 finished with value: -37.28078479906842 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:29:21,380] Trial 25 finished with value: -132.53995818361952 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:29:24,908] Trial 26 finished with value: -15.369911480193005 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -13.045705583929639. +[I 2025-12-17 21:29:28,369] Trial 27 finished with value: -10.059949874047952 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -10.059949874047952. +[I 2025-12-17 21:29:31,834] Trial 28 finished with value: -13.39248171440873 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -10.059949874047952. +[I 2025-12-17 21:29:35,216] Trial 29 finished with value: -48.36376131317589 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -10.059949874047952. +[I 2025-12-17 21:29:38,625] Trial 30 finished with value: -145.0664064022488 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -10.059949874047952. +[I 2025-12-17 21:29:42,047] Trial 31 finished with value: -57.609499826025456 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -10.059949874047952. +[I 2025-12-17 21:29:45,446] Trial 32 finished with value: -122.2991242552286 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -10.059949874047952. +[I 2025-12-17 21:29:49,135] Trial 33 finished with value: -70.73536825636447 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 27 with value: -10.059949874047952. +[I 2025-12-17 21:29:52,566] Trial 34 finished with value: -6.878931570229571 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:29:55,983] Trial 35 finished with value: -63.65444257794164 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:29:59,389] Trial 36 finished with value: -806.8877521531917 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:30:04,555] Trial 37 finished with value: -115.63425834348189 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:30:08,001] Trial 38 finished with value: -65.59722602078969 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:30:13,545] Trial 39 finished with value: -25.26536307985607 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:30:16,961] Trial 40 finished with value: -52.07913612933136 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:30:20,360] Trial 41 finished with value: -12.584115707433952 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:30:23,804] Trial 42 finished with value: -124.38716896717158 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:30:27,396] Trial 43 finished with value: -567.1719039867155 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:30:30,944] Trial 44 finished with value: -16.99173319921609 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:30:37,845] Trial 45 finished with value: -45.64494855642104 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:30:41,504] Trial 46 finished with value: -8.36514792189461 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:30:45,095] Trial 47 finished with value: -17.889860158888126 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:30:48,672] Trial 48 finished with value: -77.57240948039988 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:30:54,121] Trial 49 finished with value: -244.1589579514444 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 34 with value: -6.878931570229571. +[I 2025-12-17 21:30:57,714] A new study created in memory with name: no-name-cc0f6192-9ec8-45b2-9536-3f2e5e2788a6 +[I 2025-12-17 21:31:55,248] Trial 0 finished with value: -708.1979688828613 and parameters: {'embedding_dim': 342, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -708.1979688828613. +[I 2025-12-17 21:32:15,499] Trial 1 finished with value: -1420.7455272428347 and parameters: {'embedding_dim': 343, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -708.1979688828613. +[I 2025-12-17 21:32:30,178] Trial 2 finished with value: -3725.4363050210522 and parameters: {'embedding_dim': 357, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -708.1979688828613. +[I 2025-12-17 21:32:51,098] Trial 3 finished with value: -689.9985149141897 and parameters: {'embedding_dim': 401, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 3 with value: -689.9985149141897. +[I 2025-12-17 21:33:02,270] Trial 4 finished with value: -527.863545458047 and parameters: {'embedding_dim': 450, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -527.863545458047. +[I 2025-12-17 21:34:11,040] Trial 5 finished with value: -412.62174630580665 and parameters: {'embedding_dim': 159, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 5 with value: -412.62174630580665. +[I 2025-12-17 21:34:51,731] Trial 6 finished with value: -121.7701604965467 and parameters: {'embedding_dim': 421, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 6 with value: -121.7701604965467. +[I 2025-12-17 21:35:19,815] Trial 7 finished with value: -380.726845325517 and parameters: {'embedding_dim': 214, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 6 with value: -121.7701604965467. +[I 2025-12-17 21:35:49,809] Trial 8 finished with value: -420.1184964766047 and parameters: {'embedding_dim': 442, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 6 with value: -121.7701604965467. +[I 2025-12-17 21:36:26,853] Trial 9 finished with value: -382.85904994537134 and parameters: {'embedding_dim': 194, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -121.7701604965467. +[I 2025-12-17 21:37:06,354] Trial 10 finished with value: -89.84241787619357 and parameters: {'embedding_dim': 259, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:37:44,945] Trial 11 finished with value: -371.2997013398898 and parameters: {'embedding_dim': 284, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:38:23,608] Trial 12 finished with value: -129.4538972512578 and parameters: {'embedding_dim': 260, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:39:09,082] Trial 13 finished with value: -309.8844392133294 and parameters: {'embedding_dim': 505, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:39:46,247] Trial 14 finished with value: -2062.889750303519 and parameters: {'embedding_dim': 402, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:40:10,357] Trial 15 finished with value: -381.00255268222304 and parameters: {'embedding_dim': 296, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:40:47,356] Trial 16 finished with value: -270.9626844718249 and parameters: {'embedding_dim': 223, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:41:32,044] Trial 17 finished with value: -197.69759071514258 and parameters: {'embedding_dim': 500, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:42:21,185] Trial 18 finished with value: -187.47313046368595 and parameters: {'embedding_dim': 140, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:42:38,468] Trial 19 finished with value: -355.2010800565539 and parameters: {'embedding_dim': 390, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:43:15,150] Trial 20 finished with value: -1014.7297585655175 and parameters: {'embedding_dim': 261, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:43:53,567] Trial 21 finished with value: -498.6258574026665 and parameters: {'embedding_dim': 253, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:44:31,595] Trial 22 finished with value: -1050.9809186287778 and parameters: {'embedding_dim': 309, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:45:16,969] Trial 23 finished with value: -411.08945679882055 and parameters: {'embedding_dim': 256, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:45:58,658] Trial 24 finished with value: -207.66516411080056 and parameters: {'embedding_dim': 182, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:46:43,657] Trial 25 finished with value: -232.48847894390798 and parameters: {'embedding_dim': 241, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:47:20,187] Trial 26 finished with value: -989.483878157095 and parameters: {'embedding_dim': 284, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:48:07,037] Trial 27 finished with value: -318.13002851586333 and parameters: {'embedding_dim': 442, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -89.84241787619357. +[I 2025-12-17 21:48:58,796] Trial 28 finished with value: -72.41590421367846 and parameters: {'embedding_dim': 370, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 28 with value: -72.41590421367846. +[I 2025-12-17 21:49:48,804] Trial 29 finished with value: -2650.7708898113387 and parameters: {'embedding_dim': 340, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 28 with value: -72.41590421367846. +[I 2025-12-17 21:50:39,410] A new study created in memory with name: no-name-bce06079-6aac-4a47-a86e-c3f72b43457e +[I 2025-12-17 21:50:44,450] Trial 0 finished with value: -50.5275212515089 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -50.5275212515089. +[I 2025-12-17 21:50:48,678] Trial 1 finished with value: -476.2894026396733 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -50.5275212515089. +[I 2025-12-17 21:50:53,940] Trial 2 finished with value: -279.6611092078164 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -50.5275212515089. +[I 2025-12-17 21:51:01,135] Trial 3 finished with value: -53.42627805886097 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -50.5275212515089. +[I 2025-12-17 21:51:06,803] Trial 4 finished with value: -38.877614105138655 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -38.877614105138655. +[I 2025-12-17 21:51:10,467] Trial 5 finished with value: -146.19425201743874 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -38.877614105138655. +[I 2025-12-17 21:51:18,162] Trial 6 finished with value: -10.29022090093601 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:51:28,320] Trial 7 finished with value: -118.33969514060769 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:51:33,457] Trial 8 finished with value: -316.7697978380305 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:51:40,621] Trial 9 finished with value: -385.9415123322327 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:51:48,272] Trial 10 finished with value: -47.87326497375033 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:51:53,892] Trial 11 finished with value: -13.259689956746197 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:51:59,511] Trial 12 finished with value: -65.51844632437536 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:52:07,273] Trial 13 finished with value: -102.90376420037637 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:52:14,968] Trial 14 finished with value: -55.004018272768164 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:52:20,301] Trial 15 finished with value: -124.12662018837396 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:52:28,027] Trial 16 finished with value: -41.05686656191593 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:52:31,736] Trial 17 finished with value: -25.369774943602682 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:52:36,861] Trial 18 finished with value: -43.25302905999006 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:52:44,271] Trial 19 finished with value: -74.86336499002365 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:52:51,893] Trial 20 finished with value: -90.18664931706536 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:52:55,531] Trial 21 finished with value: -55.43938372014681 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:52:59,221] Trial 22 finished with value: -159.50861314148705 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -10.29022090093601. +[I 2025-12-17 21:53:02,919] Trial 23 finished with value: -9.13229823571696 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 23 with value: -9.13229823571696. +[I 2025-12-17 21:53:06,566] Trial 24 finished with value: -268.87588098502124 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 23 with value: -9.13229823571696. +[I 2025-12-17 21:53:12,215] Trial 25 finished with value: -192.08288922766357 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 23 with value: -9.13229823571696. +[I 2025-12-17 21:53:19,918] Trial 26 finished with value: -35.462474524593816 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -9.13229823571696. +[I 2025-12-17 21:53:27,980] Trial 27 finished with value: -27.00065567137133 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 23 with value: -9.13229823571696. +[I 2025-12-17 21:53:31,401] Trial 28 finished with value: -32.681473913843135 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 23 with value: -9.13229823571696. +[I 2025-12-17 21:53:34,871] Trial 29 finished with value: -140.05388371862077 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 23 with value: -9.13229823571696. +[I 2025-12-17 21:53:42,454] Trial 30 finished with value: -7.407216102548917 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -7.407216102548917. +[I 2025-12-17 21:53:50,171] Trial 31 finished with value: -31.258249996239158 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -7.407216102548917. +[I 2025-12-17 21:53:57,776] Trial 32 finished with value: -144.34044668053554 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -7.407216102548917. +[I 2025-12-17 21:54:05,397] Trial 33 finished with value: -45.00394054985919 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -7.407216102548917. +[I 2025-12-17 21:54:12,307] Trial 34 finished with value: -112.5901180977053 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 30 with value: -7.407216102548917. +[I 2025-12-17 21:54:22,544] Trial 35 finished with value: -58.15270736329073 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -7.407216102548917. +[I 2025-12-17 21:54:28,284] Trial 36 finished with value: -4.593711801778364 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 36 with value: -4.593711801778364. +[I 2025-12-17 21:54:35,245] Trial 37 finished with value: -287.1883715130281 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 36 with value: -4.593711801778364. +[I 2025-12-17 21:54:39,992] Trial 38 finished with value: -17.430127733559065 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 36 with value: -4.593711801778364. +[I 2025-12-17 21:54:46,957] Trial 39 finished with value: -200.84688797596954 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 36 with value: -4.593711801778364. +[I 2025-12-17 21:54:52,338] Trial 40 finished with value: -57.34460326099531 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 36 with value: -4.593711801778364. +[I 2025-12-17 21:54:58,533] Trial 41 finished with value: -56.07659565590812 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 36 with value: -4.593711801778364. +[I 2025-12-17 21:55:04,231] Trial 42 finished with value: -202.00572201220467 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 36 with value: -4.593711801778364. +[I 2025-12-17 21:55:09,892] Trial 43 finished with value: -131.18807742329656 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 36 with value: -4.593711801778364. +[I 2025-12-17 21:55:17,616] Trial 44 finished with value: -6.4792984891074346 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 36 with value: -4.593711801778364. +[I 2025-12-17 21:55:25,333] Trial 45 finished with value: -37.36046837312799 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 36 with value: -4.593711801778364. +[I 2025-12-17 21:55:30,968] Trial 46 finished with value: -99.05703524005209 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 36 with value: -4.593711801778364. +[I 2025-12-17 21:55:36,696] Trial 47 finished with value: -44.969318851274956 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 36 with value: -4.593711801778364. +[I 2025-12-17 21:55:44,361] Trial 48 finished with value: -90.7508749050203 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 36 with value: -4.593711801778364. +[I 2025-12-17 21:55:47,853] Trial 49 finished with value: -182.5270733323744 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 36 with value: -4.593711801778364. +[I 2025-12-17 21:55:53,707] A new study created in memory with name: no-name-eb2d1b5a-f865-4fea-b04e-3d0cdbef579e +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_2_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_2_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_2_busan.csv: Class 0=9697 | Class 1=9097 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_2_busan.csv: Class 0=9697 | Class 1=9097 | Class 2=16457 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_2_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_2_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_2_daegu.csv: Class 0=9007 | Class 1=8995 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_2_daegu.csv: Class 0=9007 | Class 1=8995 | Class 2=16803 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_2_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_2_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_2_daejeon.csv: Class 0=9146 | Class 1=9746 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_2_daejeon.csv: Class 0=9146 | Class 1=9746 | Class 2=15717 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 21:56:11,942] Trial 0 finished with value: -1006.7397500193697 and parameters: {'embedding_dim': 293, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -1006.7397500193697. +[I 2025-12-17 21:56:30,113] Trial 1 finished with value: -530.8596696679092 and parameters: {'embedding_dim': 316, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -530.8596696679092. +[I 2025-12-17 21:56:39,106] Trial 2 finished with value: -1091.0001732814285 and parameters: {'embedding_dim': 455, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 1 with value: -530.8596696679092. +[I 2025-12-17 21:57:39,305] Trial 3 finished with value: -856.109889111029 and parameters: {'embedding_dim': 130, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -530.8596696679092. +[I 2025-12-17 21:57:54,112] Trial 4 finished with value: -948.4058909662 and parameters: {'embedding_dim': 412, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 1 with value: -530.8596696679092. +[I 2025-12-17 21:58:38,289] Trial 5 finished with value: -1037.8942500804944 and parameters: {'embedding_dim': 384, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -530.8596696679092. +[I 2025-12-17 21:58:58,828] Trial 6 finished with value: -696.2051468226254 and parameters: {'embedding_dim': 344, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -530.8596696679092. +[I 2025-12-17 21:59:14,270] Trial 7 finished with value: -624.4202169232775 and parameters: {'embedding_dim': 197, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 1 with value: -530.8596696679092. +[I 2025-12-17 21:59:57,730] Trial 8 finished with value: -652.1316934011923 and parameters: {'embedding_dim': 316, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -530.8596696679092. +[I 2025-12-17 22:00:18,483] Trial 9 finished with value: -530.6290576292291 and parameters: {'embedding_dim': 327, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -530.6290576292291. +[I 2025-12-17 22:01:06,900] Trial 10 finished with value: -1686.331325628612 and parameters: {'embedding_dim': 493, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -530.6290576292291. +[I 2025-12-17 22:01:25,034] Trial 11 finished with value: -387.6942514039746 and parameters: {'embedding_dim': 237, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 11 with value: -387.6942514039746. +[I 2025-12-17 22:01:43,465] Trial 12 finished with value: -554.8207561207639 and parameters: {'embedding_dim': 239, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 11 with value: -387.6942514039746. +[I 2025-12-17 22:02:01,772] Trial 13 finished with value: -735.4681516505094 and parameters: {'embedding_dim': 241, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 11 with value: -387.6942514039746. +[I 2025-12-17 22:02:22,498] Trial 14 finished with value: -499.4234659968031 and parameters: {'embedding_dim': 247, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 11 with value: -387.6942514039746. +[I 2025-12-17 22:02:34,473] Trial 15 finished with value: -321.25842307291606 and parameters: {'embedding_dim': 134, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 15 with value: -321.25842307291606. +[I 2025-12-17 22:03:10,432] Trial 16 finished with value: -835.0854734266263 and parameters: {'embedding_dim': 135, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -321.25842307291606. +[I 2025-12-17 22:03:21,898] Trial 17 finished with value: -446.2339179175228 and parameters: {'embedding_dim': 182, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 15 with value: -321.25842307291606. +[I 2025-12-17 22:03:37,595] Trial 18 finished with value: -1364.7581363191139 and parameters: {'embedding_dim': 182, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 15 with value: -321.25842307291606. +[I 2025-12-17 22:04:14,388] Trial 19 finished with value: -867.6668094028271 and parameters: {'embedding_dim': 208, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -321.25842307291606. +[I 2025-12-17 22:04:29,143] Trial 20 finished with value: -404.31596630005356 and parameters: {'embedding_dim': 271, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 15 with value: -321.25842307291606. +[I 2025-12-17 22:04:43,553] Trial 21 finished with value: -736.5370113054897 and parameters: {'embedding_dim': 282, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 15 with value: -321.25842307291606. +[I 2025-12-17 22:04:55,400] Trial 22 finished with value: -1827.0964906839092 and parameters: {'embedding_dim': 161, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 15 with value: -321.25842307291606. +[I 2025-12-17 22:05:07,415] Trial 23 finished with value: -1449.6825193386135 and parameters: {'embedding_dim': 257, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 15 with value: -321.25842307291606. +[I 2025-12-17 22:05:24,873] Trial 24 finished with value: -411.30075515401796 and parameters: {'embedding_dim': 218, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 15 with value: -321.25842307291606. +[I 2025-12-17 22:05:40,371] Trial 25 finished with value: -821.2647915180393 and parameters: {'embedding_dim': 359, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 15 with value: -321.25842307291606. +[I 2025-12-17 22:05:55,553] Trial 26 finished with value: -666.8577785570742 and parameters: {'embedding_dim': 275, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 15 with value: -321.25842307291606. +[I 2025-12-17 22:06:07,766] Trial 27 finished with value: -880.0502359508376 and parameters: {'embedding_dim': 169, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 15 with value: -321.25842307291606. +[I 2025-12-17 22:06:44,411] Trial 28 finished with value: -352.51538378728094 and parameters: {'embedding_dim': 220, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 15 with value: -321.25842307291606. +[I 2025-12-17 22:07:21,239] Trial 29 finished with value: -384.46174263780614 and parameters: {'embedding_dim': 146, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 15 with value: -321.25842307291606. +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_2_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_2_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_2_gwangju.csv: Class 0=8547 | Class 1=8799 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_2_gwangju.csv: Class 0=8547 | Class 1=8799 | Class 2=15760 + +Running ctgan_sample_10000_3.py... +[I 2025-12-17 22:07:36,371] A new study created in memory with name: no-name-760984de-b252-4820-89e5-f6a1da48bfba +[I 2025-12-17 22:07:49,938] Trial 0 finished with value: -56.26941877203929 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -56.26941877203929. +[I 2025-12-17 22:08:02,578] Trial 1 finished with value: -192.4658485149183 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -56.26941877203929. +[I 2025-12-17 22:08:16,952] Trial 2 finished with value: -2.9851171845946194 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:08:21,098] Trial 3 finished with value: -175.17458753029095 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:08:47,750] Trial 4 finished with value: -4.143860611418836 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:09:00,649] Trial 5 finished with value: -8.882857215723257 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:09:14,899] Trial 6 finished with value: -9.863578249106093 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:09:21,905] Trial 7 finished with value: -12.263465486786878 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:09:28,925] Trial 8 finished with value: -14.215006443861547 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:09:48,616] Trial 9 finished with value: -5.171060232078885 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:09:54,754] Trial 10 finished with value: -39.138568676258735 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:10:09,167] Trial 11 finished with value: -95.70229823619918 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:10:35,948] Trial 12 finished with value: -41.5005934692845 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:10:50,312] Trial 13 finished with value: -50.55405235843885 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:10:56,554] Trial 14 finished with value: -270.87710688659655 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:11:23,331] Trial 15 finished with value: -61.682129340956934 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:11:37,775] Trial 16 finished with value: -115.27250686380515 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:11:57,546] Trial 17 finished with value: -4.719293541298122 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:12:12,103] Trial 18 finished with value: -40.3513489857861 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:12:18,312] Trial 19 finished with value: -73.63102187114961 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:12:32,668] Trial 20 finished with value: -11.931820875241273 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:12:53,044] Trial 21 finished with value: -12.650982820431341 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:13:14,279] Trial 22 finished with value: -13.411544796700987 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -2.9851171845946194. +[I 2025-12-17 22:13:33,993] Trial 23 finished with value: -0.06652041619753972 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:13:55,314] Trial 24 finished with value: -7.694436620121958 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:14:23,173] Trial 25 finished with value: -228.9287453140993 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:14:44,359] Trial 26 finished with value: -32.02128438352151 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:15:13,342] Trial 27 finished with value: -70.12406381501168 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:15:24,186] Trial 28 finished with value: -271.8429828421324 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:15:34,924] Trial 29 finished with value: -49.771226315562174 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:16:03,383] Trial 30 finished with value: -15.599846647102162 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:16:25,559] Trial 31 finished with value: -72.16267507119791 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:16:47,284] Trial 32 finished with value: -121.98348236022267 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:17:08,455] Trial 33 finished with value: -16.146820481905124 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:17:29,640] Trial 34 finished with value: -371.1021743359167 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:17:42,454] Trial 35 finished with value: -87.15563121208696 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:17:57,792] Trial 36 finished with value: -630.6246513294875 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:18:12,124] Trial 37 finished with value: -21.217602875465943 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:18:33,886] Trial 38 finished with value: -35.09309892351009 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:18:40,054] Trial 39 finished with value: -109.94335597433789 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:18:47,033] Trial 40 finished with value: -83.26104416068071 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:19:08,325] Trial 41 finished with value: -53.38867696797438 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:19:29,639] Trial 42 finished with value: -14.301140133357203 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:19:50,650] Trial 43 finished with value: -3.4478235067037657 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:20:12,325] Trial 44 finished with value: -55.577407985521745 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:20:34,149] Trial 45 finished with value: -11.325614586962361 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:20:55,285] Trial 46 finished with value: -55.47626255225204 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:21:12,197] Trial 47 finished with value: -29.219690400009174 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:21:21,080] Trial 48 finished with value: -89.34472350336587 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:21:36,144] Trial 49 finished with value: -82.86653144876115 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 23 with value: -0.06652041619753972. +[I 2025-12-17 22:21:56,135] A new study created in memory with name: no-name-d43b15c6-5080-46b8-afd6-6ba3b72a7265 +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 22:23:04,792] Trial 0 finished with value: -267.4413307738296 and parameters: {'embedding_dim': 191, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -267.4413307738296. +[I 2025-12-17 22:23:43,221] Trial 1 finished with value: -885.4324322140491 and parameters: {'embedding_dim': 469, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -267.4413307738296. +[I 2025-12-17 22:24:19,026] Trial 2 finished with value: -1061.3300754310858 and parameters: {'embedding_dim': 218, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -267.4413307738296. +[I 2025-12-17 22:25:46,562] Trial 3 finished with value: -16.74012753437983 and parameters: {'embedding_dim': 257, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -16.74012753437983. +[I 2025-12-17 22:26:00,850] Trial 4 finished with value: -684.697682654039 and parameters: {'embedding_dim': 224, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 3 with value: -16.74012753437983. +[I 2025-12-17 22:26:41,417] Trial 5 finished with value: -641.1297943298055 and parameters: {'embedding_dim': 233, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -16.74012753437983. +[I 2025-12-17 22:27:29,960] Trial 6 finished with value: -89.033414391361 and parameters: {'embedding_dim': 257, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 3 with value: -16.74012753437983. +[I 2025-12-17 22:29:29,438] Trial 7 finished with value: -59.0283499990409 and parameters: {'embedding_dim': 389, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -16.74012753437983. +[I 2025-12-17 22:30:40,960] Trial 8 finished with value: -407.45445397371566 and parameters: {'embedding_dim': 405, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -16.74012753437983. +[I 2025-12-17 22:32:39,899] Trial 9 finished with value: -411.81777197549843 and parameters: {'embedding_dim': 187, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -16.74012753437983. +[I 2025-12-17 22:33:59,266] Trial 10 finished with value: -805.1278963961354 and parameters: {'embedding_dim': 129, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -16.74012753437983. +[I 2025-12-17 22:35:35,278] Trial 11 finished with value: -11.54417560095164 and parameters: {'embedding_dim': 339, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:37:09,811] Trial 12 finished with value: -260.09856636471767 and parameters: {'embedding_dim': 317, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:38:44,792] Trial 13 finished with value: -73.75783615512543 and parameters: {'embedding_dim': 308, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:40:00,896] Trial 14 finished with value: -835.6929670391706 and parameters: {'embedding_dim': 389, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:40:20,360] Trial 15 finished with value: -559.3747262644654 and parameters: {'embedding_dim': 286, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:41:56,144] Trial 16 finished with value: -71.24607548784414 and parameters: {'embedding_dim': 338, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:43:30,792] Trial 17 finished with value: -13.999574763212483 and parameters: {'embedding_dim': 471, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:44:03,023] Trial 18 finished with value: -319.33382752116637 and parameters: {'embedding_dim': 510, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:45:11,709] Trial 19 finished with value: -19.117844340535182 and parameters: {'embedding_dim': 446, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:46:50,545] Trial 20 finished with value: -382.7552395188318 and parameters: {'embedding_dim': 345, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:48:09,933] Trial 21 finished with value: -301.4304267908674 and parameters: {'embedding_dim': 273, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:49:28,301] Trial 22 finished with value: -37.02395038346476 and parameters: {'embedding_dim': 434, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:50:46,812] Trial 23 finished with value: -191.35270798229877 and parameters: {'embedding_dim': 505, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:52:24,947] Trial 24 finished with value: -39.047846244439974 and parameters: {'embedding_dim': 132, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:53:28,310] Trial 25 finished with value: -168.69017362068004 and parameters: {'embedding_dim': 355, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:55:06,863] Trial 26 finished with value: -593.9249741301853 and parameters: {'embedding_dim': 471, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:57:10,446] Trial 27 finished with value: -152.4616502022647 and parameters: {'embedding_dim': 367, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:58:15,333] Trial 28 finished with value: -177.6314307150453 and parameters: {'embedding_dim': 291, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 22:58:41,094] Trial 29 finished with value: -537.9062759600275 and parameters: {'embedding_dim': 161, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 11 with value: -11.54417560095164. +[I 2025-12-17 23:00:24,408] A new study created in memory with name: no-name-ae097bb5-bc27-4045-9655-5b8a6e058511 +[I 2025-12-17 23:00:31,074] Trial 0 finished with value: -275.25943121540945 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -275.25943121540945. +[I 2025-12-17 23:00:38,196] Trial 1 finished with value: -306.5509731779372 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -275.25943121540945. +[I 2025-12-17 23:00:43,086] Trial 2 finished with value: -125.41783261738794 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -125.41783261738794. +[I 2025-12-17 23:00:46,657] Trial 3 finished with value: -272.01720157268807 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -125.41783261738794. +[I 2025-12-17 23:00:53,468] Trial 4 finished with value: -366.9035209554515 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -125.41783261738794. +[I 2025-12-17 23:01:00,936] Trial 5 finished with value: -93.8548311744224 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -93.8548311744224. +[I 2025-12-17 23:01:07,344] Trial 6 finished with value: -158.1543915644458 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -93.8548311744224. +[I 2025-12-17 23:01:12,053] Trial 7 finished with value: -276.6496014299127 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -93.8548311744224. +[I 2025-12-17 23:01:17,296] Trial 8 finished with value: -159.21643237070526 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -93.8548311744224. +[I 2025-12-17 23:01:20,420] Trial 9 finished with value: -404.5921134978274 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 5 with value: -93.8548311744224. +[I 2025-12-17 23:01:23,797] Trial 10 finished with value: -113.79935764441149 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -93.8548311744224. +[I 2025-12-17 23:01:27,154] Trial 11 finished with value: -92.6610919296976 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 11 with value: -92.6610919296976. +[I 2025-12-17 23:01:30,535] Trial 12 finished with value: -155.95690309200018 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 11 with value: -92.6610919296976. +[I 2025-12-17 23:01:35,787] Trial 13 finished with value: -400.6492997816729 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -92.6610919296976. +[I 2025-12-17 23:01:39,144] Trial 14 finished with value: -196.1719881645416 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 11 with value: -92.6610919296976. +[I 2025-12-17 23:01:44,377] Trial 15 finished with value: -317.3445059505549 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -92.6610919296976. +[I 2025-12-17 23:01:47,694] Trial 16 finished with value: -184.21291730875467 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 11 with value: -92.6610919296976. +[I 2025-12-17 23:01:52,921] Trial 17 finished with value: -677.4612456908511 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -92.6610919296976. +[I 2025-12-17 23:01:57,915] Trial 18 finished with value: -156.32053386425716 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -92.6610919296976. +[I 2025-12-17 23:02:01,135] Trial 19 finished with value: -598.0484204165897 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 11 with value: -92.6610919296976. +[I 2025-12-17 23:02:06,441] Trial 20 finished with value: -512.2059625888802 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -92.6610919296976. +[I 2025-12-17 23:02:09,792] Trial 21 finished with value: -140.68896244999758 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 11 with value: -92.6610919296976. +[I 2025-12-17 23:02:13,130] Trial 22 finished with value: -132.87247121744394 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 11 with value: -92.6610919296976. +[I 2025-12-17 23:02:19,126] Trial 23 finished with value: -128.91913082118495 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 11 with value: -92.6610919296976. +[I 2025-12-17 23:02:23,243] Trial 24 finished with value: -34.718075869138744 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 24 with value: -34.718075869138744. +[I 2025-12-17 23:02:26,674] Trial 25 finished with value: -389.65467900251565 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 24 with value: -34.718075869138744. +[I 2025-12-17 23:02:32,028] Trial 26 finished with value: -87.3137703670926 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -34.718075869138744. +[I 2025-12-17 23:02:35,481] Trial 27 finished with value: -363.34556341304767 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 24 with value: -34.718075869138744. +[I 2025-12-17 23:02:40,463] Trial 28 finished with value: -655.7393680181431 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -34.718075869138744. +[I 2025-12-17 23:02:46,824] Trial 29 finished with value: -445.38943562351 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -34.718075869138744. +[I 2025-12-17 23:02:53,552] Trial 30 finished with value: -159.08091490642045 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -34.718075869138744. +[I 2025-12-17 23:02:58,807] Trial 31 finished with value: -178.18252071031887 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -34.718075869138744. +[I 2025-12-17 23:03:04,076] Trial 32 finished with value: -25.463141310395496 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:03:09,374] Trial 33 finished with value: -136.63958445643277 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:03:16,502] Trial 34 finished with value: -164.2097847965012 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:03:23,890] Trial 35 finished with value: -317.4753237642326 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:03:27,396] Trial 36 finished with value: -499.67063424366995 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:03:32,315] Trial 37 finished with value: -283.8213163862726 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:03:39,521] Trial 38 finished with value: -253.5634320779779 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:03:44,862] Trial 39 finished with value: -296.1185134115258 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:03:51,472] Trial 40 finished with value: -253.8956063775709 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:03:56,683] Trial 41 finished with value: -217.65141878015154 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:04:01,918] Trial 42 finished with value: -48.816313573645346 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:04:07,139] Trial 43 finished with value: -155.92911337728566 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:04:12,364] Trial 44 finished with value: -417.81293908869463 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:04:17,577] Trial 45 finished with value: -177.4188411536899 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:04:20,907] Trial 46 finished with value: -509.0804875536929 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:04:28,028] Trial 47 finished with value: -415.50201016106433 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:04:32,706] Trial 48 finished with value: -485.8986953785701 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:04:36,034] Trial 49 finished with value: -958.9887366083758 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 32 with value: -25.463141310395496. +[I 2025-12-17 23:04:41,447] A new study created in memory with name: no-name-06fa0414-da1e-4ded-bf0b-67fae133887a +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_3_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_3_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_3_incheon.csv: Class 0=9324 | Class 1=9772 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_3_incheon.csv: Class 0=9324 | Class 1=9772 | Class 2=14595 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 23:05:04,220] Trial 0 finished with value: -375.7854096414811 and parameters: {'embedding_dim': 203, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 0 with value: -375.7854096414811. +[I 2025-12-17 23:05:19,334] Trial 1 finished with value: -1226.8419067185882 and parameters: {'embedding_dim': 443, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -375.7854096414811. +[I 2025-12-17 23:05:29,426] Trial 2 finished with value: -2926.658944003611 and parameters: {'embedding_dim': 365, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -375.7854096414811. +[I 2025-12-17 23:06:01,622] Trial 3 finished with value: -1095.6207702539396 and parameters: {'embedding_dim': 471, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -375.7854096414811. +[I 2025-12-17 23:06:18,601] Trial 4 finished with value: -623.2936205111614 and parameters: {'embedding_dim': 305, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -375.7854096414811. +[I 2025-12-17 23:06:41,484] Trial 5 finished with value: -475.9202262218637 and parameters: {'embedding_dim': 207, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -375.7854096414811. +[I 2025-12-17 23:07:02,794] Trial 6 finished with value: -2433.263253354861 and parameters: {'embedding_dim': 245, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -375.7854096414811. +[I 2025-12-17 23:07:28,912] Trial 7 finished with value: -510.5882801290197 and parameters: {'embedding_dim': 448, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -375.7854096414811. +[I 2025-12-17 23:07:37,278] Trial 8 finished with value: -467.33831257849323 and parameters: {'embedding_dim': 283, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -375.7854096414811. +[I 2025-12-17 23:07:45,947] Trial 9 finished with value: -281.0296857868007 and parameters: {'embedding_dim': 170, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 9 with value: -281.0296857868007. +[I 2025-12-17 23:08:24,146] Trial 10 finished with value: -165.4587448704413 and parameters: {'embedding_dim': 143, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -165.4587448704413. +[I 2025-12-17 23:09:00,196] Trial 11 finished with value: -810.8905686915365 and parameters: {'embedding_dim': 144, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -165.4587448704413. +[I 2025-12-17 23:09:38,912] Trial 12 finished with value: -999.4943099383521 and parameters: {'embedding_dim': 133, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -165.4587448704413. +[I 2025-12-17 23:10:16,948] Trial 13 finished with value: -365.8983667190632 and parameters: {'embedding_dim': 180, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -165.4587448704413. +[I 2025-12-17 23:10:53,931] Trial 14 finished with value: -635.5836631303115 and parameters: {'embedding_dim': 368, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -165.4587448704413. +[I 2025-12-17 23:11:11,159] Trial 15 finished with value: -525.3225350278974 and parameters: {'embedding_dim': 251, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 10 with value: -165.4587448704413. +[I 2025-12-17 23:11:33,663] Trial 16 finished with value: -33.283180595619186 and parameters: {'embedding_dim': 174, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 16 with value: -33.283180595619186. +[I 2025-12-17 23:12:23,107] Trial 17 finished with value: -51.48102533822736 and parameters: {'embedding_dim': 226, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -33.283180595619186. +[I 2025-12-17 23:13:22,980] Trial 18 finished with value: -608.9316780686972 and parameters: {'embedding_dim': 237, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 16 with value: -33.283180595619186. +[I 2025-12-17 23:14:34,493] Trial 19 finished with value: -299.419671369413 and parameters: {'embedding_dim': 353, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 16 with value: -33.283180595619186. +[I 2025-12-17 23:15:23,618] Trial 20 finished with value: -351.42690822642317 and parameters: {'embedding_dim': 280, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -33.283180595619186. +[I 2025-12-17 23:15:58,847] Trial 21 finished with value: -386.7006744229743 and parameters: {'embedding_dim': 128, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 16 with value: -33.283180595619186. +[I 2025-12-17 23:16:45,704] Trial 22 finished with value: -239.78280340019978 and parameters: {'embedding_dim': 177, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -33.283180595619186. +[I 2025-12-17 23:17:20,282] Trial 23 finished with value: -0.2927446973492319 and parameters: {'embedding_dim': 204, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 23 with value: -0.2927446973492319. +[I 2025-12-17 23:17:43,671] Trial 24 finished with value: -5152.9789948015705 and parameters: {'embedding_dim': 210, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 23 with value: -0.2927446973492319. +[I 2025-12-17 23:18:30,247] Trial 25 finished with value: -63.6747387029867 and parameters: {'embedding_dim': 222, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -0.2927446973492319. +[I 2025-12-17 23:19:05,956] Trial 26 finished with value: -419.52417301265325 and parameters: {'embedding_dim': 273, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 23 with value: -0.2927446973492319. +[I 2025-12-17 23:19:41,084] Trial 27 finished with value: -182.0743744769464 and parameters: {'embedding_dim': 176, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 23 with value: -0.2927446973492319. +[I 2025-12-17 23:20:04,522] Trial 28 finished with value: -6067.593280200038 and parameters: {'embedding_dim': 317, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 23 with value: -0.2927446973492319. +[I 2025-12-17 23:20:50,731] Trial 29 finished with value: -345.6266349150485 and parameters: {'embedding_dim': 195, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -0.2927446973492319. +[I 2025-12-17 23:21:26,074] A new study created in memory with name: no-name-ec7eaeed-ecd0-4b97-a453-30bc21bf02ee +[I 2025-12-17 23:21:32,696] Trial 0 finished with value: -116.38819007952519 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -116.38819007952519. +[I 2025-12-17 23:21:39,493] Trial 1 finished with value: -67.29495296955692 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -67.29495296955692. +[I 2025-12-17 23:21:43,015] Trial 2 finished with value: -34.69443742376649 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -34.69443742376649. +[I 2025-12-17 23:21:46,265] Trial 3 finished with value: -9.605959266479122 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -9.605959266479122. +[I 2025-12-17 23:21:49,536] Trial 4 finished with value: -163.36435886730857 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -9.605959266479122. +[I 2025-12-17 23:21:56,112] Trial 5 finished with value: -116.59918058611494 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -9.605959266479122. +[I 2025-12-17 23:22:01,226] Trial 6 finished with value: -191.4817345841124 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -9.605959266479122. +[I 2025-12-17 23:22:04,485] Trial 7 finished with value: -165.54167576763015 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -9.605959266479122. +[I 2025-12-17 23:22:07,876] Trial 8 finished with value: -42.677729608665395 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -9.605959266479122. +[I 2025-12-17 23:22:11,304] Trial 9 finished with value: -72.52942197964936 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -9.605959266479122. +[I 2025-12-17 23:22:16,757] Trial 10 finished with value: -58.13908526056764 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -9.605959266479122. +[I 2025-12-17 23:22:22,164] Trial 11 finished with value: -1.876723804784926 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:22:27,570] Trial 12 finished with value: -43.69750888732703 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:22:33,067] Trial 13 finished with value: -59.824191901638045 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:22:38,061] Trial 14 finished with value: -120.4024820176626 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:22:41,653] Trial 15 finished with value: -67.45879535938806 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:22:48,944] Trial 16 finished with value: -43.76971210886219 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:22:53,943] Trial 17 finished with value: -84.51666484756272 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:22:59,353] Trial 18 finished with value: -27.61027059672154 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:23:02,690] Trial 19 finished with value: -43.5994761004549 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:23:08,136] Trial 20 finished with value: -30.50764947996504 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:23:13,564] Trial 21 finished with value: -186.6965919325883 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:23:18,980] Trial 22 finished with value: -60.69353983997966 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:23:26,272] Trial 23 finished with value: -49.874902561477036 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:23:31,671] Trial 24 finished with value: -15.072717570181263 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:23:34,946] Trial 25 finished with value: -113.65532394761348 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:23:40,408] Trial 26 finished with value: -137.86209968374163 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:23:47,744] Trial 27 finished with value: -40.90543481629682 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:23:51,098] Trial 28 finished with value: -41.57630166852792 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:23:57,680] Trial 29 finished with value: -11.257813099994108 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:24:04,259] Trial 30 finished with value: -48.38834259393369 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:24:10,862] Trial 31 finished with value: -160.92691525753736 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:24:15,799] Trial 32 finished with value: -83.59121698598679 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:24:22,393] Trial 33 finished with value: -30.36187892797274 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:24:27,302] Trial 34 finished with value: -203.509983421825 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:24:33,898] Trial 35 finished with value: -175.21826237005246 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:24:38,982] Trial 36 finished with value: -14.387112619265134 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:24:42,349] Trial 37 finished with value: -57.05324503951645 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:24:49,190] Trial 38 finished with value: -46.92668312585536 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:24:52,551] Trial 39 finished with value: -123.21120547258423 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:24:57,679] Trial 40 finished with value: -89.83102199899086 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:25:02,788] Trial 41 finished with value: -6.114556326102898 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:25:07,857] Trial 42 finished with value: -14.044790630814154 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:25:12,970] Trial 43 finished with value: -93.86675008270737 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:25:18,041] Trial 44 finished with value: -64.58527035754081 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:25:23,121] Trial 45 finished with value: -41.85274702973067 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:25:26,470] Trial 46 finished with value: -206.2444983373873 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:25:31,492] Trial 47 finished with value: -42.69551596247405 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:25:38,497] Trial 48 finished with value: -12.674683767389778 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:25:45,053] Trial 49 finished with value: -20.09720879698202 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -1.876723804784926. +[I 2025-12-17 23:25:50,593] A new study created in memory with name: no-name-6cc9daf1-306a-4652-b45e-1480e378829f +[I 2025-12-17 23:26:29,652] Trial 0 finished with value: -1872.9840036734458 and parameters: {'embedding_dim': 199, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -1872.9840036734458. +[I 2025-12-17 23:27:00,641] Trial 1 finished with value: -661.6619920621176 and parameters: {'embedding_dim': 329, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -661.6619920621176. +[I 2025-12-17 23:27:46,855] Trial 2 finished with value: -2411.411287965754 and parameters: {'embedding_dim': 509, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -661.6619920621176. +[I 2025-12-17 23:28:11,273] Trial 3 finished with value: -833.2481813709578 and parameters: {'embedding_dim': 308, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -661.6619920621176. +[I 2025-12-17 23:28:49,906] Trial 4 finished with value: -2284.4427374382103 and parameters: {'embedding_dim': 337, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -661.6619920621176. +[I 2025-12-17 23:29:03,436] Trial 5 finished with value: -1260.5573424572376 and parameters: {'embedding_dim': 228, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 1 with value: -661.6619920621176. +[I 2025-12-17 23:29:13,854] Trial 6 finished with value: -163.19817963605692 and parameters: {'embedding_dim': 342, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:30:00,371] Trial 7 finished with value: -971.1403589428919 and parameters: {'embedding_dim': 148, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:30:14,100] Trial 8 finished with value: -1293.7307222507904 and parameters: {'embedding_dim': 426, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:30:30,915] Trial 9 finished with value: -1121.7443489599486 and parameters: {'embedding_dim': 275, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:30:41,052] Trial 10 finished with value: -12044.293975179004 and parameters: {'embedding_dim': 435, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:30:52,121] Trial 11 finished with value: -895.2946799964827 and parameters: {'embedding_dim': 370, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:31:07,784] Trial 12 finished with value: -594.4291807405401 and parameters: {'embedding_dim': 399, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:31:23,534] Trial 13 finished with value: -3626.227648977171 and parameters: {'embedding_dim': 405, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:31:38,247] Trial 14 finished with value: -5184.282813222322 and parameters: {'embedding_dim': 490, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:31:52,835] Trial 15 finished with value: -2851.158510726543 and parameters: {'embedding_dim': 375, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:32:02,957] Trial 16 finished with value: -3809.342989804566 and parameters: {'embedding_dim': 274, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:32:18,224] Trial 17 finished with value: -1338.9647297179458 and parameters: {'embedding_dim': 457, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:32:29,034] Trial 18 finished with value: -712.3770642235679 and parameters: {'embedding_dim': 388, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:32:44,228] Trial 19 finished with value: -480.06352943647346 and parameters: {'embedding_dim': 281, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:32:51,920] Trial 20 finished with value: -3560.78143584878 and parameters: {'embedding_dim': 233, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:33:07,126] Trial 21 finished with value: -900.899335657276 and parameters: {'embedding_dim': 293, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:33:21,660] Trial 22 finished with value: -1712.0166125091703 and parameters: {'embedding_dim': 352, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -163.19817963605692. +[I 2025-12-17 23:33:36,685] Trial 23 finished with value: -133.21506263566062 and parameters: {'embedding_dim': 245, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 23 with value: -133.21506263566062. +[I 2025-12-17 23:33:47,460] Trial 24 finished with value: -5016.658293464539 and parameters: {'embedding_dim': 236, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 23 with value: -133.21506263566062. +[I 2025-12-17 23:34:06,553] Trial 25 finished with value: -452.64954107923865 and parameters: {'embedding_dim': 173, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 23 with value: -133.21506263566062. +[I 2025-12-17 23:34:26,170] Trial 26 finished with value: -836.8969659719131 and parameters: {'embedding_dim': 143, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 23 with value: -133.21506263566062. +[I 2025-12-17 23:34:46,364] Trial 27 finished with value: -933.5752392014539 and parameters: {'embedding_dim': 178, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 23 with value: -133.21506263566062. +[I 2025-12-17 23:34:59,426] Trial 28 finished with value: -2893.7077093599028 and parameters: {'embedding_dim': 183, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 23 with value: -133.21506263566062. +[I 2025-12-17 23:35:09,118] Trial 29 finished with value: -1868.7490925038853 and parameters: {'embedding_dim': 252, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 23 with value: -133.21506263566062. +[I 2025-12-17 23:35:25,364] A new study created in memory with name: no-name-246e9a40-9847-473a-bb72-08e0e6c9f2cd +[I 2025-12-17 23:35:32,077] Trial 0 finished with value: -118.8897990512182 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -118.8897990512182. +[I 2025-12-17 23:35:37,064] Trial 1 finished with value: -120.48485503702256 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -118.8897990512182. +[I 2025-12-17 23:35:40,245] Trial 2 finished with value: -227.32355571423307 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -118.8897990512182. +[I 2025-12-17 23:35:43,543] Trial 3 finished with value: -126.33637419708337 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -118.8897990512182. +[I 2025-12-17 23:35:50,727] Trial 4 finished with value: -135.22483401889642 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -118.8897990512182. +[I 2025-12-17 23:35:56,003] Trial 5 finished with value: -77.39439261280631 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -77.39439261280631. +[I 2025-12-17 23:36:03,285] Trial 6 finished with value: -75.75799812812033 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -75.75799812812033. +[I 2025-12-17 23:36:08,090] Trial 7 finished with value: -412.72670720214455 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 6 with value: -75.75799812812033. +[I 2025-12-17 23:36:11,246] Trial 8 finished with value: -232.74243937538148 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 6 with value: -75.75799812812033. +[I 2025-12-17 23:36:14,414] Trial 9 finished with value: -126.10963289322024 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 6 with value: -75.75799812812033. +[I 2025-12-17 23:36:21,674] Trial 10 finished with value: -150.8798974560368 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -75.75799812812033. +[I 2025-12-17 23:36:26,982] Trial 11 finished with value: -80.4683461048293 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -75.75799812812033. +[I 2025-12-17 23:36:34,165] Trial 12 finished with value: -104.21753351876907 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -75.75799812812033. +[I 2025-12-17 23:36:39,498] Trial 13 finished with value: -204.99637943602315 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -75.75799812812033. +[I 2025-12-17 23:36:44,898] Trial 14 finished with value: -249.9724895987023 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -75.75799812812033. +[I 2025-12-17 23:36:52,248] Trial 15 finished with value: -118.09020304807201 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -75.75799812812033. +[I 2025-12-17 23:36:57,540] Trial 16 finished with value: -170.95965263591432 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -75.75799812812033. +[I 2025-12-17 23:37:04,719] Trial 17 finished with value: -262.35200516693146 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -75.75799812812033. +[I 2025-12-17 23:37:10,018] Trial 18 finished with value: -17.348062808302057 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:37:15,028] Trial 19 finished with value: -201.14059654803623 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:37:22,238] Trial 20 finished with value: -351.7212606798153 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:37:27,547] Trial 21 finished with value: -159.11269643914372 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:37:32,944] Trial 22 finished with value: -107.71994602625077 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:37:38,329] Trial 23 finished with value: -145.87633909026965 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:37:41,745] Trial 24 finished with value: -196.26993377681652 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:37:47,056] Trial 25 finished with value: -85.53095164236322 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:37:52,341] Trial 26 finished with value: -93.83032377025093 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:37:59,504] Trial 27 finished with value: -165.13498305106444 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:38:04,435] Trial 28 finished with value: -284.49722902226006 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:38:10,883] Trial 29 finished with value: -48.13195075239872 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:38:17,371] Trial 30 finished with value: -138.614215500121 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:38:23,829] Trial 31 finished with value: -254.07580967923445 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:38:31,709] Trial 32 finished with value: -52.223318991139315 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:38:38,172] Trial 33 finished with value: -148.95798263952884 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:38:44,649] Trial 34 finished with value: -109.72047694861313 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:38:51,113] Trial 35 finished with value: -105.15934800674587 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:38:57,588] Trial 36 finished with value: -209.9747926976041 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:39:04,291] Trial 37 finished with value: -275.0291735692386 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:39:10,760] Trial 38 finished with value: -79.43047964836528 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:39:17,218] Trial 39 finished with value: -103.31604242852154 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:39:23,665] Trial 40 finished with value: -529.7354356966677 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:39:31,278] Trial 41 finished with value: -58.672200680085794 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:39:34,592] Trial 42 finished with value: -123.67647877045613 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:39:39,595] Trial 43 finished with value: -338.4173957279085 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:39:44,623] Trial 44 finished with value: -131.12098281310665 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:39:49,617] Trial 45 finished with value: -140.32444070576616 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:39:52,796] Trial 46 finished with value: -80.1567671492928 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:39:59,520] Trial 47 finished with value: -187.23164623922827 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:40:05,277] Trial 48 finished with value: -121.71537105843476 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:40:11,277] Trial 49 finished with value: -385.12672364522905 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -17.348062808302057. +[I 2025-12-17 23:40:17,167] A new study created in memory with name: no-name-8166f8fc-4775-47ec-8a84-491b58b86ab4 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_3_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_3_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_3_seoul.csv: Class 0=8007 | Class 1=9848 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_3_seoul.csv: Class 0=8007 | Class 1=9848 | Class 2=15873 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_3_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_3_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_3_busan.csv: Class 0=9604 | Class 1=8626 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_3_busan.csv: Class 0=9604 | Class 1=8626 | Class 2=16439 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-17 23:40:35,034] Trial 0 finished with value: -454.7782534982109 and parameters: {'embedding_dim': 256, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -454.7782534982109. +[I 2025-12-17 23:40:44,100] Trial 1 finished with value: -887.1946950929678 and parameters: {'embedding_dim': 305, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -454.7782534982109. +[I 2025-12-17 23:40:54,989] Trial 2 finished with value: -937.9884276606135 and parameters: {'embedding_dim': 292, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 0 with value: -454.7782534982109. +[I 2025-12-17 23:41:06,162] Trial 3 finished with value: -402.2463699961404 and parameters: {'embedding_dim': 379, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -402.2463699961404. +[I 2025-12-17 23:41:17,247] Trial 4 finished with value: -298.5611940850258 and parameters: {'embedding_dim': 261, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -298.5611940850258. +[I 2025-12-17 23:41:28,157] Trial 5 finished with value: -172.94506595175454 and parameters: {'embedding_dim': 376, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -172.94506595175454. +[I 2025-12-17 23:41:41,346] Trial 6 finished with value: -319.2964180445853 and parameters: {'embedding_dim': 273, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -172.94506595175454. +[I 2025-12-17 23:41:59,346] Trial 7 finished with value: -346.29795912041925 and parameters: {'embedding_dim': 194, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -172.94506595175454. +[I 2025-12-17 23:42:20,322] Trial 8 finished with value: -160.0948417581489 and parameters: {'embedding_dim': 412, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 8 with value: -160.0948417581489. +[I 2025-12-17 23:42:35,974] Trial 9 finished with value: -265.54686393833754 and parameters: {'embedding_dim': 320, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 8 with value: -160.0948417581489. +[I 2025-12-17 23:42:43,627] Trial 10 finished with value: -591.9789590737862 and parameters: {'embedding_dim': 498, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 8 with value: -160.0948417581489. +[I 2025-12-17 23:42:58,763] Trial 11 finished with value: -384.47417464887735 and parameters: {'embedding_dim': 422, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 8 with value: -160.0948417581489. +[I 2025-12-17 23:43:08,471] Trial 12 finished with value: -493.3867898380204 and parameters: {'embedding_dim': 407, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 8 with value: -160.0948417581489. +[I 2025-12-17 23:43:19,802] Trial 13 finished with value: -206.31586695770565 and parameters: {'embedding_dim': 481, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -160.0948417581489. +[I 2025-12-17 23:43:33,865] Trial 14 finished with value: -205.08197090514335 and parameters: {'embedding_dim': 360, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 8 with value: -160.0948417581489. +[I 2025-12-17 23:43:58,791] Trial 15 finished with value: -97.86468416273541 and parameters: {'embedding_dim': 446, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -97.86468416273541. +[I 2025-12-17 23:44:21,495] Trial 16 finished with value: -188.37593181700404 and parameters: {'embedding_dim': 457, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -97.86468416273541. +[I 2025-12-17 23:44:44,136] Trial 17 finished with value: -371.24538369390586 and parameters: {'embedding_dim': 437, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -97.86468416273541. +[I 2025-12-17 23:45:04,208] Trial 18 finished with value: -632.7164271828979 and parameters: {'embedding_dim': 350, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -97.86468416273541. +[I 2025-12-17 23:45:28,664] Trial 19 finished with value: -453.9207072707553 and parameters: {'embedding_dim': 508, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -97.86468416273541. +[I 2025-12-17 23:45:48,385] Trial 20 finished with value: -132.07644948986467 and parameters: {'embedding_dim': 459, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -97.86468416273541. +[I 2025-12-17 23:46:09,972] Trial 21 finished with value: -93.42906564008038 and parameters: {'embedding_dim': 453, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 21 with value: -93.42906564008038. +[I 2025-12-17 23:46:34,998] Trial 22 finished with value: -447.3929487456783 and parameters: {'embedding_dim': 463, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 21 with value: -93.42906564008038. +[I 2025-12-17 23:46:54,090] Trial 23 finished with value: -270.56195698658416 and parameters: {'embedding_dim': 130, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 21 with value: -93.42906564008038. +[I 2025-12-17 23:47:14,686] Trial 24 finished with value: -408.00085891276774 and parameters: {'embedding_dim': 452, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 21 with value: -93.42906564008038. +[I 2025-12-17 23:47:37,682] Trial 25 finished with value: -418.1775417499736 and parameters: {'embedding_dim': 397, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 21 with value: -93.42906564008038. +[I 2025-12-17 23:47:54,594] Trial 26 finished with value: -874.0793273480747 and parameters: {'embedding_dim': 480, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 21 with value: -93.42906564008038. +[I 2025-12-17 23:48:13,800] Trial 27 finished with value: -487.77455953975306 and parameters: {'embedding_dim': 343, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 21 with value: -93.42906564008038. +[I 2025-12-17 23:48:39,954] Trial 28 finished with value: -189.0432981302802 and parameters: {'embedding_dim': 511, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 21 with value: -93.42906564008038. +[I 2025-12-17 23:48:57,393] Trial 29 finished with value: -230.82290315625784 and parameters: {'embedding_dim': 431, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 21 with value: -93.42906564008038. +[I 2025-12-17 23:49:19,006] A new study created in memory with name: no-name-d32b4c3f-c20f-48c3-8f36-dd493fa2b907 +[I 2025-12-17 23:49:22,782] Trial 0 finished with value: -33.6089444063855 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -33.6089444063855. +[I 2025-12-17 23:49:29,317] Trial 1 finished with value: -26.167599457706434 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -26.167599457706434. +[I 2025-12-17 23:49:34,804] Trial 2 finished with value: -20.218601453148473 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -20.218601453148473. +[I 2025-12-17 23:49:42,157] Trial 3 finished with value: -148.5891575168304 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -20.218601453148473. +[I 2025-12-17 23:49:46,522] Trial 4 finished with value: -11.9030830304244 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:49:51,498] Trial 5 finished with value: -114.72372625560705 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:49:58,171] Trial 6 finished with value: -33.74899233403135 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:50:03,318] Trial 7 finished with value: -119.80207755300614 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:50:06,884] Trial 8 finished with value: -256.37582428046863 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:50:10,305] Trial 9 finished with value: -34.67928375729797 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:50:13,656] Trial 10 finished with value: -101.54891106618074 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:50:20,815] Trial 11 finished with value: -184.4717214261836 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:50:25,849] Trial 12 finished with value: -89.75932965594048 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:50:33,416] Trial 13 finished with value: -32.46105785490658 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:50:38,694] Trial 14 finished with value: -12.25709191886507 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:50:42,116] Trial 15 finished with value: -57.20843759505806 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:50:49,713] Trial 16 finished with value: -14.372934182247286 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:50:56,606] Trial 17 finished with value: -14.604505320072104 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:51:00,206] Trial 18 finished with value: -58.65057830457546 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:51:05,202] Trial 19 finished with value: -70.81773191400124 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:51:12,198] Trial 20 finished with value: -101.06482703321079 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:51:21,247] Trial 21 finished with value: -30.47879858416917 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:51:28,253] Trial 22 finished with value: -58.703394679902246 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:51:35,317] Trial 23 finished with value: -55.27734593054603 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -11.9030830304244. +[I 2025-12-17 23:51:40,666] Trial 24 finished with value: -7.898449281789813 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:51:47,717] Trial 25 finished with value: -62.550489530141846 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:51:53,049] Trial 26 finished with value: -67.47972326472622 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:51:58,064] Trial 27 finished with value: -41.218053146233544 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:52:01,489] Trial 28 finished with value: -527.722178747544 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:52:04,799] Trial 29 finished with value: -539.9345505471055 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:52:09,959] Trial 30 finished with value: -75.51551142494661 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:52:16,854] Trial 31 finished with value: -59.190637376133054 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:52:22,582] Trial 32 finished with value: -96.14054248114635 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:52:30,816] Trial 33 finished with value: -42.353261744083675 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:52:36,012] Trial 34 finished with value: -89.95617195343955 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:52:39,326] Trial 35 finished with value: -112.54743257617012 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:52:44,885] Trial 36 finished with value: -71.78544603331059 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:52:50,051] Trial 37 finished with value: -150.85292437494255 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:52:55,022] Trial 38 finished with value: -19.663989674724785 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:53:04,361] Trial 39 finished with value: -238.65736722879663 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:53:08,071] Trial 40 finished with value: -17.278241469130904 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:53:13,240] Trial 41 finished with value: -33.477531034468015 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:53:18,354] Trial 42 finished with value: -159.90401134183082 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:53:23,522] Trial 43 finished with value: -34.37920057979933 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:53:28,695] Trial 44 finished with value: -59.2120235959125 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:53:32,100] Trial 45 finished with value: -115.29873187352047 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:53:37,104] Trial 46 finished with value: -84.04008984188707 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:53:42,693] Trial 47 finished with value: -107.74934652860505 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:53:51,087] Trial 48 finished with value: -46.48003667142175 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:53:56,022] Trial 49 finished with value: -161.11957976596437 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -7.898449281789813. +[I 2025-12-17 23:54:02,044] A new study created in memory with name: no-name-2297916b-e085-4291-8493-dad6cc5ab58b +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_3_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_3_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_3_daegu.csv: Class 0=8868 | Class 1=9275 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_3_daegu.csv: Class 0=8868 | Class 1=9275 | Class 2=16913 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-17 23:54:23,351] Trial 0 finished with value: -588.1569418328693 and parameters: {'embedding_dim': 392, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -588.1569418328693. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-17 23:54:47,208] Trial 1 finished with value: -3088.2426162734505 and parameters: {'embedding_dim': 144, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -588.1569418328693. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-17 23:55:09,811] Trial 2 finished with value: -5152.508400612565 and parameters: {'embedding_dim': 178, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -588.1569418328693. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-17 23:55:30,416] Trial 3 finished with value: -458.0122704231919 and parameters: {'embedding_dim': 287, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -458.0122704231919. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-17 23:56:08,083] Trial 4 finished with value: -132.32149710605532 and parameters: {'embedding_dim': 137, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 4 with value: -132.32149710605532. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-17 23:56:55,859] Trial 5 finished with value: -756.5147855758802 and parameters: {'embedding_dim': 306, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -132.32149710605532. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-17 23:57:07,538] Trial 6 finished with value: -545.0067051833599 and parameters: {'embedding_dim': 177, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -132.32149710605532. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-17 23:57:16,513] Trial 7 finished with value: -668.4376625124135 and parameters: {'embedding_dim': 500, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 4 with value: -132.32149710605532. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-17 23:57:30,745] Trial 8 finished with value: -432.73162538543005 and parameters: {'embedding_dim': 352, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 4 with value: -132.32149710605532. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-17 23:58:15,448] Trial 9 finished with value: -3237.0060538904827 and parameters: {'embedding_dim': 294, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 4 with value: -132.32149710605532. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-17 23:59:13,374] Trial 10 finished with value: -103.66311694826244 and parameters: {'embedding_dim': 227, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -103.66311694826244. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:00:10,990] Trial 11 finished with value: -202.02105662162086 and parameters: {'embedding_dim': 227, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -103.66311694826244. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:01:09,677] Trial 12 finished with value: -271.12107472218645 and parameters: {'embedding_dim': 231, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -103.66311694826244. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:02:07,918] Trial 13 finished with value: -779.9421757065929 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -103.66311694826244. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:02:49,613] Trial 14 finished with value: -504.1139105394466 and parameters: {'embedding_dim': 222, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 10 with value: -103.66311694826244. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:03:53,643] Trial 15 finished with value: -694.6962245547178 and parameters: {'embedding_dim': 193, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -103.66311694826244. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:04:34,885] Trial 16 finished with value: -445.7191529570693 and parameters: {'embedding_dim': 246, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 10 with value: -103.66311694826244. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:05:47,253] Trial 17 finished with value: -996.7815579243434 and parameters: {'embedding_dim': 402, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 10 with value: -103.66311694826244. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:06:22,833] Trial 18 finished with value: -165.07203881826368 and parameters: {'embedding_dim': 161, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -103.66311694826244. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:07:08,583] Trial 19 finished with value: -46.8616102267589 and parameters: {'embedding_dim': 273, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -46.8616102267589. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:07:32,338] Trial 20 finished with value: -821.7228815687399 and parameters: {'embedding_dim': 265, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -46.8616102267589. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:08:18,785] Trial 21 finished with value: -281.7871594167929 and parameters: {'embedding_dim': 204, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -46.8616102267589. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:09:04,992] Trial 22 finished with value: -95.08700030547638 and parameters: {'embedding_dim': 358, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -46.8616102267589. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:09:39,697] Trial 23 finished with value: -627.8326831572796 and parameters: {'embedding_dim': 346, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 19 with value: -46.8616102267589. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:10:25,870] Trial 24 finished with value: -64.09347838743875 and parameters: {'embedding_dim': 449, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -46.8616102267589. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:11:12,144] Trial 25 finished with value: -604.1033890197558 and parameters: {'embedding_dim': 482, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -46.8616102267589. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:11:47,326] Trial 26 finished with value: -1442.1252317301014 and parameters: {'embedding_dim': 417, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 19 with value: -46.8616102267589. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:12:33,922] Trial 27 finished with value: -79.54400411182868 and parameters: {'embedding_dim': 456, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -46.8616102267589. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:13:20,541] Trial 28 finished with value: -207.64161135200214 and parameters: {'embedding_dim': 454, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -46.8616102267589. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:14:03,602] Trial 29 finished with value: -963.8947680269393 and parameters: {'embedding_dim': 454, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 19 with value: -46.8616102267589. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:15:04,975] A new study created in memory with name: no-name-cc6c2f65-9928-4280-8292-86c41945377c +[I 2025-12-18 00:15:09,862] Trial 0 finished with value: -120.13252519371541 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -120.13252519371541. +[I 2025-12-18 00:15:14,999] Trial 1 finished with value: -387.51443489373196 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -120.13252519371541. +[I 2025-12-18 00:15:21,126] Trial 2 finished with value: -122.26695432559697 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -120.13252519371541. +[I 2025-12-18 00:15:25,564] Trial 3 finished with value: -98.78517546999265 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -98.78517546999265. +[I 2025-12-18 00:15:32,611] Trial 4 finished with value: -81.3082233468624 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -81.3082233468624. +[I 2025-12-18 00:15:38,140] Trial 5 finished with value: -114.75996855209708 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -81.3082233468624. +[I 2025-12-18 00:15:46,454] Trial 6 finished with value: -154.63048142796214 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -81.3082233468624. +[I 2025-12-18 00:15:49,987] Trial 7 finished with value: -367.1772413163528 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -81.3082233468624. +[I 2025-12-18 00:15:57,311] Trial 8 finished with value: -49.492474787028925 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -49.492474787028925. +[I 2025-12-18 00:16:03,479] Trial 9 finished with value: -64.19141549479195 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -49.492474787028925. +[I 2025-12-18 00:16:10,792] Trial 10 finished with value: -46.45158285961176 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -46.45158285961176. +[I 2025-12-18 00:16:18,140] Trial 11 finished with value: -40.10716740415553 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -40.10716740415553. +[I 2025-12-18 00:16:25,424] Trial 12 finished with value: -40.373215684526166 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -40.10716740415553. +[I 2025-12-18 00:16:34,185] Trial 13 finished with value: -2.4022131036681262 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:16:43,002] Trial 14 finished with value: -72.39606522835777 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:16:49,486] Trial 15 finished with value: -3.525339500428452 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:16:56,089] Trial 16 finished with value: -234.93027110460707 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:16:59,338] Trial 17 finished with value: -97.69231653863226 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:17:04,275] Trial 18 finished with value: -22.696919157297273 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:17:11,042] Trial 19 finished with value: -47.56813858155212 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:17:19,196] Trial 20 finished with value: -55.17308670073707 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:17:24,159] Trial 21 finished with value: -59.7100805924995 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:17:29,107] Trial 22 finished with value: -82.45763927864064 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:17:35,092] Trial 23 finished with value: -27.7656390461443 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:17:40,134] Trial 24 finished with value: -69.47224746960725 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:17:43,495] Trial 25 finished with value: -47.7584530060154 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:17:51,402] Trial 26 finished with value: -121.9006857928344 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:17:56,314] Trial 27 finished with value: -6.144385493378417 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:18:03,124] Trial 28 finished with value: -134.2889260059179 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:18:08,056] Trial 29 finished with value: -4.1246551105223315 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:18:15,675] Trial 30 finished with value: -39.94848362088213 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:18:22,400] Trial 31 finished with value: -53.60487440077577 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:18:27,353] Trial 32 finished with value: -73.84758797020271 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:18:32,359] Trial 33 finished with value: -114.52750173478 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:18:37,487] Trial 34 finished with value: -86.48404510041809 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:18:44,739] Trial 35 finished with value: -12.064478188904776 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:18:48,240] Trial 36 finished with value: -139.20471154626716 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:18:53,186] Trial 37 finished with value: -97.16033571660438 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:18:59,391] Trial 38 finished with value: -149.37988974780876 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:19:02,684] Trial 39 finished with value: -77.62806757543805 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:19:08,651] Trial 40 finished with value: -28.418882135131984 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:19:15,487] Trial 41 finished with value: -84.04760410341709 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:19:20,748] Trial 42 finished with value: -80.93047508123331 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:19:25,857] Trial 43 finished with value: -99.50297296613783 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:19:32,608] Trial 44 finished with value: -106.89987990618442 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:19:39,452] Trial 45 finished with value: -278.09231130408654 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:19:46,923] Trial 46 finished with value: -72.70258675468477 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:19:52,007] Trial 47 finished with value: -26.7730921978807 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:19:59,297] Trial 48 finished with value: -398.0867341081083 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:20:05,265] Trial 49 finished with value: -30.353738899722067 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -2.4022131036681262. +[I 2025-12-18 00:20:14,550] A new study created in memory with name: no-name-a0a26834-7872-43ca-b90a-1d831d30283c +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_3_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_3_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_3_daejeon.csv: Class 0=8841 | Class 1=9748 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_3_daejeon.csv: Class 0=8841 | Class 1=9748 | Class 2=15784 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:20:38,682] Trial 0 finished with value: -672.5185634499633 and parameters: {'embedding_dim': 160, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -672.5185634499633. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:20:54,795] Trial 1 finished with value: -243.5598097878859 and parameters: {'embedding_dim': 234, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 1 with value: -243.5598097878859. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:21:11,312] Trial 2 finished with value: -2872.5015734586505 and parameters: {'embedding_dim': 398, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 1 with value: -243.5598097878859. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:21:54,184] Trial 3 finished with value: -584.992187177288 and parameters: {'embedding_dim': 191, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -243.5598097878859. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:22:46,769] Trial 4 finished with value: -531.6715536725928 and parameters: {'embedding_dim': 384, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -243.5598097878859. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:23:01,047] Trial 5 finished with value: -195.0168372979536 and parameters: {'embedding_dim': 182, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:24:02,329] Trial 6 finished with value: -388.9017631102636 and parameters: {'embedding_dim': 465, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:25:13,002] Trial 7 finished with value: -1552.882683457334 and parameters: {'embedding_dim': 430, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:25:58,162] Trial 8 finished with value: -196.07067485957825 and parameters: {'embedding_dim': 420, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:26:47,196] Trial 9 finished with value: -1368.6376444136472 and parameters: {'embedding_dim': 449, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:26:58,687] Trial 10 finished with value: -2350.7327904076255 and parameters: {'embedding_dim': 268, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:27:09,723] Trial 11 finished with value: -1338.8940216320204 and parameters: {'embedding_dim': 315, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:27:26,114] Trial 12 finished with value: -2157.6373499181514 and parameters: {'embedding_dim': 331, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:27:38,549] Trial 13 finished with value: -2357.9819731238076 and parameters: {'embedding_dim': 492, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:27:50,145] Trial 14 finished with value: -2147.0206565221597 and parameters: {'embedding_dim': 129, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:28:15,070] Trial 15 finished with value: -612.002042961095 and parameters: {'embedding_dim': 341, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:28:23,123] Trial 16 finished with value: -1819.8861133784953 and parameters: {'embedding_dim': 261, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:28:51,836] Trial 17 finished with value: -3605.3454000531315 and parameters: {'embedding_dim': 510, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:29:05,312] Trial 18 finished with value: -511.0256352421825 and parameters: {'embedding_dim': 381, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:29:30,530] Trial 19 finished with value: -848.9688322820289 and parameters: {'embedding_dim': 209, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:29:42,316] Trial 20 finished with value: -2357.8787891032 and parameters: {'embedding_dim': 293, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:29:56,153] Trial 21 finished with value: -290.0442307289686 and parameters: {'embedding_dim': 224, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:30:09,871] Trial 22 finished with value: -406.5644132994663 and parameters: {'embedding_dim': 241, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:30:23,106] Trial 23 finished with value: -333.0538947851311 and parameters: {'embedding_dim': 167, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:30:39,350] Trial 24 finished with value: -272.38494916230354 and parameters: {'embedding_dim': 182, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:31:09,123] Trial 25 finished with value: -1208.0512589939149 and parameters: {'embedding_dim': 287, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:31:23,204] Trial 26 finished with value: -253.04472960217794 and parameters: {'embedding_dim': 149, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:31:37,164] Trial 27 finished with value: -920.9400466773875 and parameters: {'embedding_dim': 219, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:31:48,460] Trial 28 finished with value: -1522.314688506303 and parameters: {'embedding_dim': 348, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +[I 2025-12-18 00:32:18,394] Trial 29 finished with value: -2578.511417516971 and parameters: {'embedding_dim': 246, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -195.0168372979536. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:380: InconsistentVersionWarning: Trying to unpickle estimator BayesianGaussianMixture from version 1.3.0 when using version 1.6.1. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to: +https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations + warnings.warn( +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_10000_3_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_10000_3_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan10000_3_gwangju.csv: Class 0=8327 | Class 1=9255 +Saved ../../data/data_oversampled/ctgan10000/ctgan10000_3_gwangju.csv: Class 0=8327 | Class 1=9255 | Class 2=16144 + +=== Processing 20000 samples === +Running ctgan_sample_20000_1.py... +[I 2025-12-18 00:32:39,178] A new study created in memory with name: no-name-67cb4696-af53-4a40-a12a-880a7d814d51 +[I 2025-12-18 00:33:27,481] Trial 0 finished with value: -16.04973187567166 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -16.04973187567166. +[I 2025-12-18 00:33:38,861] Trial 1 finished with value: -55.00962030296798 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -16.04973187567166. +[I 2025-12-18 00:34:10,959] Trial 2 finished with value: -19.71493441999562 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -16.04973187567166. +[I 2025-12-18 00:34:33,882] Trial 3 finished with value: -3.3447741112988827 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -3.3447741112988827. +[I 2025-12-18 00:34:37,743] Trial 4 finished with value: -360.77624516634665 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -3.3447741112988827. +[I 2025-12-18 00:34:41,633] Trial 5 finished with value: -31.44717959249561 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -3.3447741112988827. +[I 2025-12-18 00:35:04,817] Trial 6 finished with value: -53.21177413068011 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -3.3447741112988827. +[I 2025-12-18 00:35:10,577] Trial 7 finished with value: -77.34954905841015 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -3.3447741112988827. +[I 2025-12-18 00:35:17,160] Trial 8 finished with value: -15.459290235756267 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -3.3447741112988827. +[I 2025-12-18 00:35:23,755] Trial 9 finished with value: -9.724091011666493 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -3.3447741112988827. +[I 2025-12-18 00:35:55,024] Trial 10 finished with value: -73.60480241836815 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -3.3447741112988827. +[I 2025-12-18 00:36:01,574] Trial 11 finished with value: -82.75325302267883 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -3.3447741112988827. +[I 2025-12-18 00:36:11,475] Trial 12 finished with value: -1.545320811832459 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 12 with value: -1.545320811832459. +[I 2025-12-18 00:36:34,544] Trial 13 finished with value: -2.7734370813212132 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 12 with value: -1.545320811832459. +[I 2025-12-18 00:36:44,561] Trial 14 finished with value: -5.48997342246492 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 12 with value: -1.545320811832459. +[I 2025-12-18 00:37:07,533] Trial 15 finished with value: -1.0200922953932452 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:37:20,992] Trial 16 finished with value: -26.09185198286791 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:37:30,967] Trial 17 finished with value: -1.179209883980152 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:37:54,031] Trial 18 finished with value: -17.41269773176272 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:38:01,675] Trial 19 finished with value: -144.5287258278244 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:38:11,724] Trial 20 finished with value: -4.7350679362727925 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:38:21,781] Trial 21 finished with value: -38.474833923941276 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:38:31,829] Trial 22 finished with value: -7.629129305590763 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:38:41,870] Trial 23 finished with value: -81.19847781826584 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:38:51,850] Trial 24 finished with value: -4.8799122674617035 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:39:15,076] Trial 25 finished with value: -4.7864957799096075 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:39:21,785] Trial 26 finished with value: -384.51006833686307 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:39:35,260] Trial 27 finished with value: -44.98940459417737 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:39:41,040] Trial 28 finished with value: -98.09516233870836 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:40:12,209] Trial 29 finished with value: -44.0712684419302 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:40:35,140] Trial 30 finished with value: -3.4498591503572387 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:40:58,138] Trial 31 finished with value: -35.156677657788684 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:41:21,106] Trial 32 finished with value: -26.0700468374819 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -1.0200922953932452. +[I 2025-12-18 00:41:44,343] Trial 33 finished with value: -0.90335859497911 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:42:07,276] Trial 34 finished with value: -10.979019504387432 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:42:30,265] Trial 35 finished with value: -62.41620227408331 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:42:53,285] Trial 36 finished with value: -29.005304669036256 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:42:59,924] Trial 37 finished with value: -37.86363352682385 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:43:05,657] Trial 38 finished with value: -12.457400556425819 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:43:36,605] Trial 39 finished with value: -4.087292854861162 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:43:46,654] Trial 40 finished with value: -16.11033777155839 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:44:09,516] Trial 41 finished with value: -15.127443827264877 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:44:32,572] Trial 42 finished with value: -3.525529890262418 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:44:55,491] Trial 43 finished with value: -4.832380984892366 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:45:18,725] Trial 44 finished with value: -95.30547820746297 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:45:41,602] Trial 45 finished with value: -40.068311151262805 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:45:56,462] Trial 46 finished with value: -15.77087772627107 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:46:02,331] Trial 47 finished with value: -3.2360107585934283 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:46:12,560] Trial 48 finished with value: -18.479736554540047 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:46:37,585] Trial 49 finished with value: -19.967572452729243 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.90335859497911. +[I 2025-12-18 00:47:02,911] A new study created in memory with name: no-name-78573764-674f-4d92-92dc-1613c89b36f5 +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-18 00:47:58,848] Trial 0 finished with value: -1223.608198715569 and parameters: {'embedding_dim': 353, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -1223.608198715569. +[I 2025-12-18 00:48:42,889] Trial 1 finished with value: -754.4231725263207 and parameters: {'embedding_dim': 265, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -754.4231725263207. +[I 2025-12-18 00:49:44,735] Trial 2 finished with value: -1850.67544099325 and parameters: {'embedding_dim': 460, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -754.4231725263207. +[I 2025-12-18 00:50:00,192] Trial 3 finished with value: -150.04947192833012 and parameters: {'embedding_dim': 369, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 3 with value: -150.04947192833012. +[I 2025-12-18 00:50:26,306] Trial 4 finished with value: -438.92372696961155 and parameters: {'embedding_dim': 469, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -150.04947192833012. +[I 2025-12-18 00:51:03,789] Trial 5 finished with value: -1910.7038243281902 and parameters: {'embedding_dim': 458, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 3 with value: -150.04947192833012. +[I 2025-12-18 00:51:42,354] Trial 6 finished with value: -86.26678756853903 and parameters: {'embedding_dim': 384, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 00:53:00,126] Trial 7 finished with value: -930.603027251188 and parameters: {'embedding_dim': 365, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 00:54:19,168] Trial 8 finished with value: -640.1003237042445 and parameters: {'embedding_dim': 136, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 00:55:31,072] Trial 9 finished with value: -320.29738505970784 and parameters: {'embedding_dim': 349, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 00:57:34,130] Trial 10 finished with value: -446.70903194456304 and parameters: {'embedding_dim': 250, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 00:57:48,763] Trial 11 finished with value: -340.1797513783028 and parameters: {'embedding_dim': 400, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 00:58:03,456] Trial 12 finished with value: -168.58941718601974 and parameters: {'embedding_dim': 280, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 00:58:17,147] Trial 13 finished with value: -556.5038847847117 and parameters: {'embedding_dim': 406, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 00:58:38,298] Trial 14 finished with value: -593.7001089639056 and parameters: {'embedding_dim': 303, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 00:59:13,815] Trial 15 finished with value: -296.762241640474 and parameters: {'embedding_dim': 211, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 00:59:45,487] Trial 16 finished with value: -714.7424667946418 and parameters: {'embedding_dim': 415, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 01:00:00,703] Trial 17 finished with value: -5692.911619674815 and parameters: {'embedding_dim': 495, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 01:00:35,080] Trial 18 finished with value: -243.6395916002943 and parameters: {'embedding_dim': 327, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 01:01:12,356] Trial 19 finished with value: -272.0478519105804 and parameters: {'embedding_dim': 388, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 01:01:43,575] Trial 20 finished with value: -97.52661816807989 and parameters: {'embedding_dim': 226, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 01:02:16,028] Trial 21 finished with value: -114.88155609280065 and parameters: {'embedding_dim': 192, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 01:02:46,678] Trial 22 finished with value: -439.2936167515464 and parameters: {'embedding_dim': 184, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 01:03:17,892] Trial 23 finished with value: -358.63484448653344 and parameters: {'embedding_dim': 212, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 01:03:48,684] Trial 24 finished with value: -934.1677977826392 and parameters: {'embedding_dim': 144, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 01:04:55,750] Trial 25 finished with value: -301.8754836064153 and parameters: {'embedding_dim': 167, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 01:05:26,867] Trial 26 finished with value: -275.23861863598563 and parameters: {'embedding_dim': 232, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 01:05:58,297] Trial 27 finished with value: -895.8364099719965 and parameters: {'embedding_dim': 304, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -86.26678756853903. +[I 2025-12-18 01:07:52,460] Trial 28 finished with value: -21.659390118734404 and parameters: {'embedding_dim': 185, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 28 with value: -21.659390118734404. +[I 2025-12-18 01:09:46,355] Trial 29 finished with value: -148.36458138161206 and parameters: {'embedding_dim': 237, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 28 with value: -21.659390118734404. +[I 2025-12-18 01:11:40,608] A new study created in memory with name: no-name-ea155fdb-76b6-4fe7-b2be-4516d0ef34a8 +[I 2025-12-18 01:11:47,777] Trial 0 finished with value: -41.44825364562757 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -41.44825364562757. +[I 2025-12-18 01:11:52,800] Trial 1 finished with value: -19.094430591286 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -19.094430591286. +[I 2025-12-18 01:11:57,621] Trial 2 finished with value: -83.86170961780124 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -19.094430591286. +[I 2025-12-18 01:12:02,920] Trial 3 finished with value: -20.911283759597616 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -19.094430591286. +[I 2025-12-18 01:12:07,977] Trial 4 finished with value: -495.81217383450354 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -19.094430591286. +[I 2025-12-18 01:12:15,172] Trial 5 finished with value: -177.62914893608544 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -19.094430591286. +[I 2025-12-18 01:12:20,196] Trial 6 finished with value: -89.46251982122742 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -19.094430591286. +[I 2025-12-18 01:12:27,379] Trial 7 finished with value: -21.879721353381562 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -19.094430591286. +[I 2025-12-18 01:12:34,137] Trial 8 finished with value: -37.26352448880323 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -19.094430591286. +[I 2025-12-18 01:12:37,332] Trial 9 finished with value: -0.12392635602418588 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:12:40,457] Trial 10 finished with value: -104.60324631335507 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:12:43,602] Trial 11 finished with value: -14.160461658044685 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:12:46,766] Trial 12 finished with value: -43.26071891321595 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:12:49,858] Trial 13 finished with value: -174.76858029836336 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:12:52,983] Trial 14 finished with value: -97.18485612163494 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:12:56,120] Trial 15 finished with value: -140.7514798722637 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:12:59,313] Trial 16 finished with value: -165.32409060818654 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:02,506] Trial 17 finished with value: -49.81023800717393 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:05,669] Trial 18 finished with value: -45.4184613724868 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:08,820] Trial 19 finished with value: -9.246322923833473 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:13,595] Trial 20 finished with value: -230.76732083507352 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:16,778] Trial 21 finished with value: -190.4735419233017 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:20,006] Trial 22 finished with value: -69.81773204495398 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:23,177] Trial 23 finished with value: -198.5757688554846 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:26,327] Trial 24 finished with value: -14.447825876753779 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:31,153] Trial 25 finished with value: -46.47684942279756 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:34,349] Trial 26 finished with value: -6.079217000209342 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:37,485] Trial 27 finished with value: -230.88666191658965 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:42,526] Trial 28 finished with value: -61.41146378118251 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:45,927] Trial 29 finished with value: -75.90426002913667 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:49,423] Trial 30 finished with value: -121.42389012999791 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:52,559] Trial 31 finished with value: -186.47926321558796 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:55,699] Trial 32 finished with value: -11.431815096621945 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:13:58,875] Trial 33 finished with value: -61.76455151041607 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:14:03,643] Trial 34 finished with value: -21.781368244368966 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:14:08,469] Trial 35 finished with value: -78.7312851431313 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:14:11,720] Trial 36 finished with value: -21.617130662256223 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:14:16,550] Trial 37 finished with value: -41.883728569672044 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:14:19,958] Trial 38 finished with value: -118.22509923597312 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:14:24,968] Trial 39 finished with value: -4.232912106420719 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:14:31,852] Trial 40 finished with value: -162.51880322529053 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:14:36,814] Trial 41 finished with value: -5.520797093920365 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:14:41,776] Trial 42 finished with value: -27.56064682763519 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:14:46,768] Trial 43 finished with value: -26.36197662585942 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:14:53,934] Trial 44 finished with value: -41.55924364721399 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:14:59,098] Trial 45 finished with value: -70.78938962773054 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:15:04,119] Trial 46 finished with value: -8.756748013101966 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:15:09,205] Trial 47 finished with value: -4.562230715649783 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:15:14,315] Trial 48 finished with value: -9.864265479231516 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:15:19,393] Trial 49 finished with value: -172.11406471201812 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -0.12392635602418588. +[I 2025-12-18 01:15:23,249] A new study created in memory with name: no-name-5956d37c-4a48-4b17-9ca1-32ab68ddb728 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_1_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_1_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_1_incheon.csv: Class 0=17968 | Class 1=19334 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_1_incheon.csv: Class 0=17968 | Class 1=19334 | Class 2=14554 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-18 01:16:19,218] Trial 0 finished with value: -485.76516526959546 and parameters: {'embedding_dim': 314, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -485.76516526959546. +[I 2025-12-18 01:17:00,995] Trial 1 finished with value: -709.386676407724 and parameters: {'embedding_dim': 440, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -485.76516526959546. +[I 2025-12-18 01:17:35,544] Trial 2 finished with value: -1590.450053266527 and parameters: {'embedding_dim': 481, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -485.76516526959546. +[I 2025-12-18 01:17:55,726] Trial 3 finished with value: -372.0597117181526 and parameters: {'embedding_dim': 297, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -372.0597117181526. +[I 2025-12-18 01:18:09,713] Trial 4 finished with value: -1821.896500573846 and parameters: {'embedding_dim': 380, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -372.0597117181526. +[I 2025-12-18 01:18:51,363] Trial 5 finished with value: -2596.714728192546 and parameters: {'embedding_dim': 457, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -372.0597117181526. +[I 2025-12-18 01:19:18,986] Trial 6 finished with value: -575.5838171430483 and parameters: {'embedding_dim': 242, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -372.0597117181526. +[I 2025-12-18 01:20:00,977] Trial 7 finished with value: -116.90630838258865 and parameters: {'embedding_dim': 290, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:20:21,182] Trial 8 finished with value: -792.0915987497298 and parameters: {'embedding_dim': 501, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:20:46,316] Trial 9 finished with value: -489.8344541955079 and parameters: {'embedding_dim': 281, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:21:14,661] Trial 10 finished with value: -311.91540381317714 and parameters: {'embedding_dim': 159, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:21:43,381] Trial 11 finished with value: -852.0917411673609 and parameters: {'embedding_dim': 138, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:22:24,758] Trial 12 finished with value: -523.7325537386223 and parameters: {'embedding_dim': 168, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:22:55,031] Trial 13 finished with value: -285.8909667960125 and parameters: {'embedding_dim': 200, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:23:36,752] Trial 14 finished with value: -863.5608995721132 and parameters: {'embedding_dim': 228, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:24:04,464] Trial 15 finished with value: -931.6908498975054 and parameters: {'embedding_dim': 381, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:24:46,342] Trial 16 finished with value: -2325.0746725623976 and parameters: {'embedding_dim': 212, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:25:14,411] Trial 17 finished with value: -472.3982001561292 and parameters: {'embedding_dim': 258, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:25:46,048] Trial 18 finished with value: -1519.621868310024 and parameters: {'embedding_dim': 360, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:25:57,892] Trial 19 finished with value: -1313.838802019148 and parameters: {'embedding_dim': 190, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:27:11,488] Trial 20 finished with value: -316.95816550550666 and parameters: {'embedding_dim': 342, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:27:38,565] Trial 21 finished with value: -1875.9665087021242 and parameters: {'embedding_dim': 133, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:28:06,527] Trial 22 finished with value: -412.04927779432074 and parameters: {'embedding_dim': 174, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:28:33,269] Trial 23 finished with value: -403.03204400985453 and parameters: {'embedding_dim': 202, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:29:15,140] Trial 24 finished with value: -1120.6223395561087 and parameters: {'embedding_dim': 270, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:29:44,670] Trial 25 finished with value: -1148.3730540094155 and parameters: {'embedding_dim': 159, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:30:28,016] Trial 26 finished with value: -406.14694624088514 and parameters: {'embedding_dim': 225, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:30:56,163] Trial 27 finished with value: -2688.2834682247885 and parameters: {'embedding_dim': 189, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:31:07,631] Trial 28 finished with value: -596.2925310746631 and parameters: {'embedding_dim': 244, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:31:40,391] Trial 29 finished with value: -304.6901640699231 and parameters: {'embedding_dim': 299, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 7 with value: -116.90630838258865. +[I 2025-12-18 01:32:22,900] A new study created in memory with name: no-name-683255d4-9ccb-4b69-9245-fd3e5d2b86f0 +[I 2025-12-18 01:32:30,229] Trial 0 finished with value: -30.8357229353442 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -30.8357229353442. +[I 2025-12-18 01:32:35,444] Trial 1 finished with value: -23.338746610062685 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -23.338746610062685. +[I 2025-12-18 01:32:44,934] Trial 2 finished with value: -39.308004435657885 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -23.338746610062685. +[I 2025-12-18 01:32:51,984] Trial 3 finished with value: -8.55624676580022 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -8.55624676580022. +[I 2025-12-18 01:32:59,209] Trial 4 finished with value: -8.404637473023808 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:33:04,060] Trial 5 finished with value: -100.19837425150844 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:33:07,275] Trial 6 finished with value: -50.63724534618492 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:33:10,746] Trial 7 finished with value: -56.849139566942824 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:33:17,329] Trial 8 finished with value: -12.47688333054607 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:33:24,065] Trial 9 finished with value: -39.065666770009855 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:33:31,240] Trial 10 finished with value: -19.980361306008014 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:33:36,283] Trial 11 finished with value: -97.29896797841118 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:33:41,642] Trial 12 finished with value: -31.059001303859013 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:33:44,971] Trial 13 finished with value: -312.57217528155905 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:33:50,370] Trial 14 finished with value: -96.30778934681487 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:33:55,399] Trial 15 finished with value: -14.488047129355554 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:34:02,588] Trial 16 finished with value: -8.839814511924452 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:34:05,909] Trial 17 finished with value: -63.36874828815103 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:34:11,220] Trial 18 finished with value: -44.79614048363431 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:34:17,965] Trial 19 finished with value: -184.41738703235686 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:34:23,296] Trial 20 finished with value: -52.246317094767484 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -8.404637473023808. +[I 2025-12-18 01:34:30,505] Trial 21 finished with value: -6.72401871543139 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:34:37,793] Trial 22 finished with value: -41.73663645357519 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:34:44,975] Trial 23 finished with value: -41.99143010217669 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:34:50,333] Trial 24 finished with value: -87.55051139370454 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:34:57,059] Trial 25 finished with value: -71.62635284872746 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:35:04,210] Trial 26 finished with value: -39.23409721058641 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:35:09,564] Trial 27 finished with value: -60.80454321093471 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:35:16,091] Trial 28 finished with value: -303.19667169112677 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:35:22,830] Trial 29 finished with value: -36.468681317469674 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:35:28,265] Trial 30 finished with value: -49.893487578113046 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:35:35,469] Trial 31 finished with value: -18.91929025770583 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:35:42,722] Trial 32 finished with value: -27.577821587396315 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:35:49,933] Trial 33 finished with value: -31.42174920893205 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:35:57,147] Trial 34 finished with value: -17.00473703842808 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:36:02,029] Trial 35 finished with value: -56.71488383788095 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:36:09,226] Trial 36 finished with value: -35.62023715689182 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:36:15,721] Trial 37 finished with value: -83.91266026054372 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:36:19,138] Trial 38 finished with value: -19.464001604942062 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:36:24,510] Trial 39 finished with value: -79.26428214214036 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:36:30,974] Trial 40 finished with value: -34.11088086616175 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:36:37,539] Trial 41 finished with value: -16.554609010725972 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:36:44,111] Trial 42 finished with value: -190.31963427187836 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:36:51,031] Trial 43 finished with value: -26.497216644245455 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:36:57,617] Trial 44 finished with value: -43.84196058482836 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:37:02,665] Trial 45 finished with value: -50.38960223750277 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 21 with value: -6.72401871543139. +[I 2025-12-18 01:37:09,868] Trial 46 finished with value: -5.922993181926361 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 46 with value: -5.922993181926361. +[I 2025-12-18 01:37:17,106] Trial 47 finished with value: -92.86227299285875 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 46 with value: -5.922993181926361. +[I 2025-12-18 01:37:22,449] Trial 48 finished with value: -137.43529434201534 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 46 with value: -5.922993181926361. +[I 2025-12-18 01:37:29,647] Trial 49 finished with value: -72.39712548410989 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 46 with value: -5.922993181926361. +[I 2025-12-18 01:37:37,082] A new study created in memory with name: no-name-381dfa5b-98ab-4fb9-bdd4-5d1a42225167 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_1_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_1_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_1_seoul.csv: Class 0=19250 | Class 1=18642 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_1_seoul.csv: Class 0=19250 | Class 1=18642 | Class 2=15676 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-18 01:38:03,447] Trial 0 finished with value: -1517.04831984882 and parameters: {'embedding_dim': 194, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -1517.04831984882. +[I 2025-12-18 01:38:17,047] Trial 1 finished with value: -121.06016841140479 and parameters: {'embedding_dim': 425, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:38:51,965] Trial 2 finished with value: -1794.9908608916667 and parameters: {'embedding_dim': 408, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:38:58,792] Trial 3 finished with value: -595.2289011855576 and parameters: {'embedding_dim': 195, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:39:22,281] Trial 4 finished with value: -2655.047720640166 and parameters: {'embedding_dim': 331, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:39:39,146] Trial 5 finished with value: -725.1909504122159 and parameters: {'embedding_dim': 450, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:39:54,011] Trial 6 finished with value: -448.22712169983805 and parameters: {'embedding_dim': 305, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:40:03,595] Trial 7 finished with value: -2306.4757730799656 and parameters: {'embedding_dim': 351, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:40:21,484] Trial 8 finished with value: -815.0426789333743 and parameters: {'embedding_dim': 244, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:40:33,514] Trial 9 finished with value: -668.4054104100549 and parameters: {'embedding_dim': 369, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:40:43,266] Trial 10 finished with value: -541.1205596756588 and parameters: {'embedding_dim': 504, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:40:56,687] Trial 11 finished with value: -392.43555435022574 and parameters: {'embedding_dim': 278, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:41:09,839] Trial 12 finished with value: -694.3918102238364 and parameters: {'embedding_dim': 270, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:41:23,694] Trial 13 finished with value: -1110.695930697097 and parameters: {'embedding_dim': 432, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:41:39,902] Trial 14 finished with value: -400.3008589052582 and parameters: {'embedding_dim': 128, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:42:03,899] Trial 15 finished with value: -248.81945499112805 and parameters: {'embedding_dim': 488, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:42:16,205] Trial 16 finished with value: -2604.743468279147 and parameters: {'embedding_dim': 478, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:42:34,478] Trial 17 finished with value: -1232.9321140423042 and parameters: {'embedding_dim': 395, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:42:58,278] Trial 18 finished with value: -331.8791962773195 and parameters: {'embedding_dim': 508, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:43:10,298] Trial 19 finished with value: -6699.788278451096 and parameters: {'embedding_dim': 451, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:43:28,181] Trial 20 finished with value: -916.7028141161608 and parameters: {'embedding_dim': 388, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:43:51,989] Trial 21 finished with value: -1140.374423015991 and parameters: {'embedding_dim': 510, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:44:15,759] Trial 22 finished with value: -1977.215575454219 and parameters: {'embedding_dim': 478, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:44:39,605] Trial 23 finished with value: -823.0960804529618 and parameters: {'embedding_dim': 470, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:45:03,134] Trial 24 finished with value: -641.9004876276275 and parameters: {'embedding_dim': 426, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:45:18,668] Trial 25 finished with value: -3319.6419292529126 and parameters: {'embedding_dim': 511, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:45:37,049] Trial 26 finished with value: -632.0616157730316 and parameters: {'embedding_dim': 466, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:46:00,240] Trial 27 finished with value: -945.0942600958782 and parameters: {'embedding_dim': 427, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:46:13,303] Trial 28 finished with value: -926.7008598593684 and parameters: {'embedding_dim': 489, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:46:37,555] Trial 29 finished with value: -2523.131442973172 and parameters: {'embedding_dim': 446, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -121.06016841140479. +[I 2025-12-18 01:46:50,567] A new study created in memory with name: no-name-6543ce7d-2acb-4fd1-b25d-bc04f7d20277 +[I 2025-12-18 01:46:56,928] Trial 0 finished with value: -96.10592619889773 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -96.10592619889773. +[I 2025-12-18 01:47:01,822] Trial 1 finished with value: -333.7442171741113 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -96.10592619889773. +[I 2025-12-18 01:47:08,182] Trial 2 finished with value: -26.420504415921556 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -26.420504415921556. +[I 2025-12-18 01:47:11,584] Trial 3 finished with value: -64.26821460865497 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -26.420504415921556. +[I 2025-12-18 01:47:14,945] Trial 4 finished with value: -168.63979569444376 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -26.420504415921556. +[I 2025-12-18 01:47:18,086] Trial 5 finished with value: -106.32055099126187 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -26.420504415921556. +[I 2025-12-18 01:47:21,328] Trial 6 finished with value: -191.3581084409031 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -26.420504415921556. +[I 2025-12-18 01:47:24,534] Trial 7 finished with value: -247.5434484239539 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -26.420504415921556. +[I 2025-12-18 01:47:31,644] Trial 8 finished with value: -78.96668756623808 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -26.420504415921556. +[I 2025-12-18 01:47:36,562] Trial 9 finished with value: -93.87837155265171 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -26.420504415921556. +[I 2025-12-18 01:47:42,935] Trial 10 finished with value: -104.79951050922953 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -26.420504415921556. +[I 2025-12-18 01:47:48,149] Trial 11 finished with value: -305.27545033342346 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -26.420504415921556. +[I 2025-12-18 01:47:55,230] Trial 12 finished with value: -205.62322678916462 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -26.420504415921556. +[I 2025-12-18 01:48:00,025] Trial 13 finished with value: -234.19673146712665 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -26.420504415921556. +[I 2025-12-18 01:48:05,265] Trial 14 finished with value: -14.598474053076071 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:48:10,014] Trial 15 finished with value: -100.5384034117003 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:48:17,124] Trial 16 finished with value: -311.64465989499934 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:48:21,879] Trial 17 finished with value: -96.76132918016512 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:48:27,100] Trial 18 finished with value: -60.815566181061016 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:48:33,445] Trial 19 finished with value: -48.22906984287135 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:48:40,502] Trial 20 finished with value: -33.65703655771221 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:48:47,577] Trial 21 finished with value: -65.13963144381663 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:48:54,681] Trial 22 finished with value: -130.27487769532257 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:48:59,899] Trial 23 finished with value: -39.21003455580565 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:49:06,873] Trial 24 finished with value: -63.48931868924925 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:49:13,123] Trial 25 finished with value: -137.60986495950948 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:49:18,427] Trial 26 finished with value: -203.6241975815987 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:49:25,510] Trial 27 finished with value: -63.41957105989806 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:49:30,458] Trial 28 finished with value: -24.498784785019936 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:49:35,411] Trial 29 finished with value: -98.07160997079669 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:49:40,355] Trial 30 finished with value: -126.05071462880953 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:49:45,221] Trial 31 finished with value: -314.1592837064219 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:49:51,891] Trial 32 finished with value: -84.74573861367554 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:49:56,628] Trial 33 finished with value: -114.97790233563343 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:50:01,760] Trial 34 finished with value: -189.48655251033114 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:50:08,178] Trial 35 finished with value: -94.28093129473659 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:50:11,566] Trial 36 finished with value: -474.43038074505444 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:50:16,509] Trial 37 finished with value: -98.3946630722681 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:50:19,889] Trial 38 finished with value: -282.49749762187025 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:50:26,542] Trial 39 finished with value: -169.67032546592344 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:50:29,729] Trial 40 finished with value: -325.90814786870715 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:50:34,953] Trial 41 finished with value: -160.52090274288156 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:50:40,205] Trial 42 finished with value: -49.562506144643734 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:50:45,424] Trial 43 finished with value: -40.01108473873937 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:50:50,729] Trial 44 finished with value: -145.79059313907376 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:50:56,265] Trial 45 finished with value: -114.09041686492606 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:51:01,468] Trial 46 finished with value: -213.92149080432208 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:51:08,117] Trial 47 finished with value: -152.04532122156684 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:51:12,855] Trial 48 finished with value: -113.61160015019217 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:51:18,079] Trial 49 finished with value: -159.20876586638235 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -14.598474053076071. +[I 2025-12-18 01:51:23,578] A new study created in memory with name: no-name-70f66776-7895-4355-bdc4-16b6b02e29e3 +[I 2025-12-18 01:51:28,266] Trial 0 finished with value: -1368.2113066511097 and parameters: {'embedding_dim': 366, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -1368.2113066511097. +[I 2025-12-18 01:51:40,064] Trial 1 finished with value: -406.0599196711299 and parameters: {'embedding_dim': 457, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -406.0599196711299. +[I 2025-12-18 01:52:13,785] Trial 2 finished with value: -104.95603996377517 and parameters: {'embedding_dim': 254, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:52:27,416] Trial 3 finished with value: -356.74101586117587 and parameters: {'embedding_dim': 367, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:52:35,543] Trial 4 finished with value: -544.9291898408301 and parameters: {'embedding_dim': 416, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:53:04,791] Trial 5 finished with value: -2258.0953190623577 and parameters: {'embedding_dim': 234, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:53:23,448] Trial 6 finished with value: -730.4313026937473 and parameters: {'embedding_dim': 217, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:53:36,649] Trial 7 finished with value: -407.0675925319374 and parameters: {'embedding_dim': 129, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:54:06,066] Trial 8 finished with value: -832.7464616060415 and parameters: {'embedding_dim': 282, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:54:24,262] Trial 9 finished with value: -325.76482423217504 and parameters: {'embedding_dim': 474, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:54:57,421] Trial 10 finished with value: -1506.7431466650833 and parameters: {'embedding_dim': 163, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:55:16,898] Trial 11 finished with value: -713.1019272920761 and parameters: {'embedding_dim': 498, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:55:34,767] Trial 12 finished with value: -414.8226321960301 and parameters: {'embedding_dim': 310, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:55:56,964] Trial 13 finished with value: -117.09846870397233 and parameters: {'embedding_dim': 257, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:56:20,873] Trial 14 finished with value: -445.1238342022896 and parameters: {'embedding_dim': 238, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:56:39,218] Trial 15 finished with value: -520.6326114788251 and parameters: {'embedding_dim': 279, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:57:01,221] Trial 16 finished with value: -1249.0454506990286 and parameters: {'embedding_dim': 196, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:57:11,852] Trial 17 finished with value: -1290.8915843590196 and parameters: {'embedding_dim': 324, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:57:35,406] Trial 18 finished with value: -693.6077615333189 and parameters: {'embedding_dim': 265, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:57:51,601] Trial 19 finished with value: -152.34857480653517 and parameters: {'embedding_dim': 189, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:58:05,103] Trial 20 finished with value: -434.8278703688668 and parameters: {'embedding_dim': 340, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:58:22,771] Trial 21 finished with value: -1297.9427163676112 and parameters: {'embedding_dim': 179, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:58:46,103] Trial 22 finished with value: -726.0693832641973 and parameters: {'embedding_dim': 147, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -104.95603996377517. +[I 2025-12-18 01:59:02,303] Trial 23 finished with value: -58.85720617580585 and parameters: {'embedding_dim': 199, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 23 with value: -58.85720617580585. +[I 2025-12-18 01:59:12,850] Trial 24 finished with value: -924.0700120373403 and parameters: {'embedding_dim': 249, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 23 with value: -58.85720617580585. +[I 2025-12-18 01:59:36,604] Trial 25 finished with value: -1243.533770136966 and parameters: {'embedding_dim': 213, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -58.85720617580585. +[I 2025-12-18 01:59:52,840] Trial 26 finished with value: -1031.5337265308235 and parameters: {'embedding_dim': 298, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 23 with value: -58.85720617580585. +[I 2025-12-18 02:00:22,034] Trial 27 finished with value: -746.5445891762606 and parameters: {'embedding_dim': 263, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 23 with value: -58.85720617580585. +[I 2025-12-18 02:00:29,027] Trial 28 finished with value: -1275.4580909363758 and parameters: {'embedding_dim': 217, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 23 with value: -58.85720617580585. +[I 2025-12-18 02:00:42,145] Trial 29 finished with value: -3430.4628600336837 and parameters: {'embedding_dim': 375, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 23 with value: -58.85720617580585. +[I 2025-12-18 02:01:02,718] A new study created in memory with name: no-name-0f685ea0-e02a-4d1d-843f-af0946270c97 +[I 2025-12-18 02:01:09,645] Trial 0 finished with value: -342.4895151859073 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -342.4895151859073. +[I 2025-12-18 02:01:18,962] Trial 1 finished with value: -48.89228553569707 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -48.89228553569707. +[I 2025-12-18 02:01:28,381] Trial 2 finished with value: -50.82806578648771 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -48.89228553569707. +[I 2025-12-18 02:01:34,841] Trial 3 finished with value: -50.65149168084794 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -48.89228553569707. +[I 2025-12-18 02:01:47,501] Trial 4 finished with value: -81.0503251669159 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -48.89228553569707. +[I 2025-12-18 02:01:53,120] Trial 5 finished with value: -48.5470310431851 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -48.5470310431851. +[I 2025-12-18 02:01:59,278] Trial 6 finished with value: -71.6427850523908 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 5 with value: -48.5470310431851. +[I 2025-12-18 02:02:06,611] Trial 7 finished with value: -81.85760110323884 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -48.5470310431851. +[I 2025-12-18 02:02:10,213] Trial 8 finished with value: -66.5811777394672 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -48.5470310431851. +[I 2025-12-18 02:02:19,688] Trial 9 finished with value: -96.09502894691718 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -48.5470310431851. +[I 2025-12-18 02:02:23,402] Trial 10 finished with value: -98.302484269313 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -48.5470310431851. +[I 2025-12-18 02:02:29,247] Trial 11 finished with value: -107.82543386963268 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -48.5470310431851. +[I 2025-12-18 02:02:34,734] Trial 12 finished with value: -27.21734047130171 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -27.21734047130171. +[I 2025-12-18 02:02:40,843] Trial 13 finished with value: -91.30535446947609 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -27.21734047130171. +[I 2025-12-18 02:02:49,798] Trial 14 finished with value: -38.89505150441655 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -27.21734047130171. +[I 2025-12-18 02:02:57,155] Trial 15 finished with value: -6.250424945119327 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:03:04,528] Trial 16 finished with value: -44.36351230491395 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:03:11,385] Trial 17 finished with value: -144.0909681156473 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:03:15,170] Trial 18 finished with value: -283.6954613329575 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:03:20,716] Trial 19 finished with value: -18.118269704851667 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:03:27,539] Trial 20 finished with value: -281.4774857817584 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:03:33,023] Trial 21 finished with value: -66.30989169684483 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:03:38,507] Trial 22 finished with value: -22.050768858976387 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:03:43,985] Trial 23 finished with value: -38.25570982910732 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:03:49,463] Trial 24 finished with value: -21.46681691526066 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:03:54,466] Trial 25 finished with value: -88.08369456312617 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:03:59,928] Trial 26 finished with value: -36.3686993677276 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:04:07,247] Trial 27 finished with value: -79.6082837467091 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:04:12,422] Trial 28 finished with value: -181.2762404348028 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:04:19,795] Trial 29 finished with value: -58.89015229380913 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:04:26,710] Trial 30 finished with value: -136.16963410033424 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:04:32,194] Trial 31 finished with value: -90.51549196225535 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:04:37,675] Trial 32 finished with value: -28.190839281474382 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:04:43,164] Trial 33 finished with value: -119.99590615237656 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:04:52,614] Trial 34 finished with value: -73.09751950565624 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:04:58,094] Trial 35 finished with value: -155.66560049878416 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:05:05,439] Trial 36 finished with value: -72.40671180637432 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:05:11,461] Trial 37 finished with value: -415.6684800787875 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:05:17,111] Trial 38 finished with value: -84.56011205420316 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:05:22,267] Trial 39 finished with value: -42.19008730698754 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:05:31,539] Trial 40 finished with value: -7.005232977752862 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:05:41,010] Trial 41 finished with value: -107.38131058077481 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:05:50,862] Trial 42 finished with value: -77.23068696672598 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:06:02,083] Trial 43 finished with value: -54.55551861421547 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:06:11,342] Trial 44 finished with value: -56.394482224302905 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:06:20,645] Trial 45 finished with value: -72.58875813984483 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:06:26,150] Trial 46 finished with value: -31.368203018818342 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:06:31,611] Trial 47 finished with value: -224.03895598934872 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:06:37,763] Trial 48 finished with value: -62.83536153280876 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:06:45,132] Trial 49 finished with value: -46.179764436151046 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -6.250424945119327. +[I 2025-12-18 02:06:55,051] A new study created in memory with name: no-name-c3dba5b6-8e25-4436-8c87-26021675ec17 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_1_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_1_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_1_busan.csv: Class 0=16780 | Class 1=17522 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_1_busan.csv: Class 0=16780 | Class 1=17522 | Class 2=16492 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_1_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_1_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_1_daegu.csv: Class 0=17329 | Class 1=17489 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_1_daegu.csv: Class 0=17329 | Class 1=17489 | Class 2=16582 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-18 02:07:13,079] Trial 0 finished with value: -473.085569905589 and parameters: {'embedding_dim': 489, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -473.085569905589. +[I 2025-12-18 02:07:28,533] Trial 1 finished with value: -801.535865943123 and parameters: {'embedding_dim': 476, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -473.085569905589. +[I 2025-12-18 02:07:49,671] Trial 2 finished with value: -298.91249385845197 and parameters: {'embedding_dim': 178, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -298.91249385845197. +[I 2025-12-18 02:09:10,808] Trial 3 finished with value: -591.9038146675209 and parameters: {'embedding_dim': 501, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -298.91249385845197. +[I 2025-12-18 02:09:38,679] Trial 4 finished with value: -541.2306667876558 and parameters: {'embedding_dim': 322, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -298.91249385845197. +[I 2025-12-18 02:09:49,760] Trial 5 finished with value: -842.0003508065379 and parameters: {'embedding_dim': 185, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -298.91249385845197. +[I 2025-12-18 02:10:09,386] Trial 6 finished with value: -1303.4886411054963 and parameters: {'embedding_dim': 476, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -298.91249385845197. +[I 2025-12-18 02:10:31,330] Trial 7 finished with value: -558.3974007720851 and parameters: {'embedding_dim': 386, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -298.91249385845197. +[I 2025-12-18 02:11:05,262] Trial 8 finished with value: -724.7298777777257 and parameters: {'embedding_dim': 292, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -298.91249385845197. +[I 2025-12-18 02:11:34,018] Trial 9 finished with value: -25.033815760682714 and parameters: {'embedding_dim': 371, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:12:05,209] Trial 10 finished with value: -933.7091134615557 and parameters: {'embedding_dim': 362, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:12:23,833] Trial 11 finished with value: -422.607305808211 and parameters: {'embedding_dim': 142, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:12:41,102] Trial 12 finished with value: -270.9263917255264 and parameters: {'embedding_dim': 241, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:13:18,661] Trial 13 finished with value: -674.4612309609231 and parameters: {'embedding_dim': 255, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:14:26,094] Trial 14 finished with value: -2378.913912187611 and parameters: {'embedding_dim': 243, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:14:37,789] Trial 15 finished with value: -3156.099539649246 and parameters: {'embedding_dim': 410, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:15:07,886] Trial 16 finished with value: -954.930798182337 and parameters: {'embedding_dim': 335, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:15:19,651] Trial 17 finished with value: -694.654187633059 and parameters: {'embedding_dim': 265, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:15:56,374] Trial 18 finished with value: -312.75757234177496 and parameters: {'embedding_dim': 424, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:17:03,652] Trial 19 finished with value: -28.648531333132546 and parameters: {'embedding_dim': 213, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:17:56,478] Trial 20 finished with value: -1035.3175585847366 and parameters: {'embedding_dim': 202, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:19:02,238] Trial 21 finished with value: -642.4308970175462 and parameters: {'embedding_dim': 222, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:20:07,801] Trial 22 finished with value: -313.3559786636371 and parameters: {'embedding_dim': 292, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:21:00,080] Trial 23 finished with value: -405.10038841880976 and parameters: {'embedding_dim': 152, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:22:06,997] Trial 24 finished with value: -249.9452412205351 and parameters: {'embedding_dim': 295, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:22:59,495] Trial 25 finished with value: -45.00911570535021 and parameters: {'embedding_dim': 362, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:23:39,207] Trial 26 finished with value: -812.1473676694404 and parameters: {'embedding_dim': 355, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:24:31,999] Trial 27 finished with value: -40.52013882902048 and parameters: {'embedding_dim': 440, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:25:25,028] Trial 28 finished with value: -622.953036878878 and parameters: {'embedding_dim': 434, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:25:46,563] Trial 29 finished with value: -800.7342692472115 and parameters: {'embedding_dim': 463, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 9 with value: -25.033815760682714. +[I 2025-12-18 02:26:15,837] A new study created in memory with name: no-name-fa33e6b1-4eec-453d-97fd-e29833c16e8c +[I 2025-12-18 02:26:19,138] Trial 0 finished with value: -662.3107641947074 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -662.3107641947074. +[I 2025-12-18 02:26:22,439] Trial 1 finished with value: -184.75082488553988 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -184.75082488553988. +[I 2025-12-18 02:26:29,219] Trial 2 finished with value: -90.92801085360766 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -90.92801085360766. +[I 2025-12-18 02:26:34,651] Trial 3 finished with value: -246.19758048893559 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -90.92801085360766. +[I 2025-12-18 02:26:38,107] Trial 4 finished with value: -55.00989596857837 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -55.00989596857837. +[I 2025-12-18 02:26:41,334] Trial 5 finished with value: -55.89890526487351 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -55.00989596857837. +[I 2025-12-18 02:26:46,742] Trial 6 finished with value: -121.82238470524538 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -55.00989596857837. +[I 2025-12-18 02:26:51,744] Trial 7 finished with value: -87.60709263403353 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -55.00989596857837. +[I 2025-12-18 02:26:58,984] Trial 8 finished with value: -68.94471781334175 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -55.00989596857837. +[I 2025-12-18 02:27:04,313] Trial 9 finished with value: -62.09573691065397 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -55.00989596857837. +[I 2025-12-18 02:27:07,770] Trial 10 finished with value: -112.5413479490015 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -55.00989596857837. +[I 2025-12-18 02:27:10,994] Trial 11 finished with value: -351.02055561582097 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -55.00989596857837. +[I 2025-12-18 02:27:14,239] Trial 12 finished with value: -40.721599926032866 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 12 with value: -40.721599926032866. +[I 2025-12-18 02:27:17,455] Trial 13 finished with value: -250.00541161300893 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 12 with value: -40.721599926032866. +[I 2025-12-18 02:27:20,782] Trial 14 finished with value: -156.58862250248814 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 12 with value: -40.721599926032866. +[I 2025-12-18 02:27:26,110] Trial 15 finished with value: -57.52264409257711 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -40.721599926032866. +[I 2025-12-18 02:27:29,320] Trial 16 finished with value: -0.5234410698788653 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:27:36,080] Trial 17 finished with value: -35.16891463752862 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:27:42,654] Trial 18 finished with value: -39.93991448086908 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:27:49,187] Trial 19 finished with value: -65.91652669200145 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:27:55,710] Trial 20 finished with value: -95.68843811313634 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:28:02,223] Trial 21 finished with value: -95.67887670868633 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:28:08,714] Trial 22 finished with value: -11.109116132102741 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:28:15,216] Trial 23 finished with value: -44.503911887489586 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:28:21,767] Trial 24 finished with value: -57.27543713717792 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:28:26,632] Trial 25 finished with value: -252.05035502793064 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:28:33,318] Trial 26 finished with value: -17.93220629719545 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:28:38,242] Trial 27 finished with value: -90.17923985868926 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:28:45,013] Trial 28 finished with value: -55.09652726803696 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:28:49,927] Trial 29 finished with value: -31.593460543619575 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:28:54,891] Trial 30 finished with value: -179.37127859304073 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:28:59,904] Trial 31 finished with value: -36.76028440104508 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:29:06,632] Trial 32 finished with value: -51.57279025180141 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:29:11,651] Trial 33 finished with value: -147.39806344272452 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:29:18,367] Trial 34 finished with value: -103.9610918729596 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:29:23,379] Trial 35 finished with value: -75.83469560094974 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:29:30,269] Trial 36 finished with value: -163.79613425309753 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:29:33,587] Trial 37 finished with value: -186.43029192879297 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:29:38,461] Trial 38 finished with value: -35.42280530123258 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:29:45,213] Trial 39 finished with value: -36.747614344844955 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:29:48,451] Trial 40 finished with value: -452.84572025613744 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:29:54,945] Trial 41 finished with value: -243.1450237464644 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:30:01,456] Trial 42 finished with value: -66.22049762705674 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:30:08,002] Trial 43 finished with value: -101.08376097567876 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:30:14,512] Trial 44 finished with value: -70.0899617597987 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:30:21,888] Trial 45 finished with value: -32.01179712130074 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:30:27,240] Trial 46 finished with value: -115.1592772974232 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:30:30,714] Trial 47 finished with value: -41.601973331690274 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:30:37,916] Trial 48 finished with value: -68.0888532707076 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:30:43,291] Trial 49 finished with value: -33.982942831291396 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 16 with value: -0.5234410698788653. +[I 2025-12-18 02:30:47,154] A new study created in memory with name: no-name-19b03b1a-0577-4b38-b709-b325138a9718 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_1_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_1_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_1_daejeon.csv: Class 0=16137 | Class 1=18721 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_1_daejeon.csv: Class 0=16137 | Class 1=18721 | Class 2=15441 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +/opt/conda/envs/py39/lib/python3.9/site-packages/joblib/externals/loky/process_executor.py:752: UserWarning: A worker stopped while some jobs were given to the executor. This can be caused by a too short worker timeout or by a memory leak. + warnings.warn( +[I 2025-12-18 02:31:17,002] Trial 0 finished with value: -631.5219504777826 and parameters: {'embedding_dim': 303, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -631.5219504777826. +[I 2025-12-18 02:31:40,412] Trial 1 finished with value: -4427.174372149373 and parameters: {'embedding_dim': 183, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -631.5219504777826. +[I 2025-12-18 02:31:59,984] Trial 2 finished with value: -614.5153792364905 and parameters: {'embedding_dim': 354, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -614.5153792364905. +[I 2025-12-18 02:33:09,720] Trial 3 finished with value: -1114.5960515846448 and parameters: {'embedding_dim': 343, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -614.5153792364905. +[I 2025-12-18 02:34:20,187] Trial 4 finished with value: -1330.1267686074527 and parameters: {'embedding_dim': 335, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -614.5153792364905. +[I 2025-12-18 02:34:28,283] Trial 5 finished with value: -2451.9683913680537 and parameters: {'embedding_dim': 220, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -614.5153792364905. +[I 2025-12-18 02:34:54,032] Trial 6 finished with value: -517.4226189977754 and parameters: {'embedding_dim': 244, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -517.4226189977754. +[I 2025-12-18 02:35:08,849] Trial 7 finished with value: -7301.586797028045 and parameters: {'embedding_dim': 188, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 6 with value: -517.4226189977754. +[I 2025-12-18 02:35:54,700] Trial 8 finished with value: -614.2562396296368 and parameters: {'embedding_dim': 363, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -517.4226189977754. +[I 2025-12-18 02:36:07,531] Trial 9 finished with value: -323.26488272372416 and parameters: {'embedding_dim': 268, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 9 with value: -323.26488272372416. +[I 2025-12-18 02:36:22,310] Trial 10 finished with value: -614.8729981394922 and parameters: {'embedding_dim': 481, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 9 with value: -323.26488272372416. +[I 2025-12-18 02:36:35,212] Trial 11 finished with value: -1526.823207645003 and parameters: {'embedding_dim': 258, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 9 with value: -323.26488272372416. +[I 2025-12-18 02:37:12,232] Trial 12 finished with value: -36.44621215759166 and parameters: {'embedding_dim': 137, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:37:23,817] Trial 13 finished with value: -1643.3335528163607 and parameters: {'embedding_dim': 135, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:38:02,774] Trial 14 finished with value: -476.9704634592466 and parameters: {'embedding_dim': 445, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:38:45,295] Trial 15 finished with value: -252.06042805295758 and parameters: {'embedding_dim': 134, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:39:30,119] Trial 16 finished with value: -845.121435251779 and parameters: {'embedding_dim': 132, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:40:32,380] Trial 17 finished with value: -217.03902536555435 and parameters: {'embedding_dim': 179, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:41:31,566] Trial 18 finished with value: -1320.3280807523545 and parameters: {'embedding_dim': 186, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:42:32,755] Trial 19 finished with value: -69.09957088609977 and parameters: {'embedding_dim': 402, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:43:34,194] Trial 20 finished with value: -441.35400691145185 and parameters: {'embedding_dim': 398, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:44:36,235] Trial 21 finished with value: -136.85762759188776 and parameters: {'embedding_dim': 420, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:45:36,319] Trial 22 finished with value: -128.61752984764192 and parameters: {'embedding_dim': 412, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:46:25,254] Trial 23 finished with value: -471.3776713426056 and parameters: {'embedding_dim': 511, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:47:28,674] Trial 24 finished with value: -613.0786223642757 and parameters: {'embedding_dim': 388, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:48:11,825] Trial 25 finished with value: -149.4065647720761 and parameters: {'embedding_dim': 446, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:49:00,077] Trial 26 finished with value: -1736.9118572176435 and parameters: {'embedding_dim': 309, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:50:02,165] Trial 27 finished with value: -189.33361936853203 and parameters: {'embedding_dim': 380, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:50:49,292] Trial 28 finished with value: -323.4872092357198 and parameters: {'embedding_dim': 437, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -36.44621215759166. +[I 2025-12-18 02:51:20,681] Trial 29 finished with value: -1330.734197700448 and parameters: {'embedding_dim': 477, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 12 with value: -36.44621215759166. +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_1_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_1_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_1_gwangju.csv: Class 0=17013 | Class 1=19189 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_1_gwangju.csv: Class 0=17013 | Class 1=19189 | Class 2=15692 + +Running ctgan_sample_20000_2.py... +[I 2025-12-18 02:52:00,084] A new study created in memory with name: no-name-4da39461-c0a2-4a0c-8c30-939f9d3d2736 +[I 2025-12-18 02:52:11,107] Trial 0 finished with value: -9.931443087127949 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -9.931443087127949. +[I 2025-12-18 02:52:17,791] Trial 1 finished with value: -0.6974710927943178 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:52:26,088] Trial 2 finished with value: -47.365687299461165 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:52:40,838] Trial 3 finished with value: -2.690373874174016 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:52:51,020] Trial 4 finished with value: -46.946690192258174 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:53:07,340] Trial 5 finished with value: -25.39503840259801 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:53:20,868] Trial 6 finished with value: -56.89515999350815 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:53:35,668] Trial 7 finished with value: -104.79732857626384 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:53:58,695] Trial 8 finished with value: -173.99577503082443 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:54:09,004] Trial 9 finished with value: -100.31646733119463 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:54:15,625] Trial 10 finished with value: -2.1301101960397393 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:54:22,218] Trial 11 finished with value: -1.7875583974853806 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:54:28,901] Trial 12 finished with value: -7.260034809745777 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:54:35,517] Trial 13 finished with value: -62.52217667735287 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:54:42,340] Trial 14 finished with value: -105.36672492207754 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:54:47,198] Trial 15 finished with value: -2.2028720414335035 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:54:59,008] Trial 16 finished with value: -136.21980381110677 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:55:05,658] Trial 17 finished with value: -303.360601340668 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:55:11,494] Trial 18 finished with value: -159.06083370344479 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:55:26,351] Trial 19 finished with value: -30.581129570155216 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:55:32,956] Trial 20 finished with value: -75.01855117519126 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:55:39,561] Trial 21 finished with value: -1.2899831698174062 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:55:46,139] Trial 22 finished with value: -236.03897566621774 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:55:52,758] Trial 23 finished with value: -65.68855319347206 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:55:59,368] Trial 24 finished with value: -115.9236638025478 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:56:09,421] Trial 25 finished with value: -66.47260602740927 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:56:16,040] Trial 26 finished with value: -199.94724592083855 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:56:22,709] Trial 27 finished with value: -84.57102463143801 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:56:28,545] Trial 28 finished with value: -1.6309559449618631 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:56:36,239] Trial 29 finished with value: -3.5301091546370347 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:56:42,080] Trial 30 finished with value: -151.92414631781358 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:56:47,841] Trial 31 finished with value: -145.13336722044397 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:56:53,654] Trial 32 finished with value: -194.37494580678188 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:56:57,605] Trial 33 finished with value: -200.96730060536044 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:57:20,604] Trial 34 finished with value: -61.509330411875766 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:57:27,256] Trial 35 finished with value: -3.0084376471754983 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:57:40,890] Trial 36 finished with value: -188.16016751069586 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:57:44,950] Trial 37 finished with value: -52.15955603675911 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:58:08,027] Trial 38 finished with value: -53.231776178417284 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:58:21,855] Trial 39 finished with value: -125.05563216306962 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:58:28,532] Trial 40 finished with value: -16.230096497575992 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:58:35,133] Trial 41 finished with value: -63.187445098925586 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.6974710927943178. +[I 2025-12-18 02:58:41,792] Trial 42 finished with value: -0.1341231922104282 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -0.1341231922104282. +[I 2025-12-18 02:58:48,448] Trial 43 finished with value: -54.298825857199446 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -0.1341231922104282. +[I 2025-12-18 02:58:55,089] Trial 44 finished with value: -6.6212776929646955 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -0.1341231922104282. +[I 2025-12-18 02:59:09,801] Trial 45 finished with value: -50.69515936856901 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 42 with value: -0.1341231922104282. +[I 2025-12-18 02:59:16,332] Trial 46 finished with value: -30.880786038689834 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -0.1341231922104282. +[I 2025-12-18 02:59:22,934] Trial 47 finished with value: -7.513109809540677 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -0.1341231922104282. +[I 2025-12-18 02:59:28,707] Trial 48 finished with value: -24.471309165108718 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 42 with value: -0.1341231922104282. +[I 2025-12-18 02:59:35,305] Trial 49 finished with value: -262.17307831093393 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 42 with value: -0.1341231922104282. +[I 2025-12-18 02:59:42,266] A new study created in memory with name: no-name-937c372a-d784-42f5-a888-b504998b793e +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-18 03:01:10,355] Trial 0 finished with value: -255.00601129165102 and parameters: {'embedding_dim': 501, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -255.00601129165102. +[I 2025-12-18 03:01:41,428] Trial 1 finished with value: -137.3655005393645 and parameters: {'embedding_dim': 133, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -137.3655005393645. +[I 2025-12-18 03:02:06,641] Trial 2 finished with value: -382.4334072377357 and parameters: {'embedding_dim': 290, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 1 with value: -137.3655005393645. +[I 2025-12-18 03:02:20,169] Trial 3 finished with value: -2160.541704565202 and parameters: {'embedding_dim': 296, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 1 with value: -137.3655005393645. +[I 2025-12-18 03:03:15,644] Trial 4 finished with value: -706.5314881750098 and parameters: {'embedding_dim': 275, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -137.3655005393645. +[I 2025-12-18 03:03:46,178] Trial 5 finished with value: -666.0279445898708 and parameters: {'embedding_dim': 498, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -137.3655005393645. +[I 2025-12-18 03:04:05,448] Trial 6 finished with value: -294.60907260234995 and parameters: {'embedding_dim': 369, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 1 with value: -137.3655005393645. +[I 2025-12-18 03:04:33,020] Trial 7 finished with value: -839.885218414725 and parameters: {'embedding_dim': 478, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -137.3655005393645. +[I 2025-12-18 03:04:46,986] Trial 8 finished with value: -2071.8765254558584 and parameters: {'embedding_dim': 304, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 1 with value: -137.3655005393645. +[I 2025-12-18 03:06:27,876] Trial 9 finished with value: -9.655857298407833 and parameters: {'embedding_dim': 229, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 9 with value: -9.655857298407833. +[I 2025-12-18 03:08:09,365] Trial 10 finished with value: -183.70061402135022 and parameters: {'embedding_dim': 176, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 9 with value: -9.655857298407833. +[I 2025-12-18 03:09:34,419] Trial 11 finished with value: -6.234290569758299 and parameters: {'embedding_dim': 128, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -6.234290569758299. +[I 2025-12-18 03:11:16,263] Trial 12 finished with value: -617.7932212232616 and parameters: {'embedding_dim': 210, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 11 with value: -6.234290569758299. +[I 2025-12-18 03:12:40,830] Trial 13 finished with value: -460.3126617653509 and parameters: {'embedding_dim': 224, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -6.234290569758299. +[I 2025-12-18 03:13:47,951] Trial 14 finished with value: -4.155793338722654 and parameters: {'embedding_dim': 130, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:14:55,640] Trial 15 finished with value: -1774.6650586355006 and parameters: {'embedding_dim': 130, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:15:45,976] Trial 16 finished with value: -1015.5358825377994 and parameters: {'embedding_dim': 389, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:16:53,473] Trial 17 finished with value: -42.05338559672762 and parameters: {'embedding_dim': 168, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:17:29,492] Trial 18 finished with value: -544.2345923424307 and parameters: {'embedding_dim': 184, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:18:54,256] Trial 19 finished with value: -128.29877197339817 and parameters: {'embedding_dim': 363, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:19:44,631] Trial 20 finished with value: -144.37539476817545 and parameters: {'embedding_dim': 250, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:21:31,133] Trial 21 finished with value: -778.1905880585 and parameters: {'embedding_dim': 129, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:23:01,425] Trial 22 finished with value: -4.216595674158768 and parameters: {'embedding_dim': 219, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:24:31,637] Trial 23 finished with value: -826.0641418924965 and parameters: {'embedding_dim': 165, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:25:42,033] Trial 24 finished with value: -2619.9659388668524 and parameters: {'embedding_dim': 193, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:26:30,925] Trial 25 finished with value: -3117.2478714709596 and parameters: {'embedding_dim': 256, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:27:42,327] Trial 26 finished with value: -33.545885708366114 and parameters: {'embedding_dim': 164, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:29:11,952] Trial 27 finished with value: -447.02543312053155 and parameters: {'embedding_dim': 208, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:30:38,511] Trial 28 finished with value: -55.73450485561443 and parameters: {'embedding_dim': 149, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:31:48,367] Trial 29 finished with value: -22.38751062699729 and parameters: {'embedding_dim': 240, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -4.155793338722654. +[I 2025-12-18 03:32:58,179] A new study created in memory with name: no-name-29f51c28-bb36-4103-8399-069f4dbf3242 +[I 2025-12-18 03:33:01,340] Trial 0 finished with value: -301.2540139558903 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -301.2540139558903. +[I 2025-12-18 03:33:06,204] Trial 1 finished with value: -17.209973892563312 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -17.209973892563312. +[I 2025-12-18 03:33:13,435] Trial 2 finished with value: -28.71200439534447 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -17.209973892563312. +[I 2025-12-18 03:33:18,458] Trial 3 finished with value: -67.76236925412145 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -17.209973892563312. +[I 2025-12-18 03:33:25,046] Trial 4 finished with value: -26.782411048513154 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -17.209973892563312. +[I 2025-12-18 03:33:28,325] Trial 5 finished with value: -170.86082426134527 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -17.209973892563312. +[I 2025-12-18 03:33:33,068] Trial 6 finished with value: -14.534908214765343 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 6 with value: -14.534908214765343. +[I 2025-12-18 03:33:40,255] Trial 7 finished with value: -87.22957376200802 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -14.534908214765343. +[I 2025-12-18 03:33:44,808] Trial 8 finished with value: -23.375399242657416 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 6 with value: -14.534908214765343. +[I 2025-12-18 03:33:49,600] Trial 9 finished with value: -73.18730361190514 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 6 with value: -14.534908214765343. +[I 2025-12-18 03:33:54,598] Trial 10 finished with value: -35.67338132627458 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -14.534908214765343. +[I 2025-12-18 03:33:59,381] Trial 11 finished with value: -13.023499840071866 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 11 with value: -13.023499840071866. +[I 2025-12-18 03:34:04,139] Trial 12 finished with value: -65.5154056879374 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 11 with value: -13.023499840071866. +[I 2025-12-18 03:34:08,924] Trial 13 finished with value: -66.70059146144095 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 11 with value: -13.023499840071866. +[I 2025-12-18 03:34:15,232] Trial 14 finished with value: -14.119666086080194 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -13.023499840071866. +[I 2025-12-18 03:34:22,491] Trial 15 finished with value: -3.941506401847286 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:34:29,579] Trial 16 finished with value: -29.87131840600784 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:34:36,761] Trial 17 finished with value: -5.598982241891541 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:34:45,519] Trial 18 finished with value: -36.42400032974652 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:34:53,886] Trial 19 finished with value: -16.867828214360273 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:35:01,028] Trial 20 finished with value: -28.672346748356 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:35:08,204] Trial 21 finished with value: -12.79103841313695 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:35:15,399] Trial 22 finished with value: -47.07295923765333 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:35:22,527] Trial 23 finished with value: -11.59687962817118 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:35:29,725] Trial 24 finished with value: -8.623538831416859 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:35:36,923] Trial 25 finished with value: -250.70707052491787 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:35:44,118] Trial 26 finished with value: -93.34785774140131 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:35:52,861] Trial 27 finished with value: -7.011152539844073 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:36:00,051] Trial 28 finished with value: -9.783632600206817 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:36:03,335] Trial 29 finished with value: -212.52279350451667 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:36:10,566] Trial 30 finished with value: -44.26891648100756 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:36:17,792] Trial 31 finished with value: -34.85467090821998 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:36:24,922] Trial 32 finished with value: -47.2310630827432 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:36:32,272] Trial 33 finished with value: -28.857616375593118 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:36:39,412] Trial 34 finished with value: -16.985991577380723 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:36:46,556] Trial 35 finished with value: -15.7518431478514 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:36:51,516] Trial 36 finished with value: -20.91432086415192 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:36:59,101] Trial 37 finished with value: -54.56414495946836 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:37:06,992] Trial 38 finished with value: -116.24501370530405 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:37:14,274] Trial 39 finished with value: -13.846924021334985 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:37:19,306] Trial 40 finished with value: -65.47983718909622 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:37:26,541] Trial 41 finished with value: -20.490612330636054 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:37:33,719] Trial 42 finished with value: -36.21153598066285 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:37:40,892] Trial 43 finished with value: -39.243248512871496 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.941506401847286. +[I 2025-12-18 03:37:48,079] Trial 44 finished with value: -1.3676171608182663 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 44 with value: -1.3676171608182663. +[I 2025-12-18 03:37:55,266] Trial 45 finished with value: -19.251355904206555 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 44 with value: -1.3676171608182663. +[I 2025-12-18 03:38:04,136] Trial 46 finished with value: -4.322891021670951 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 44 with value: -1.3676171608182663. +[I 2025-12-18 03:38:09,723] Trial 47 finished with value: -55.54183576864136 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -1.3676171608182663. +[I 2025-12-18 03:38:17,176] Trial 48 finished with value: -61.264198180918314 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 44 with value: -1.3676171608182663. +[I 2025-12-18 03:38:20,830] Trial 49 finished with value: -350.6843669349727 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 44 with value: -1.3676171608182663. +[I 2025-12-18 03:38:28,366] A new study created in memory with name: no-name-b306c49f-aa63-4bf2-9151-3fbbe33e4113 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_2_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_2_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_2_incheon.csv: Class 0=18501 | Class 1=16898 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_2_incheon.csv: Class 0=18863 | Class 1=19443 | Class 2=14637 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-18 03:38:39,240] Trial 0 finished with value: -2347.5052639026476 and parameters: {'embedding_dim': 269, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -2347.5052639026476. +[I 2025-12-18 03:39:15,055] Trial 1 finished with value: -909.653930797797 and parameters: {'embedding_dim': 128, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -909.653930797797. +[I 2025-12-18 03:39:27,202] Trial 2 finished with value: -204.45581099216759 and parameters: {'embedding_dim': 147, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -204.45581099216759. +[I 2025-12-18 03:40:01,936] Trial 3 finished with value: -299.80521304565264 and parameters: {'embedding_dim': 384, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -204.45581099216759. +[I 2025-12-18 03:40:45,264] Trial 4 finished with value: -165.95209935637357 and parameters: {'embedding_dim': 427, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 4 with value: -165.95209935637357. +[I 2025-12-18 03:41:00,038] Trial 5 finished with value: -314.82311517142335 and parameters: {'embedding_dim': 403, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 4 with value: -165.95209935637357. +[I 2025-12-18 03:41:42,838] Trial 6 finished with value: -386.41169084341607 and parameters: {'embedding_dim': 223, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 4 with value: -165.95209935637357. +[I 2025-12-18 03:42:19,598] Trial 7 finished with value: -72.27512030084144 and parameters: {'embedding_dim': 365, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 7 with value: -72.27512030084144. +[I 2025-12-18 03:43:07,132] Trial 8 finished with value: -1489.8450722014265 and parameters: {'embedding_dim': 261, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -72.27512030084144. +[I 2025-12-18 03:44:06,622] Trial 9 finished with value: -18.126639848601144 and parameters: {'embedding_dim': 259, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -18.126639848601144. +[I 2025-12-18 03:45:04,266] Trial 10 finished with value: -290.4772252371706 and parameters: {'embedding_dim': 503, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -18.126639848601144. +[I 2025-12-18 03:46:01,470] Trial 11 finished with value: -308.7718207667961 and parameters: {'embedding_dim': 338, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -18.126639848601144. +[I 2025-12-18 03:46:29,239] Trial 12 finished with value: -555.4229360694122 and parameters: {'embedding_dim': 316, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 9 with value: -18.126639848601144. +[I 2025-12-18 03:47:26,532] Trial 13 finished with value: -142.51050125047337 and parameters: {'embedding_dim': 206, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -18.126639848601144. +[I 2025-12-18 03:47:46,337] Trial 14 finished with value: -293.4605614806872 and parameters: {'embedding_dim': 329, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -18.126639848601144. +[I 2025-12-18 03:48:14,001] Trial 15 finished with value: -20.173872876592245 and parameters: {'embedding_dim': 464, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 9 with value: -18.126639848601144. +[I 2025-12-18 03:48:48,517] Trial 16 finished with value: -46.10220462718365 and parameters: {'embedding_dim': 505, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 9 with value: -18.126639848601144. +[I 2025-12-18 03:49:35,068] Trial 17 finished with value: -960.8107081371776 and parameters: {'embedding_dim': 452, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -18.126639848601144. +[I 2025-12-18 03:50:03,172] Trial 18 finished with value: -16.31202582078589 and parameters: {'embedding_dim': 287, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 18 with value: -16.31202582078589. +[I 2025-12-18 03:50:14,360] Trial 19 finished with value: -194.7554025334868 and parameters: {'embedding_dim': 277, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 18 with value: -16.31202582078589. +[I 2025-12-18 03:51:01,449] Trial 20 finished with value: -332.1338682591602 and parameters: {'embedding_dim': 190, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -16.31202582078589. +[I 2025-12-18 03:51:29,635] Trial 21 finished with value: -420.8901092613109 and parameters: {'embedding_dim': 292, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 18 with value: -16.31202582078589. +[I 2025-12-18 03:51:58,854] Trial 22 finished with value: -751.2139101030245 and parameters: {'embedding_dim': 243, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 18 with value: -16.31202582078589. +[I 2025-12-18 03:52:33,837] Trial 23 finished with value: -70.26713952929454 and parameters: {'embedding_dim': 189, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 18 with value: -16.31202582078589. +[I 2025-12-18 03:53:02,938] Trial 24 finished with value: -232.46334592134355 and parameters: {'embedding_dim': 306, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 18 with value: -16.31202582078589. +[I 2025-12-18 03:53:25,054] Trial 25 finished with value: -93.46903527411708 and parameters: {'embedding_dim': 346, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 18 with value: -16.31202582078589. +[I 2025-12-18 03:54:00,050] Trial 26 finished with value: -88.00282025719703 and parameters: {'embedding_dim': 448, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 18 with value: -16.31202582078589. +[I 2025-12-18 03:54:29,253] Trial 27 finished with value: -79.96054393961322 and parameters: {'embedding_dim': 238, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 18 with value: -16.31202582078589. +[I 2025-12-18 03:54:48,884] Trial 28 finished with value: -408.88569010229725 and parameters: {'embedding_dim': 476, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 18 with value: -16.31202582078589. +[I 2025-12-18 03:55:45,240] Trial 29 finished with value: -599.4705615609688 and parameters: {'embedding_dim': 273, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -16.31202582078589. +[I 2025-12-18 03:56:15,241] A new study created in memory with name: no-name-6c3126e8-dee9-4546-862a-4796736fc658 +[I 2025-12-18 03:56:18,618] Trial 0 finished with value: -34.074749813191225 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -34.074749813191225. +[I 2025-12-18 03:56:23,536] Trial 1 finished with value: -19.85583754412651 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -19.85583754412651. +[I 2025-12-18 03:56:30,367] Trial 2 finished with value: -38.234833713418794 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -19.85583754412651. +[I 2025-12-18 03:56:35,471] Trial 3 finished with value: -40.43166359928276 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -19.85583754412651. +[I 2025-12-18 03:56:39,115] Trial 4 finished with value: -47.31956257767959 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -19.85583754412651. +[I 2025-12-18 03:56:46,352] Trial 5 finished with value: -14.834715274063605 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:56:49,573] Trial 6 finished with value: -36.442592459070504 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:56:56,390] Trial 7 finished with value: -38.9922295540233 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:57:01,325] Trial 8 finished with value: -21.562189055897935 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:57:04,683] Trial 9 finished with value: -259.8317176723574 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:57:12,110] Trial 10 finished with value: -35.2410057048043 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:57:17,184] Trial 11 finished with value: -18.239284078610698 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:57:24,749] Trial 12 finished with value: -46.12828558797065 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:57:30,288] Trial 13 finished with value: -45.610989956009135 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:57:35,281] Trial 14 finished with value: -66.03985257453945 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:57:42,710] Trial 15 finished with value: -73.48551426609046 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:57:47,658] Trial 16 finished with value: -86.22338523640059 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:57:54,276] Trial 17 finished with value: -40.00073491958905 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:57:59,687] Trial 18 finished with value: -22.974537992877625 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:58:06,253] Trial 19 finished with value: -38.64035859258341 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:58:11,755] Trial 20 finished with value: -19.28454190930487 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:58:17,272] Trial 21 finished with value: -63.98841330397171 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:58:22,780] Trial 22 finished with value: -50.04581722159641 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:58:28,291] Trial 23 finished with value: -104.61810296631475 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:58:33,726] Trial 24 finished with value: -37.38836650022116 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:58:37,234] Trial 25 finished with value: -25.2377084876165 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:58:43,821] Trial 26 finished with value: -94.05383203378432 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:58:49,199] Trial 27 finished with value: -21.833206901363596 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:58:56,469] Trial 28 finished with value: -74.05368659888764 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:58:59,749] Trial 29 finished with value: -82.36251019814209 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 5 with value: -14.834715274063605. +[I 2025-12-18 03:59:04,863] Trial 30 finished with value: -13.558329404341405 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 30 with value: -13.558329404341405. +[I 2025-12-18 03:59:09,967] Trial 31 finished with value: -33.441796846924966 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 30 with value: -13.558329404341405. +[I 2025-12-18 03:59:15,211] Trial 32 finished with value: -130.37095635165937 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 30 with value: -13.558329404341405. +[I 2025-12-18 03:59:20,274] Trial 33 finished with value: -80.05862628618557 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 30 with value: -13.558329404341405. +[I 2025-12-18 03:59:25,294] Trial 34 finished with value: -15.278750038588493 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 30 with value: -13.558329404341405. +[I 2025-12-18 03:59:30,385] Trial 35 finished with value: -0.252565142187313 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -0.252565142187313. +[I 2025-12-18 03:59:35,456] Trial 36 finished with value: -18.48960861316448 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -0.252565142187313. +[I 2025-12-18 03:59:38,792] Trial 37 finished with value: -20.84452170657722 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 35 with value: -0.252565142187313. +[I 2025-12-18 03:59:43,858] Trial 38 finished with value: -5.412304644469729 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -0.252565142187313. +[I 2025-12-18 03:59:47,229] Trial 39 finished with value: -0.22680090701944386 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 39 with value: -0.22680090701944386. +[I 2025-12-18 03:59:50,583] Trial 40 finished with value: -205.49864340089448 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 39 with value: -0.22680090701944386. +[I 2025-12-18 03:59:53,969] Trial 41 finished with value: -17.876482280075837 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 39 with value: -0.22680090701944386. +[I 2025-12-18 03:59:57,317] Trial 42 finished with value: -11.823293085096035 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 39 with value: -0.22680090701944386. +[I 2025-12-18 04:00:00,662] Trial 43 finished with value: -264.0025896793565 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 39 with value: -0.22680090701944386. +[I 2025-12-18 04:00:04,004] Trial 44 finished with value: -123.96341576601424 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 39 with value: -0.22680090701944386. +[I 2025-12-18 04:00:07,351] Trial 45 finished with value: -11.050983289423126 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 39 with value: -0.22680090701944386. +[I 2025-12-18 04:00:10,700] Trial 46 finished with value: -4.611823148222482 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 39 with value: -0.22680090701944386. +[I 2025-12-18 04:00:14,044] Trial 47 finished with value: -47.81253166430675 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 39 with value: -0.22680090701944386. +[I 2025-12-18 04:00:17,390] Trial 48 finished with value: -117.96048409396928 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 39 with value: -0.22680090701944386. +[I 2025-12-18 04:00:20,767] Trial 49 finished with value: -11.371525172813996 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 39 with value: -0.22680090701944386. +[I 2025-12-18 04:00:24,458] A new study created in memory with name: no-name-1cc9074b-e39b-48c1-b1e4-314879f7b294 +[I 2025-12-18 04:00:34,789] Trial 0 finished with value: -447.50384331987215 and parameters: {'embedding_dim': 149, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -447.50384331987215. +[I 2025-12-18 04:00:46,693] Trial 1 finished with value: -4721.941641153421 and parameters: {'embedding_dim': 347, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -447.50384331987215. +[I 2025-12-18 04:01:00,162] Trial 2 finished with value: -752.0996754648274 and parameters: {'embedding_dim': 466, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 0 with value: -447.50384331987215. +[I 2025-12-18 04:01:18,289] Trial 3 finished with value: -568.5592498881099 and parameters: {'embedding_dim': 334, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -447.50384331987215. +[I 2025-12-18 04:01:28,606] Trial 4 finished with value: -2328.347402320343 and parameters: {'embedding_dim': 394, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -447.50384331987215. +[I 2025-12-18 04:01:49,982] Trial 5 finished with value: -965.9855481641217 and parameters: {'embedding_dim': 302, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -447.50384331987215. +[I 2025-12-18 04:02:02,720] Trial 6 finished with value: -1095.1759628830132 and parameters: {'embedding_dim': 197, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -447.50384331987215. +[I 2025-12-18 04:02:20,022] Trial 7 finished with value: -691.4738960174803 and parameters: {'embedding_dim': 438, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -447.50384331987215. +[I 2025-12-18 04:02:34,056] Trial 8 finished with value: -286.8012455277949 and parameters: {'embedding_dim': 138, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:02:47,952] Trial 9 finished with value: -2226.575930863456 and parameters: {'embedding_dim': 187, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:03:03,743] Trial 10 finished with value: -1874.2936583045084 and parameters: {'embedding_dim': 266, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:03:19,334] Trial 11 finished with value: -536.5753383490564 and parameters: {'embedding_dim': 138, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:03:36,517] Trial 12 finished with value: -594.7305632404725 and parameters: {'embedding_dim': 129, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:03:49,526] Trial 13 finished with value: -302.2930891909734 and parameters: {'embedding_dim': 219, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:04:03,188] Trial 14 finished with value: -782.0802894818295 and parameters: {'embedding_dim': 234, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:04:20,044] Trial 15 finished with value: -2324.137787837769 and parameters: {'embedding_dim': 215, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:04:29,527] Trial 16 finished with value: -572.5203425611694 and parameters: {'embedding_dim': 270, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:04:43,495] Trial 17 finished with value: -1432.9557284506238 and parameters: {'embedding_dim': 177, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:04:51,685] Trial 18 finished with value: -1767.5627279787723 and parameters: {'embedding_dim': 246, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:05:01,809] Trial 19 finished with value: -2842.4599497472145 and parameters: {'embedding_dim': 171, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:05:15,930] Trial 20 finished with value: -1021.3037225865041 and parameters: {'embedding_dim': 292, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:05:27,321] Trial 21 finished with value: -501.48830892041974 and parameters: {'embedding_dim': 151, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:05:37,591] Trial 22 finished with value: -739.4947981548385 and parameters: {'embedding_dim': 214, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:05:50,244] Trial 23 finished with value: -959.7841801750293 and parameters: {'embedding_dim': 160, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:05:59,782] Trial 24 finished with value: -12385.495197858912 and parameters: {'embedding_dim': 137, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:06:09,794] Trial 25 finished with value: -1023.5859313082914 and parameters: {'embedding_dim': 208, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:06:20,280] Trial 26 finished with value: -1852.534970167409 and parameters: {'embedding_dim': 170, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:06:33,167] Trial 27 finished with value: -343.47485064481185 and parameters: {'embedding_dim': 239, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:06:47,071] Trial 28 finished with value: -566.1005181519185 and parameters: {'embedding_dim': 363, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:06:59,943] Trial 29 finished with value: -1870.9411541571421 and parameters: {'embedding_dim': 242, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 8 with value: -286.8012455277949. +[I 2025-12-18 04:07:12,796] A new study created in memory with name: no-name-f982243c-196e-4d84-9ff7-2fc6cb2d8c98 +[I 2025-12-18 04:07:15,951] Trial 0 finished with value: -54.776087752773456 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -54.776087752773456. +[I 2025-12-18 04:07:19,352] Trial 1 finished with value: -98.15280984439438 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -54.776087752773456. +[I 2025-12-18 04:07:26,064] Trial 2 finished with value: -29.038973616682487 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -29.038973616682487. +[I 2025-12-18 04:07:32,814] Trial 3 finished with value: -53.115697238651194 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -29.038973616682487. +[I 2025-12-18 04:07:39,978] Trial 4 finished with value: -131.64592170762697 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -29.038973616682487. +[I 2025-12-18 04:07:43,343] Trial 5 finished with value: -33.47390516670987 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -29.038973616682487. +[I 2025-12-18 04:07:48,054] Trial 6 finished with value: -38.68804381125939 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -29.038973616682487. +[I 2025-12-18 04:07:52,784] Trial 7 finished with value: -33.69311529889087 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -29.038973616682487. +[I 2025-12-18 04:07:59,116] Trial 8 finished with value: -4.084881450725948 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:08:05,625] Trial 9 finished with value: -97.40594913731584 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:08:11,983] Trial 10 finished with value: -60.66294416571748 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:08:16,922] Trial 11 finished with value: -9.386632902824388 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:08:21,934] Trial 12 finished with value: -128.89489818486823 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:08:26,906] Trial 13 finished with value: -19.95199803963176 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:08:33,871] Trial 14 finished with value: -38.97167677910623 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:08:42,143] Trial 15 finished with value: -18.38785650107637 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:08:47,184] Trial 16 finished with value: -9.770242015607273 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:08:54,061] Trial 17 finished with value: -84.48088398373191 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:08:58,817] Trial 18 finished with value: -145.56586955765417 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:09:04,956] Trial 19 finished with value: -68.37472924681902 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:09:11,669] Trial 20 finished with value: -146.07746495580506 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:09:18,643] Trial 21 finished with value: -16.907238518982595 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:09:23,792] Trial 22 finished with value: -43.7692261171558 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:09:28,924] Trial 23 finished with value: -92.78473730324798 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:09:32,318] Trial 24 finished with value: -83.0020004294551 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:09:38,490] Trial 25 finished with value: -6.181407502059026 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:09:44,846] Trial 26 finished with value: -61.023296578806935 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:09:49,631] Trial 27 finished with value: -12.130397539307866 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:09:56,047] Trial 28 finished with value: -123.29934144585063 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:09:59,189] Trial 29 finished with value: -94.29045183070981 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:10:03,973] Trial 30 finished with value: -14.227097649759324 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:10:11,127] Trial 31 finished with value: -81.72818238231812 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:10:15,833] Trial 32 finished with value: -74.32343076320043 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:10:20,543] Trial 33 finished with value: -75.45944026027878 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:10:23,876] Trial 34 finished with value: -80.0813696314097 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:10:29,376] Trial 35 finished with value: -17.269652960090657 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:10:34,266] Trial 36 finished with value: -10.825216499975992 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:10:39,081] Trial 37 finished with value: -77.59355209428959 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:10:43,630] Trial 38 finished with value: -88.69656879374526 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:10:50,228] Trial 39 finished with value: -82.85065064334214 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:10:54,898] Trial 40 finished with value: -56.421324380484236 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:10:59,876] Trial 41 finished with value: -85.89815312930149 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:11:05,137] Trial 42 finished with value: -122.69060712161212 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:11:12,083] Trial 43 finished with value: -19.765880564242497 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -4.084881450725948. +[I 2025-12-18 04:11:17,071] Trial 44 finished with value: -2.2894720102379633 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -2.2894720102379633. +[I 2025-12-18 04:11:22,254] Trial 45 finished with value: -33.169277797299486 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -2.2894720102379633. +[I 2025-12-18 04:11:28,969] Trial 46 finished with value: -27.41743721318746 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 44 with value: -2.2894720102379633. +[I 2025-12-18 04:11:33,730] Trial 47 finished with value: -76.72195878627832 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 44 with value: -2.2894720102379633. +[I 2025-12-18 04:11:39,026] Trial 48 finished with value: -29.429362753570835 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 44 with value: -2.2894720102379633. +[I 2025-12-18 04:11:43,678] Trial 49 finished with value: -10.498069101953572 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 44 with value: -2.2894720102379633. +[I 2025-12-18 04:11:49,021] A new study created in memory with name: no-name-ae6a8579-8954-4166-b8a4-4e0010e37643 +[I 2025-12-18 04:12:04,077] Trial 0 finished with value: -526.6535592236594 and parameters: {'embedding_dim': 503, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -526.6535592236594. +[I 2025-12-18 04:12:13,458] Trial 1 finished with value: -965.1731009870346 and parameters: {'embedding_dim': 274, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -526.6535592236594. +[I 2025-12-18 04:12:34,840] Trial 2 finished with value: -175.49993855186008 and parameters: {'embedding_dim': 209, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:12:46,203] Trial 3 finished with value: -1137.5607738998526 and parameters: {'embedding_dim': 449, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:12:51,550] Trial 4 finished with value: -3520.810325337823 and parameters: {'embedding_dim': 474, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:13:10,106] Trial 5 finished with value: -981.0782360569036 and parameters: {'embedding_dim': 350, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:13:21,455] Trial 6 finished with value: -507.78384636253514 and parameters: {'embedding_dim': 194, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:13:30,052] Trial 7 finished with value: -424.9791038019945 and parameters: {'embedding_dim': 375, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:13:48,838] Trial 8 finished with value: -238.67411231366597 and parameters: {'embedding_dim': 181, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:13:58,671] Trial 9 finished with value: -383.98498020877486 and parameters: {'embedding_dim': 364, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:14:17,455] Trial 10 finished with value: -1094.1240162663903 and parameters: {'embedding_dim': 133, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:14:34,490] Trial 11 finished with value: -429.6333786413718 and parameters: {'embedding_dim': 244, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:14:48,526] Trial 12 finished with value: -224.839495710413 and parameters: {'embedding_dim': 139, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:15:07,270] Trial 13 finished with value: -258.13746335307997 and parameters: {'embedding_dim': 130, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:15:18,882] Trial 14 finished with value: -318.65500455561437 and parameters: {'embedding_dim': 222, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:15:32,566] Trial 15 finished with value: -853.4703148826945 and parameters: {'embedding_dim': 273, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:15:51,312] Trial 16 finished with value: -252.60375889445285 and parameters: {'embedding_dim': 180, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:15:59,634] Trial 17 finished with value: -400.32720901739447 and parameters: {'embedding_dim': 293, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:16:22,615] Trial 18 finished with value: -474.0489002077139 and parameters: {'embedding_dim': 156, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:16:34,238] Trial 19 finished with value: -574.8955458597748 and parameters: {'embedding_dim': 225, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:16:49,211] Trial 20 finished with value: -1663.7842852444853 and parameters: {'embedding_dim': 325, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:17:05,737] Trial 21 finished with value: -198.0339289513673 and parameters: {'embedding_dim': 190, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:17:22,228] Trial 22 finished with value: -390.0988348672782 and parameters: {'embedding_dim': 205, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:17:38,774] Trial 23 finished with value: -256.08041395669267 and parameters: {'embedding_dim': 164, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:17:52,532] Trial 24 finished with value: -291.82030607446023 and parameters: {'embedding_dim': 243, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:18:09,076] Trial 25 finished with value: -207.2903329988008 and parameters: {'embedding_dim': 151, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:18:26,118] Trial 26 finished with value: -543.6318604256203 and parameters: {'embedding_dim': 407, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -175.49993855186008. +[I 2025-12-18 04:18:42,993] Trial 27 finished with value: -153.55486544086202 and parameters: {'embedding_dim': 213, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 27 with value: -153.55486544086202. +[I 2025-12-18 04:18:56,840] Trial 28 finished with value: -708.7544395042854 and parameters: {'embedding_dim': 255, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 27 with value: -153.55486544086202. +[I 2025-12-18 04:19:15,838] Trial 29 finished with value: -527.9408479381669 and parameters: {'embedding_dim': 310, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 27 with value: -153.55486544086202. +[I 2025-12-18 04:19:34,166] A new study created in memory with name: no-name-e9076e98-7d8f-49ae-9a1d-669c8966a072 +[I 2025-12-18 04:19:37,573] Trial 0 finished with value: -63.735866583022606 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -63.735866583022606. +[I 2025-12-18 04:19:43,064] Trial 1 finished with value: -26.003181394726017 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -26.003181394726017. +[I 2025-12-18 04:19:48,589] Trial 2 finished with value: -43.16172644347499 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -26.003181394726017. +[I 2025-12-18 04:19:54,057] Trial 3 finished with value: -141.2292554604851 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -26.003181394726017. +[I 2025-12-18 04:19:59,148] Trial 4 finished with value: -235.80541032122338 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -26.003181394726017. +[I 2025-12-18 04:20:05,814] Trial 5 finished with value: -212.8895167518603 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -26.003181394726017. +[I 2025-12-18 04:20:09,234] Trial 6 finished with value: -8.708301472382377 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:20:12,649] Trial 7 finished with value: -32.90647967889222 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:20:19,334] Trial 8 finished with value: -127.26096620453308 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:20:22,791] Trial 9 finished with value: -83.09950393803575 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:20:26,289] Trial 10 finished with value: -607.1778241511079 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:20:31,798] Trial 11 finished with value: -116.08414192372217 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:20:39,151] Trial 12 finished with value: -87.69479639021313 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:20:42,593] Trial 13 finished with value: -44.04909141575184 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:20:48,056] Trial 14 finished with value: -23.012087059766973 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:20:51,483] Trial 15 finished with value: -99.40257721079914 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:20:58,901] Trial 16 finished with value: -203.849287866314 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:21:04,045] Trial 17 finished with value: -123.35776604824194 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:21:07,661] Trial 18 finished with value: -574.7956969524759 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:21:12,666] Trial 19 finished with value: -50.31784996871129 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:21:19,432] Trial 20 finished with value: -23.006847307993624 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:21:26,345] Trial 21 finished with value: -36.69258148986405 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:21:33,214] Trial 22 finished with value: -63.26815899346464 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:21:40,226] Trial 23 finished with value: -64.72882164432183 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:21:45,532] Trial 24 finished with value: -78.9396934481297 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:21:50,974] Trial 25 finished with value: -14.482616565215778 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:21:56,033] Trial 26 finished with value: -101.66623027558283 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -8.708301472382377. +[I 2025-12-18 04:21:59,540] Trial 27 finished with value: -7.331627402030013 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -7.331627402030013. +[I 2025-12-18 04:22:02,879] Trial 28 finished with value: -205.6472284542831 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 27 with value: -7.331627402030013. +[I 2025-12-18 04:22:06,461] Trial 29 finished with value: -39.21297782664432 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 27 with value: -7.331627402030013. +[I 2025-12-18 04:22:09,876] Trial 30 finished with value: -79.5163926534601 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -7.331627402030013. +[I 2025-12-18 04:22:13,310] Trial 31 finished with value: -69.61364279685 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -7.331627402030013. +[I 2025-12-18 04:22:16,861] Trial 32 finished with value: -299.8182590096131 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -7.331627402030013. +[I 2025-12-18 04:22:22,011] Trial 33 finished with value: -53.48982817424692 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -7.331627402030013. +[I 2025-12-18 04:22:25,410] Trial 34 finished with value: -188.5133722618799 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -7.331627402030013. +[I 2025-12-18 04:22:30,988] Trial 35 finished with value: -12.359760429978131 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 27 with value: -7.331627402030013. +[I 2025-12-18 04:22:36,484] Trial 36 finished with value: -181.8738648476388 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 27 with value: -7.331627402030013. +[I 2025-12-18 04:22:41,945] Trial 37 finished with value: -311.45704109834145 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 27 with value: -7.331627402030013. +[I 2025-12-18 04:22:47,584] Trial 38 finished with value: -5.72875940004749 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 38 with value: -5.72875940004749. +[I 2025-12-18 04:22:53,046] Trial 39 finished with value: -28.800448607794742 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 38 with value: -5.72875940004749. +[I 2025-12-18 04:22:56,678] Trial 40 finished with value: -113.12842462418543 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 38 with value: -5.72875940004749. +[I 2025-12-18 04:23:02,154] Trial 41 finished with value: -73.26326959239282 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 38 with value: -5.72875940004749. +[I 2025-12-18 04:23:07,911] Trial 42 finished with value: -24.35401970375804 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 38 with value: -5.72875940004749. +[I 2025-12-18 04:23:13,367] Trial 43 finished with value: -24.64392419974173 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 38 with value: -5.72875940004749. +[I 2025-12-18 04:23:18,871] Trial 44 finished with value: -28.140811034117366 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 38 with value: -5.72875940004749. +[I 2025-12-18 04:23:23,866] Trial 45 finished with value: -56.09684366334129 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 38 with value: -5.72875940004749. +[I 2025-12-18 04:23:27,429] Trial 46 finished with value: -5.199064425219974 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 46 with value: -5.199064425219974. +[I 2025-12-18 04:23:31,196] Trial 47 finished with value: -15.109828303025475 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 46 with value: -5.199064425219974. +[I 2025-12-18 04:23:34,891] Trial 48 finished with value: -251.77025928651224 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 46 with value: -5.199064425219974. +[I 2025-12-18 04:23:38,213] Trial 49 finished with value: -14.055296615679172 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 46 with value: -5.199064425219974. +[I 2025-12-18 04:23:42,271] A new study created in memory with name: no-name-a063daac-116a-4ae6-a9e3-5e580788dc65 +[I 2025-12-18 04:24:28,047] Trial 0 finished with value: -139.47905108848232 and parameters: {'embedding_dim': 356, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -139.47905108848232. +[I 2025-12-18 04:25:36,844] Trial 1 finished with value: -127.47704955799753 and parameters: {'embedding_dim': 505, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:26:46,954] Trial 2 finished with value: -1135.172308932939 and parameters: {'embedding_dim': 332, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:27:03,883] Trial 3 finished with value: -518.6148170747557 and parameters: {'embedding_dim': 437, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:27:44,483] Trial 4 finished with value: -650.4784758041819 and parameters: {'embedding_dim': 316, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:28:03,978] Trial 5 finished with value: -807.4972451644614 and parameters: {'embedding_dim': 250, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:28:21,664] Trial 6 finished with value: -2212.8825763468344 and parameters: {'embedding_dim': 266, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:28:56,701] Trial 7 finished with value: -684.039575998659 and parameters: {'embedding_dim': 333, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:29:31,069] Trial 8 finished with value: -763.8331756845621 and parameters: {'embedding_dim': 151, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:30:17,646] Trial 9 finished with value: -339.2082636005923 and parameters: {'embedding_dim': 375, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:30:32,307] Trial 10 finished with value: -3138.65515602725 and parameters: {'embedding_dim': 504, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:31:18,985] Trial 11 finished with value: -258.7473008442672 and parameters: {'embedding_dim': 470, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:32:17,528] Trial 12 finished with value: -796.0798001243425 and parameters: {'embedding_dim': 424, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:32:51,335] Trial 13 finished with value: -2286.089416128079 and parameters: {'embedding_dim': 159, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:33:37,146] Trial 14 finished with value: -2954.146933621371 and parameters: {'embedding_dim': 395, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:34:12,652] Trial 15 finished with value: -1645.437381402957 and parameters: {'embedding_dim': 504, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:34:36,311] Trial 16 finished with value: -4944.072922495291 and parameters: {'embedding_dim': 218, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:35:10,360] Trial 17 finished with value: -2147.3181278240536 and parameters: {'embedding_dim': 371, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:35:24,369] Trial 18 finished with value: -466.23048801487266 and parameters: {'embedding_dim': 459, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:35:59,885] Trial 19 finished with value: -896.8925630373876 and parameters: {'embedding_dim': 279, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:37:08,119] Trial 20 finished with value: -198.7821901456314 and parameters: {'embedding_dim': 197, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:38:17,527] Trial 21 finished with value: -1019.6839434625649 and parameters: {'embedding_dim': 209, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:39:26,059] Trial 22 finished with value: -301.9860193820961 and parameters: {'embedding_dim': 189, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:40:23,532] Trial 23 finished with value: -790.483874232549 and parameters: {'embedding_dim': 236, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:41:32,564] Trial 24 finished with value: -195.3939212055289 and parameters: {'embedding_dim': 131, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:42:17,971] Trial 25 finished with value: -3745.1612358490884 and parameters: {'embedding_dim': 282, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:43:14,623] Trial 26 finished with value: -426.8382004283499 and parameters: {'embedding_dim': 310, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:44:24,889] Trial 27 finished with value: -558.2863234157112 and parameters: {'embedding_dim': 408, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:44:52,867] Trial 28 finished with value: -2627.615690221205 and parameters: {'embedding_dim': 133, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:45:13,722] Trial 29 finished with value: -409.2675055329187 and parameters: {'embedding_dim': 348, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -127.47704955799753. +[I 2025-12-18 04:46:24,130] A new study created in memory with name: no-name-d88ab3b5-5cbf-4be7-a4d3-9421abdc05a2 +[I 2025-12-18 04:46:30,585] Trial 0 finished with value: -10.561478766081269 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:46:35,490] Trial 1 finished with value: -112.01089039613156 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:46:42,150] Trial 2 finished with value: -16.53928250015679 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:46:47,493] Trial 3 finished with value: -28.066141224766184 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:46:50,683] Trial 4 finished with value: -221.1205469186096 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:46:57,442] Trial 5 finished with value: -76.33927504746973 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:47:02,312] Trial 6 finished with value: -163.38553874461408 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:47:07,655] Trial 7 finished with value: -186.86411643164735 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:47:14,373] Trial 8 finished with value: -127.8101924755967 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:47:17,687] Trial 9 finished with value: -21.526863178218036 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:47:24,248] Trial 10 finished with value: -64.90070262184148 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:47:30,649] Trial 11 finished with value: -76.21976135184245 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:47:37,446] Trial 12 finished with value: -57.69713796574893 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:47:43,997] Trial 13 finished with value: -18.261261994355344 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:47:51,417] Trial 14 finished with value: -93.55233500605203 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:47:56,619] Trial 15 finished with value: -20.77022004213259 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:48:03,212] Trial 16 finished with value: -75.045760002752 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:48:06,479] Trial 17 finished with value: -48.69460467261395 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:48:11,617] Trial 18 finished with value: -196.7123138089014 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:48:19,003] Trial 19 finished with value: -78.32724225367117 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:48:24,000] Trial 20 finished with value: -41.45745039091709 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:48:30,454] Trial 21 finished with value: -46.169565643409925 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:48:36,987] Trial 22 finished with value: -41.42248189760822 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:48:43,413] Trial 23 finished with value: -12.826582351050972 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:48:49,890] Trial 24 finished with value: -41.90990281143064 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:48:56,388] Trial 25 finished with value: -43.980892407831774 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:49:02,868] Trial 26 finished with value: -183.1248933110248 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:49:07,660] Trial 27 finished with value: -82.9452207351605 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:49:14,871] Trial 28 finished with value: -64.10170443803597 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:49:19,920] Trial 29 finished with value: -31.36687221581477 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:49:26,670] Trial 30 finished with value: -65.30608396162441 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:49:33,125] Trial 31 finished with value: -122.56608075567844 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:49:39,597] Trial 32 finished with value: -38.322052718405416 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:49:46,068] Trial 33 finished with value: -72.55703887169408 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:49:52,520] Trial 34 finished with value: -42.39472502387662 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:49:59,006] Trial 35 finished with value: -67.2387988077623 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:50:02,431] Trial 36 finished with value: -54.774286845030716 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:50:08,939] Trial 37 finished with value: -69.49549630036582 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:50:13,922] Trial 38 finished with value: -36.88276749068735 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:50:20,751] Trial 39 finished with value: -186.91563760291524 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:50:25,823] Trial 40 finished with value: -118.89206592540921 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:50:30,742] Trial 41 finished with value: -113.94116147602104 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:50:35,777] Trial 42 finished with value: -28.95418227818631 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:50:40,878] Trial 43 finished with value: -75.34686016490875 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:50:44,233] Trial 44 finished with value: -40.14345444011659 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:50:51,035] Trial 45 finished with value: -69.99860411642858 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:50:56,382] Trial 46 finished with value: -264.33991269912997 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:51:02,892] Trial 47 finished with value: -60.15997424600581 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:51:09,596] Trial 48 finished with value: -74.3982330838299 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:51:14,480] Trial 49 finished with value: -207.29047096501665 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -10.561478766081269. +[I 2025-12-18 04:51:21,528] A new study created in memory with name: no-name-1330e8b1-65b2-44d3-9be9-97347c3d54c0 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_2_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_2_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_2_seoul.csv: Class 0=17506 | Class 1=17683 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_2_seoul.csv: Class 0=17535 | Class 1=19375 | Class 2=15823 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_2_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_2_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_2_busan.csv: Class 0=19773 | Class 1=16959 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_2_busan.csv: Class 0=19848 | Class 1=17971 | Class 2=16457 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_2_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_2_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_2_daegu.csv: Class 0=19794 | Class 1=17360 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_2_daegu.csv: Class 0=19823 | Class 1=18072 | Class 2=16803 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_2_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_2_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_2_daejeon.csv: Class 0=18108 | Class 1=15759 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_2_daejeon.csv: Class 0=18224 | Class 1=17470 | Class 2=15717 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-18 04:51:59,057] Trial 0 finished with value: -1392.544708797632 and parameters: {'embedding_dim': 382, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -1392.544708797632. +[I 2025-12-18 04:52:39,790] Trial 1 finished with value: -1022.9484868132945 and parameters: {'embedding_dim': 139, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -1022.9484868132945. +[I 2025-12-18 04:53:15,312] Trial 2 finished with value: -798.0110561883089 and parameters: {'embedding_dim': 479, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -798.0110561883089. +[I 2025-12-18 04:53:23,274] Trial 3 finished with value: -2081.8561095879604 and parameters: {'embedding_dim': 422, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -798.0110561883089. +[I 2025-12-18 04:53:37,461] Trial 4 finished with value: -977.5038095380651 and parameters: {'embedding_dim': 264, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 2 with value: -798.0110561883089. +[I 2025-12-18 04:54:11,919] Trial 5 finished with value: -1000.9518859693735 and parameters: {'embedding_dim': 161, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -798.0110561883089. +[I 2025-12-18 04:54:46,289] Trial 6 finished with value: -1171.654622180594 and parameters: {'embedding_dim': 484, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -798.0110561883089. +[I 2025-12-18 04:55:09,119] Trial 7 finished with value: -102.05161926979335 and parameters: {'embedding_dim': 372, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -102.05161926979335. +[I 2025-12-18 04:55:26,158] Trial 8 finished with value: -530.7675055770017 and parameters: {'embedding_dim': 367, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 7 with value: -102.05161926979335. +[I 2025-12-18 04:55:47,557] Trial 9 finished with value: -393.2799133535036 and parameters: {'embedding_dim': 250, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 7 with value: -102.05161926979335. +[I 2025-12-18 04:56:22,195] Trial 10 finished with value: -537.2270484956714 and parameters: {'embedding_dim': 301, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -102.05161926979335. +[I 2025-12-18 04:56:57,130] Trial 11 finished with value: -109.60845722927496 and parameters: {'embedding_dim': 235, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -102.05161926979335. +[I 2025-12-18 04:57:20,622] Trial 12 finished with value: -590.5967115531727 and parameters: {'embedding_dim': 206, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -102.05161926979335. +[I 2025-12-18 04:57:54,898] Trial 13 finished with value: -200.30465331906683 and parameters: {'embedding_dim': 327, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -102.05161926979335. +[I 2025-12-18 04:58:41,507] Trial 14 finished with value: -96.09960991329243 and parameters: {'embedding_dim': 220, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -96.09960991329243. +[I 2025-12-18 04:59:27,748] Trial 15 finished with value: -164.2848152599352 and parameters: {'embedding_dim': 306, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -96.09960991329243. +[I 2025-12-18 05:00:13,577] Trial 16 finished with value: -226.10862365427855 and parameters: {'embedding_dim': 185, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -96.09960991329243. +[I 2025-12-18 05:01:23,109] Trial 17 finished with value: -168.78750246560915 and parameters: {'embedding_dim': 420, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 14 with value: -96.09960991329243. +[I 2025-12-18 05:01:38,095] Trial 18 finished with value: -599.9181571864398 and parameters: {'embedding_dim': 334, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 14 with value: -96.09960991329243. +[I 2025-12-18 05:02:23,767] Trial 19 finished with value: -45.1740703562058 and parameters: {'embedding_dim': 280, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -45.1740703562058. +[I 2025-12-18 05:03:08,924] Trial 20 finished with value: -1030.475577179196 and parameters: {'embedding_dim': 216, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -45.1740703562058. +[I 2025-12-18 05:03:54,982] Trial 21 finished with value: -474.3942416148369 and parameters: {'embedding_dim': 276, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 19 with value: -45.1740703562058. +[I 2025-12-18 05:04:23,553] Trial 22 finished with value: -15.474083947469088 and parameters: {'embedding_dim': 374, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 22 with value: -15.474083947469088. +[I 2025-12-18 05:05:12,595] Trial 23 finished with value: -146.115377173385 and parameters: {'embedding_dim': 291, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -15.474083947469088. +[I 2025-12-18 05:06:11,709] Trial 24 finished with value: -91.13605055571794 and parameters: {'embedding_dim': 344, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 22 with value: -15.474083947469088. +[I 2025-12-18 05:06:32,897] Trial 25 finished with value: -517.2486162536821 and parameters: {'embedding_dim': 418, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 22 with value: -15.474083947469088. +[I 2025-12-18 05:07:31,521] Trial 26 finished with value: -154.68732516393743 and parameters: {'embedding_dim': 348, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 22 with value: -15.474083947469088. +[I 2025-12-18 05:08:42,547] Trial 27 finished with value: -833.2360159849594 and parameters: {'embedding_dim': 401, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 22 with value: -15.474083947469088. +[I 2025-12-18 05:09:41,994] Trial 28 finished with value: -43.78244619037278 and parameters: {'embedding_dim': 461, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 22 with value: -15.474083947469088. +[I 2025-12-18 05:10:00,736] Trial 29 finished with value: -570.2312341833735 and parameters: {'embedding_dim': 456, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 22 with value: -15.474083947469088. +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_2_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_2_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_2_gwangju.csv: Class 0=16318 | Class 1=17653 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_2_gwangju.csv: Class 0=16397 | Class 1=19358 | Class 2=15760 + +Running ctgan_sample_20000_3.py... +[I 2025-12-18 05:10:29,518] A new study created in memory with name: no-name-f549697f-bcf8-4881-9399-431f9db864a8 +[I 2025-12-18 05:10:34,471] Trial 0 finished with value: -21.007255778488698 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -21.007255778488698. +[I 2025-12-18 05:10:44,498] Trial 1 finished with value: -12.629549372716752 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -12.629549372716752. +[I 2025-12-18 05:10:58,999] Trial 2 finished with value: -432.4144432646718 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -12.629549372716752. +[I 2025-12-18 05:11:23,994] Trial 3 finished with value: -114.68729513493189 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -12.629549372716752. +[I 2025-12-18 05:11:33,992] Trial 4 finished with value: -1.0850892337793485 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -1.0850892337793485. +[I 2025-12-18 05:11:37,874] Trial 5 finished with value: -39.92662603758006 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -1.0850892337793485. +[I 2025-12-18 05:11:53,106] Trial 6 finished with value: -8.963274156139224 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -1.0850892337793485. +[I 2025-12-18 05:12:00,745] Trial 7 finished with value: -4.199804119474114 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -1.0850892337793485. +[I 2025-12-18 05:12:12,680] Trial 8 finished with value: -266.649323359913 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -1.0850892337793485. +[I 2025-12-18 05:12:26,151] Trial 9 finished with value: -6.08899406362311 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -1.0850892337793485. +[I 2025-12-18 05:12:36,216] Trial 10 finished with value: -113.29093102511374 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -1.0850892337793485. +[I 2025-12-18 05:12:41,997] Trial 11 finished with value: -14.98245225141249 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -1.0850892337793485. +[I 2025-12-18 05:12:51,907] Trial 12 finished with value: -0.4610671866703371 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:13:01,948] Trial 13 finished with value: -106.49028031450938 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:13:07,719] Trial 14 finished with value: -35.296066045634866 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:13:21,180] Trial 15 finished with value: -6.210984846670829 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:13:27,255] Trial 16 finished with value: -16.5764068311653 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:13:42,814] Trial 17 finished with value: -16.41977736060856 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:13:48,626] Trial 18 finished with value: -6.064672384936593 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:14:08,453] Trial 19 finished with value: -63.38380169659574 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:14:15,994] Trial 20 finished with value: -21.70280699968727 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:14:23,656] Trial 21 finished with value: -50.087512563391385 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:14:32,992] Trial 22 finished with value: -8.670793278351384 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:14:40,641] Trial 23 finished with value: -24.695717453866013 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:14:48,279] Trial 24 finished with value: -16.061303433658576 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:14:58,314] Trial 25 finished with value: -11.7236665050597 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:15:05,975] Trial 26 finished with value: -13.849590099250264 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:15:13,474] Trial 27 finished with value: -87.00685396074435 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:15:38,536] Trial 28 finished with value: -68.18368843924092 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:15:45,102] Trial 29 finished with value: -153.8708206302535 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:15:50,899] Trial 30 finished with value: -12.731914065236378 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:15:56,665] Trial 31 finished with value: -25.582520119755788 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:16:02,427] Trial 32 finished with value: -16.888273814049622 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:16:08,233] Trial 33 finished with value: -25.182693786320222 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:16:12,136] Trial 34 finished with value: -9.766846989449423 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:16:17,910] Trial 35 finished with value: -82.91655647122107 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:16:38,082] Trial 36 finished with value: -2.3272723261453443 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:16:50,088] Trial 37 finished with value: -59.665116081650424 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:17:16,563] Trial 38 finished with value: -39.700641884514155 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:17:43,563] Trial 39 finished with value: -87.82197484836337 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:18:02,159] Trial 40 finished with value: -74.61014354308156 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:18:20,678] Trial 41 finished with value: -13.893591126033357 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:18:30,713] Trial 42 finished with value: -5.802071960621702 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:18:40,778] Trial 43 finished with value: -33.21725377663893 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:18:53,164] Trial 44 finished with value: -15.290827584962713 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:19:03,204] Trial 45 finished with value: -87.40622535761462 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:19:09,793] Trial 46 finished with value: -46.724630189520944 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:19:19,833] Trial 47 finished with value: -41.19090898431512 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:19:29,883] Trial 48 finished with value: -14.59387994692349 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:19:43,266] Trial 49 finished with value: -6.175691003736937 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4610671866703371. +[I 2025-12-18 05:19:51,159] A new study created in memory with name: no-name-34a52129-afa0-4a70-b2a0-42bf6a7049f9 +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-18 05:20:29,341] Trial 0 finished with value: -1002.2946228263336 and parameters: {'embedding_dim': 374, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -1002.2946228263336. +[I 2025-12-18 05:21:08,550] Trial 1 finished with value: -343.1124263790541 and parameters: {'embedding_dim': 229, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -343.1124263790541. +[I 2025-12-18 05:22:15,897] Trial 2 finished with value: -559.3710862820304 and parameters: {'embedding_dim': 421, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -343.1124263790541. +[I 2025-12-18 05:23:54,343] Trial 3 finished with value: -584.4828729343699 and parameters: {'embedding_dim': 399, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -343.1124263790541. +[I 2025-12-18 05:24:33,494] Trial 4 finished with value: -737.1863164431629 and parameters: {'embedding_dim': 475, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -343.1124263790541. +[I 2025-12-18 05:26:30,633] Trial 5 finished with value: -200.6387596170166 and parameters: {'embedding_dim': 432, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 5 with value: -200.6387596170166. +[I 2025-12-18 05:27:40,663] Trial 6 finished with value: -42.396571694191266 and parameters: {'embedding_dim': 474, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 6 with value: -42.396571694191266. +[I 2025-12-18 05:28:58,109] Trial 7 finished with value: -518.3226322659593 and parameters: {'embedding_dim': 169, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -42.396571694191266. +[I 2025-12-18 05:29:36,123] Trial 8 finished with value: -178.20692624313693 and parameters: {'embedding_dim': 219, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 6 with value: -42.396571694191266. +[I 2025-12-18 05:30:10,970] Trial 9 finished with value: -291.6654918879053 and parameters: {'embedding_dim': 360, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -42.396571694191266. +[I 2025-12-18 05:31:07,215] Trial 10 finished with value: -146.64581044693236 and parameters: {'embedding_dim': 301, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 6 with value: -42.396571694191266. +[I 2025-12-18 05:32:04,043] Trial 11 finished with value: -382.8293834502654 and parameters: {'embedding_dim': 287, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 6 with value: -42.396571694191266. +[I 2025-12-18 05:33:01,431] Trial 12 finished with value: -39.824200018529275 and parameters: {'embedding_dim': 509, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 12 with value: -39.824200018529275. +[I 2025-12-18 05:33:46,692] Trial 13 finished with value: -182.27247255922111 and parameters: {'embedding_dim': 498, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 12 with value: -39.824200018529275. +[I 2025-12-18 05:34:43,346] Trial 14 finished with value: -1000.2245580757562 and parameters: {'embedding_dim': 497, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 12 with value: -39.824200018529275. +[I 2025-12-18 05:35:40,024] Trial 15 finished with value: -92.94398558722186 and parameters: {'embedding_dim': 447, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 12 with value: -39.824200018529275. +[I 2025-12-18 05:36:17,154] Trial 16 finished with value: -928.4562872657567 and parameters: {'embedding_dim': 511, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 12 with value: -39.824200018529275. +[I 2025-12-18 05:37:03,402] Trial 17 finished with value: -7.03819432108719 and parameters: {'embedding_dim': 458, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 17 with value: -7.03819432108719. +[I 2025-12-18 05:37:37,101] Trial 18 finished with value: -219.67558098097157 and parameters: {'embedding_dim': 375, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 17 with value: -7.03819432108719. +[I 2025-12-18 05:38:02,915] Trial 19 finished with value: -783.2313658528614 and parameters: {'embedding_dim': 350, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 17 with value: -7.03819432108719. +[I 2025-12-18 05:38:25,725] Trial 20 finished with value: -4204.298020120994 and parameters: {'embedding_dim': 459, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 17 with value: -7.03819432108719. +[I 2025-12-18 05:39:12,289] Trial 21 finished with value: -799.504899961848 and parameters: {'embedding_dim': 456, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 17 with value: -7.03819432108719. +[I 2025-12-18 05:40:09,914] Trial 22 finished with value: -251.60935584302047 and parameters: {'embedding_dim': 412, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 17 with value: -7.03819432108719. +[I 2025-12-18 05:40:56,519] Trial 23 finished with value: -396.5962779943544 and parameters: {'embedding_dim': 477, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 17 with value: -7.03819432108719. +[I 2025-12-18 05:41:56,521] Trial 24 finished with value: -83.3031762614885 and parameters: {'embedding_dim': 503, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 17 with value: -7.03819432108719. +[I 2025-12-18 05:43:05,250] Trial 25 finished with value: -315.37996503185036 and parameters: {'embedding_dim': 404, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 17 with value: -7.03819432108719. +[I 2025-12-18 05:43:40,927] Trial 26 finished with value: -136.65991755164507 and parameters: {'embedding_dim': 336, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 17 with value: -7.03819432108719. +[I 2025-12-18 05:44:30,248] Trial 27 finished with value: -37.84243355099008 and parameters: {'embedding_dim': 471, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 17 with value: -7.03819432108719. +[I 2025-12-18 05:44:55,498] Trial 28 finished with value: -470.8692160322643 and parameters: {'embedding_dim': 438, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 17 with value: -7.03819432108719. +[I 2025-12-18 05:45:54,469] Trial 29 finished with value: -1054.5426618132929 and parameters: {'embedding_dim': 379, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 17 with value: -7.03819432108719. +[I 2025-12-18 05:46:43,452] A new study created in memory with name: no-name-273586d6-6303-407b-a5d5-72bb5aefeb75 +[I 2025-12-18 05:46:50,432] Trial 0 finished with value: -172.28164997104778 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -172.28164997104778. +[I 2025-12-18 05:46:53,484] Trial 1 finished with value: -493.02228401690405 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -172.28164997104778. +[I 2025-12-18 05:46:59,773] Trial 2 finished with value: -185.74493561674385 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -172.28164997104778. +[I 2025-12-18 05:47:03,070] Trial 3 finished with value: -416.17810696183926 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -172.28164997104778. +[I 2025-12-18 05:47:07,790] Trial 4 finished with value: -412.8170508381159 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -172.28164997104778. +[I 2025-12-18 05:47:14,783] Trial 5 finished with value: -70.22141667505406 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -70.22141667505406. +[I 2025-12-18 05:47:19,473] Trial 6 finished with value: -702.8040602387066 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -70.22141667505406. +[I 2025-12-18 05:47:24,138] Trial 7 finished with value: -481.19744807015115 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -70.22141667505406. +[I 2025-12-18 05:47:27,446] Trial 8 finished with value: -146.91504342400117 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -70.22141667505406. +[I 2025-12-18 05:47:34,454] Trial 9 finished with value: -157.04487160867953 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -70.22141667505406. +[I 2025-12-18 05:47:40,991] Trial 10 finished with value: -196.4864153280943 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 5 with value: -70.22141667505406. +[I 2025-12-18 05:47:44,281] Trial 11 finished with value: -119.09800608348334 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -70.22141667505406. +[I 2025-12-18 05:47:47,597] Trial 12 finished with value: -266.4433949660183 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -70.22141667505406. +[I 2025-12-18 05:47:53,989] Trial 13 finished with value: -214.2884613406991 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -70.22141667505406. +[I 2025-12-18 05:47:59,160] Trial 14 finished with value: -32.684727131589156 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:48:04,335] Trial 15 finished with value: -304.65034817283043 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:48:11,950] Trial 16 finished with value: -171.29490891543495 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:48:18,051] Trial 17 finished with value: -82.60490257633542 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:48:25,112] Trial 18 finished with value: -372.4365381917648 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:48:30,314] Trial 19 finished with value: -43.61973085460277 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:48:36,792] Trial 20 finished with value: -499.0991665174467 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:48:41,982] Trial 21 finished with value: -321.1741204759533 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:48:47,170] Trial 22 finished with value: -393.17288982446274 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:48:52,361] Trial 23 finished with value: -205.2213952537321 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:49:01,453] Trial 24 finished with value: -107.71916494394713 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:49:06,632] Trial 25 finished with value: -129.78234276021254 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:49:13,416] Trial 26 finished with value: -180.3662547340677 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:49:20,422] Trial 27 finished with value: -254.00980521560672 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:49:25,272] Trial 28 finished with value: -186.07087009630231 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:49:33,828] Trial 29 finished with value: -98.53643807316038 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:49:40,923] Trial 30 finished with value: -97.28256707024968 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:49:45,802] Trial 31 finished with value: -39.14361560512981 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:49:50,671] Trial 32 finished with value: -307.7104338960919 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:49:55,533] Trial 33 finished with value: -34.08097183116256 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:50:00,407] Trial 34 finished with value: -295.9861190810175 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:50:03,548] Trial 35 finished with value: -181.97926533276436 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:50:08,417] Trial 36 finished with value: -231.41419337247027 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:50:13,253] Trial 37 finished with value: -470.4064255333032 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:50:17,933] Trial 38 finished with value: -84.57560333330647 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:50:21,090] Trial 39 finished with value: -406.3062041511953 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:50:25,773] Trial 40 finished with value: -79.67079680656849 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:50:32,212] Trial 41 finished with value: -132.7892564250319 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:50:36,888] Trial 42 finished with value: -293.19307779620823 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:50:42,040] Trial 43 finished with value: -350.7647859656338 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -32.684727131589156. +[I 2025-12-18 05:50:46,917] Trial 44 finished with value: -30.555982679907693 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -30.555982679907693. +[I 2025-12-18 05:50:51,784] Trial 45 finished with value: -77.77020592118211 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -30.555982679907693. +[I 2025-12-18 05:50:56,663] Trial 46 finished with value: -32.35094854983115 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -30.555982679907693. +[I 2025-12-18 05:50:59,848] Trial 47 finished with value: -213.26506229309342 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 44 with value: -30.555982679907693. +[I 2025-12-18 05:51:05,041] Trial 48 finished with value: -280.5834695070497 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -30.555982679907693. +[I 2025-12-18 05:51:09,924] Trial 49 finished with value: -63.9408041739183 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 44 with value: -30.555982679907693. +[I 2025-12-18 05:51:15,148] A new study created in memory with name: no-name-cef59868-c2ff-412c-a4ae-379baec550e6 +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_3_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_3_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_3_incheon.csv: Class 0=18161 | Class 1=16113 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_3_incheon.csv: Class 0=18468 | Class 1=18755 | Class 2=14595 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-18 05:51:34,306] Trial 0 finished with value: -1460.1246979043167 and parameters: {'embedding_dim': 178, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -1460.1246979043167. +[I 2025-12-18 05:52:23,500] Trial 1 finished with value: -1741.8932363755673 and parameters: {'embedding_dim': 417, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -1460.1246979043167. +[I 2025-12-18 05:52:47,544] Trial 2 finished with value: -296.06123218613675 and parameters: {'embedding_dim': 296, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -296.06123218613675. +[I 2025-12-18 05:53:17,581] Trial 3 finished with value: -797.8842164095561 and parameters: {'embedding_dim': 385, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -296.06123218613675. +[I 2025-12-18 05:53:28,625] Trial 4 finished with value: -780.8587344762561 and parameters: {'embedding_dim': 232, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -296.06123218613675. +[I 2025-12-18 05:54:39,368] Trial 5 finished with value: -991.8736213033901 and parameters: {'embedding_dim': 503, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -296.06123218613675. +[I 2025-12-18 05:55:27,030] Trial 6 finished with value: -453.19712753746614 and parameters: {'embedding_dim': 496, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -296.06123218613675. +[I 2025-12-18 05:55:41,096] Trial 7 finished with value: -1512.167701823795 and parameters: {'embedding_dim': 372, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 2 with value: -296.06123218613675. +[I 2025-12-18 05:56:15,166] Trial 8 finished with value: -277.91800786408453 and parameters: {'embedding_dim': 430, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -277.91800786408453. +[I 2025-12-18 05:56:30,705] Trial 9 finished with value: -676.4048042215389 and parameters: {'embedding_dim': 260, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 8 with value: -277.91800786408453. +[I 2025-12-18 05:57:40,930] Trial 10 finished with value: -1272.0973253586935 and parameters: {'embedding_dim': 438, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 8 with value: -277.91800786408453. +[I 2025-12-18 05:58:05,838] Trial 11 finished with value: -1445.1979213769457 and parameters: {'embedding_dim': 319, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 8 with value: -277.91800786408453. +[I 2025-12-18 05:58:39,775] Trial 12 finished with value: -83.26327592251448 and parameters: {'embedding_dim': 298, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -83.26327592251448. +[I 2025-12-18 05:59:16,628] Trial 13 finished with value: -379.4543221680915 and parameters: {'embedding_dim': 146, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -83.26327592251448. +[I 2025-12-18 05:59:53,015] Trial 14 finished with value: -369.61265070960485 and parameters: {'embedding_dim': 352, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -83.26327592251448. +[I 2025-12-18 06:00:29,250] Trial 15 finished with value: -791.2222722847432 and parameters: {'embedding_dim': 234, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 12 with value: -83.26327592251448. +[I 2025-12-18 06:01:03,437] Trial 16 finished with value: -421.9442448036725 and parameters: {'embedding_dim': 453, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -83.26327592251448. +[I 2025-12-18 06:02:04,174] Trial 17 finished with value: -665.7020794915035 and parameters: {'embedding_dim': 276, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -83.26327592251448. +[I 2025-12-18 06:02:28,772] Trial 18 finished with value: -509.50428456059086 and parameters: {'embedding_dim': 337, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 12 with value: -83.26327592251448. +[I 2025-12-18 06:02:45,267] Trial 19 finished with value: -502.6201337042212 and parameters: {'embedding_dim': 404, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 12 with value: -83.26327592251448. +[I 2025-12-18 06:03:09,887] Trial 20 finished with value: -448.17456300276785 and parameters: {'embedding_dim': 471, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 12 with value: -83.26327592251448. +[I 2025-12-18 06:03:33,446] Trial 21 finished with value: -964.9737400307226 and parameters: {'embedding_dim': 302, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 12 with value: -83.26327592251448. +[I 2025-12-18 06:03:56,308] Trial 22 finished with value: -416.62428892233356 and parameters: {'embedding_dim': 289, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 12 with value: -83.26327592251448. +[I 2025-12-18 06:04:33,193] Trial 23 finished with value: -1012.6885633368638 and parameters: {'embedding_dim': 208, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -83.26327592251448. +[I 2025-12-18 06:05:10,340] Trial 24 finished with value: -551.5547562223667 and parameters: {'embedding_dim': 337, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -83.26327592251448. +[I 2025-12-18 06:05:33,775] Trial 25 finished with value: -75.60396251007212 and parameters: {'embedding_dim': 256, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 25 with value: -75.60396251007212. +[I 2025-12-18 06:06:07,326] Trial 26 finished with value: -2398.828282630014 and parameters: {'embedding_dim': 235, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -75.60396251007212. +[I 2025-12-18 06:06:29,772] Trial 27 finished with value: -738.5800373159458 and parameters: {'embedding_dim': 193, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 25 with value: -75.60396251007212. +[I 2025-12-18 06:06:51,587] Trial 28 finished with value: -801.1167616506505 and parameters: {'embedding_dim': 367, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 25 with value: -75.60396251007212. +[I 2025-12-18 06:07:00,457] Trial 29 finished with value: -456.24906820138733 and parameters: {'embedding_dim': 150, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 25 with value: -75.60396251007212. +[I 2025-12-18 06:07:24,389] A new study created in memory with name: no-name-dc70c5e8-0d1b-42c2-892b-d5fb30e9c9c1 +[I 2025-12-18 06:07:29,425] Trial 0 finished with value: -42.156565653790615 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -42.156565653790615. +[I 2025-12-18 06:07:34,347] Trial 1 finished with value: -152.108837366538 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -42.156565653790615. +[I 2025-12-18 06:07:39,930] Trial 2 finished with value: -42.914250414741005 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -42.156565653790615. +[I 2025-12-18 06:07:43,201] Trial 3 finished with value: -51.704827961473164 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -42.156565653790615. +[I 2025-12-18 06:07:50,470] Trial 4 finished with value: -34.41792677170275 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -34.41792677170275. +[I 2025-12-18 06:07:53,699] Trial 5 finished with value: -32.083117997759096 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 5 with value: -32.083117997759096. +[I 2025-12-18 06:08:00,222] Trial 6 finished with value: -55.00644103338647 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -32.083117997759096. +[I 2025-12-18 06:08:05,554] Trial 7 finished with value: -9.783759889833005 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:08:10,575] Trial 8 finished with value: -16.677205277820796 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:08:17,797] Trial 9 finished with value: -53.16614012470307 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:08:21,260] Trial 10 finished with value: -64.95531983788986 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:08:26,300] Trial 11 finished with value: -113.36758081600298 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:08:31,330] Trial 12 finished with value: -32.555926618997994 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:08:36,395] Trial 13 finished with value: -44.67072504122093 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:08:39,866] Trial 14 finished with value: -51.255185606276534 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:08:46,620] Trial 15 finished with value: -75.6774758935944 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:08:51,776] Trial 16 finished with value: -198.24475388538647 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:08:55,246] Trial 17 finished with value: -53.74745668618681 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:09:02,431] Trial 18 finished with value: -24.684290622958635 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:09:07,478] Trial 19 finished with value: -68.71498283964873 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:09:12,879] Trial 20 finished with value: -95.97225071744813 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:09:20,125] Trial 21 finished with value: -40.291127420780356 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:09:27,408] Trial 22 finished with value: -20.504386418858704 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:09:34,740] Trial 23 finished with value: -23.627427338289067 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -9.783759889833005. +[I 2025-12-18 06:09:40,304] Trial 24 finished with value: -2.682014606118458 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:09:45,373] Trial 25 finished with value: -24.841783221153985 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:09:50,764] Trial 26 finished with value: -92.86782937936165 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:09:56,148] Trial 27 finished with value: -21.753499728367636 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:09:59,374] Trial 28 finished with value: -56.74418105399279 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:10:04,421] Trial 29 finished with value: -46.587706164861515 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:10:09,455] Trial 30 finished with value: -21.837106562790545 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:10:14,792] Trial 31 finished with value: -61.54321534693137 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:10:22,074] Trial 32 finished with value: -17.22061699348646 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:10:27,410] Trial 33 finished with value: -27.9480252332801 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:10:32,810] Trial 34 finished with value: -104.38184763035736 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:10:38,278] Trial 35 finished with value: -6.991163847369643 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:10:43,149] Trial 36 finished with value: -6.951915116616217 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:10:48,041] Trial 37 finished with value: -90.58435082999041 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:10:52,896] Trial 38 finished with value: -51.54621790207741 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:10:56,129] Trial 39 finished with value: -163.04525543021353 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:11:00,961] Trial 40 finished with value: -161.88610719158 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:11:05,846] Trial 41 finished with value: -72.59079776889276 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:11:10,696] Trial 42 finished with value: -59.88241850759454 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:11:16,041] Trial 43 finished with value: -147.85468886604792 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:11:21,375] Trial 44 finished with value: -57.59192098074729 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:11:26,496] Trial 45 finished with value: -26.511447342525848 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:11:31,356] Trial 46 finished with value: -46.504858009634795 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:11:36,683] Trial 47 finished with value: -111.58140647781751 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:11:40,022] Trial 48 finished with value: -90.3528740822847 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:11:45,386] Trial 49 finished with value: -23.26412149813363 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -2.682014606118458. +[I 2025-12-18 06:11:50,980] A new study created in memory with name: no-name-29181b98-2ad6-4aa8-9230-c603d5c46e7c +[I 2025-12-18 06:12:22,546] Trial 0 finished with value: -979.0652498162325 and parameters: {'embedding_dim': 316, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -979.0652498162325. +[I 2025-12-18 06:12:46,132] Trial 1 finished with value: -633.8643566056994 and parameters: {'embedding_dim': 292, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -633.8643566056994. +[I 2025-12-18 06:13:09,749] Trial 2 finished with value: -2895.1503321907326 and parameters: {'embedding_dim': 155, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -633.8643566056994. +[I 2025-12-18 06:13:29,871] Trial 3 finished with value: -812.1216274470603 and parameters: {'embedding_dim': 461, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -633.8643566056994. +[I 2025-12-18 06:13:45,469] Trial 4 finished with value: -408.42371839010883 and parameters: {'embedding_dim': 359, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:14:04,363] Trial 5 finished with value: -3546.8187244525075 and parameters: {'embedding_dim': 318, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:14:32,437] Trial 6 finished with value: -668.4386065017264 and parameters: {'embedding_dim': 359, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:14:50,921] Trial 7 finished with value: -463.41194432694226 and parameters: {'embedding_dim': 226, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:15:06,179] Trial 8 finished with value: -5656.6073486427385 and parameters: {'embedding_dim': 400, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:15:13,459] Trial 9 finished with value: -3861.428932404396 and parameters: {'embedding_dim': 183, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:15:29,677] Trial 10 finished with value: -849.8528782647024 and parameters: {'embedding_dim': 490, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:15:48,301] Trial 11 finished with value: -946.6640184919477 and parameters: {'embedding_dim': 214, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:16:05,311] Trial 12 finished with value: -1000.4271596619358 and parameters: {'embedding_dim': 249, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:16:21,402] Trial 13 finished with value: -1783.1658781451415 and parameters: {'embedding_dim': 407, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:16:40,439] Trial 14 finished with value: -1454.5628150390135 and parameters: {'embedding_dim': 249, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:16:56,888] Trial 15 finished with value: -1353.698162731182 and parameters: {'embedding_dim': 130, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:17:16,428] Trial 16 finished with value: -2305.4015506477645 and parameters: {'embedding_dim': 263, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:17:32,569] Trial 17 finished with value: -758.726242262552 and parameters: {'embedding_dim': 370, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:17:51,485] Trial 18 finished with value: -1142.746757420212 and parameters: {'embedding_dim': 196, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:18:11,837] Trial 19 finished with value: -464.97136450497135 and parameters: {'embedding_dim': 436, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:18:27,659] Trial 20 finished with value: -638.8978127156165 and parameters: {'embedding_dim': 361, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -408.42371839010883. +[I 2025-12-18 06:18:47,728] Trial 21 finished with value: -151.84850952135736 and parameters: {'embedding_dim': 444, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 21 with value: -151.84850952135736. +[I 2025-12-18 06:19:04,837] Trial 22 finished with value: -916.2961942923538 and parameters: {'embedding_dim': 456, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 21 with value: -151.84850952135736. +[I 2025-12-18 06:19:24,431] Trial 23 finished with value: -224.20639632296798 and parameters: {'embedding_dim': 503, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 21 with value: -151.84850952135736. +[I 2025-12-18 06:19:46,103] Trial 24 finished with value: -357.6716452439083 and parameters: {'embedding_dim': 479, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 21 with value: -151.84850952135736. +[I 2025-12-18 06:20:05,895] Trial 25 finished with value: -518.6503462238489 and parameters: {'embedding_dim': 506, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 21 with value: -151.84850952135736. +[I 2025-12-18 06:20:23,845] Trial 26 finished with value: -1194.5448158765687 and parameters: {'embedding_dim': 478, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 21 with value: -151.84850952135736. +[I 2025-12-18 06:20:45,868] Trial 27 finished with value: -1180.1362770422782 and parameters: {'embedding_dim': 511, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 21 with value: -151.84850952135736. +[I 2025-12-18 06:21:02,554] Trial 28 finished with value: -521.531270244104 and parameters: {'embedding_dim': 428, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 21 with value: -151.84850952135736. +[I 2025-12-18 06:21:24,783] Trial 29 finished with value: -164.8510211069216 and parameters: {'embedding_dim': 474, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 21 with value: -151.84850952135736. +[I 2025-12-18 06:21:44,914] A new study created in memory with name: no-name-8615e74a-3cd9-46c3-9f92-2c8d4168138a +[I 2025-12-18 06:21:50,490] Trial 0 finished with value: -56.18295680922462 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -56.18295680922462. +[I 2025-12-18 06:21:59,063] Trial 1 finished with value: -122.82322112309265 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -56.18295680922462. +[I 2025-12-18 06:22:03,914] Trial 2 finished with value: -30.569341579050455 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -30.569341579050455. +[I 2025-12-18 06:22:07,057] Trial 3 finished with value: -25.979136290339902 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:22:13,476] Trial 4 finished with value: -107.72249253356327 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:22:19,886] Trial 5 finished with value: -132.8831150233621 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:22:23,136] Trial 6 finished with value: -335.1341082517222 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:22:26,529] Trial 7 finished with value: -243.8386428408645 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:22:35,212] Trial 8 finished with value: -124.53063416070515 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:22:39,985] Trial 9 finished with value: -151.66433590227274 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:22:43,383] Trial 10 finished with value: -277.55742205969267 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:22:48,155] Trial 11 finished with value: -233.83587480037176 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:22:51,313] Trial 12 finished with value: -150.09097370540718 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:22:56,085] Trial 13 finished with value: -226.72597876496377 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:22:59,218] Trial 14 finished with value: -393.58118002442575 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:23:04,465] Trial 15 finished with value: -95.37779415566266 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:23:07,623] Trial 16 finished with value: -279.03046494256245 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:23:12,404] Trial 17 finished with value: -313.7890278170649 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:23:15,978] Trial 18 finished with value: -51.479355120875795 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:23:23,774] Trial 19 finished with value: -105.35097950178806 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:23:30,141] Trial 20 finished with value: -351.71605982833364 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:23:33,536] Trial 21 finished with value: -119.19505002021712 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:23:36,930] Trial 22 finished with value: -151.76963060683215 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:23:40,307] Trial 23 finished with value: -114.09653593264454 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:23:43,809] Trial 24 finished with value: -61.49335613269502 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:23:47,285] Trial 25 finished with value: -395.11360460992535 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:23:52,075] Trial 26 finished with value: -401.61786827735204 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:23:56,244] Trial 27 finished with value: -186.8020396340978 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:24:02,701] Trial 28 finished with value: -125.73777235287801 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:24:06,213] Trial 29 finished with value: -158.0742236734061 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:24:11,205] Trial 30 finished with value: -176.24661514392108 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:24:16,259] Trial 31 finished with value: -118.0568427336394 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:24:22,786] Trial 32 finished with value: -243.14108769250845 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:24:27,759] Trial 33 finished with value: -223.02016432527495 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:24:36,326] Trial 34 finished with value: -102.54611097334124 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:24:41,284] Trial 35 finished with value: -114.84977977055274 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:24:47,722] Trial 36 finished with value: -88.83192778422503 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:24:52,520] Trial 37 finished with value: -162.3447500010564 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:24:55,925] Trial 38 finished with value: -261.09313409998526 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:24:59,193] Trial 39 finished with value: -387.17553845957656 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:25:06,424] Trial 40 finished with value: -202.07755802374567 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:25:11,506] Trial 41 finished with value: -268.1174545648371 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:25:14,900] Trial 42 finished with value: -438.117477736806 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -25.979136290339902. +[I 2025-12-18 06:25:18,345] Trial 43 finished with value: -18.875467911669023 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 43 with value: -18.875467911669023. +[I 2025-12-18 06:25:21,740] Trial 44 finished with value: -155.36038846421746 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 43 with value: -18.875467911669023. +[I 2025-12-18 06:25:25,138] Trial 45 finished with value: -218.25757654573596 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 43 with value: -18.875467911669023. +[I 2025-12-18 06:25:29,910] Trial 46 finished with value: -358.3121765058688 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 43 with value: -18.875467911669023. +[I 2025-12-18 06:25:33,039] Trial 47 finished with value: -508.349162365505 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 43 with value: -18.875467911669023. +[I 2025-12-18 06:25:38,290] Trial 48 finished with value: -21.15990562389633 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 43 with value: -18.875467911669023. +[I 2025-12-18 06:25:41,806] Trial 49 finished with value: -106.20807232044456 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 43 with value: -18.875467911669023. +[I 2025-12-18 06:25:45,651] A new study created in memory with name: no-name-dc75b520-b6e4-4e47-ab66-f4feb0e1dd00 +[I 2025-12-18 06:26:07,853] Trial 0 finished with value: -262.776000917663 and parameters: {'embedding_dim': 246, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -262.776000917663. +[I 2025-12-18 06:26:22,694] Trial 1 finished with value: -547.9280142216338 and parameters: {'embedding_dim': 398, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -262.776000917663. +[I 2025-12-18 06:26:38,809] Trial 2 finished with value: -394.62776314880284 and parameters: {'embedding_dim': 158, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -262.776000917663. +[I 2025-12-18 06:26:52,645] Trial 3 finished with value: -165.1926689228908 and parameters: {'embedding_dim': 141, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:27:05,824] Trial 4 finished with value: -334.85893347263016 and parameters: {'embedding_dim': 310, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:27:19,329] Trial 5 finished with value: -2576.648494594691 and parameters: {'embedding_dim': 412, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:27:26,501] Trial 6 finished with value: -924.0474426535155 and parameters: {'embedding_dim': 352, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:27:42,818] Trial 7 finished with value: -230.01197601639365 and parameters: {'embedding_dim': 500, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:27:47,887] Trial 8 finished with value: -1037.3023218819515 and parameters: {'embedding_dim': 172, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:28:12,766] Trial 9 finished with value: -336.7292872670074 and parameters: {'embedding_dim': 461, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:28:21,626] Trial 10 finished with value: -405.42325341808095 and parameters: {'embedding_dim': 241, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:28:35,124] Trial 11 finished with value: -529.5512998422292 and parameters: {'embedding_dim': 505, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:28:51,501] Trial 12 finished with value: -287.0881079957109 and parameters: {'embedding_dim': 260, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:29:05,406] Trial 13 finished with value: -346.35010444815003 and parameters: {'embedding_dim': 144, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:29:18,971] Trial 14 finished with value: -295.88826520903393 and parameters: {'embedding_dim': 318, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:29:32,532] Trial 15 finished with value: -446.1279077003803 and parameters: {'embedding_dim': 508, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:29:43,579] Trial 16 finished with value: -402.0205158293214 and parameters: {'embedding_dim': 211, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:29:51,554] Trial 17 finished with value: -2157.103074548088 and parameters: {'embedding_dim': 397, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:30:09,807] Trial 18 finished with value: -236.0855962032249 and parameters: {'embedding_dim': 449, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:30:20,550] Trial 19 finished with value: -483.44780684185224 and parameters: {'embedding_dim': 286, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:30:31,679] Trial 20 finished with value: -558.8130852476105 and parameters: {'embedding_dim': 358, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:30:49,979] Trial 21 finished with value: -251.26582513839148 and parameters: {'embedding_dim': 472, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -165.1926689228908. +[I 2025-12-18 06:31:06,401] Trial 22 finished with value: -82.3198350733116 and parameters: {'embedding_dim': 451, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 22 with value: -82.3198350733116. +[I 2025-12-18 06:31:23,555] Trial 23 finished with value: -117.63238986539707 and parameters: {'embedding_dim': 425, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 22 with value: -82.3198350733116. +[I 2025-12-18 06:31:37,043] Trial 24 finished with value: -463.1318594187459 and parameters: {'embedding_dim': 427, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 22 with value: -82.3198350733116. +[I 2025-12-18 06:31:53,286] Trial 25 finished with value: -1159.5022209606484 and parameters: {'embedding_dim': 363, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 22 with value: -82.3198350733116. +[I 2025-12-18 06:32:06,735] Trial 26 finished with value: -428.2654417208833 and parameters: {'embedding_dim': 381, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 22 with value: -82.3198350733116. +[I 2025-12-18 06:32:23,005] Trial 27 finished with value: -269.46815021576697 and parameters: {'embedding_dim': 443, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 22 with value: -82.3198350733116. +[I 2025-12-18 06:32:34,067] Trial 28 finished with value: -391.9702747110169 and parameters: {'embedding_dim': 198, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 22 with value: -82.3198350733116. +[I 2025-12-18 06:32:52,533] Trial 29 finished with value: -318.2973668467731 and parameters: {'embedding_dim': 130, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 22 with value: -82.3198350733116. +[I 2025-12-18 06:33:09,953] A new study created in memory with name: no-name-80869902-4e54-44e4-bd8c-59f59b9da599 +[I 2025-12-18 06:33:13,500] Trial 0 finished with value: -7.0128011166929705 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:33:18,552] Trial 1 finished with value: -35.02013951913533 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:33:25,310] Trial 2 finished with value: -160.11232170143484 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:33:28,730] Trial 3 finished with value: -38.43769425412794 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:33:32,488] Trial 4 finished with value: -119.01249006244664 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:33:38,944] Trial 5 finished with value: -59.35189255102644 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:33:44,229] Trial 6 finished with value: -79.4973809244134 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:33:53,737] Trial 7 finished with value: -94.48898640584412 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:33:58,829] Trial 8 finished with value: -180.79499387301308 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:34:03,945] Trial 9 finished with value: -303.37855736032924 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:34:07,487] Trial 10 finished with value: -266.0467114981943 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:34:10,790] Trial 11 finished with value: -201.9896490222263 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:34:16,192] Trial 12 finished with value: -60.952755687204075 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:34:19,477] Trial 13 finished with value: -122.18442617550512 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:34:24,901] Trial 14 finished with value: -24.329833917348186 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:34:28,573] Trial 15 finished with value: -358.12592985202144 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -7.0128011166929705. +[I 2025-12-18 06:34:36,842] Trial 16 finished with value: -3.8492300168743543 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -3.8492300168743543. +[I 2025-12-18 06:34:46,040] Trial 17 finished with value: -73.51799746212957 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -3.8492300168743543. +[I 2025-12-18 06:34:53,547] Trial 18 finished with value: -30.76274838169608 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -3.8492300168743543. +[I 2025-12-18 06:35:00,850] Trial 19 finished with value: -10.325870859065535 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -3.8492300168743543. +[I 2025-12-18 06:35:08,279] Trial 20 finished with value: -70.15212089974422 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 16 with value: -3.8492300168743543. +[I 2025-12-18 06:35:15,553] Trial 21 finished with value: -121.47274766305733 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -3.8492300168743543. +[I 2025-12-18 06:35:22,930] Trial 22 finished with value: -200.9863930297234 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -3.8492300168743543. +[I 2025-12-18 06:35:30,208] Trial 23 finished with value: -126.63925421420936 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -3.8492300168743543. +[I 2025-12-18 06:35:37,472] Trial 24 finished with value: -66.29256414657428 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -3.8492300168743543. +[I 2025-12-18 06:35:44,726] Trial 25 finished with value: -19.848337031443283 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -3.8492300168743543. +[I 2025-12-18 06:35:50,091] Trial 26 finished with value: -15.522721167063033 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 16 with value: -3.8492300168743543. +[I 2025-12-18 06:35:57,326] Trial 27 finished with value: -20.59384036060435 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -3.8492300168743543. +[I 2025-12-18 06:36:00,842] Trial 28 finished with value: -18.42064237756656 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 16 with value: -3.8492300168743543. +[I 2025-12-18 06:36:08,672] Trial 29 finished with value: -3.427730241226805 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 29 with value: -3.427730241226805. +[I 2025-12-18 06:36:13,640] Trial 30 finished with value: -30.056436788319996 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 29 with value: -3.427730241226805. +[I 2025-12-18 06:36:20,236] Trial 31 finished with value: -1.8860202357743814 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:36:25,187] Trial 32 finished with value: -16.89330148627998 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:36:30,134] Trial 33 finished with value: -146.77499489663052 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:36:33,430] Trial 34 finished with value: -55.44491881513177 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:36:39,998] Trial 35 finished with value: -49.84524120139588 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:36:43,305] Trial 36 finished with value: -114.45469134729363 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:36:49,771] Trial 37 finished with value: -83.99617259583106 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:36:54,699] Trial 38 finished with value: -48.23489465441547 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:37:01,528] Trial 39 finished with value: -225.69376767129577 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:37:05,889] Trial 40 finished with value: -137.56719040701063 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:37:14,963] Trial 41 finished with value: -10.55925944861275 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:37:21,938] Trial 42 finished with value: -281.7966910189318 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:37:28,644] Trial 43 finished with value: -264.3647471400428 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:37:35,931] Trial 44 finished with value: -25.75026465231285 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:37:42,520] Trial 45 finished with value: -36.36570565744985 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:37:47,567] Trial 46 finished with value: -25.4697360903644 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:37:56,296] Trial 47 finished with value: -127.2787639074129 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:38:02,046] Trial 48 finished with value: -246.85407984690568 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:38:07,460] Trial 49 finished with value: -284.35726806707623 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 31 with value: -1.8860202357743814. +[I 2025-12-18 06:38:14,621] A new study created in memory with name: no-name-13afcc68-9f0d-46a0-9a2c-943ce5e8e19a +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_3_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_3_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_3_seoul.csv: Class 0=15889 | Class 1=17325 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_3_seoul.csv: Class 0=15905 | Class 1=18980 | Class 2=15873 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_3_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_3_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_3_busan.csv: Class 0=18886 | Class 1=17076 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_3_busan.csv: Class 0=18946 | Class 1=18121 | Class 2=16439 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_3_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_3_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_3_daegu.csv: Class 0=15168 | Class 1=17954 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_3_daegu.csv: Class 0=15201 | Class 1=18552 | Class 2=16913 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +[I 2025-12-18 06:38:28,602] Trial 0 finished with value: -876.4887042191933 and parameters: {'embedding_dim': 230, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -876.4887042191933. +[I 2025-12-18 06:38:48,717] Trial 1 finished with value: -238.44076333441086 and parameters: {'embedding_dim': 238, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -238.44076333441086. +[I 2025-12-18 06:39:14,633] Trial 2 finished with value: -613.6193318323284 and parameters: {'embedding_dim': 390, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -238.44076333441086. +[I 2025-12-18 06:40:28,017] Trial 3 finished with value: -477.3427260148117 and parameters: {'embedding_dim': 137, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -238.44076333441086. +[I 2025-12-18 06:40:49,791] Trial 4 finished with value: -2424.0170394468723 and parameters: {'embedding_dim': 494, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -238.44076333441086. +[I 2025-12-18 06:41:33,494] Trial 5 finished with value: -208.3972467079355 and parameters: {'embedding_dim': 442, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:41:48,043] Trial 6 finished with value: -793.7630358397654 and parameters: {'embedding_dim': 487, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:42:09,461] Trial 7 finished with value: -304.8168467569619 and parameters: {'embedding_dim': 420, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:42:31,842] Trial 8 finished with value: -249.82410614908883 and parameters: {'embedding_dim': 155, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:42:43,568] Trial 9 finished with value: -856.3293330866918 and parameters: {'embedding_dim': 500, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:43:48,410] Trial 10 finished with value: -225.0848165505214 and parameters: {'embedding_dim': 347, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:44:49,480] Trial 11 finished with value: -979.6343439717962 and parameters: {'embedding_dim': 347, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:45:46,386] Trial 12 finished with value: -1495.2456257075962 and parameters: {'embedding_dim': 310, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:46:43,594] Trial 13 finished with value: -318.73739234910704 and parameters: {'embedding_dim': 420, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:47:11,288] Trial 14 finished with value: -647.8217842206632 and parameters: {'embedding_dim': 308, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:48:09,248] Trial 15 finished with value: -613.4184733591193 and parameters: {'embedding_dim': 366, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:48:38,117] Trial 16 finished with value: -1760.9965125999818 and parameters: {'embedding_dim': 444, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:49:12,723] Trial 17 finished with value: -913.3404575112572 and parameters: {'embedding_dim': 282, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:50:21,088] Trial 18 finished with value: -883.1538379419289 and parameters: {'embedding_dim': 447, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:50:48,452] Trial 19 finished with value: -396.6025136759164 and parameters: {'embedding_dim': 369, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:51:44,972] Trial 20 finished with value: -2283.3483549473526 and parameters: {'embedding_dim': 275, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:52:04,752] Trial 21 finished with value: -413.74389669661093 and parameters: {'embedding_dim': 225, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:52:24,756] Trial 22 finished with value: -314.808855760333 and parameters: {'embedding_dim': 211, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -208.3972467079355. +[I 2025-12-18 06:52:44,881] Trial 23 finished with value: -135.31685155902102 and parameters: {'embedding_dim': 196, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 23 with value: -135.31685155902102. +[I 2025-12-18 06:53:42,349] Trial 24 finished with value: -286.66437501838396 and parameters: {'embedding_dim': 181, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 23 with value: -135.31685155902102. +[I 2025-12-18 06:54:01,774] Trial 25 finished with value: -658.3790023755494 and parameters: {'embedding_dim': 271, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 23 with value: -135.31685155902102. +[I 2025-12-18 06:54:36,459] Trial 26 finished with value: -303.3501382061561 and parameters: {'embedding_dim': 332, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 23 with value: -135.31685155902102. +[I 2025-12-18 06:55:18,087] Trial 27 finished with value: -385.7101890789343 and parameters: {'embedding_dim': 465, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 23 with value: -135.31685155902102. +[I 2025-12-18 06:56:15,151] Trial 28 finished with value: -424.09289485932004 and parameters: {'embedding_dim': 403, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 23 with value: -135.31685155902102. +[I 2025-12-18 06:56:23,529] Trial 29 finished with value: -3590.342543134422 and parameters: {'embedding_dim': 198, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 23 with value: -135.31685155902102. +[I 2025-12-18 06:56:44,528] A new study created in memory with name: no-name-d28bd8e7-1b2a-4390-b22f-c9b616f56d4b +[I 2025-12-18 06:56:51,631] Trial 0 finished with value: -16.926240168014512 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -16.926240168014512. +[I 2025-12-18 06:56:58,143] Trial 1 finished with value: -294.01281727298465 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -16.926240168014512. +[I 2025-12-18 06:57:04,918] Trial 2 finished with value: -11.345157142983446 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:57:11,389] Trial 3 finished with value: -330.54109312554044 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:57:16,478] Trial 4 finished with value: -229.76026419998485 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:57:23,892] Trial 5 finished with value: -97.28066376578207 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:57:27,255] Trial 6 finished with value: -29.41362580478605 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:57:32,096] Trial 7 finished with value: -65.0845515113347 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:57:38,567] Trial 8 finished with value: -170.93450677654076 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:57:45,285] Trial 9 finished with value: -91.2084308906854 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:57:48,569] Trial 10 finished with value: -84.353342726977 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:57:53,933] Trial 11 finished with value: -38.61296092906559 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:58:01,155] Trial 12 finished with value: -146.97459549462454 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:58:06,517] Trial 13 finished with value: -253.40271088516624 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:58:13,784] Trial 14 finished with value: -106.42064597413244 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:58:18,917] Trial 15 finished with value: -12.449332817438894 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:58:22,232] Trial 16 finished with value: -145.14767066461988 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:58:27,166] Trial 17 finished with value: -25.523613254187588 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:58:32,254] Trial 18 finished with value: -78.07353082716638 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:58:35,672] Trial 19 finished with value: -106.36845311978671 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:58:40,691] Trial 20 finished with value: -14.370737133315647 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:58:45,707] Trial 21 finished with value: -192.5413504975833 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:58:50,719] Trial 22 finished with value: -272.03390310688116 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:58:55,766] Trial 23 finished with value: -49.811973468399856 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -11.345157142983446. +[I 2025-12-18 06:59:00,788] Trial 24 finished with value: -6.672102821167573 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 06:59:04,084] Trial 25 finished with value: -79.77148046169478 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 06:59:09,089] Trial 26 finished with value: -35.35250027457312 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 06:59:14,121] Trial 27 finished with value: -346.67461500282207 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 06:59:19,337] Trial 28 finished with value: -299.58432973875637 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 06:59:25,873] Trial 29 finished with value: -40.95015021403158 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 06:59:30,904] Trial 30 finished with value: -117.99122630649329 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 06:59:35,948] Trial 31 finished with value: -99.12310344381473 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 06:59:40,872] Trial 32 finished with value: -44.03870475694802 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 06:59:45,817] Trial 33 finished with value: -81.98550495527074 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 06:59:52,463] Trial 34 finished with value: -34.87531075869889 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 06:59:57,537] Trial 35 finished with value: -99.20620785128071 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:00:04,332] Trial 36 finished with value: -171.91541911458992 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:00:07,596] Trial 37 finished with value: -250.04769042965705 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:00:12,675] Trial 38 finished with value: -75.18011134040808 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:00:19,202] Trial 39 finished with value: -170.518364570785 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:00:24,534] Trial 40 finished with value: -10.885030493215972 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:00:29,862] Trial 41 finished with value: -49.34810617787086 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:00:35,204] Trial 42 finished with value: -114.96687683399969 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:00:40,575] Trial 43 finished with value: -116.72854882533255 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:00:45,925] Trial 44 finished with value: -20.88441772590685 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:00:51,283] Trial 45 finished with value: -163.19875002229307 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:00:56,154] Trial 46 finished with value: -18.41979092626437 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:01:03,346] Trial 47 finished with value: -26.10283520864332 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:01:06,664] Trial 48 finished with value: -210.40004338215854 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:01:11,731] Trial 49 finished with value: -131.5807178408482 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -6.672102821167573. +[I 2025-12-18 07:01:17,114] A new study created in memory with name: no-name-c639bc21-d073-45fc-a565-000779e7de22 +[I 2025-12-18 07:01:45,503] Trial 0 finished with value: -1830.3249297278587 and parameters: {'embedding_dim': 277, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -1830.3249297278587. +[I 2025-12-18 07:02:04,771] Trial 1 finished with value: -1298.324721908804 and parameters: {'embedding_dim': 133, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -1298.324721908804. +[I 2025-12-18 07:02:24,399] Trial 2 finished with value: -474.04994392373914 and parameters: {'embedding_dim': 348, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -474.04994392373914. +[I 2025-12-18 07:03:21,371] Trial 3 finished with value: -2120.1556228752374 and parameters: {'embedding_dim': 356, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -474.04994392373914. +[I 2025-12-18 07:04:09,008] Trial 4 finished with value: -782.0892025975137 and parameters: {'embedding_dim': 378, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -474.04994392373914. +[I 2025-12-18 07:04:19,561] Trial 5 finished with value: -2010.6068235936493 and parameters: {'embedding_dim': 403, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 2 with value: -474.04994392373914. +[I 2025-12-18 07:04:48,529] Trial 6 finished with value: -437.2094598521286 and parameters: {'embedding_dim': 298, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 6 with value: -437.2094598521286. +[I 2025-12-18 07:05:17,703] Trial 7 finished with value: -10674.219478575118 and parameters: {'embedding_dim': 343, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -437.2094598521286. +[I 2025-12-18 07:05:46,070] Trial 8 finished with value: -1775.5873652779092 and parameters: {'embedding_dim': 356, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 6 with value: -437.2094598521286. +[I 2025-12-18 07:06:15,015] Trial 9 finished with value: -727.6710560207903 and parameters: {'embedding_dim': 490, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 6 with value: -437.2094598521286. +[I 2025-12-18 07:06:28,743] Trial 10 finished with value: -464.935845640714 and parameters: {'embedding_dim': 228, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 6 with value: -437.2094598521286. +[I 2025-12-18 07:06:42,150] Trial 11 finished with value: -440.91438284199035 and parameters: {'embedding_dim': 246, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 6 with value: -437.2094598521286. +[I 2025-12-18 07:06:56,028] Trial 12 finished with value: -810.7504409180672 and parameters: {'embedding_dim': 224, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 6 with value: -437.2094598521286. +[I 2025-12-18 07:07:16,950] Trial 13 finished with value: -598.90636520583 and parameters: {'embedding_dim': 259, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -437.2094598521286. +[I 2025-12-18 07:07:41,569] Trial 14 finished with value: -385.64721044260756 and parameters: {'embedding_dim': 164, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 14 with value: -385.64721044260756. +[I 2025-12-18 07:08:09,907] Trial 15 finished with value: -67.45913713148555 and parameters: {'embedding_dim': 130, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 15 with value: -67.45913713148555. +[I 2025-12-18 07:08:35,602] Trial 16 finished with value: -833.7291688961906 and parameters: {'embedding_dim': 135, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 15 with value: -67.45913713148555. +[I 2025-12-18 07:08:59,809] Trial 17 finished with value: -161.75823376664331 and parameters: {'embedding_dim': 182, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 15 with value: -67.45913713148555. +[I 2025-12-18 07:09:25,422] Trial 18 finished with value: -1341.782662517804 and parameters: {'embedding_dim': 188, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 15 with value: -67.45913713148555. +[I 2025-12-18 07:09:40,949] Trial 19 finished with value: -272.5528182061766 and parameters: {'embedding_dim': 191, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 15 with value: -67.45913713148555. +[I 2025-12-18 07:10:00,594] Trial 20 finished with value: -509.4221494464748 and parameters: {'embedding_dim': 182, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 15 with value: -67.45913713148555. +[I 2025-12-18 07:10:18,359] Trial 21 finished with value: -543.4652825350722 and parameters: {'embedding_dim': 204, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 15 with value: -67.45913713148555. +[I 2025-12-18 07:10:34,421] Trial 22 finished with value: -628.6674229110847 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 15 with value: -67.45913713148555. +[I 2025-12-18 07:11:01,930] Trial 23 finished with value: -228.91513954093193 and parameters: {'embedding_dim': 163, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 15 with value: -67.45913713148555. +[I 2025-12-18 07:11:26,440] Trial 24 finished with value: -405.4265603260346 and parameters: {'embedding_dim': 160, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 15 with value: -67.45913713148555. +[I 2025-12-18 07:11:51,255] Trial 25 finished with value: -209.19742257256502 and parameters: {'embedding_dim': 163, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 15 with value: -67.45913713148555. +[I 2025-12-18 07:12:16,442] Trial 26 finished with value: -237.0986743435795 and parameters: {'embedding_dim': 447, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 15 with value: -67.45913713148555. +[I 2025-12-18 07:12:38,032] Trial 27 finished with value: -745.8323636940028 and parameters: {'embedding_dim': 217, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 15 with value: -67.45913713148555. +[I 2025-12-18 07:13:04,783] Trial 28 finished with value: -889.1171137565198 and parameters: {'embedding_dim': 295, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 15 with value: -67.45913713148555. +[I 2025-12-18 07:13:23,913] Trial 29 finished with value: -244.75040597105453 and parameters: {'embedding_dim': 259, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 15 with value: -67.45913713148555. +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_3_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_3_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_3_daejeon.csv: Class 0=17535 | Class 1=16659 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_3_daejeon.csv: Class 0=17620 | Class 1=18334 | Class 2=15784 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/ctgan_only_20000_3_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/ctgan_only_20000_3_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/ctgan20000_3_gwangju.csv: Class 0=17686 | Class 1=17465 +Saved ../../data/data_oversampled/ctgan20000/ctgan20000_3_gwangju.csv: Class 0=17737 | Class 1=18814 | Class 2=16144 + +========================================== +All CTGAN sample generation completed! +========================================== diff --git a/Analysis_code/2.make_oversample_data/gpu1.log b/Analysis_code/2.make_oversample_data/gpu1.log new file mode 100644 index 0000000000000000000000000000000000000000..3da625b7607bde4da294ee4a2e77bb76ac73454d --- /dev/null +++ b/Analysis_code/2.make_oversample_data/gpu1.log @@ -0,0 +1,4911 @@ +nohup: ignoring input +/bin/bash: /opt/conda/lib/libtinfo.so.6: no version information available (required by /bin/bash) +========================================== +Starting SMOTENC+CTGAN sample generation on GPU 1 +========================================== + +=== Processing 7000 samples === +Running smotenc_ctgan_sample_7000_1.py... +[I 2025-12-17 11:10:00,871] A new study created in memory with name: no-name-bf4868f2-75a0-49ec-9d38-d3963541a6cd +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +[I 2025-12-17 11:10:46,868] Trial 0 finished with value: -119.71235760675756 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -119.71235760675756. +[I 2025-12-17 11:11:20,648] Trial 1 finished with value: -48.90545529483066 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -48.90545529483066. +[I 2025-12-17 11:11:41,820] Trial 2 finished with value: -8.05325854377516 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -8.05325854377516. +[I 2025-12-17 11:11:46,352] Trial 3 finished with value: -82.04908300651421 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -8.05325854377516. +[I 2025-12-17 11:12:32,231] Trial 4 finished with value: -32.30816946987583 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -8.05325854377516. +[I 2025-12-17 11:12:54,174] Trial 5 finished with value: -130.91738684205774 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -8.05325854377516. +[I 2025-12-17 11:13:40,110] Trial 6 finished with value: -32.415229005195606 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -8.05325854377516. +[I 2025-12-17 11:13:44,590] Trial 7 finished with value: -9.754330101825579 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -8.05325854377516. +[I 2025-12-17 11:14:30,457] Trial 8 finished with value: -1.3740670513228006 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:15:04,237] Trial 9 finished with value: -26.973671198638677 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:15:25,352] Trial 10 finished with value: -19.777840445369375 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:15:46,741] Trial 11 finished with value: -23.764708871548983 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:16:07,945] Trial 12 finished with value: -31.662421216005285 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:16:29,101] Trial 13 finished with value: -24.508193141007702 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:16:44,750] Trial 14 finished with value: -104.58763984821707 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:16:53,130] Trial 15 finished with value: -25.27565659598023 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:17:08,667] Trial 16 finished with value: -5.996013755012217 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:17:42,414] Trial 17 finished with value: -70.17634663041443 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:17:58,010] Trial 18 finished with value: -7.534294873696302 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:18:02,316] Trial 19 finished with value: -34.97784581929574 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:18:17,998] Trial 20 finished with value: -4.09943699447063 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:18:33,428] Trial 21 finished with value: -54.54755615677294 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:18:50,803] Trial 22 finished with value: -90.54004917928533 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:19:08,281] Trial 23 finished with value: -16.91259073089129 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:19:24,046] Trial 24 finished with value: -2.5142346727421776 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:20:01,586] Trial 25 finished with value: -75.90406022197506 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:20:11,968] Trial 26 finished with value: -34.007951212587145 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:20:29,679] Trial 27 finished with value: -5.719298299988323 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:20:35,953] Trial 28 finished with value: -12.739846892389465 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:20:57,335] Trial 29 finished with value: -258.01269080874044 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:21:42,855] Trial 30 finished with value: -138.38111749348244 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:21:58,471] Trial 31 finished with value: -4.5500891292463335 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:22:14,158] Trial 32 finished with value: -17.611461909160802 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:22:32,259] Trial 33 finished with value: -13.099988524569662 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:22:47,912] Trial 34 finished with value: -86.24185426122096 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:23:03,553] Trial 35 finished with value: -35.48263679903041 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:23:51,362] Trial 36 finished with value: -157.29808154372398 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:24:07,058] Trial 37 finished with value: -310.58977687183426 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:24:41,768] Trial 38 finished with value: -64.70670719925081 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:24:47,787] Trial 39 finished with value: -154.3950130415723 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:25:21,555] Trial 40 finished with value: -63.38333919358098 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:25:39,056] Trial 41 finished with value: -15.689274224120863 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:25:56,028] Trial 42 finished with value: -5.970155696902757 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:26:11,955] Trial 43 finished with value: -3.9259557463770784 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:26:30,425] Trial 44 finished with value: -177.24489941907046 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:26:54,119] Trial 45 finished with value: -10.607514157188248 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:27:11,834] Trial 46 finished with value: -23.98903965422819 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:27:32,971] Trial 47 finished with value: -9.470238635024698 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:27:56,851] Trial 48 finished with value: -22.7909173972217 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -1.3740670513228006. +[I 2025-12-17 11:28:03,232] Trial 49 finished with value: -0.9321821631031835 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 49 with value: -0.9321821631031835. +[I 2025-12-17 11:28:09,967] A new study created in memory with name: no-name-c4702695-1c1f-4056-9e0b-2dc14e3e8837 +[I 2025-12-17 11:30:16,965] Trial 0 finished with value: -119.55122053762778 and parameters: {'embedding_dim': 485, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:31:22,447] Trial 1 finished with value: -452.0831098071551 and parameters: {'embedding_dim': 415, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:32:24,240] Trial 2 finished with value: -333.2347642261724 and parameters: {'embedding_dim': 443, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:32:46,644] Trial 3 finished with value: -424.6551030951327 and parameters: {'embedding_dim': 316, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:33:24,617] Trial 4 finished with value: -295.7446971184995 and parameters: {'embedding_dim': 367, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:33:40,753] Trial 5 finished with value: -343.4341906642886 and parameters: {'embedding_dim': 466, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:34:09,954] Trial 6 finished with value: -373.6532159275338 and parameters: {'embedding_dim': 230, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:35:12,017] Trial 7 finished with value: -680.0265568892819 and parameters: {'embedding_dim': 356, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:36:27,993] Trial 8 finished with value: -514.4246349838088 and parameters: {'embedding_dim': 363, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:37:44,532] Trial 9 finished with value: -220.63801451065257 and parameters: {'embedding_dim': 264, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:39:30,203] Trial 10 finished with value: -447.9963771638298 and parameters: {'embedding_dim': 139, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:40:46,060] Trial 11 finished with value: -395.77204330089734 and parameters: {'embedding_dim': 238, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:42:54,034] Trial 12 finished with value: -159.05509956486242 and parameters: {'embedding_dim': 509, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:44:37,471] Trial 13 finished with value: -133.65167319711702 and parameters: {'embedding_dim': 511, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:46:23,912] Trial 14 finished with value: -184.5994382250708 and parameters: {'embedding_dim': 500, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -119.55122053762778. +[I 2025-12-17 11:48:06,629] Trial 15 finished with value: -48.81803870657296 and parameters: {'embedding_dim': 428, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -48.81803870657296. +[I 2025-12-17 11:49:26,336] Trial 16 finished with value: -309.4275180091727 and parameters: {'embedding_dim': 413, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -48.81803870657296. +[I 2025-12-17 11:51:08,165] Trial 17 finished with value: -284.55036572679063 and parameters: {'embedding_dim': 444, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -48.81803870657296. +[I 2025-12-17 11:53:22,246] Trial 18 finished with value: -612.4888364580746 and parameters: {'embedding_dim': 411, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -48.81803870657296. +[I 2025-12-17 11:54:46,136] Trial 19 finished with value: -991.7276175442062 and parameters: {'embedding_dim': 468, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -48.81803870657296. +[I 2025-12-17 11:55:22,633] Trial 20 finished with value: -510.498742042907 and parameters: {'embedding_dim': 327, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 15 with value: -48.81803870657296. +[I 2025-12-17 11:57:08,746] Trial 21 finished with value: -360.9562474786345 and parameters: {'embedding_dim': 510, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -48.81803870657296. +[I 2025-12-17 11:58:51,319] Trial 22 finished with value: -5.814602749634266 and parameters: {'embedding_dim': 470, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 22 with value: -5.814602749634266. +[I 2025-12-17 12:00:57,462] Trial 23 finished with value: -532.6078938380524 and parameters: {'embedding_dim': 471, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 22 with value: -5.814602749634266. +[I 2025-12-17 12:02:20,156] Trial 24 finished with value: -89.53375633841208 and parameters: {'embedding_dim': 391, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -5.814602749634266. +[I 2025-12-17 12:03:43,214] Trial 25 finished with value: -249.4042962205913 and parameters: {'embedding_dim': 395, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -5.814602749634266. +[I 2025-12-17 12:05:10,305] Trial 26 finished with value: -44.120875875359815 and parameters: {'embedding_dim': 436, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -5.814602749634266. +[I 2025-12-17 12:05:53,654] Trial 27 finished with value: -1532.6543243577444 and parameters: {'embedding_dim': 313, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 22 with value: -5.814602749634266. +[I 2025-12-17 12:07:16,790] Trial 28 finished with value: -532.3520183401151 and parameters: {'embedding_dim': 445, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -5.814602749634266. +[I 2025-12-17 12:07:53,412] Trial 29 finished with value: -743.0086206615363 and parameters: {'embedding_dim': 431, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 22 with value: -5.814602749634266. +[I 2025-12-17 12:09:39,741] A new study created in memory with name: no-name-06c8281d-3192-4e1e-a446-e0e180346ba8 +[I 2025-12-17 12:09:49,983] Trial 0 finished with value: -24.764601456727448 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -24.764601456727448. +[I 2025-12-17 12:10:00,230] Trial 1 finished with value: -23.93529339015374 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -23.93529339015374. +[I 2025-12-17 12:10:46,190] Trial 2 finished with value: -60.2950022135247 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -23.93529339015374. +[I 2025-12-17 12:11:33,819] Trial 3 finished with value: -19.79385878139777 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -19.79385878139777. +[I 2025-12-17 12:11:40,466] Trial 4 finished with value: -2.044173311284939 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -2.044173311284939. +[I 2025-12-17 12:11:44,970] Trial 5 finished with value: -8.328546909423975 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -2.044173311284939. +[I 2025-12-17 12:12:20,869] Trial 6 finished with value: -5.62280195066147 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -2.044173311284939. +[I 2025-12-17 12:12:36,816] Trial 7 finished with value: -7.640586014823187 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -2.044173311284939. +[I 2025-12-17 12:12:49,318] Trial 8 finished with value: -51.886850896331325 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -2.044173311284939. +[I 2025-12-17 12:13:10,949] Trial 9 finished with value: -13.85201690250367 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -2.044173311284939. +[I 2025-12-17 12:13:17,525] Trial 10 finished with value: -8.737213355790868 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -2.044173311284939. +[I 2025-12-17 12:13:23,813] Trial 11 finished with value: -19.9047696780353 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -2.044173311284939. +[I 2025-12-17 12:13:31,176] Trial 12 finished with value: -18.184161952209987 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -2.044173311284939. +[I 2025-12-17 12:14:21,749] Trial 13 finished with value: -7.2621079677703335 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -2.044173311284939. +[I 2025-12-17 12:14:28,062] Trial 14 finished with value: -51.00990197892397 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -2.044173311284939. +[I 2025-12-17 12:15:01,965] Trial 15 finished with value: -13.962425462279931 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -2.044173311284939. +[I 2025-12-17 12:15:49,137] Trial 16 finished with value: -1.219672920681098 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 16 with value: -1.219672920681098. +[I 2025-12-17 12:15:57,478] Trial 17 finished with value: -11.865253876694707 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -1.219672920681098. +[I 2025-12-17 12:16:43,395] Trial 18 finished with value: -6.567928253475085 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 16 with value: -1.219672920681098. +[I 2025-12-17 12:16:51,628] Trial 19 finished with value: -2.905300438709514 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -1.219672920681098. +[I 2025-12-17 12:16:59,911] Trial 20 finished with value: -6.294694876225174 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -1.219672920681098. +[I 2025-12-17 12:17:08,194] Trial 21 finished with value: -5.787627391863103 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -1.219672920681098. +[I 2025-12-17 12:17:16,502] Trial 22 finished with value: -17.60042125903592 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -1.219672920681098. +[I 2025-12-17 12:17:24,814] Trial 23 finished with value: -4.023925262583928 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -1.219672920681098. +[I 2025-12-17 12:17:31,103] Trial 24 finished with value: -5.632959082316077 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 16 with value: -1.219672920681098. +[I 2025-12-17 12:18:16,939] Trial 25 finished with value: -0.658051652884662 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -0.658051652884662. +[I 2025-12-17 12:18:50,762] Trial 26 finished with value: -24.790538531029053 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 25 with value: -0.658051652884662. +[I 2025-12-17 12:19:36,613] Trial 27 finished with value: -0.6028389203860561 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:20:22,900] Trial 28 finished with value: -5.878859715059454 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:21:14,811] Trial 29 finished with value: -17.668129143470033 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:22:04,025] Trial 30 finished with value: -7.492935392405705 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:22:51,423] Trial 31 finished with value: -6.966345535541703 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:23:07,122] Trial 32 finished with value: -6.050462937160333 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:24:01,257] Trial 33 finished with value: -6.555242328035664 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:24:52,488] Trial 34 finished with value: -2.4558055713551643 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:25:27,128] Trial 35 finished with value: -12.009116303212645 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:25:50,183] Trial 36 finished with value: -38.97354583632519 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:26:14,713] Trial 37 finished with value: -98.75258820426149 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:26:50,663] Trial 38 finished with value: -2.983796429620871 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:27:14,435] Trial 39 finished with value: -1.486786370413873 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:27:35,593] Trial 40 finished with value: -3.112265500714585 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:27:56,894] Trial 41 finished with value: -4.319893172455909 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:28:18,069] Trial 42 finished with value: -2.497948192599639 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:28:39,191] Trial 43 finished with value: -3.631332488912322 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:29:00,326] Trial 44 finished with value: -2.148272807363488 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:29:34,166] Trial 45 finished with value: -3.243754083560851 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:29:55,729] Trial 46 finished with value: -29.271232423976187 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:30:11,323] Trial 47 finished with value: -8.035092026497358 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:30:57,276] Trial 48 finished with value: -2.124601896809361 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:31:31,140] Trial 49 finished with value: -1.276532527420727 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6028389203860561. +[I 2025-12-17 12:32:17,214] A new study created in memory with name: no-name-2f7a5263-b88f-4405-939b-6619a9ddec22 +[I 2025-12-17 12:32:56,675] Trial 0 finished with value: -1521.5915323722413 and parameters: {'embedding_dim': 280, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -1521.5915323722413. +[I 2025-12-17 12:34:09,517] Trial 1 finished with value: -255.27639431880834 and parameters: {'embedding_dim': 177, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:34:31,392] Trial 2 finished with value: -515.099636419709 and parameters: {'embedding_dim': 449, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:35:16,653] Trial 3 finished with value: -441.97233646058095 and parameters: {'embedding_dim': 279, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:35:34,645] Trial 4 finished with value: -432.9888055114426 and parameters: {'embedding_dim': 425, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:35:55,859] Trial 5 finished with value: -722.4197503329406 and parameters: {'embedding_dim': 372, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:36:19,698] Trial 6 finished with value: -297.532441603113 and parameters: {'embedding_dim': 484, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:37:45,774] Trial 7 finished with value: -1103.2264012158168 and parameters: {'embedding_dim': 212, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:38:43,189] Trial 8 finished with value: -340.3421256832029 and parameters: {'embedding_dim': 219, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:39:22,516] Trial 9 finished with value: -715.4998645592052 and parameters: {'embedding_dim': 453, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:39:51,372] Trial 10 finished with value: -308.5633806912649 and parameters: {'embedding_dim': 130, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:40:34,020] Trial 11 finished with value: -1376.0690110157718 and parameters: {'embedding_dim': 509, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:40:58,784] Trial 12 finished with value: -686.2810431173519 and parameters: {'embedding_dim': 355, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:41:30,493] Trial 13 finished with value: -966.3668966909624 and parameters: {'embedding_dim': 140, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:42:13,479] Trial 14 finished with value: -533.6581440598036 and parameters: {'embedding_dim': 208, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:42:41,543] Trial 15 finished with value: -525.5480056855757 and parameters: {'embedding_dim': 503, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:43:12,871] Trial 16 finished with value: -2509.5911714611007 and parameters: {'embedding_dim': 301, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:43:55,468] Trial 17 finished with value: -358.68687796238936 and parameters: {'embedding_dim': 386, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:44:26,149] Trial 18 finished with value: -1440.8886965257389 and parameters: {'embedding_dim': 180, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:44:45,707] Trial 19 finished with value: -771.7503508598693 and parameters: {'embedding_dim': 324, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:45:01,808] Trial 20 finished with value: -5605.814522076215 and parameters: {'embedding_dim': 246, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:45:29,288] Trial 21 finished with value: -387.3502606554399 and parameters: {'embedding_dim': 128, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:45:58,340] Trial 22 finished with value: -3712.8975381266346 and parameters: {'embedding_dim': 166, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:46:40,929] Trial 23 finished with value: -1312.8934762437457 and parameters: {'embedding_dim': 169, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:47:09,443] Trial 24 finished with value: -1934.1646422400963 and parameters: {'embedding_dim': 251, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:47:51,932] Trial 25 finished with value: -3332.304853400076 and parameters: {'embedding_dim': 153, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:48:50,267] Trial 26 finished with value: -1052.4258005548652 and parameters: {'embedding_dim': 190, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:49:22,514] Trial 27 finished with value: -926.4582565625255 and parameters: {'embedding_dim': 335, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:49:41,525] Trial 28 finished with value: -815.562225359256 and parameters: {'embedding_dim': 408, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:50:06,437] Trial 29 finished with value: -1052.4624880780455 and parameters: {'embedding_dim': 291, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -255.27639431880834. +[I 2025-12-17 12:51:25,547] A new study created in memory with name: no-name-8396f124-bbe8-4563-a60d-584fe9171c26 +[I 2025-12-17 12:51:49,042] Trial 0 finished with value: -31.338854698732316 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -31.338854698732316. +[I 2025-12-17 12:51:55,635] Trial 1 finished with value: -108.3387313472047 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -31.338854698732316. +[I 2025-12-17 12:52:16,982] Trial 2 finished with value: -11.999058070525715 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -11.999058070525715. +[I 2025-12-17 12:52:39,194] Trial 3 finished with value: -33.06253721953467 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -11.999058070525715. +[I 2025-12-17 12:53:01,060] Trial 4 finished with value: -11.504691972186086 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -11.504691972186086. +[I 2025-12-17 12:53:13,770] Trial 5 finished with value: -0.6709369514525301 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -0.6709369514525301. +[I 2025-12-17 12:53:35,683] Trial 6 finished with value: -8.089498824384036 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 5 with value: -0.6709369514525301. +[I 2025-12-17 12:53:44,310] Trial 7 finished with value: -17.86574061533519 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -0.6709369514525301. +[I 2025-12-17 12:53:54,934] Trial 8 finished with value: -15.373727320959855 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -0.6709369514525301. +[I 2025-12-17 12:54:13,256] Trial 9 finished with value: -3.726402821185001 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -0.6709369514525301. +[I 2025-12-17 12:54:29,895] Trial 10 finished with value: -49.97323425199951 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -0.6709369514525301. +[I 2025-12-17 12:54:46,723] Trial 11 finished with value: -34.50906221409757 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -0.6709369514525301. +[I 2025-12-17 12:55:05,337] Trial 12 finished with value: -37.014759928671914 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -0.6709369514525301. +[I 2025-12-17 12:55:16,445] Trial 13 finished with value: -55.561444659700065 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -0.6709369514525301. +[I 2025-12-17 12:55:37,714] Trial 14 finished with value: -6.971720481225073 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -0.6709369514525301. +[I 2025-12-17 12:55:42,292] Trial 15 finished with value: -0.3677954148691473 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -0.3677954148691473. +[I 2025-12-17 12:55:46,870] Trial 16 finished with value: -8.844690432901151 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -0.3677954148691473. +[I 2025-12-17 12:55:51,385] Trial 17 finished with value: -2.398819379532183 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -0.3677954148691473. +[I 2025-12-17 12:55:55,909] Trial 18 finished with value: -11.292636622733953 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -0.3677954148691473. +[I 2025-12-17 12:56:00,990] Trial 19 finished with value: -0.19959691528723753 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:56:07,274] Trial 20 finished with value: -19.46417553073721 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:56:11,815] Trial 21 finished with value: -114.9435020539395 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:56:16,342] Trial 22 finished with value: -89.91897585748765 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:56:20,908] Trial 23 finished with value: -13.771256121855842 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:56:25,494] Trial 24 finished with value: -65.7671935182433 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:57:02,839] Trial 25 finished with value: -12.237585971404176 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:57:07,388] Trial 26 finished with value: -225.61997244118538 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:57:14,121] Trial 27 finished with value: -14.857875767383902 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:57:48,598] Trial 28 finished with value: -7.089910973038495 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:57:54,439] Trial 29 finished with value: -50.36317135959979 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:58:16,298] Trial 30 finished with value: -45.811050791037886 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:58:20,709] Trial 31 finished with value: -227.02537679902025 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:58:25,196] Trial 32 finished with value: -85.61985726900784 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:58:29,616] Trial 33 finished with value: -33.43760703750989 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:58:36,187] Trial 34 finished with value: -37.06363287612511 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:58:42,611] Trial 35 finished with value: -37.698571231134814 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:58:47,117] Trial 36 finished with value: -53.355532894369574 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:59:36,544] Trial 37 finished with value: -44.91454394459155 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:59:48,474] Trial 38 finished with value: -50.440356796772974 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 12:59:59,043] Trial 39 finished with value: -8.164411064739713 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 13:00:03,389] Trial 40 finished with value: -13.161464251212347 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 13:00:26,527] Trial 41 finished with value: -8.883794103983233 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 13:00:44,261] Trial 42 finished with value: -6.5917182802017 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 13:01:01,980] Trial 43 finished with value: -12.020917787308393 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 13:01:17,788] Trial 44 finished with value: -29.313926082647445 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 13:01:39,230] Trial 45 finished with value: -23.445472260251485 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 13:01:49,485] Trial 46 finished with value: -35.20568192715893 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 13:02:07,527] Trial 47 finished with value: -26.723395641363847 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 13:02:11,854] Trial 48 finished with value: -96.48862909907818 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 13:02:27,618] Trial 49 finished with value: -4.769320499735534 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 19 with value: -0.19959691528723753. +[I 2025-12-17 13:02:32,001] A new study created in memory with name: no-name-94ca4da6-98cc-486c-b1e7-4720bfcb9353 +[I 2025-12-17 13:02:46,290] Trial 0 finished with value: -788.654227998162 and parameters: {'embedding_dim': 157, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -788.654227998162. +[I 2025-12-17 13:03:07,489] Trial 1 finished with value: -844.9273998913335 and parameters: {'embedding_dim': 260, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -788.654227998162. +[I 2025-12-17 13:03:16,744] Trial 2 finished with value: -1456.4835641485804 and parameters: {'embedding_dim': 381, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -788.654227998162. +[I 2025-12-17 13:03:29,594] Trial 3 finished with value: -134.4584060194086 and parameters: {'embedding_dim': 137, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:03:48,620] Trial 4 finished with value: -1072.5363210206588 and parameters: {'embedding_dim': 507, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:04:27,934] Trial 5 finished with value: -975.5654815982749 and parameters: {'embedding_dim': 199, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:04:40,428] Trial 6 finished with value: -1598.4738320435165 and parameters: {'embedding_dim': 130, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:04:55,198] Trial 7 finished with value: -262.2300621635599 and parameters: {'embedding_dim': 435, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:05:12,382] Trial 8 finished with value: -410.53900692158805 and parameters: {'embedding_dim': 329, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:05:20,171] Trial 9 finished with value: -875.92705599081 and parameters: {'embedding_dim': 202, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:05:33,437] Trial 10 finished with value: -5548.96974755035 and parameters: {'embedding_dim': 284, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:05:48,821] Trial 11 finished with value: -255.6630682935418 and parameters: {'embedding_dim': 439, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:06:05,535] Trial 12 finished with value: -519.001035583356 and parameters: {'embedding_dim': 455, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:06:15,886] Trial 13 finished with value: -995.1964856217896 and parameters: {'embedding_dim': 363, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:06:29,650] Trial 14 finished with value: -377.8677470360834 and parameters: {'embedding_dim': 434, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:06:50,665] Trial 15 finished with value: -749.3101548954804 and parameters: {'embedding_dim': 505, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:07:04,897] Trial 16 finished with value: -251.00645396284995 and parameters: {'embedding_dim': 247, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:07:18,503] Trial 17 finished with value: -1486.4189742413312 and parameters: {'embedding_dim': 219, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:07:34,941] Trial 18 finished with value: -405.22422425339187 and parameters: {'embedding_dim': 247, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:07:49,888] Trial 19 finished with value: -355.0372069349973 and parameters: {'embedding_dim': 167, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:08:03,007] Trial 20 finished with value: -278.8748976099446 and parameters: {'embedding_dim': 297, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:08:16,972] Trial 21 finished with value: -483.9281197208769 and parameters: {'embedding_dim': 346, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:08:27,590] Trial 22 finished with value: -500.1361051430214 and parameters: {'embedding_dim': 389, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:08:41,557] Trial 23 finished with value: -389.55442059415725 and parameters: {'embedding_dim': 236, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:08:56,048] Trial 24 finished with value: -294.830483569751 and parameters: {'embedding_dim': 292, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:09:07,394] Trial 25 finished with value: -225.25745430090853 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 3 with value: -134.4584060194086. +[I 2025-12-17 13:09:18,830] Trial 26 finished with value: -62.995417594626765 and parameters: {'embedding_dim': 140, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 26 with value: -62.995417594626765. +[I 2025-12-17 13:09:27,941] Trial 27 finished with value: -111.43885894646151 and parameters: {'embedding_dim': 136, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 26 with value: -62.995417594626765. +[I 2025-12-17 13:09:37,020] Trial 28 finished with value: -564.1319294867811 and parameters: {'embedding_dim': 170, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 26 with value: -62.995417594626765. +[I 2025-12-17 13:09:46,400] Trial 29 finished with value: -617.9319688424949 and parameters: {'embedding_dim': 152, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 26 with value: -62.995417594626765. +[I 2025-12-17 13:09:56,827] A new study created in memory with name: no-name-0282dd7e-c52f-4abf-8ce7-27dab1f0e2c1 +[I 2025-12-17 13:10:18,479] Trial 0 finished with value: -0.8836177430502117 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:10:22,739] Trial 1 finished with value: -13.467771066622065 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:10:30,964] Trial 2 finished with value: -57.86899275190815 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:10:53,893] Trial 3 finished with value: -61.022770505012296 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:11:09,630] Trial 4 finished with value: -46.971222777739435 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:11:15,444] Trial 5 finished with value: -173.529692891214 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:11:38,818] Trial 6 finished with value: -15.0298596148322 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:11:48,953] Trial 7 finished with value: -5.34574548702255 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:11:55,253] Trial 8 finished with value: -3.689659895868617 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:12:11,088] Trial 9 finished with value: -10.398521617939132 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:12:32,804] Trial 10 finished with value: -9.942305526425283 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:13:06,714] Trial 11 finished with value: -9.071540765753898 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:13:40,818] Trial 12 finished with value: -31.833644754959433 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:14:02,792] Trial 13 finished with value: -36.449836754506386 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:14:09,369] Trial 14 finished with value: -11.2903190485816 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:14:31,261] Trial 15 finished with value: -27.620543065809244 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:14:39,590] Trial 16 finished with value: -28.57477304324714 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:15:13,689] Trial 17 finished with value: -48.37038821091417 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:15:18,150] Trial 18 finished with value: -133.67449225698766 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:15:51,713] Trial 19 finished with value: -31.93151685617184 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:16:00,170] Trial 20 finished with value: -6.270470296397193 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:16:10,385] Trial 21 finished with value: -7.178614087008393 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:16:20,734] Trial 22 finished with value: -8.170359963653949 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:16:31,024] Trial 23 finished with value: -26.852499653638457 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:16:41,765] Trial 24 finished with value: -175.33878006086593 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:17:10,096] Trial 25 finished with value: -87.5483117858783 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:17:16,622] Trial 26 finished with value: -16.5060939866788 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:17:21,055] Trial 27 finished with value: -106.55261118370092 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:17:54,998] Trial 28 finished with value: -38.8607340099857 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:18:05,209] Trial 29 finished with value: -44.9346032424005 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:18:13,733] Trial 30 finished with value: -10.70316471486306 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:18:23,537] Trial 31 finished with value: -20.24044128547794 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:18:32,747] Trial 32 finished with value: -35.75347678207608 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:18:41,054] Trial 33 finished with value: -29.31322807933487 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:18:49,354] Trial 34 finished with value: -27.84352058968456 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:18:57,636] Trial 35 finished with value: -15.591267408946123 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:19:08,411] Trial 36 finished with value: -148.30368719766238 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:19:16,617] Trial 37 finished with value: -29.95489399608742 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:19:38,161] Trial 38 finished with value: -58.137960901460005 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:19:44,551] Trial 39 finished with value: -14.738563886440716 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:20:08,774] Trial 40 finished with value: -3.4508080932089427 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:20:32,271] Trial 41 finished with value: -25.417053351901746 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:20:58,232] Trial 42 finished with value: -21.969834017597677 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:21:21,383] Trial 43 finished with value: -39.42616876207517 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:21:43,054] Trial 44 finished with value: -75.22052340713428 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:22:04,618] Trial 45 finished with value: -20.32777157814047 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:22:42,205] Trial 46 finished with value: -5.3975317932315825 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:23:17,187] Trial 47 finished with value: -32.43885118876325 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:23:54,221] Trial 48 finished with value: -44.3931103309674 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:24:30,918] Trial 49 finished with value: -39.00926857136129 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.8836177430502117. +[I 2025-12-17 13:24:53,637] A new study created in memory with name: no-name-01faa587-c386-4a05-a117-7d1954aba5e0 +[I 2025-12-17 13:25:02,923] Trial 0 finished with value: -406.594965130497 and parameters: {'embedding_dim': 231, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -406.594965130497. +[I 2025-12-17 13:25:35,971] Trial 1 finished with value: -545.5439570909898 and parameters: {'embedding_dim': 327, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -406.594965130497. +[I 2025-12-17 13:26:08,789] Trial 2 finished with value: -298.5524867992784 and parameters: {'embedding_dim': 288, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -298.5524867992784. +[I 2025-12-17 13:26:21,259] Trial 3 finished with value: -838.9378238135673 and parameters: {'embedding_dim': 188, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -298.5524867992784. +[I 2025-12-17 13:26:30,298] Trial 4 finished with value: -893.7222876875417 and parameters: {'embedding_dim': 176, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -298.5524867992784. +[I 2025-12-17 13:26:39,728] Trial 5 finished with value: -2968.95196223529 and parameters: {'embedding_dim': 395, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -298.5524867992784. +[I 2025-12-17 13:26:56,622] Trial 6 finished with value: -1212.602823410545 and parameters: {'embedding_dim': 367, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 2 with value: -298.5524867992784. +[I 2025-12-17 13:27:11,101] Trial 7 finished with value: -570.0629781526029 and parameters: {'embedding_dim': 342, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -298.5524867992784. +[I 2025-12-17 13:27:30,355] Trial 8 finished with value: -175.6408909427802 and parameters: {'embedding_dim': 195, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 8 with value: -175.6408909427802. +[I 2025-12-17 13:27:52,653] Trial 9 finished with value: -1503.9462528591205 and parameters: {'embedding_dim': 365, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 8 with value: -175.6408909427802. +[I 2025-12-17 13:28:03,971] Trial 10 finished with value: -1278.6474472335276 and parameters: {'embedding_dim': 492, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 8 with value: -175.6408909427802. +[I 2025-12-17 13:28:38,227] Trial 11 finished with value: -82.37054386222297 and parameters: {'embedding_dim': 250, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -82.37054386222297. +[I 2025-12-17 13:29:17,994] Trial 12 finished with value: -255.4668400643544 and parameters: {'embedding_dim': 132, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 11 with value: -82.37054386222297. +[I 2025-12-17 13:29:46,363] Trial 13 finished with value: -424.35003347315654 and parameters: {'embedding_dim': 279, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -82.37054386222297. +[I 2025-12-17 13:30:00,899] Trial 14 finished with value: -388.87519898714163 and parameters: {'embedding_dim': 238, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 11 with value: -82.37054386222297. +[I 2025-12-17 13:30:40,334] Trial 15 finished with value: -52.9279790906339 and parameters: {'embedding_dim': 132, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -52.9279790906339. +[I 2025-12-17 13:31:14,637] Trial 16 finished with value: -332.59189013785846 and parameters: {'embedding_dim': 141, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -52.9279790906339. +[I 2025-12-17 13:31:43,276] Trial 17 finished with value: -43.39449128978829 and parameters: {'embedding_dim': 467, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 17 with value: -43.39449128978829. +[I 2025-12-17 13:32:03,810] Trial 18 finished with value: -1164.8092226379936 and parameters: {'embedding_dim': 502, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 17 with value: -43.39449128978829. +[I 2025-12-17 13:32:23,914] Trial 19 finished with value: -60.63939263209428 and parameters: {'embedding_dim': 446, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 17 with value: -43.39449128978829. +[I 2025-12-17 13:32:49,429] Trial 20 finished with value: -1566.0872573104689 and parameters: {'embedding_dim': 433, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 17 with value: -43.39449128978829. +[I 2025-12-17 13:33:09,932] Trial 21 finished with value: -541.80525417902 and parameters: {'embedding_dim': 447, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 17 with value: -43.39449128978829. +[I 2025-12-17 13:33:29,804] Trial 22 finished with value: -2055.3882782619403 and parameters: {'embedding_dim': 454, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 17 with value: -43.39449128978829. +[I 2025-12-17 13:33:55,463] Trial 23 finished with value: -228.24924777136988 and parameters: {'embedding_dim': 412, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 17 with value: -43.39449128978829. +[I 2025-12-17 13:34:15,681] Trial 24 finished with value: -392.49644402227375 and parameters: {'embedding_dim': 479, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 17 with value: -43.39449128978829. +[I 2025-12-17 13:34:40,822] Trial 25 finished with value: -1017.0114815195768 and parameters: {'embedding_dim': 512, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 17 with value: -43.39449128978829. +[I 2025-12-17 13:35:06,461] Trial 26 finished with value: -662.4820104343095 and parameters: {'embedding_dim': 397, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 17 with value: -43.39449128978829. +[I 2025-12-17 13:35:25,517] Trial 27 finished with value: -883.0588304155999 and parameters: {'embedding_dim': 472, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 17 with value: -43.39449128978829. +[I 2025-12-17 13:35:50,885] Trial 28 finished with value: -762.3376200244447 and parameters: {'embedding_dim': 297, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 17 with value: -43.39449128978829. +[I 2025-12-17 13:35:58,402] Trial 29 finished with value: -883.8038694258353 and parameters: {'embedding_dim': 419, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 17 with value: -43.39449128978829. +[I 2025-12-17 13:36:25,690] A new study created in memory with name: no-name-83ac970f-c6e5-4046-b178-7e13d9b18d83 +[I 2025-12-17 13:37:12,058] Trial 0 finished with value: -13.257888975124198 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -13.257888975124198. +[I 2025-12-17 13:37:27,907] Trial 1 finished with value: -6.976890162800499 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -6.976890162800499. +[I 2025-12-17 13:37:34,271] Trial 2 finished with value: -26.673767056192506 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -6.976890162800499. +[I 2025-12-17 13:38:08,378] Trial 3 finished with value: -10.992909776634953 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -6.976890162800499. +[I 2025-12-17 13:38:29,779] Trial 4 finished with value: -10.134261717263042 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -6.976890162800499. +[I 2025-12-17 13:38:36,394] Trial 5 finished with value: -72.07407748232022 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -6.976890162800499. +[I 2025-12-17 13:38:52,074] Trial 6 finished with value: -3.016890584681749 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -3.016890584681749. +[I 2025-12-17 13:39:26,134] Trial 7 finished with value: -30.876601592054783 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 6 with value: -3.016890584681749. +[I 2025-12-17 13:39:36,415] Trial 8 finished with value: -3.8949109453529007 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -3.016890584681749. +[I 2025-12-17 13:39:58,265] Trial 9 finished with value: -21.86201304888801 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 6 with value: -3.016890584681749. +[I 2025-12-17 13:40:19,812] Trial 10 finished with value: -36.221381272382835 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 6 with value: -3.016890584681749. +[I 2025-12-17 13:40:30,094] Trial 11 finished with value: -43.4118528441844 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -3.016890584681749. +[I 2025-12-17 13:40:40,384] Trial 12 finished with value: -41.7494869410916 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -3.016890584681749. +[I 2025-12-17 13:40:50,633] Trial 13 finished with value: -9.602070846809543 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -3.016890584681749. +[I 2025-12-17 13:41:00,947] Trial 14 finished with value: -68.32809241640997 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -3.016890584681749. +[I 2025-12-17 13:41:11,419] Trial 15 finished with value: -13.760417938011384 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -3.016890584681749. +[I 2025-12-17 13:41:19,751] Trial 16 finished with value: -2.1207008698346863 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -2.1207008698346863. +[I 2025-12-17 13:41:28,343] Trial 17 finished with value: -106.91670359905429 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -2.1207008698346863. +[I 2025-12-17 13:41:36,673] Trial 18 finished with value: -20.609431617835373 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -2.1207008698346863. +[I 2025-12-17 13:41:43,208] Trial 19 finished with value: -7.243748684619559 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 16 with value: -2.1207008698346863. +[I 2025-12-17 13:41:51,573] Trial 20 finished with value: -0.1284105733986859 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:41:59,925] Trial 21 finished with value: -26.845505093968544 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:42:08,299] Trial 22 finished with value: -62.04104531747635 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:42:14,639] Trial 23 finished with value: -24.52627206384861 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:42:23,043] Trial 24 finished with value: -33.758253448583694 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:42:29,514] Trial 25 finished with value: -40.302723257981434 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:42:37,957] Trial 26 finished with value: -8.303684531571864 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:42:44,325] Trial 27 finished with value: -20.68641522726356 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:43:30,777] Trial 28 finished with value: -42.29914133534792 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:43:39,204] Trial 29 finished with value: -64.78294388529193 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:44:30,600] Trial 30 finished with value: -3.179717375378238 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:45:21,221] Trial 31 finished with value: -1.8787469521481404 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:46:10,012] Trial 32 finished with value: -1.892989204571093 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:46:57,504] Trial 33 finished with value: -6.777262854980469 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:47:45,424] Trial 34 finished with value: -5.255010154501845 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:48:35,193] Trial 35 finished with value: -1.4429446636004895 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:49:23,884] Trial 36 finished with value: -2.1199758766921937 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:50:10,157] Trial 37 finished with value: -29.988903472186607 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:51:00,583] Trial 38 finished with value: -7.707308387934653 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:51:50,246] Trial 39 finished with value: -6.115830526609128 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:52:24,751] Trial 40 finished with value: -14.7168896194762 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:53:15,444] Trial 41 finished with value: -2.19149229868169 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:54:04,438] Trial 42 finished with value: -13.214139111058243 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:54:54,411] Trial 43 finished with value: -19.321756825661073 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:55:42,715] Trial 44 finished with value: -13.340162334857016 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:56:30,746] Trial 45 finished with value: -21.51762341330548 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:57:20,296] Trial 46 finished with value: -14.260650659564723 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:58:12,767] Trial 47 finished with value: -29.260945150602854 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:59:03,125] Trial 48 finished with value: -9.788425472238991 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:59:38,635] Trial 49 finished with value: -3.3881132941662573 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 20 with value: -0.1284105733986859. +[I 2025-12-17 13:59:47,088] A new study created in memory with name: no-name-799ecbb9-9ecd-4465-b901-5a19ed381151 +[I 2025-12-17 14:00:34,280] Trial 0 finished with value: -280.6336735511234 and parameters: {'embedding_dim': 321, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -280.6336735511234. +[I 2025-12-17 14:01:51,444] Trial 1 finished with value: -537.878271585365 and parameters: {'embedding_dim': 204, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -280.6336735511234. +[I 2025-12-17 14:03:17,856] Trial 2 finished with value: -363.881156347997 and parameters: {'embedding_dim': 200, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -280.6336735511234. +[I 2025-12-17 14:03:40,478] Trial 3 finished with value: -442.8836882803389 and parameters: {'embedding_dim': 192, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -280.6336735511234. +[I 2025-12-17 14:03:50,529] Trial 4 finished with value: -7013.298016390881 and parameters: {'embedding_dim': 276, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -280.6336735511234. +[I 2025-12-17 14:04:29,442] Trial 5 finished with value: -162.49872490381898 and parameters: {'embedding_dim': 263, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -162.49872490381898. +[I 2025-12-17 14:05:08,814] Trial 6 finished with value: -540.2612572602069 and parameters: {'embedding_dim': 375, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -162.49872490381898. +[I 2025-12-17 14:05:31,200] Trial 7 finished with value: -382.7485065928602 and parameters: {'embedding_dim': 492, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -162.49872490381898. +[I 2025-12-17 14:05:47,933] Trial 8 finished with value: -486.04448771626215 and parameters: {'embedding_dim': 194, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -162.49872490381898. +[I 2025-12-17 14:06:47,445] Trial 9 finished with value: -126.05854508865401 and parameters: {'embedding_dim': 131, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -126.05854508865401. +[I 2025-12-17 14:07:33,870] Trial 10 finished with value: -887.3956226040106 and parameters: {'embedding_dim': 409, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 9 with value: -126.05854508865401. +[I 2025-12-17 14:08:04,233] Trial 11 finished with value: -122.37361163087212 and parameters: {'embedding_dim': 129, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 11 with value: -122.37361163087212. +[I 2025-12-17 14:08:39,020] Trial 12 finished with value: -152.08261271305042 and parameters: {'embedding_dim': 131, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 11 with value: -122.37361163087212. +[I 2025-12-17 14:09:23,006] Trial 13 finished with value: -373.8277583325463 and parameters: {'embedding_dim': 144, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -122.37361163087212. +[I 2025-12-17 14:09:46,085] Trial 14 finished with value: -836.3188937255561 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 11 with value: -122.37361163087212. +[I 2025-12-17 14:10:49,574] Trial 15 finished with value: -307.0084948160605 and parameters: {'embedding_dim': 250, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -122.37361163087212. +[I 2025-12-17 14:11:06,647] Trial 16 finished with value: -809.7267250121708 and parameters: {'embedding_dim': 325, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 11 with value: -122.37361163087212. +[I 2025-12-17 14:11:51,711] Trial 17 finished with value: -1162.191358755241 and parameters: {'embedding_dim': 165, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -122.37361163087212. +[I 2025-12-17 14:12:30,799] Trial 18 finished with value: -1933.6611959563052 and parameters: {'embedding_dim': 235, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 11 with value: -122.37361163087212. +[I 2025-12-17 14:13:30,577] Trial 19 finished with value: -346.4264480509768 and parameters: {'embedding_dim': 379, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -122.37361163087212. +[I 2025-12-17 14:14:02,542] Trial 20 finished with value: -93.84696357789898 and parameters: {'embedding_dim': 476, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 20 with value: -93.84696357789898. +[I 2025-12-17 14:14:34,574] Trial 21 finished with value: -343.3139978768089 and parameters: {'embedding_dim': 494, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 20 with value: -93.84696357789898. +[I 2025-12-17 14:15:07,516] Trial 22 finished with value: -164.8992732702989 and parameters: {'embedding_dim': 457, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 20 with value: -93.84696357789898. +[I 2025-12-17 14:15:32,522] Trial 23 finished with value: -237.64279368827374 and parameters: {'embedding_dim': 443, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 20 with value: -93.84696357789898. +[I 2025-12-17 14:16:14,341] Trial 24 finished with value: -335.5045937569317 and parameters: {'embedding_dim': 295, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 20 with value: -93.84696357789898. +[I 2025-12-17 14:17:14,979] Trial 25 finished with value: -519.0385315533645 and parameters: {'embedding_dim': 225, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -93.84696357789898. +[I 2025-12-17 14:17:48,626] Trial 26 finished with value: -503.0449979784362 and parameters: {'embedding_dim': 153, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 20 with value: -93.84696357789898. +[I 2025-12-17 14:18:14,193] Trial 27 finished with value: -228.9494981534297 and parameters: {'embedding_dim': 350, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 20 with value: -93.84696357789898. +[I 2025-12-17 14:18:35,114] Trial 28 finished with value: -214.0296033161841 and parameters: {'embedding_dim': 171, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 20 with value: -93.84696357789898. +[I 2025-12-17 14:19:33,962] Trial 29 finished with value: -701.5096267203194 and parameters: {'embedding_dim': 304, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -93.84696357789898. +[I 2025-12-17 14:20:06,418] A new study created in memory with name: no-name-d069a071-86d1-4b14-ab3d-6c25123c03e0 +[I 2025-12-17 14:20:16,845] Trial 0 finished with value: -114.3392025742621 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -114.3392025742621. +[I 2025-12-17 14:20:34,831] Trial 1 finished with value: -29.381818038936814 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -29.381818038936814. +[I 2025-12-17 14:21:08,621] Trial 2 finished with value: -159.64194025588836 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -29.381818038936814. +[I 2025-12-17 14:21:12,872] Trial 3 finished with value: -30.95050269436349 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -29.381818038936814. +[I 2025-12-17 14:21:58,837] Trial 4 finished with value: -20.973921759758337 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -20.973921759758337. +[I 2025-12-17 14:22:07,324] Trial 5 finished with value: -14.305980490154207 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -14.305980490154207. +[I 2025-12-17 14:22:23,244] Trial 6 finished with value: -22.808713981641013 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -14.305980490154207. +[I 2025-12-17 14:23:09,381] Trial 7 finished with value: -16.15604399002146 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -14.305980490154207. +[I 2025-12-17 14:23:20,357] Trial 8 finished with value: -68.21795402048923 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -14.305980490154207. +[I 2025-12-17 14:23:24,645] Trial 9 finished with value: -15.055169771495706 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -14.305980490154207. +[I 2025-12-17 14:23:32,990] Trial 10 finished with value: -19.744726883310133 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -14.305980490154207. +[I 2025-12-17 14:23:37,322] Trial 11 finished with value: -39.89574362862027 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -14.305980490154207. +[I 2025-12-17 14:23:41,620] Trial 12 finished with value: -54.31105631228014 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -14.305980490154207. +[I 2025-12-17 14:23:48,039] Trial 13 finished with value: -18.30690883764892 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -14.305980490154207. +[I 2025-12-17 14:23:54,393] Trial 14 finished with value: -21.061746651876962 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -14.305980490154207. +[I 2025-12-17 14:24:02,824] Trial 15 finished with value: -13.422661474185668 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -13.422661474185668. +[I 2025-12-17 14:24:11,261] Trial 16 finished with value: -14.285238622019902 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -13.422661474185668. +[I 2025-12-17 14:24:19,611] Trial 17 finished with value: -6.503397908629778 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 17 with value: -6.503397908629778. +[I 2025-12-17 14:25:09,478] Trial 18 finished with value: -8.159669390663607 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 17 with value: -6.503397908629778. +[I 2025-12-17 14:25:56,364] Trial 19 finished with value: -10.271735048677332 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 17 with value: -6.503397908629778. +[I 2025-12-17 14:26:32,286] Trial 20 finished with value: -36.77633392404742 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 17 with value: -6.503397908629778. +[I 2025-12-17 14:27:20,403] Trial 21 finished with value: -2.9010530379223702 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -2.9010530379223702. +[I 2025-12-17 14:28:10,685] Trial 22 finished with value: -12.164510501198443 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -2.9010530379223702. +[I 2025-12-17 14:28:57,482] Trial 23 finished with value: -12.134042163892595 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -2.9010530379223702. +[I 2025-12-17 14:29:45,401] Trial 24 finished with value: -29.45912655828034 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -2.9010530379223702. +[I 2025-12-17 14:30:32,455] Trial 25 finished with value: -65.66175864187466 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -2.9010530379223702. +[I 2025-12-17 14:31:08,051] Trial 26 finished with value: -106.7577267229143 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 21 with value: -2.9010530379223702. +[I 2025-12-17 14:31:30,033] Trial 27 finished with value: -19.662634656904757 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 21 with value: -2.9010530379223702. +[I 2025-12-17 14:32:17,846] Trial 28 finished with value: -31.842109620003086 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -2.9010530379223702. +[I 2025-12-17 14:33:06,028] Trial 29 finished with value: -35.18735359550695 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -2.9010530379223702. +[I 2025-12-17 14:33:21,841] Trial 30 finished with value: -83.96614002107522 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 21 with value: -2.9010530379223702. +[I 2025-12-17 14:34:09,475] Trial 31 finished with value: -19.836333611206864 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 21 with value: -2.9010530379223702. +[I 2025-12-17 14:34:58,106] Trial 32 finished with value: -2.812566267388486 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 32 with value: -2.812566267388486. +[I 2025-12-17 14:35:46,122] Trial 33 finished with value: -15.490059326331643 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 32 with value: -2.812566267388486. +[I 2025-12-17 14:36:33,586] Trial 34 finished with value: -10.983377060381502 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 32 with value: -2.812566267388486. +[I 2025-12-17 14:37:19,989] Trial 35 finished with value: -21.87900055053833 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 32 with value: -2.812566267388486. +[I 2025-12-17 14:38:06,050] Trial 36 finished with value: -10.204136206826563 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 32 with value: -2.812566267388486. +[I 2025-12-17 14:38:21,671] Trial 37 finished with value: -42.948755917066016 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -2.812566267388486. +[I 2025-12-17 14:39:07,611] Trial 38 finished with value: -53.39051587980994 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 32 with value: -2.812566267388486. +[I 2025-12-17 14:39:41,662] Trial 39 finished with value: -1.2569319698965675 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 39 with value: -1.2569319698965675. +[I 2025-12-17 14:39:47,942] Trial 40 finished with value: -126.97552790061519 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 39 with value: -1.2569319698965675. +[I 2025-12-17 14:40:21,813] Trial 41 finished with value: -2.6742762688901602 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 39 with value: -1.2569319698965675. +[I 2025-12-17 14:40:56,292] Trial 42 finished with value: -0.5384222647078184 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 42 with value: -0.5384222647078184. +[I 2025-12-17 14:41:32,144] Trial 43 finished with value: -43.171455052682376 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 42 with value: -0.5384222647078184. +[I 2025-12-17 14:42:06,359] Trial 44 finished with value: -11.69204502915569 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 42 with value: -0.5384222647078184. +[I 2025-12-17 14:42:40,394] Trial 45 finished with value: -30.355063472763952 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 42 with value: -0.5384222647078184. +[I 2025-12-17 14:43:14,255] Trial 46 finished with value: -105.50515219273254 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 42 with value: -0.5384222647078184. +[I 2025-12-17 14:43:48,197] Trial 47 finished with value: -34.5594781206653 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 42 with value: -0.5384222647078184. +[I 2025-12-17 14:44:10,025] Trial 48 finished with value: -284.59764547383816 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 42 with value: -0.5384222647078184. +[I 2025-12-17 14:44:25,847] Trial 49 finished with value: -35.68419114195529 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 42 with value: -0.5384222647078184. +[I 2025-12-17 14:44:59,853] A new study created in memory with name: no-name-7286da9c-bd0a-4d56-b9fe-0487e3403d31 +[I 2025-12-17 14:45:26,989] Trial 0 finished with value: -1565.3170708292669 and parameters: {'embedding_dim': 246, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -1565.3170708292669. +[I 2025-12-17 14:45:39,142] Trial 1 finished with value: -1615.9256455994114 and parameters: {'embedding_dim': 291, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -1565.3170708292669. +[I 2025-12-17 14:46:36,988] Trial 2 finished with value: -110.12199478712287 and parameters: {'embedding_dim': 479, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -110.12199478712287. +[I 2025-12-17 14:46:59,983] Trial 3 finished with value: -842.0611571387981 and parameters: {'embedding_dim': 163, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -110.12199478712287. +[I 2025-12-17 14:47:37,792] Trial 4 finished with value: -487.7295392033941 and parameters: {'embedding_dim': 300, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -110.12199478712287. +[I 2025-12-17 14:47:56,534] Trial 5 finished with value: -444.24032418812163 and parameters: {'embedding_dim': 214, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -110.12199478712287. +[I 2025-12-17 14:48:26,541] Trial 6 finished with value: -1395.8925339052355 and parameters: {'embedding_dim': 424, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -110.12199478712287. +[I 2025-12-17 14:48:54,595] Trial 7 finished with value: -190.96741435821846 and parameters: {'embedding_dim': 354, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -110.12199478712287. +[I 2025-12-17 14:49:16,747] Trial 8 finished with value: -1677.5964020018878 and parameters: {'embedding_dim': 406, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -110.12199478712287. +[I 2025-12-17 14:50:27,673] Trial 9 finished with value: -150.5696620129212 and parameters: {'embedding_dim': 257, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -110.12199478712287. +[I 2025-12-17 14:51:23,887] Trial 10 finished with value: -1095.7449850264497 and parameters: {'embedding_dim': 485, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -110.12199478712287. +[I 2025-12-17 14:52:34,876] Trial 11 finished with value: -131.94929538895713 and parameters: {'embedding_dim': 498, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -110.12199478712287. +[I 2025-12-17 14:54:04,733] Trial 12 finished with value: -283.58376449947724 and parameters: {'embedding_dim': 511, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -110.12199478712287. +[I 2025-12-17 14:55:04,329] Trial 13 finished with value: -851.77815146519 and parameters: {'embedding_dim': 435, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -110.12199478712287. +[I 2025-12-17 14:56:20,940] Trial 14 finished with value: -0.020040510505437408 and parameters: {'embedding_dim': 467, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 14:57:04,917] Trial 15 finished with value: -116.45115665780109 and parameters: {'embedding_dim': 364, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 14:58:37,425] Trial 16 finished with value: -118.56650359957715 and parameters: {'embedding_dim': 459, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 14:59:53,980] Trial 17 finished with value: -100.55861980397188 and parameters: {'embedding_dim': 374, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 15:00:32,935] Trial 18 finished with value: -356.59069645251674 and parameters: {'embedding_dim': 376, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 15:00:53,468] Trial 19 finished with value: -509.8824992488449 and parameters: {'embedding_dim': 330, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 15:02:09,501] Trial 20 finished with value: -366.7511339205321 and parameters: {'embedding_dim': 402, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 15:03:12,778] Trial 21 finished with value: -1464.6626848969386 and parameters: {'embedding_dim': 464, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 15:04:12,105] Trial 22 finished with value: -13.184655277411666 and parameters: {'embedding_dim': 471, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 15:05:27,575] Trial 23 finished with value: -851.9717146350702 and parameters: {'embedding_dim': 445, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 15:06:12,084] Trial 24 finished with value: -366.3088218965224 and parameters: {'embedding_dim': 405, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 15:07:10,273] Trial 25 finished with value: -1.320735495773228 and parameters: {'embedding_dim': 387, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 15:08:13,258] Trial 26 finished with value: -508.0020320064871 and parameters: {'embedding_dim': 444, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 15:09:14,655] Trial 27 finished with value: -290.9751421092186 and parameters: {'embedding_dim': 419, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 15:09:37,375] Trial 28 finished with value: -221.64697640386117 and parameters: {'embedding_dim': 473, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 14 with value: -0.020040510505437408. +[I 2025-12-17 15:09:49,156] Trial 29 finished with value: -3390.358698748544 and parameters: {'embedding_dim': 336, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 14 with value: -0.020040510505437408. +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_1_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_1_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_1_incheon.csv: Class 0=6854 | Class 1=6671 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_incheon.csv: Class 0=6854 | Class 1=6671 | Class 2=14554 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_1_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_1_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_1_seoul.csv: Class 0=7384 | Class 1=6693 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_seoul.csv: Class 0=7384 | Class 1=6693 | Class 2=15676 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_1_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_1_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_1_busan.csv: Class 0=6550 | Class 1=5570 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_busan.csv: Class 0=6550 | Class 1=5570 | Class 2=16492 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_1_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_1_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_1_daegu.csv: Class 0=7317 | Class 1=6717 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_daegu.csv: Class 0=7317 | Class 1=6717 | Class 2=16582 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_1_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_1_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_1_daejeon.csv: Class 0=7182 | Class 1=6723 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_daejeon.csv: Class 0=7182 | Class 1=6723 | Class 2=15441 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_1_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_1_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_1_gwangju.csv: Class 0=7238 | Class 1=6852 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_gwangju.csv: Class 0=7238 | Class 1=6852 | Class 2=15692 + +Running smotenc_ctgan_sample_7000_2.py... +[I 2025-12-17 15:11:08,736] A new study created in memory with name: no-name-b7d54bc3-f603-4b63-9b35-a7e4b2dddd14 +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +[I 2025-12-17 15:11:45,366] Trial 0 finished with value: -23.334928609498043 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -23.334928609498043. +[I 2025-12-17 15:12:06,779] Trial 1 finished with value: -68.71931187111059 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -23.334928609498043. +[I 2025-12-17 15:12:27,704] Trial 2 finished with value: -79.3080389235037 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -23.334928609498043. +[I 2025-12-17 15:12:36,144] Trial 3 finished with value: -128.72545938938222 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -23.334928609498043. +[I 2025-12-17 15:12:44,367] Trial 4 finished with value: -37.84962526953579 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -23.334928609498043. +[I 2025-12-17 15:12:52,546] Trial 5 finished with value: -183.17226819849395 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -23.334928609498043. +[I 2025-12-17 15:12:56,825] Trial 6 finished with value: -109.30785039209736 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -23.334928609498043. +[I 2025-12-17 15:13:18,087] Trial 7 finished with value: -15.603927012362288 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 7 with value: -15.603927012362288. +[I 2025-12-17 15:13:22,369] Trial 8 finished with value: -29.80602945914047 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -15.603927012362288. +[I 2025-12-17 15:13:28,563] Trial 9 finished with value: -81.03496512987324 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -15.603927012362288. +[I 2025-12-17 15:13:49,972] Trial 10 finished with value: -31.465682025973976 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 7 with value: -15.603927012362288. +[I 2025-12-17 15:14:23,584] Trial 11 finished with value: -58.96228170108289 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -15.603927012362288. +[I 2025-12-17 15:14:57,062] Trial 12 finished with value: -25.435900744843842 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -15.603927012362288. +[I 2025-12-17 15:15:30,762] Trial 13 finished with value: -41.984501812081504 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -15.603927012362288. +[I 2025-12-17 15:15:42,224] Trial 14 finished with value: -18.90700596198899 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 7 with value: -15.603927012362288. +[I 2025-12-17 15:15:53,908] Trial 15 finished with value: -27.99875150488054 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 7 with value: -15.603927012362288. +[I 2025-12-17 15:16:03,998] Trial 16 finished with value: -1.605009269629385 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 16 with value: -1.605009269629385. +[I 2025-12-17 15:16:14,054] Trial 17 finished with value: -5.1060000103057686 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 16 with value: -1.605009269629385. +[I 2025-12-17 15:16:24,253] Trial 18 finished with value: -38.38224278602747 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 16 with value: -1.605009269629385. +[I 2025-12-17 15:16:36,433] Trial 19 finished with value: -164.7165256441854 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 16 with value: -1.605009269629385. +[I 2025-12-17 15:16:52,021] Trial 20 finished with value: -99.59071418492194 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 16 with value: -1.605009269629385. +[I 2025-12-17 15:17:02,213] Trial 21 finished with value: -7.69707280297596 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 16 with value: -1.605009269629385. +[I 2025-12-17 15:17:12,467] Trial 22 finished with value: -7.656381098938184 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 16 with value: -1.605009269629385. +[I 2025-12-17 15:17:22,547] Trial 23 finished with value: -47.48937771890539 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 16 with value: -1.605009269629385. +[I 2025-12-17 15:17:32,722] Trial 24 finished with value: -30.27284168338243 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 16 with value: -1.605009269629385. +[I 2025-12-17 15:17:44,815] Trial 25 finished with value: -0.6014407043066616 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:18:00,295] Trial 26 finished with value: -31.398498640073733 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:18:10,553] Trial 27 finished with value: -54.85232955446536 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:18:23,556] Trial 28 finished with value: -21.734142965795172 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:18:40,578] Trial 29 finished with value: -53.09615092352947 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:18:57,744] Trial 30 finished with value: -86.62483762231822 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:19:07,840] Trial 31 finished with value: -37.59486331054413 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:19:19,238] Trial 32 finished with value: -9.541351348055166 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:19:29,310] Trial 33 finished with value: -2.368812498970998 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:19:40,075] Trial 34 finished with value: -13.915146347020205 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:19:52,235] Trial 35 finished with value: -0.8903912657897353 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:20:02,838] Trial 36 finished with value: -15.351493729692102 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:20:25,220] Trial 37 finished with value: -6.10667185141222 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:20:35,351] Trial 38 finished with value: -61.44081703118426 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:20:39,755] Trial 39 finished with value: -175.2449756127524 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:20:50,145] Trial 40 finished with value: -43.35623893286304 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:21:01,579] Trial 41 finished with value: -1.6292343400644131 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:21:13,049] Trial 42 finished with value: -259.74753567968935 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.6014407043066616. +[I 2025-12-17 15:21:23,465] Trial 43 finished with value: -0.053259764652230465 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 43 with value: -0.053259764652230465. +[I 2025-12-17 15:21:27,765] Trial 44 finished with value: -46.60454523022062 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 43 with value: -0.053259764652230465. +[I 2025-12-17 15:21:48,955] Trial 45 finished with value: -6.811030521752492 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 43 with value: -0.053259764652230465. +[I 2025-12-17 15:22:11,908] Trial 46 finished with value: -127.61972410968838 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 43 with value: -0.053259764652230465. +[I 2025-12-17 15:22:16,218] Trial 47 finished with value: -15.67414831595804 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 43 with value: -0.053259764652230465. +[I 2025-12-17 15:22:37,415] Trial 48 finished with value: -27.242218757853692 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 43 with value: -0.053259764652230465. +[I 2025-12-17 15:22:47,348] Trial 49 finished with value: -3.5785329724689423 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 43 with value: -0.053259764652230465. +[I 2025-12-17 15:22:59,061] A new study created in memory with name: no-name-17c0dca7-bea8-436a-82cd-3251d0986147 +[I 2025-12-17 15:25:02,474] Trial 0 finished with value: -692.0558743428487 and parameters: {'embedding_dim': 170, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -692.0558743428487. +[I 2025-12-17 15:25:37,703] Trial 1 finished with value: -263.8718759852003 and parameters: {'embedding_dim': 351, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -263.8718759852003. +[I 2025-12-17 15:25:59,894] Trial 2 finished with value: -575.4502494347888 and parameters: {'embedding_dim': 339, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 1 with value: -263.8718759852003. +[I 2025-12-17 15:27:42,457] Trial 3 finished with value: -54.49757546329519 and parameters: {'embedding_dim': 232, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -54.49757546329519. +[I 2025-12-17 15:28:22,420] Trial 4 finished with value: -3179.2758506529044 and parameters: {'embedding_dim': 275, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -54.49757546329519. +[I 2025-12-17 15:28:52,742] Trial 5 finished with value: -233.9102178281721 and parameters: {'embedding_dim': 202, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -54.49757546329519. +[I 2025-12-17 15:29:15,701] Trial 6 finished with value: -402.4826963967833 and parameters: {'embedding_dim': 398, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 3 with value: -54.49757546329519. +[I 2025-12-17 15:30:34,404] Trial 7 finished with value: -310.6766927623073 and parameters: {'embedding_dim': 509, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -54.49757546329519. +[I 2025-12-17 15:31:14,523] Trial 8 finished with value: -315.8617838191513 and parameters: {'embedding_dim': 365, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 3 with value: -54.49757546329519. +[I 2025-12-17 15:32:19,745] Trial 9 finished with value: -545.2636597109482 and parameters: {'embedding_dim': 485, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -54.49757546329519. +[I 2025-12-17 15:34:05,789] Trial 10 finished with value: -13.533862171968563 and parameters: {'embedding_dim': 246, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -13.533862171968563. +[I 2025-12-17 15:35:46,902] Trial 11 finished with value: -244.55992042569187 and parameters: {'embedding_dim': 248, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -13.533862171968563. +[I 2025-12-17 15:37:26,774] Trial 12 finished with value: -72.0518401471248 and parameters: {'embedding_dim': 134, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -13.533862171968563. +[I 2025-12-17 15:38:47,903] Trial 13 finished with value: -67.12201119283695 and parameters: {'embedding_dim': 255, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -13.533862171968563. +[I 2025-12-17 15:40:29,037] Trial 14 finished with value: -71.98588583123697 and parameters: {'embedding_dim': 211, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -13.533862171968563. +[I 2025-12-17 15:42:31,032] Trial 15 finished with value: -7.689304435645131 and parameters: {'embedding_dim': 290, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 15:44:31,660] Trial 16 finished with value: -384.9678719349753 and parameters: {'embedding_dim': 304, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 15:46:43,836] Trial 17 finished with value: -422.92817880274964 and parameters: {'embedding_dim': 445, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 15:48:10,131] Trial 18 finished with value: -268.72266128661437 and parameters: {'embedding_dim': 294, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 15:48:52,828] Trial 19 finished with value: -968.2898794834621 and parameters: {'embedding_dim': 396, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 15:50:38,890] Trial 20 finished with value: -201.6942245081755 and parameters: {'embedding_dim': 173, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 15:52:24,556] Trial 21 finished with value: -1294.5296981102133 and parameters: {'embedding_dim': 236, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 15:54:10,899] Trial 22 finished with value: -1099.2737636051543 and parameters: {'embedding_dim': 219, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 15:56:12,950] Trial 23 finished with value: -111.53649715184923 and parameters: {'embedding_dim': 276, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 15:57:38,559] Trial 24 finished with value: -159.42565625553476 and parameters: {'embedding_dim': 320, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 15:59:49,396] Trial 25 finished with value: -34.97680961266085 and parameters: {'embedding_dim': 174, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 16:01:55,997] Trial 26 finished with value: -123.93420802130417 and parameters: {'embedding_dim': 174, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 16:04:09,820] Trial 27 finished with value: -252.49431901332287 and parameters: {'embedding_dim': 156, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 16:05:25,803] Trial 28 finished with value: -309.28349527407937 and parameters: {'embedding_dim': 199, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 16:06:07,052] Trial 29 finished with value: -230.3321104940456 and parameters: {'embedding_dim': 135, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 15 with value: -7.689304435645131. +[I 2025-12-17 16:08:13,776] A new study created in memory with name: no-name-c733c656-f4f6-48db-b7dd-c8b6b31acb14 +[I 2025-12-17 16:08:20,357] Trial 0 finished with value: -16.23387948306933 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -16.23387948306933. +[I 2025-12-17 16:08:36,274] Trial 1 finished with value: -26.46242414621379 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -16.23387948306933. +[I 2025-12-17 16:08:57,681] Trial 2 finished with value: -4.2148706673647185 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -4.2148706673647185. +[I 2025-12-17 16:09:43,126] Trial 3 finished with value: -4.10850562269724 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -4.10850562269724. +[I 2025-12-17 16:09:51,270] Trial 4 finished with value: -2.0837198164243 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -2.0837198164243. +[I 2025-12-17 16:10:36,793] Trial 5 finished with value: -16.838200087680782 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -2.0837198164243. +[I 2025-12-17 16:11:22,183] Trial 6 finished with value: -11.980980289675328 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -2.0837198164243. +[I 2025-12-17 16:11:26,648] Trial 7 finished with value: -34.72635491797158 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -2.0837198164243. +[I 2025-12-17 16:11:36,664] Trial 8 finished with value: -60.957658848304035 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -2.0837198164243. +[I 2025-12-17 16:11:41,030] Trial 9 finished with value: -20.76765853089249 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -2.0837198164243. +[I 2025-12-17 16:11:47,322] Trial 10 finished with value: -45.11039086627071 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -2.0837198164243. +[I 2025-12-17 16:12:32,298] Trial 11 finished with value: -0.7504380822811003 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -0.7504380822811003. +[I 2025-12-17 16:13:17,320] Trial 12 finished with value: -7.95921347793933 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -0.7504380822811003. +[I 2025-12-17 16:13:24,187] Trial 13 finished with value: -14.500271430704963 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -0.7504380822811003. +[I 2025-12-17 16:13:47,642] Trial 14 finished with value: -5.2387441872255955 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -0.7504380822811003. +[I 2025-12-17 16:14:34,357] Trial 15 finished with value: -5.387948627188107 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -0.7504380822811003. +[I 2025-12-17 16:14:41,673] Trial 16 finished with value: -14.525033079731129 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -0.7504380822811003. +[I 2025-12-17 16:15:28,766] Trial 17 finished with value: -2.616938685511568 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -0.7504380822811003. +[I 2025-12-17 16:15:34,934] Trial 18 finished with value: -3.016740213043946 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -0.7504380822811003. +[I 2025-12-17 16:15:57,751] Trial 19 finished with value: -3.9558844970895386 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -0.7504380822811003. +[I 2025-12-17 16:16:08,223] Trial 20 finished with value: -8.268308114457867 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -0.7504380822811003. +[I 2025-12-17 16:16:55,079] Trial 21 finished with value: -6.38084377373239 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -0.7504380822811003. +[I 2025-12-17 16:17:45,112] Trial 22 finished with value: -1.640712427985053 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 11 with value: -0.7504380822811003. +[I 2025-12-17 16:18:18,276] Trial 23 finished with value: -4.02354055307978 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 11 with value: -0.7504380822811003. +[I 2025-12-17 16:19:05,572] Trial 24 finished with value: -0.03708771564241433 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:19:54,579] Trial 25 finished with value: -0.7786081537157448 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:20:31,259] Trial 26 finished with value: -15.374582553861567 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:21:20,504] Trial 27 finished with value: -1.5065663084771215 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:22:08,419] Trial 28 finished with value: -0.09224325151569174 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:22:43,254] Trial 29 finished with value: -4.588572500002757 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:23:30,889] Trial 30 finished with value: -3.8797051021334856 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:24:20,339] Trial 31 finished with value: -3.1463749499691502 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:25:06,651] Trial 32 finished with value: -6.088427841814813 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:25:54,609] Trial 33 finished with value: -1.2720949889590198 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:26:43,808] Trial 34 finished with value: -0.34144077250505595 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:27:06,509] Trial 35 finished with value: -0.6396574252027811 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:27:29,284] Trial 36 finished with value: -12.74357921764161 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:27:46,549] Trial 37 finished with value: -7.271947690690084 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:28:09,918] Trial 38 finished with value: -1.3449702010787594 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:28:32,170] Trial 39 finished with value: -9.135306757612158 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:28:52,961] Trial 40 finished with value: -1.4057142314603748 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:29:38,372] Trial 41 finished with value: -0.5342254130375025 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:30:23,993] Trial 42 finished with value: -4.145507625602132 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:31:09,369] Trial 43 finished with value: -1.334341102999236 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:31:54,677] Trial 44 finished with value: -6.1491083409988505 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:32:40,019] Trial 45 finished with value: -7.481403198985162 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:33:00,979] Trial 46 finished with value: -2.6079561691959783 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:33:49,506] Trial 47 finished with value: -38.67651321152432 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:34:11,898] Trial 48 finished with value: -14.88225559312468 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:34:35,015] Trial 49 finished with value: -9.673054740804162 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 24 with value: -0.03708771564241433. +[I 2025-12-17 16:35:23,292] A new study created in memory with name: no-name-c005aded-1f08-4148-afb0-24652806a754 +[I 2025-12-17 16:36:11,273] Trial 0 finished with value: -808.9400346937471 and parameters: {'embedding_dim': 506, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -808.9400346937471. +[I 2025-12-17 16:36:56,493] Trial 1 finished with value: -783.9243819407505 and parameters: {'embedding_dim': 301, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -783.9243819407505. +[I 2025-12-17 16:37:35,061] Trial 2 finished with value: -320.7552596436364 and parameters: {'embedding_dim': 161, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -320.7552596436364. +[I 2025-12-17 16:37:44,469] Trial 3 finished with value: -1349.1902446223512 and parameters: {'embedding_dim': 386, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -320.7552596436364. +[I 2025-12-17 16:37:58,177] Trial 4 finished with value: -300.95764690528574 and parameters: {'embedding_dim': 141, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -300.95764690528574. +[I 2025-12-17 16:38:22,495] Trial 5 finished with value: -2120.842401926963 and parameters: {'embedding_dim': 507, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -300.95764690528574. +[I 2025-12-17 16:39:25,674] Trial 6 finished with value: -1212.6129493217247 and parameters: {'embedding_dim': 362, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -300.95764690528574. +[I 2025-12-17 16:40:39,226] Trial 7 finished with value: -343.21703200988793 and parameters: {'embedding_dim': 462, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 4 with value: -300.95764690528574. +[I 2025-12-17 16:41:19,511] Trial 8 finished with value: -488.5239708594461 and parameters: {'embedding_dim': 151, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 4 with value: -300.95764690528574. +[I 2025-12-17 16:42:36,862] Trial 9 finished with value: -1188.6917734627325 and parameters: {'embedding_dim': 455, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 4 with value: -300.95764690528574. +[I 2025-12-17 16:42:49,247] Trial 10 finished with value: -1174.2323487703409 and parameters: {'embedding_dim': 239, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -300.95764690528574. +[I 2025-12-17 16:43:00,807] Trial 11 finished with value: -623.2106340945174 and parameters: {'embedding_dim': 133, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -300.95764690528574. +[I 2025-12-17 16:43:13,111] Trial 12 finished with value: -1092.0687796661184 and parameters: {'embedding_dim': 206, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -300.95764690528574. +[I 2025-12-17 16:44:03,515] Trial 13 finished with value: -9.727001493701156 and parameters: {'embedding_dim': 220, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:44:18,401] Trial 14 finished with value: -929.8182283837587 and parameters: {'embedding_dim': 243, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:45:07,922] Trial 15 finished with value: -346.7495621283813 and parameters: {'embedding_dim': 202, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:45:23,138] Trial 16 finished with value: -443.3387794290809 and parameters: {'embedding_dim': 290, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:45:41,182] Trial 17 finished with value: -336.3537470738053 and parameters: {'embedding_dim': 188, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:46:06,735] Trial 18 finished with value: -2264.864095406896 and parameters: {'embedding_dim': 252, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:46:29,691] Trial 19 finished with value: -310.30394319118477 and parameters: {'embedding_dim': 345, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:46:44,913] Trial 20 finished with value: -261.0154765163412 and parameters: {'embedding_dim': 129, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:46:59,575] Trial 21 finished with value: -246.60161333192926 and parameters: {'embedding_dim': 129, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:47:14,039] Trial 22 finished with value: -257.0956226553516 and parameters: {'embedding_dim': 177, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:47:29,490] Trial 23 finished with value: -299.5294565655176 and parameters: {'embedding_dim': 179, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:47:47,942] Trial 24 finished with value: -596.2074368625729 and parameters: {'embedding_dim': 263, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:48:37,636] Trial 25 finished with value: -800.0982544754617 and parameters: {'embedding_dim': 218, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:48:55,814] Trial 26 finished with value: -560.6303391443461 and parameters: {'embedding_dim': 170, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:49:10,092] Trial 27 finished with value: -256.1469757246893 and parameters: {'embedding_dim': 225, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:49:40,812] Trial 28 finished with value: -426.97167757345824 and parameters: {'embedding_dim': 283, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:50:40,701] Trial 29 finished with value: -292.7849582940044 and parameters: {'embedding_dim': 226, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -9.727001493701156. +[I 2025-12-17 16:51:30,556] A new study created in memory with name: no-name-fc91809f-e45e-4aaf-b6b1-750259591de1 +[I 2025-12-17 16:51:46,029] Trial 0 finished with value: -27.561388094647654 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -27.561388094647654. +[I 2025-12-17 16:51:52,272] Trial 1 finished with value: -2.537387807096419 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -2.537387807096419. +[I 2025-12-17 16:52:00,451] Trial 2 finished with value: -2.661114343921144 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -2.537387807096419. +[I 2025-12-17 16:52:16,104] Trial 3 finished with value: -20.09688409549913 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -2.537387807096419. +[I 2025-12-17 16:53:01,840] Trial 4 finished with value: -1.9141228534242498 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -1.9141228534242498. +[I 2025-12-17 16:53:10,057] Trial 5 finished with value: -32.52462098770247 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -1.9141228534242498. +[I 2025-12-17 16:53:25,875] Trial 6 finished with value: -4.774815956547501 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -1.9141228534242498. +[I 2025-12-17 16:53:34,407] Trial 7 finished with value: -1.6898219197814601 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -1.6898219197814601. +[I 2025-12-17 16:53:42,707] Trial 8 finished with value: -31.966489299413258 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -1.6898219197814601. +[I 2025-12-17 16:53:47,072] Trial 9 finished with value: -21.364228801883744 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -1.6898219197814601. +[I 2025-12-17 16:54:08,607] Trial 10 finished with value: -3.407555088060812 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 7 with value: -1.6898219197814601. +[I 2025-12-17 16:54:56,313] Trial 11 finished with value: -27.043550020423545 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.6898219197814601. +[I 2025-12-17 16:55:42,029] Trial 12 finished with value: -8.034040977747262 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.6898219197814601. +[I 2025-12-17 16:56:27,400] Trial 13 finished with value: -12.274494736111734 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.6898219197814601. +[I 2025-12-17 16:57:13,394] Trial 14 finished with value: -5.814148963142218 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.6898219197814601. +[I 2025-12-17 16:57:19,650] Trial 15 finished with value: -17.839146909918565 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -1.6898219197814601. +[I 2025-12-17 16:58:05,485] Trial 16 finished with value: -136.5781483668021 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.6898219197814601. +[I 2025-12-17 16:58:09,705] Trial 17 finished with value: -10.925020193715769 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -1.6898219197814601. +[I 2025-12-17 16:58:55,416] Trial 18 finished with value: -0.9176346996159215 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -0.9176346996159215. +[I 2025-12-17 16:59:10,813] Trial 19 finished with value: -14.734537954964424 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -0.9176346996159215. +[I 2025-12-17 16:59:19,203] Trial 20 finished with value: -4.1701483560015395 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -0.9176346996159215. +[I 2025-12-17 17:00:04,990] Trial 21 finished with value: -5.2946781794659055 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -0.9176346996159215. +[I 2025-12-17 17:00:50,572] Trial 22 finished with value: -3.9426992045558604 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -0.9176346996159215. +[I 2025-12-17 17:01:36,085] Trial 23 finished with value: -20.52482171778997 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -0.9176346996159215. +[I 2025-12-17 17:02:09,624] Trial 24 finished with value: -8.713215114479164 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.9176346996159215. +[I 2025-12-17 17:02:55,149] Trial 25 finished with value: -13.055865009029798 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -0.9176346996159215. +[I 2025-12-17 17:03:40,825] Trial 26 finished with value: -21.642627936371206 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -0.9176346996159215. +[I 2025-12-17 17:04:14,541] Trial 27 finished with value: -22.72888796591276 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.9176346996159215. +[I 2025-12-17 17:04:35,280] Trial 28 finished with value: -0.42575053662888324 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.42575053662888324. +[I 2025-12-17 17:04:53,573] Trial 29 finished with value: -4.643180180132288 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 28 with value: -0.42575053662888324. +[I 2025-12-17 17:05:18,567] Trial 30 finished with value: -11.043028142394652 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.42575053662888324. +[I 2025-12-17 17:05:41,190] Trial 31 finished with value: -1.6346002571340776 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.42575053662888324. +[I 2025-12-17 17:06:02,216] Trial 32 finished with value: -2.1696829461850853 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.42575053662888324. +[I 2025-12-17 17:06:22,900] Trial 33 finished with value: -34.890912426854584 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.42575053662888324. +[I 2025-12-17 17:06:45,263] Trial 34 finished with value: -24.436832814528323 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.42575053662888324. +[I 2025-12-17 17:07:06,307] Trial 35 finished with value: -0.04487854019845519 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:07:26,897] Trial 36 finished with value: -4.453935134061312 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:07:44,334] Trial 37 finished with value: -29.2694722423497 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:08:05,064] Trial 38 finished with value: -20.677183816476568 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:08:20,857] Trial 39 finished with value: -37.379383612100476 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:08:44,823] Trial 40 finished with value: -24.515352888207055 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:08:54,924] Trial 41 finished with value: -7.937045734250305 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:09:15,896] Trial 42 finished with value: -1.7930188289989746 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:09:24,144] Trial 43 finished with value: -2.667675461363242 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:09:47,723] Trial 44 finished with value: -19.683595424716618 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:09:56,045] Trial 45 finished with value: -23.51411776512621 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:10:20,364] Trial 46 finished with value: -3.5900112732062497 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:10:31,912] Trial 47 finished with value: -26.666963322611263 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:10:42,123] Trial 48 finished with value: -6.396455128615589 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:11:04,609] Trial 49 finished with value: -6.383807884433761 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 35 with value: -0.04487854019845519. +[I 2025-12-17 17:11:26,624] A new study created in memory with name: no-name-8cea4722-2f71-4a2a-bd05-926fdbef74be +[I 2025-12-17 17:12:01,110] Trial 0 finished with value: -643.2372179394063 and parameters: {'embedding_dim': 386, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -643.2372179394063. +[I 2025-12-17 17:12:09,150] Trial 1 finished with value: -522.3104873731164 and parameters: {'embedding_dim': 245, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 1 with value: -522.3104873731164. +[I 2025-12-17 17:12:31,171] Trial 2 finished with value: -592.1247414920304 and parameters: {'embedding_dim': 274, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -522.3104873731164. +[I 2025-12-17 17:12:43,504] Trial 3 finished with value: -369.3561582713714 and parameters: {'embedding_dim': 431, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:13:20,711] Trial 4 finished with value: -1066.4627356085468 and parameters: {'embedding_dim': 298, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:13:43,887] Trial 5 finished with value: -473.4382256701658 and parameters: {'embedding_dim': 482, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:14:18,800] Trial 6 finished with value: -3155.5526541374334 and parameters: {'embedding_dim': 483, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:14:46,994] Trial 7 finished with value: -750.1893609684672 and parameters: {'embedding_dim': 400, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:15:07,633] Trial 8 finished with value: -871.1136236625941 and parameters: {'embedding_dim': 307, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:15:18,656] Trial 9 finished with value: -3532.872746947444 and parameters: {'embedding_dim': 419, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:15:30,028] Trial 10 finished with value: -952.6616952705986 and parameters: {'embedding_dim': 144, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:15:47,083] Trial 11 finished with value: -1581.1097710708168 and parameters: {'embedding_dim': 512, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:15:57,431] Trial 12 finished with value: -2062.142493049123 and parameters: {'embedding_dim': 452, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:16:26,567] Trial 13 finished with value: -761.4168189565964 and parameters: {'embedding_dim': 364, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:17:18,785] Trial 14 finished with value: -2771.2371266650357 and parameters: {'embedding_dim': 451, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:17:27,509] Trial 15 finished with value: -3778.871646848525 and parameters: {'embedding_dim': 355, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:17:49,088] Trial 16 finished with value: -1204.9132557615762 and parameters: {'embedding_dim': 512, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:18:15,171] Trial 17 finished with value: -2106.687994858788 and parameters: {'embedding_dim': 445, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:18:25,731] Trial 18 finished with value: -746.9653131384005 and parameters: {'embedding_dim': 234, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:18:58,112] Trial 19 finished with value: -770.7940201373314 and parameters: {'embedding_dim': 347, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:19:18,205] Trial 20 finished with value: -883.413074393753 and parameters: {'embedding_dim': 425, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -369.3561582713714. +[I 2025-12-17 17:19:26,038] Trial 21 finished with value: -247.34173807070536 and parameters: {'embedding_dim': 198, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 21 with value: -247.34173807070536. +[I 2025-12-17 17:19:33,653] Trial 22 finished with value: -1188.9265033446657 and parameters: {'embedding_dim': 136, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 21 with value: -247.34173807070536. +[I 2025-12-17 17:19:41,980] Trial 23 finished with value: -324.3495476866933 and parameters: {'embedding_dim': 186, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 21 with value: -247.34173807070536. +[I 2025-12-17 17:19:50,070] Trial 24 finished with value: -227.45037025736394 and parameters: {'embedding_dim': 190, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 24 with value: -227.45037025736394. +[I 2025-12-17 17:19:57,725] Trial 25 finished with value: -3692.2440911537547 and parameters: {'embedding_dim': 185, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 24 with value: -227.45037025736394. +[I 2025-12-17 17:20:09,196] Trial 26 finished with value: -1355.9939447161514 and parameters: {'embedding_dim': 202, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 24 with value: -227.45037025736394. +[I 2025-12-17 17:20:16,232] Trial 27 finished with value: -4838.126812964518 and parameters: {'embedding_dim': 171, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 24 with value: -227.45037025736394. +[I 2025-12-17 17:20:26,844] Trial 28 finished with value: -660.5769366496961 and parameters: {'embedding_dim': 217, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 24 with value: -227.45037025736394. +[I 2025-12-17 17:20:34,262] Trial 29 finished with value: -2893.610877104245 and parameters: {'embedding_dim': 165, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 24 with value: -227.45037025736394. +[I 2025-12-17 17:20:43,563] A new study created in memory with name: no-name-4f792e3e-0bcc-4f81-89e9-35c7ec5dd034 +[I 2025-12-17 17:21:17,313] Trial 0 finished with value: -70.32761964560916 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -70.32761964560916. +[I 2025-12-17 17:21:23,523] Trial 1 finished with value: -11.799774950171503 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -11.799774950171503. +[I 2025-12-17 17:21:27,817] Trial 2 finished with value: -38.77707632266416 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -11.799774950171503. +[I 2025-12-17 17:22:13,667] Trial 3 finished with value: -2.15902122316074 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -2.15902122316074. +[I 2025-12-17 17:22:37,213] Trial 4 finished with value: -36.406609511309604 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -2.15902122316074. +[I 2025-12-17 17:22:59,429] Trial 5 finished with value: -4.532200653893719 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -2.15902122316074. +[I 2025-12-17 17:23:14,989] Trial 6 finished with value: -2.5191705216621694 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -2.15902122316074. +[I 2025-12-17 17:23:38,359] Trial 7 finished with value: -22.50600564636178 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -2.15902122316074. +[I 2025-12-17 17:24:13,395] Trial 8 finished with value: -15.22173669005537 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -2.15902122316074. +[I 2025-12-17 17:25:03,710] Trial 9 finished with value: -24.86984615903463 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -2.15902122316074. +[I 2025-12-17 17:25:26,227] Trial 10 finished with value: -10.264509569087139 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -2.15902122316074. +[I 2025-12-17 17:25:44,704] Trial 11 finished with value: -1.0410315725231243 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -1.0410315725231243. +[I 2025-12-17 17:26:08,270] Trial 12 finished with value: -1.8925026353931758 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -1.0410315725231243. +[I 2025-12-17 17:26:24,904] Trial 13 finished with value: -8.370950333275513 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -1.0410315725231243. +[I 2025-12-17 17:26:46,057] Trial 14 finished with value: -0.40986373396471615 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -0.40986373396471615. +[I 2025-12-17 17:27:02,967] Trial 15 finished with value: -5.2182014205332035 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.40986373396471615. +[I 2025-12-17 17:27:25,764] Trial 16 finished with value: -21.63193559552655 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -0.40986373396471615. +[I 2025-12-17 17:27:37,945] Trial 17 finished with value: -47.35476115416376 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 14 with value: -0.40986373396471615. +[I 2025-12-17 17:27:44,357] Trial 18 finished with value: -3.5056654194843486 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -0.40986373396471615. +[I 2025-12-17 17:28:06,999] Trial 19 finished with value: -1.4979555260447437 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -0.40986373396471615. +[I 2025-12-17 17:28:23,671] Trial 20 finished with value: -5.828764795856626 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.40986373396471615. +[I 2025-12-17 17:28:45,724] Trial 21 finished with value: -13.009920768887 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -0.40986373396471615. +[I 2025-12-17 17:29:08,731] Trial 22 finished with value: -0.21323314263309615 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:29:29,680] Trial 23 finished with value: -9.670216695729014 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:29:45,734] Trial 24 finished with value: -2.1830077617320116 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:29:55,717] Trial 25 finished with value: -4.592316242139023 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:30:18,286] Trial 26 finished with value: -9.95419622960779 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:30:35,363] Trial 27 finished with value: -1.300488186755711 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:30:57,549] Trial 28 finished with value: -12.47308763804197 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:31:01,834] Trial 29 finished with value: -9.005727193790666 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:31:19,743] Trial 30 finished with value: -4.54517881678085 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:31:35,316] Trial 31 finished with value: -1.560648032641402 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:31:50,840] Trial 32 finished with value: -15.661913385176488 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:32:07,661] Trial 33 finished with value: -9.041975155290476 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:32:13,945] Trial 34 finished with value: -5.0389579986722515 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:32:30,526] Trial 35 finished with value: -20.716145130639326 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:32:53,107] Trial 36 finished with value: -2.3709080845651016 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:33:16,100] Trial 37 finished with value: -3.2603797233069973 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:33:33,167] Trial 38 finished with value: -2.009138541722243 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:33:41,528] Trial 39 finished with value: -5.579999818868094 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:34:16,719] Trial 40 finished with value: -28.92372505956616 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:34:39,056] Trial 41 finished with value: -6.704367164835124 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:35:00,956] Trial 42 finished with value: -8.45908022520279 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:35:22,159] Trial 43 finished with value: -9.902799092717338 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:35:43,267] Trial 44 finished with value: -13.743558649280484 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:36:04,463] Trial 45 finished with value: -19.509626386177416 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:36:25,721] Trial 46 finished with value: -12.916624866814114 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:36:59,237] Trial 47 finished with value: -16.207956228716057 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:37:20,234] Trial 48 finished with value: -4.158788311809115 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:37:30,371] Trial 49 finished with value: -20.82872434998144 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 22 with value: -0.21323314263309615. +[I 2025-12-17 17:37:51,627] A new study created in memory with name: no-name-c52186e2-f43e-4132-8c41-b9619242132b +[I 2025-12-17 17:38:06,112] Trial 0 finished with value: -532.3058755754115 and parameters: {'embedding_dim': 200, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -532.3058755754115. +[I 2025-12-17 17:38:14,801] Trial 1 finished with value: -1936.3647428903762 and parameters: {'embedding_dim': 198, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -532.3058755754115. +[I 2025-12-17 17:38:32,654] Trial 2 finished with value: -524.4942341416631 and parameters: {'embedding_dim': 279, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -524.4942341416631. +[I 2025-12-17 17:38:47,255] Trial 3 finished with value: -226.76680979685256 and parameters: {'embedding_dim': 171, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -226.76680979685256. +[I 2025-12-17 17:39:04,744] Trial 4 finished with value: -496.2212420138291 and parameters: {'embedding_dim': 504, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -226.76680979685256. +[I 2025-12-17 17:39:27,860] Trial 5 finished with value: -986.2583690801293 and parameters: {'embedding_dim': 283, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -226.76680979685256. +[I 2025-12-17 17:39:39,797] Trial 6 finished with value: -528.3769200754053 and parameters: {'embedding_dim': 485, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -226.76680979685256. +[I 2025-12-17 17:40:14,779] Trial 7 finished with value: -957.5452806602797 and parameters: {'embedding_dim': 397, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -226.76680979685256. +[I 2025-12-17 17:40:29,447] Trial 8 finished with value: -480.0164915726749 and parameters: {'embedding_dim': 471, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -226.76680979685256. +[I 2025-12-17 17:40:43,903] Trial 9 finished with value: -452.3164936451194 and parameters: {'embedding_dim': 266, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -226.76680979685256. +[I 2025-12-17 17:40:49,650] Trial 10 finished with value: -2134.0366875603054 and parameters: {'embedding_dim': 132, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 3 with value: -226.76680979685256. +[I 2025-12-17 17:41:01,679] Trial 11 finished with value: -504.5060819793921 and parameters: {'embedding_dim': 206, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -226.76680979685256. +[I 2025-12-17 17:41:13,681] Trial 12 finished with value: -393.92265902491874 and parameters: {'embedding_dim': 334, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -226.76680979685256. +[I 2025-12-17 17:41:25,746] Trial 13 finished with value: -645.2411418997757 and parameters: {'embedding_dim': 369, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -226.76680979685256. +[I 2025-12-17 17:41:40,367] Trial 14 finished with value: -254.7667668919678 and parameters: {'embedding_dim': 356, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -226.76680979685256. +[I 2025-12-17 17:41:52,380] Trial 15 finished with value: -805.0700663468162 and parameters: {'embedding_dim': 421, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -226.76680979685256. +[I 2025-12-17 17:42:06,943] Trial 16 finished with value: -144.65564586956904 and parameters: {'embedding_dim': 142, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 16 with value: -144.65564586956904. +[I 2025-12-17 17:42:24,446] Trial 17 finished with value: -142.95740318209653 and parameters: {'embedding_dim': 132, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 17 with value: -142.95740318209653. +[I 2025-12-17 17:42:42,753] Trial 18 finished with value: -928.6297483974311 and parameters: {'embedding_dim': 131, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 17 with value: -142.95740318209653. +[I 2025-12-17 17:43:03,797] Trial 19 finished with value: -204.66354422159472 and parameters: {'embedding_dim': 243, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 17 with value: -142.95740318209653. +[I 2025-12-17 17:43:24,689] Trial 20 finished with value: -433.7992890468407 and parameters: {'embedding_dim': 170, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 17 with value: -142.95740318209653. +[I 2025-12-17 17:43:42,205] Trial 21 finished with value: -278.73869110719744 and parameters: {'embedding_dim': 245, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 17 with value: -142.95740318209653. +[I 2025-12-17 17:44:00,012] Trial 22 finished with value: -212.69781764771272 and parameters: {'embedding_dim': 230, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 17 with value: -142.95740318209653. +[I 2025-12-17 17:44:14,434] Trial 23 finished with value: -232.8659360498306 and parameters: {'embedding_dim': 163, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 17 with value: -142.95740318209653. +[I 2025-12-17 17:44:33,832] Trial 24 finished with value: -211.0732406306277 and parameters: {'embedding_dim': 150, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 17 with value: -142.95740318209653. +[I 2025-12-17 17:44:48,575] Trial 25 finished with value: -251.15743914965023 and parameters: {'embedding_dim': 306, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 17 with value: -142.95740318209653. +[I 2025-12-17 17:45:06,220] Trial 26 finished with value: -501.9103302672979 and parameters: {'embedding_dim': 230, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 17 with value: -142.95740318209653. +[I 2025-12-17 17:45:20,983] Trial 27 finished with value: -371.92290954289376 and parameters: {'embedding_dim': 185, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 17 with value: -142.95740318209653. +[I 2025-12-17 17:45:46,746] Trial 28 finished with value: -138.8965000448058 and parameters: {'embedding_dim': 147, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 28 with value: -138.8965000448058. +[I 2025-12-17 17:46:10,094] Trial 29 finished with value: -785.0783684997056 and parameters: {'embedding_dim': 208, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 28 with value: -138.8965000448058. +[I 2025-12-17 17:46:34,360] A new study created in memory with name: no-name-c3383b50-76b8-438f-a7e2-844b08426da6 +[I 2025-12-17 17:46:50,179] Trial 0 finished with value: -44.65341935167308 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -44.65341935167308. +[I 2025-12-17 17:47:11,303] Trial 1 finished with value: -4.152992280107906 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -4.152992280107906. +[I 2025-12-17 17:47:47,509] Trial 2 finished with value: -6.53694111374516 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -4.152992280107906. +[I 2025-12-17 17:48:37,391] Trial 3 finished with value: -6.341141223716503 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -4.152992280107906. +[I 2025-12-17 17:48:41,973] Trial 4 finished with value: -11.129626492689685 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -4.152992280107906. +[I 2025-12-17 17:49:05,580] Trial 5 finished with value: -16.74945240336553 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -4.152992280107906. +[I 2025-12-17 17:49:29,839] Trial 6 finished with value: -116.91840872739759 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -4.152992280107906. +[I 2025-12-17 17:49:45,551] Trial 7 finished with value: -38.90170015416226 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -4.152992280107906. +[I 2025-12-17 17:49:56,085] Trial 8 finished with value: -4.255635038405191 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -4.152992280107906. +[I 2025-12-17 17:50:06,641] Trial 9 finished with value: -1.0716538294378752 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 9 with value: -1.0716538294378752. +[I 2025-12-17 17:50:11,275] Trial 10 finished with value: -18.88943793821035 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.0716538294378752. +[I 2025-12-17 17:50:34,206] Trial 11 finished with value: -33.570458085723864 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 9 with value: -1.0716538294378752. +[I 2025-12-17 17:50:56,137] Trial 12 finished with value: -13.575333993392864 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 9 with value: -1.0716538294378752. +[I 2025-12-17 17:51:13,734] Trial 13 finished with value: -50.455511276391505 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -1.0716538294378752. +[I 2025-12-17 17:51:29,467] Trial 14 finished with value: -100.39333873351697 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -1.0716538294378752. +[I 2025-12-17 17:51:38,024] Trial 15 finished with value: -2.3404557154955543 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -1.0716538294378752. +[I 2025-12-17 17:51:42,400] Trial 16 finished with value: -23.966261057458205 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.0716538294378752. +[I 2025-12-17 17:51:48,762] Trial 17 finished with value: -117.57865211862072 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 9 with value: -1.0716538294378752. +[I 2025-12-17 17:51:53,138] Trial 18 finished with value: -0.02560080055862571 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:51:57,696] Trial 19 finished with value: -6.7202638332037505 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:52:02,050] Trial 20 finished with value: -1.0634187799007528 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:52:09,219] Trial 21 finished with value: -76.441264430353 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:52:13,613] Trial 22 finished with value: -2.1890213082805965 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:52:17,990] Trial 23 finished with value: -81.06877245563489 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:52:22,321] Trial 24 finished with value: -24.25418674709343 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:52:43,920] Trial 25 finished with value: -5.841995774038302 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:52:48,399] Trial 26 finished with value: -20.685123858917194 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:52:52,832] Trial 27 finished with value: -0.2684739517434771 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:52:59,242] Trial 28 finished with value: -0.9594746157851333 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:53:05,615] Trial 29 finished with value: -130.81663048418685 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:53:12,552] Trial 30 finished with value: -6.61757599455583 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:53:18,982] Trial 31 finished with value: -27.28972968547745 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:53:25,350] Trial 32 finished with value: -34.91616421237111 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:53:29,785] Trial 33 finished with value: -95.397439945603 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:53:36,151] Trial 34 finished with value: -10.123774213834977 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:53:57,725] Trial 35 finished with value: -4.763441300974012 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:54:02,171] Trial 36 finished with value: -99.9149435605291 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:54:09,137] Trial 37 finished with value: -11.063007155545813 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:54:33,379] Trial 38 finished with value: -10.740911970800456 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:54:41,742] Trial 39 finished with value: -1.2674374990071104 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:54:48,130] Trial 40 finished with value: -1.6125612613770242 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:54:58,324] Trial 41 finished with value: -50.66875741474978 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:55:08,558] Trial 42 finished with value: -20.02994138732207 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:55:21,130] Trial 43 finished with value: -29.636903806424698 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:55:42,700] Trial 44 finished with value: -3.827282033772029 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:55:52,977] Trial 45 finished with value: -1.1564048380390797 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:55:57,338] Trial 46 finished with value: -221.6004880912811 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:56:12,946] Trial 47 finished with value: -14.883345241602475 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:56:21,587] Trial 48 finished with value: -38.8481421545313 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:56:30,032] Trial 49 finished with value: -79.37526506027027 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.02560080055862571. +[I 2025-12-17 17:56:34,724] A new study created in memory with name: no-name-6dc72fba-0021-44df-be66-58c922012cc8 +[I 2025-12-17 17:57:12,584] Trial 0 finished with value: -380.9418337442663 and parameters: {'embedding_dim': 145, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -380.9418337442663. +[I 2025-12-17 17:57:52,994] Trial 1 finished with value: -534.5938124448036 and parameters: {'embedding_dim': 398, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -380.9418337442663. +[I 2025-12-17 17:59:07,984] Trial 2 finished with value: -511.8132138927387 and parameters: {'embedding_dim': 404, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -380.9418337442663. +[I 2025-12-17 17:59:45,709] Trial 3 finished with value: -463.60821382888 and parameters: {'embedding_dim': 300, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -380.9418337442663. +[I 2025-12-17 18:00:35,539] Trial 4 finished with value: -517.7191219479009 and parameters: {'embedding_dim': 370, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -380.9418337442663. +[I 2025-12-17 18:00:53,635] Trial 5 finished with value: -89.25142240809255 and parameters: {'embedding_dim': 184, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:01:10,888] Trial 6 finished with value: -3697.83163135915 and parameters: {'embedding_dim': 230, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:02:09,114] Trial 7 finished with value: -784.5142432853471 and parameters: {'embedding_dim': 342, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:02:53,320] Trial 8 finished with value: -327.91912849514193 and parameters: {'embedding_dim': 176, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:03:08,709] Trial 9 finished with value: -1081.666817676987 and parameters: {'embedding_dim': 273, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:03:25,201] Trial 10 finished with value: -728.6930212825944 and parameters: {'embedding_dim': 511, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:03:46,844] Trial 11 finished with value: -206.65492965551 and parameters: {'embedding_dim': 146, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:04:07,774] Trial 12 finished with value: -230.3231189373632 and parameters: {'embedding_dim': 204, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:04:22,600] Trial 13 finished with value: -727.9150657561348 and parameters: {'embedding_dim': 128, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:04:46,339] Trial 14 finished with value: -252.3191918749075 and parameters: {'embedding_dim': 233, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:05:04,714] Trial 15 finished with value: -318.09855913882706 and parameters: {'embedding_dim': 183, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:05:20,062] Trial 16 finished with value: -330.63841618745494 and parameters: {'embedding_dim': 262, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:05:32,069] Trial 17 finished with value: -2330.980147678528 and parameters: {'embedding_dim': 157, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:05:55,011] Trial 18 finished with value: -243.2927187225049 and parameters: {'embedding_dim': 214, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:06:53,941] Trial 19 finished with value: -1935.6837232601654 and parameters: {'embedding_dim': 464, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:07:12,939] Trial 20 finished with value: -141.38820405018797 and parameters: {'embedding_dim': 267, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:07:30,899] Trial 21 finished with value: -458.2414708121649 and parameters: {'embedding_dim': 262, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:07:51,887] Trial 22 finished with value: -438.20499704275966 and parameters: {'embedding_dim': 187, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:08:12,061] Trial 23 finished with value: -365.3481080613627 and parameters: {'embedding_dim': 312, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:08:29,999] Trial 24 finished with value: -264.4774431089599 and parameters: {'embedding_dim': 153, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:08:51,434] Trial 25 finished with value: -412.3431221998652 and parameters: {'embedding_dim': 240, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:09:51,541] Trial 26 finished with value: -664.6624793717808 and parameters: {'embedding_dim': 203, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:10:03,402] Trial 27 finished with value: -243.83925316152542 and parameters: {'embedding_dim': 283, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:10:24,341] Trial 28 finished with value: -454.8590136393276 and parameters: {'embedding_dim': 132, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:10:42,962] Trial 29 finished with value: -140.00699244070913 and parameters: {'embedding_dim': 159, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 5 with value: -89.25142240809255. +[I 2025-12-17 18:11:02,668] A new study created in memory with name: no-name-fad95a2a-6e29-46e0-b235-7c83348cd459 +[I 2025-12-17 18:11:48,262] Trial 0 finished with value: -66.26726346796926 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -66.26726346796926. +[I 2025-12-17 18:12:11,623] Trial 1 finished with value: -43.82125751854658 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -43.82125751854658. +[I 2025-12-17 18:12:33,699] Trial 2 finished with value: -8.75710539813435 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -8.75710539813435. +[I 2025-12-17 18:12:42,834] Trial 3 finished with value: -0.37578528944055395 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:12:58,419] Trial 4 finished with value: -38.4675012784854 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:13:14,084] Trial 5 finished with value: -5.616231514224262 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:13:47,641] Trial 6 finished with value: -14.689607334290443 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:14:03,170] Trial 7 finished with value: -1.8609460305884196 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:14:09,544] Trial 8 finished with value: -1.509514137526284 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:14:30,895] Trial 9 finished with value: -54.28292529125936 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:14:35,204] Trial 10 finished with value: -3.204805618951789 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:14:39,504] Trial 11 finished with value: -14.150555521927904 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:14:45,782] Trial 12 finished with value: -28.37794907644688 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:14:52,138] Trial 13 finished with value: -6.462225187298283 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:14:56,480] Trial 14 finished with value: -200.86867124370386 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:15:04,784] Trial 15 finished with value: -1.2974295849033732 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:15:13,446] Trial 16 finished with value: -16.627554120149885 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:15:21,938] Trial 17 finished with value: -14.829643605258266 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:15:30,440] Trial 18 finished with value: -2.204170846976637 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:15:36,788] Trial 19 finished with value: -10.360072521855873 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:16:22,186] Trial 20 finished with value: -0.4216864682874253 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:17:07,993] Trial 21 finished with value: -5.328377283139462 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:17:56,376] Trial 22 finished with value: -79.15810189122045 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:18:43,267] Trial 23 finished with value: -79.98458179054346 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:19:17,956] Trial 24 finished with value: -59.3082230944945 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:19:26,227] Trial 25 finished with value: -33.74431370691968 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:20:14,703] Trial 26 finished with value: -53.51612668215725 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:20:21,012] Trial 27 finished with value: -52.4085120207602 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:20:29,281] Trial 28 finished with value: -21.426986920836917 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:21:14,769] Trial 29 finished with value: -12.006385479397492 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:21:50,974] Trial 30 finished with value: -177.72531338372704 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:21:57,527] Trial 31 finished with value: -8.417803402774563 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:22:03,817] Trial 32 finished with value: -22.14712697140052 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:22:10,233] Trial 33 finished with value: -66.48032482247949 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:22:31,560] Trial 34 finished with value: -29.901966989806343 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:22:40,542] Trial 35 finished with value: -1.0942508182960067 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:22:57,882] Trial 36 finished with value: -11.278219033924662 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:23:04,202] Trial 37 finished with value: -36.72156841528896 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -0.37578528944055395. +[I 2025-12-17 18:23:19,800] Trial 38 finished with value: -0.060386888801336795 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 38 with value: -0.060386888801336795. +[I 2025-12-17 18:23:35,267] Trial 39 finished with value: -0.499974313625022 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 38 with value: -0.060386888801336795. +[I 2025-12-17 18:23:50,844] Trial 40 finished with value: -4.31487750591848 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 38 with value: -0.060386888801336795. +[I 2025-12-17 18:24:08,203] Trial 41 finished with value: -2.4413489893001263 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 38 with value: -0.060386888801336795. +[I 2025-12-17 18:24:23,454] Trial 42 finished with value: -5.077964248562618 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 38 with value: -0.060386888801336795. +[I 2025-12-17 18:24:39,347] Trial 43 finished with value: -9.30333431051035 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 38 with value: -0.060386888801336795. +[I 2025-12-17 18:24:54,920] Trial 44 finished with value: -20.341904761608347 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 38 with value: -0.060386888801336795. +[I 2025-12-17 18:25:11,454] Trial 45 finished with value: -0.28420597844800144 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 38 with value: -0.060386888801336795. +[I 2025-12-17 18:25:28,103] Trial 46 finished with value: -20.460648601343426 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 38 with value: -0.060386888801336795. +[I 2025-12-17 18:25:38,200] Trial 47 finished with value: -10.628974168140164 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 38 with value: -0.060386888801336795. +[I 2025-12-17 18:25:53,733] Trial 48 finished with value: -7.518238208709766 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 38 with value: -0.060386888801336795. +[I 2025-12-17 18:26:09,300] Trial 49 finished with value: -13.899554043492854 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 38 with value: -0.060386888801336795. +[I 2025-12-17 18:26:26,918] A new study created in memory with name: no-name-8187fc9d-0afa-4372-bfce-8487efe7787f +[I 2025-12-17 18:26:45,629] Trial 0 finished with value: -498.7598817215348 and parameters: {'embedding_dim': 304, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -498.7598817215348. +[I 2025-12-17 18:27:16,480] Trial 1 finished with value: -720.8581867661794 and parameters: {'embedding_dim': 204, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -498.7598817215348. +[I 2025-12-17 18:28:14,317] Trial 2 finished with value: -312.8817601387399 and parameters: {'embedding_dim': 231, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -312.8817601387399. +[I 2025-12-17 18:29:42,553] Trial 3 finished with value: -531.5343579115299 and parameters: {'embedding_dim': 510, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -312.8817601387399. +[I 2025-12-17 18:30:55,147] Trial 4 finished with value: -209.97143614913495 and parameters: {'embedding_dim': 407, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -209.97143614913495. +[I 2025-12-17 18:32:21,154] Trial 5 finished with value: -546.0186285121356 and parameters: {'embedding_dim': 286, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 4 with value: -209.97143614913495. +[I 2025-12-17 18:33:04,227] Trial 6 finished with value: -2556.714670140851 and parameters: {'embedding_dim': 267, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 4 with value: -209.97143614913495. +[I 2025-12-17 18:33:32,562] Trial 7 finished with value: -3107.9812805658903 and parameters: {'embedding_dim': 208, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -209.97143614913495. +[I 2025-12-17 18:34:30,439] Trial 8 finished with value: -280.72113652815796 and parameters: {'embedding_dim': 501, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -209.97143614913495. +[I 2025-12-17 18:34:57,880] Trial 9 finished with value: -151.97577237032527 and parameters: {'embedding_dim': 157, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -151.97577237032527. +[I 2025-12-17 18:35:07,089] Trial 10 finished with value: -86.77394036152802 and parameters: {'embedding_dim': 130, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:35:15,623] Trial 11 finished with value: -430.805300869934 and parameters: {'embedding_dim': 131, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:35:29,391] Trial 12 finished with value: -654.378240593808 and parameters: {'embedding_dim': 129, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:35:40,783] Trial 13 finished with value: -949.0083359946609 and parameters: {'embedding_dim': 365, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:35:49,737] Trial 14 finished with value: -241.0382456617342 and parameters: {'embedding_dim': 164, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:36:12,717] Trial 15 finished with value: -971.2699417596559 and parameters: {'embedding_dim': 177, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:36:20,826] Trial 16 finished with value: -122.35219226850135 and parameters: {'embedding_dim': 243, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:36:32,366] Trial 17 finished with value: -559.2143634044994 and parameters: {'embedding_dim': 343, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:36:41,215] Trial 18 finished with value: -2623.39873312326 and parameters: {'embedding_dim': 245, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:36:52,823] Trial 19 finished with value: -768.6553185164234 and parameters: {'embedding_dim': 420, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:37:05,076] Trial 20 finished with value: -484.91091331592696 and parameters: {'embedding_dim': 208, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:37:13,536] Trial 21 finished with value: -3648.7527257846486 and parameters: {'embedding_dim': 165, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:37:41,193] Trial 22 finished with value: -958.8975470776966 and parameters: {'embedding_dim': 159, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:38:04,926] Trial 23 finished with value: -651.4968813564124 and parameters: {'embedding_dim': 243, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:38:13,316] Trial 24 finished with value: -3261.6155190736854 and parameters: {'embedding_dim': 187, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:38:56,491] Trial 25 finished with value: -1513.0114431842974 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:39:05,470] Trial 26 finished with value: -3328.1601464186483 and parameters: {'embedding_dim': 273, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:39:16,976] Trial 27 finished with value: -675.9230668167971 and parameters: {'embedding_dim': 224, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:39:32,443] Trial 28 finished with value: -373.6666068820256 and parameters: {'embedding_dim': 151, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 10 with value: -86.77394036152802. +[I 2025-12-17 18:40:30,218] Trial 29 finished with value: -1444.0125864428328 and parameters: {'embedding_dim': 309, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -86.77394036152802. +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_2_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_2_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_2_incheon.csv: Class 0=6854 | Class 1=6859 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_incheon.csv: Class 0=6854 | Class 1=6859 | Class 2=14637 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_2_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_2_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_2_seoul.csv: Class 0=7404 | Class 1=6822 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_seoul.csv: Class 0=7404 | Class 1=6822 | Class 2=15823 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_2_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_2_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_2_busan.csv: Class 0=7494 | Class 1=6417 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_busan.csv: Class 0=7494 | Class 1=6417 | Class 2=16457 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_2_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_2_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_2_daegu.csv: Class 0=7500 | Class 1=6309 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_daegu.csv: Class 0=7500 | Class 1=6309 | Class 2=16803 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_2_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_2_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_2_daejeon.csv: Class 0=7209 | Class 1=6565 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_daejeon.csv: Class 0=7209 | Class 1=6565 | Class 2=15717 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_2_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_2_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_2_gwangju.csv: Class 0=6939 | Class 1=6656 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_gwangju.csv: Class 0=6939 | Class 1=6656 | Class 2=15760 + +Running smotenc_ctgan_sample_7000_3.py... +[I 2025-12-17 18:40:42,532] A new study created in memory with name: no-name-f92eb84f-9b5d-4ca7-bbc0-df8b629acbb8 +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +[I 2025-12-17 18:40:53,830] Trial 0 finished with value: -21.50400999727829 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -21.50400999727829. +[I 2025-12-17 18:41:09,826] Trial 1 finished with value: -35.45449521648383 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -21.50400999727829. +[I 2025-12-17 18:41:18,439] Trial 2 finished with value: -26.101253899755925 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -21.50400999727829. +[I 2025-12-17 18:41:40,063] Trial 3 finished with value: -70.91410777059387 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -21.50400999727829. +[I 2025-12-17 18:42:15,923] Trial 4 finished with value: -4.353300904069858 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -4.353300904069858. +[I 2025-12-17 18:42:31,783] Trial 5 finished with value: -17.388913650460722 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -4.353300904069858. +[I 2025-12-17 18:42:48,312] Trial 6 finished with value: -19.131262739684637 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -4.353300904069858. +[I 2025-12-17 18:43:00,720] Trial 7 finished with value: -8.921853561535668 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -4.353300904069858. +[I 2025-12-17 18:43:07,412] Trial 8 finished with value: -5.1694033345907116 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -4.353300904069858. +[I 2025-12-17 18:43:17,947] Trial 9 finished with value: -116.51759234898684 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -4.353300904069858. +[I 2025-12-17 18:44:09,130] Trial 10 finished with value: -70.57071340959456 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -4.353300904069858. +[I 2025-12-17 18:44:30,951] Trial 11 finished with value: -83.88413257787751 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -4.353300904069858. +[I 2025-12-17 18:44:37,325] Trial 12 finished with value: -32.93279773935338 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -4.353300904069858. +[I 2025-12-17 18:45:11,725] Trial 13 finished with value: -33.14642188380661 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -4.353300904069858. +[I 2025-12-17 18:45:16,185] Trial 14 finished with value: -81.92432117303721 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -4.353300904069858. +[I 2025-12-17 18:46:02,888] Trial 15 finished with value: -2.1891088259961764 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:46:49,741] Trial 16 finished with value: -2.7557985434396777 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:47:36,535] Trial 17 finished with value: -4.042641977125147 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:48:23,366] Trial 18 finished with value: -59.49325917743768 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:49:12,054] Trial 19 finished with value: -27.896708834916 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:50:02,722] Trial 20 finished with value: -88.72930298273451 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:50:54,780] Trial 21 finished with value: -67.34921472728696 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:51:42,833] Trial 22 finished with value: -21.052679826546242 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:52:36,126] Trial 23 finished with value: -11.726604713916739 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:53:27,194] Trial 24 finished with value: -47.63856698550731 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:54:21,058] Trial 25 finished with value: -21.15512797140453 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:55:12,835] Trial 26 finished with value: -232.81671242482753 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:56:02,767] Trial 27 finished with value: -5.245446728557781 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:56:49,555] Trial 28 finished with value: -11.348844202140505 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:57:37,066] Trial 29 finished with value: -58.903985492272895 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:58:11,509] Trial 30 finished with value: -6.916418237325087 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:58:45,942] Trial 31 finished with value: -89.79867845765787 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -2.1891088259961764. +[I 2025-12-17 18:59:20,234] Trial 32 finished with value: -0.1491718591134723 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 18:59:54,568] Trial 33 finished with value: -1.207115712608648 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:00:01,298] Trial 34 finished with value: -6.052832880814582 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:00:36,166] Trial 35 finished with value: -51.488237649679 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:01:10,741] Trial 36 finished with value: -82.71774647601343 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:01:26,666] Trial 37 finished with value: -21.385930730885732 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:02:01,291] Trial 38 finished with value: -1.8162814461734578 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:02:07,759] Trial 39 finished with value: -111.07073489872108 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:02:23,604] Trial 40 finished with value: -100.46431904091135 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:02:58,063] Trial 41 finished with value: -25.639865097066153 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:03:32,126] Trial 42 finished with value: -47.260167490467936 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:03:54,287] Trial 43 finished with value: -15.483663238175485 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:04:28,761] Trial 44 finished with value: -41.587405576556414 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:05:03,189] Trial 45 finished with value: -2.9379945383906576 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:05:19,335] Trial 46 finished with value: -52.119294905573476 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:05:54,026] Trial 47 finished with value: -115.85464743536012 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:05:58,586] Trial 48 finished with value: -10.795593024712703 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:06:32,823] Trial 49 finished with value: -3.969985719975159 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -0.1491718591134723. +[I 2025-12-17 19:07:07,490] A new study created in memory with name: no-name-9182a619-9cf3-40b5-a9fb-a76281bcf22b +[I 2025-12-17 19:07:29,300] Trial 0 finished with value: -112.0285148072823 and parameters: {'embedding_dim': 254, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -112.0285148072823. +[I 2025-12-17 19:09:34,233] Trial 1 finished with value: -258.674625376913 and parameters: {'embedding_dim': 414, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -112.0285148072823. +[I 2025-12-17 19:09:48,670] Trial 2 finished with value: -240.9224556371842 and parameters: {'embedding_dim': 495, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -112.0285148072823. +[I 2025-12-17 19:10:37,826] Trial 3 finished with value: -244.30764935181662 and parameters: {'embedding_dim': 504, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -112.0285148072823. +[I 2025-12-17 19:10:59,631] Trial 4 finished with value: -93.16097064659678 and parameters: {'embedding_dim': 474, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -93.16097064659678. +[I 2025-12-17 19:12:15,397] Trial 5 finished with value: -236.23136120373147 and parameters: {'embedding_dim': 333, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 4 with value: -93.16097064659678. +[I 2025-12-17 19:12:48,943] Trial 6 finished with value: -157.90789279606855 and parameters: {'embedding_dim': 310, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -93.16097064659678. +[I 2025-12-17 19:13:24,173] Trial 7 finished with value: -1224.1009894162014 and parameters: {'embedding_dim': 395, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -93.16097064659678. +[I 2025-12-17 19:13:45,029] Trial 8 finished with value: -1257.3950536224575 and parameters: {'embedding_dim': 337, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -93.16097064659678. +[I 2025-12-17 19:14:24,753] Trial 9 finished with value: -282.9079123577249 and parameters: {'embedding_dim': 227, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -93.16097064659678. +[I 2025-12-17 19:15:08,096] Trial 10 finished with value: -2171.3583877709457 and parameters: {'embedding_dim': 444, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -93.16097064659678. +[I 2025-12-17 19:15:29,522] Trial 11 finished with value: -3353.13026722353 and parameters: {'embedding_dim': 161, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -93.16097064659678. +[I 2025-12-17 19:15:50,444] Trial 12 finished with value: -1163.2640191727758 and parameters: {'embedding_dim': 259, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -93.16097064659678. +[I 2025-12-17 19:16:19,175] Trial 13 finished with value: -140.52984927009595 and parameters: {'embedding_dim': 150, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 4 with value: -93.16097064659678. +[I 2025-12-17 19:17:25,758] Trial 14 finished with value: -404.4218346831374 and parameters: {'embedding_dim': 246, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -93.16097064659678. +[I 2025-12-17 19:17:51,557] Trial 15 finished with value: -1794.2152635424789 and parameters: {'embedding_dim': 294, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 4 with value: -93.16097064659678. +[I 2025-12-17 19:18:19,030] Trial 16 finished with value: -56.57948349946296 and parameters: {'embedding_dim': 202, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 16 with value: -56.57948349946296. +[I 2025-12-17 19:18:57,210] Trial 17 finished with value: -462.88756680962484 and parameters: {'embedding_dim': 202, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 16 with value: -56.57948349946296. +[I 2025-12-17 19:19:48,745] Trial 18 finished with value: -250.5635204802436 and parameters: {'embedding_dim': 368, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -56.57948349946296. +[I 2025-12-17 19:21:14,865] Trial 19 finished with value: -539.3451668164552 and parameters: {'embedding_dim': 128, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -56.57948349946296. +[I 2025-12-17 19:21:50,485] Trial 20 finished with value: -203.76705344260546 and parameters: {'embedding_dim': 473, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 16 with value: -56.57948349946296. +[I 2025-12-17 19:22:11,713] Trial 21 finished with value: -847.0783942002688 and parameters: {'embedding_dim': 189, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 16 with value: -56.57948349946296. +[I 2025-12-17 19:22:41,719] Trial 22 finished with value: -137.46523971272035 and parameters: {'embedding_dim': 276, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 16 with value: -56.57948349946296. +[I 2025-12-17 19:23:06,269] Trial 23 finished with value: -152.89624876427172 and parameters: {'embedding_dim': 208, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 16 with value: -56.57948349946296. +[I 2025-12-17 19:23:24,593] Trial 24 finished with value: -2526.3975340791467 and parameters: {'embedding_dim': 245, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 16 with value: -56.57948349946296. +[I 2025-12-17 19:23:52,312] Trial 25 finished with value: -281.3484091694677 and parameters: {'embedding_dim': 370, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 16 with value: -56.57948349946296. +[I 2025-12-17 19:24:12,060] Trial 26 finished with value: -1143.8590225410542 and parameters: {'embedding_dim': 174, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 16 with value: -56.57948349946296. +[I 2025-12-17 19:24:34,575] Trial 27 finished with value: -1091.8737796024816 and parameters: {'embedding_dim': 228, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 16 with value: -56.57948349946296. +[I 2025-12-17 19:25:25,533] Trial 28 finished with value: -990.885887556572 and parameters: {'embedding_dim': 286, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -56.57948349946296. +[I 2025-12-17 19:26:07,675] Trial 29 finished with value: -306.602432338819 and parameters: {'embedding_dim': 420, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 16 with value: -56.57948349946296. +[I 2025-12-17 19:26:39,959] A new study created in memory with name: no-name-028367ff-4eee-42e8-82a9-27d36838cefd +[I 2025-12-17 19:26:44,320] Trial 0 finished with value: -6.9924692512465345 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -6.9924692512465345. +[I 2025-12-17 19:27:31,167] Trial 1 finished with value: -23.604877474300483 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -6.9924692512465345. +[I 2025-12-17 19:27:37,541] Trial 2 finished with value: -25.636296346511312 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -6.9924692512465345. +[I 2025-12-17 19:28:27,368] Trial 3 finished with value: -39.73133129764145 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -6.9924692512465345. +[I 2025-12-17 19:28:43,286] Trial 4 finished with value: -85.63675021632007 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -6.9924692512465345. +[I 2025-12-17 19:28:53,142] Trial 5 finished with value: -2.019247183407305 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:29:03,797] Trial 6 finished with value: -2.7776746697994517 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:29:12,381] Trial 7 finished with value: -4.148856194849791 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:29:20,778] Trial 8 finished with value: -55.82494687341554 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:29:33,493] Trial 9 finished with value: -16.161488608131442 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:29:40,227] Trial 10 finished with value: -29.12915314183313 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:29:51,046] Trial 11 finished with value: -64.46080918367078 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:30:04,341] Trial 12 finished with value: -51.8256633432683 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:30:20,290] Trial 13 finished with value: -28.256244346460733 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:30:57,951] Trial 14 finished with value: -3.3486244673211436 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:31:02,342] Trial 15 finished with value: -172.42803126511 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:31:24,584] Trial 16 finished with value: -20.579897812856775 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:31:42,001] Trial 17 finished with value: -29.844452371817585 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:31:50,688] Trial 18 finished with value: -6.6326472019027545 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:32:13,019] Trial 19 finished with value: -23.578577700713282 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:32:20,903] Trial 20 finished with value: -27.176802494289593 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:32:54,780] Trial 21 finished with value: -6.441431807072322 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:33:42,282] Trial 22 finished with value: -55.74434652803858 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:34:05,899] Trial 23 finished with value: -14.15680680507946 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:34:41,854] Trial 24 finished with value: -6.013059759628947 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:35:16,047] Trial 25 finished with value: -13.10627954822652 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:35:26,903] Trial 26 finished with value: -5.707417878479868 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:35:35,489] Trial 27 finished with value: -6.6531351043124225 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:36:09,655] Trial 28 finished with value: -3.862241568491248 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:36:20,063] Trial 29 finished with value: -53.230672334242655 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -2.019247183407305. +[I 2025-12-17 19:36:26,421] Trial 30 finished with value: -1.4410366253029732 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 30 with value: -1.4410366253029732. +[I 2025-12-17 19:36:32,892] Trial 31 finished with value: -33.199034716699565 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 30 with value: -1.4410366253029732. +[I 2025-12-17 19:36:39,411] Trial 32 finished with value: -3.4133160458422633 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 30 with value: -1.4410366253029732. +[I 2025-12-17 19:36:47,912] Trial 33 finished with value: -21.887345312089373 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -1.4410366253029732. +[I 2025-12-17 19:36:54,366] Trial 34 finished with value: -43.1806322122699 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 30 with value: -1.4410366253029732. +[I 2025-12-17 19:37:00,784] Trial 35 finished with value: -1.070807223665655 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:37:09,304] Trial 36 finished with value: -3.8548988519788305 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:37:13,808] Trial 37 finished with value: -4.374349944701753 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:37:20,352] Trial 38 finished with value: -18.610336530533694 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:37:28,825] Trial 39 finished with value: -3.485926621238856 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:37:35,185] Trial 40 finished with value: -10.432778426740152 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:38:09,599] Trial 41 finished with value: -156.3709055767941 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:38:16,059] Trial 42 finished with value: -6.590907577049512 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:38:32,107] Trial 43 finished with value: -140.5966090636593 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:38:38,552] Trial 44 finished with value: -19.92608463967899 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:38:54,874] Trial 45 finished with value: -19.743009049145233 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:38:59,339] Trial 46 finished with value: -4.858945818309115 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:39:46,689] Trial 47 finished with value: -13.98766823292066 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:40:06,152] Trial 48 finished with value: -22.57144154659609 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:40:12,833] Trial 49 finished with value: -73.30672539989966 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 35 with value: -1.070807223665655. +[I 2025-12-17 19:40:19,364] A new study created in memory with name: no-name-b62f41e5-0a4a-4738-b77f-bffd7590b819 +[I 2025-12-17 19:40:49,894] Trial 0 finished with value: -250.71836345964394 and parameters: {'embedding_dim': 362, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -250.71836345964394. +[I 2025-12-17 19:40:59,915] Trial 1 finished with value: -443.0331178321375 and parameters: {'embedding_dim': 310, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -250.71836345964394. +[I 2025-12-17 19:41:08,229] Trial 2 finished with value: -3427.217455456052 and parameters: {'embedding_dim': 234, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -250.71836345964394. +[I 2025-12-17 19:41:16,685] Trial 3 finished with value: -2181.27938113037 and parameters: {'embedding_dim': 279, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -250.71836345964394. +[I 2025-12-17 19:41:54,991] Trial 4 finished with value: -756.3231443812227 and parameters: {'embedding_dim': 402, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -250.71836345964394. +[I 2025-12-17 19:43:18,797] Trial 5 finished with value: -302.95124468329266 and parameters: {'embedding_dim': 511, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -250.71836345964394. +[I 2025-12-17 19:44:28,175] Trial 6 finished with value: -294.7208299299948 and parameters: {'embedding_dim': 301, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -250.71836345964394. +[I 2025-12-17 19:44:52,179] Trial 7 finished with value: -874.3582918517801 and parameters: {'embedding_dim': 335, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -250.71836345964394. +[I 2025-12-17 19:45:31,072] Trial 8 finished with value: -507.41858749749895 and parameters: {'embedding_dim': 321, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -250.71836345964394. +[I 2025-12-17 19:45:53,202] Trial 9 finished with value: -314.8467886133525 and parameters: {'embedding_dim': 270, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -250.71836345964394. +[I 2025-12-17 19:46:24,107] Trial 10 finished with value: -325.8659400127962 and parameters: {'embedding_dim': 167, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -250.71836345964394. +[I 2025-12-17 19:47:32,323] Trial 11 finished with value: -166.65059960650706 and parameters: {'embedding_dim': 406, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -166.65059960650706. +[I 2025-12-17 19:48:04,527] Trial 12 finished with value: -889.7201689909306 and parameters: {'embedding_dim': 418, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 11 with value: -166.65059960650706. +[I 2025-12-17 19:49:11,006] Trial 13 finished with value: -25.04538368858288 and parameters: {'embedding_dim': 399, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 19:50:15,384] Trial 14 finished with value: -25.413688822379168 and parameters: {'embedding_dim': 471, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 19:51:20,944] Trial 15 finished with value: -275.3753934154727 and parameters: {'embedding_dim': 482, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 19:52:38,964] Trial 16 finished with value: -625.5239051775449 and parameters: {'embedding_dim': 457, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 19:53:44,006] Trial 17 finished with value: -138.38645197300414 and parameters: {'embedding_dim': 442, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 19:54:21,221] Trial 18 finished with value: -1764.6358471975248 and parameters: {'embedding_dim': 373, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 19:55:40,312] Trial 19 finished with value: -37.34852987012351 and parameters: {'embedding_dim': 504, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 19:56:43,957] Trial 20 finished with value: -73.07229271293144 and parameters: {'embedding_dim': 458, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 19:58:03,313] Trial 21 finished with value: -711.4126140308381 and parameters: {'embedding_dim': 497, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 19:59:18,892] Trial 22 finished with value: -678.711465820478 and parameters: {'embedding_dim': 467, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 20:00:20,946] Trial 23 finished with value: -121.39189478737802 and parameters: {'embedding_dim': 417, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 20:01:36,703] Trial 24 finished with value: -411.1811031307517 and parameters: {'embedding_dim': 506, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 20:02:25,749] Trial 25 finished with value: -475.31056079582015 and parameters: {'embedding_dim': 371, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 20:03:27,968] Trial 26 finished with value: -276.29979360815605 and parameters: {'embedding_dim': 437, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 20:04:44,135] Trial 27 finished with value: -545.7407011406127 and parameters: {'embedding_dim': 474, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 20:05:03,065] Trial 28 finished with value: -366.03634778053583 and parameters: {'embedding_dim': 385, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 20:05:53,402] Trial 29 finished with value: -540.2850212274535 and parameters: {'embedding_dim': 349, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -25.04538368858288. +[I 2025-12-17 20:06:56,832] A new study created in memory with name: no-name-e4cc1200-d466-4535-8ee7-74876a97a034 +[I 2025-12-17 20:07:43,640] Trial 0 finished with value: -5.183250903128434 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -5.183250903128434. +[I 2025-12-17 20:08:30,373] Trial 1 finished with value: -20.539698125571075 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -5.183250903128434. +[I 2025-12-17 20:08:51,868] Trial 2 finished with value: -2.0229728471461703 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -2.0229728471461703. +[I 2025-12-17 20:09:13,903] Trial 3 finished with value: -76.8625262861382 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -2.0229728471461703. +[I 2025-12-17 20:09:18,441] Trial 4 finished with value: -13.198604064558676 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -2.0229728471461703. +[I 2025-12-17 20:09:40,067] Trial 5 finished with value: -3.561650234655328 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -2.0229728471461703. +[I 2025-12-17 20:09:44,588] Trial 6 finished with value: -2.832814407696751 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -2.0229728471461703. +[I 2025-12-17 20:10:06,670] Trial 7 finished with value: -5.744368860573983 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -2.0229728471461703. +[I 2025-12-17 20:10:26,476] Trial 8 finished with value: -2.9080947416254648 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -2.0229728471461703. +[I 2025-12-17 20:10:32,874] Trial 9 finished with value: -1.3806557611122015 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 9 with value: -1.3806557611122015. +[I 2025-12-17 20:10:41,713] Trial 10 finished with value: -9.962641766832816 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 9 with value: -1.3806557611122015. +[I 2025-12-17 20:10:57,923] Trial 11 finished with value: -10.513284888245297 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -1.3806557611122015. +[I 2025-12-17 20:11:06,293] Trial 12 finished with value: -36.13366956358308 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -1.3806557611122015. +[I 2025-12-17 20:11:22,397] Trial 13 finished with value: -1.3459811214368087 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -1.3459811214368087. +[I 2025-12-17 20:11:31,574] Trial 14 finished with value: -4.55667067555043 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -1.3459811214368087. +[I 2025-12-17 20:11:47,476] Trial 15 finished with value: -18.57655338343313 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -1.3459811214368087. +[I 2025-12-17 20:11:53,835] Trial 16 finished with value: -73.8136209082736 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -1.3459811214368087. +[I 2025-12-17 20:12:11,661] Trial 17 finished with value: -4.305676495134783 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -1.3459811214368087. +[I 2025-12-17 20:12:18,144] Trial 18 finished with value: -0.8108442916867082 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:12:31,468] Trial 19 finished with value: -7.208497416028221 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:12:37,926] Trial 20 finished with value: -2.5892731915077576 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:12:44,632] Trial 21 finished with value: -12.950568824707434 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:12:51,570] Trial 22 finished with value: -13.667554650104442 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:13:00,359] Trial 23 finished with value: -56.09676791123047 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:13:06,771] Trial 24 finished with value: -10.716376912957074 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:13:28,714] Trial 25 finished with value: -13.414468921245032 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:13:35,360] Trial 26 finished with value: -73.99228347633108 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:13:41,938] Trial 27 finished with value: -7.457896089933812 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:14:16,154] Trial 28 finished with value: -1.6852261781225117 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:14:38,464] Trial 29 finished with value: -20.558377842837032 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:15:16,397] Trial 30 finished with value: -2.556238446725192 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:15:53,055] Trial 31 finished with value: -3.77951616552405 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:16:27,617] Trial 32 finished with value: -12.350558586751053 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:17:04,853] Trial 33 finished with value: -3.37224632385707 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:17:40,770] Trial 34 finished with value: -13.526877017186177 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:18:29,667] Trial 35 finished with value: -35.88053707058028 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:19:05,696] Trial 36 finished with value: -13.797847037783907 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:19:16,486] Trial 37 finished with value: -64.13554744889632 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:19:24,894] Trial 38 finished with value: -18.640324488808798 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:19:46,938] Trial 39 finished with value: -29.60890789103263 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:20:03,314] Trial 40 finished with value: -10.635697610877585 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:20:28,463] Trial 41 finished with value: -6.115704833763896 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:20:44,526] Trial 42 finished with value: -3.656962021990587 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:21:07,748] Trial 43 finished with value: -7.083069732646349 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:21:23,766] Trial 44 finished with value: -17.973093019546223 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:21:32,150] Trial 45 finished with value: -6.1650109604663355 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:21:50,097] Trial 46 finished with value: -66.54941477413325 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:21:56,508] Trial 47 finished with value: -12.18894430039869 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:22:06,956] Trial 48 finished with value: -22.496820628504462 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:22:13,359] Trial 49 finished with value: -7.574672554224938 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.8108442916867082. +[I 2025-12-17 20:22:19,868] A new study created in memory with name: no-name-3378722f-9320-452d-979f-939fee30392d +[I 2025-12-17 20:22:31,151] Trial 0 finished with value: -2396.550252335538 and parameters: {'embedding_dim': 490, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -2396.550252335538. +[I 2025-12-17 20:22:45,153] Trial 1 finished with value: -559.5720983377727 and parameters: {'embedding_dim': 391, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 1 with value: -559.5720983377727. +[I 2025-12-17 20:22:55,815] Trial 2 finished with value: -653.6097066577196 and parameters: {'embedding_dim': 324, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 1 with value: -559.5720983377727. +[I 2025-12-17 20:23:09,557] Trial 3 finished with value: -580.3834552490787 and parameters: {'embedding_dim': 214, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 1 with value: -559.5720983377727. +[I 2025-12-17 20:23:26,632] Trial 4 finished with value: -1634.6550250494658 and parameters: {'embedding_dim': 320, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -559.5720983377727. +[I 2025-12-17 20:23:37,590] Trial 5 finished with value: -2995.370429139996 and parameters: {'embedding_dim': 379, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 1 with value: -559.5720983377727. +[I 2025-12-17 20:23:58,613] Trial 6 finished with value: -818.9086507540924 and parameters: {'embedding_dim': 285, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -559.5720983377727. +[I 2025-12-17 20:24:31,726] Trial 7 finished with value: -525.2715185317555 and parameters: {'embedding_dim': 371, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 7 with value: -525.2715185317555. +[I 2025-12-17 20:25:07,840] Trial 8 finished with value: -414.3727097352569 and parameters: {'embedding_dim': 485, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -414.3727097352569. +[I 2025-12-17 20:25:53,716] Trial 9 finished with value: -1106.8829889654874 and parameters: {'embedding_dim': 344, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 8 with value: -414.3727097352569. +[I 2025-12-17 20:26:49,085] Trial 10 finished with value: -704.6422910276112 and parameters: {'embedding_dim': 510, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 8 with value: -414.3727097352569. +[I 2025-12-17 20:27:31,090] Trial 11 finished with value: -424.0078234446096 and parameters: {'embedding_dim': 440, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 8 with value: -414.3727097352569. +[I 2025-12-17 20:28:17,690] Trial 12 finished with value: -324.8132064763325 and parameters: {'embedding_dim': 443, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -324.8132064763325. +[I 2025-12-17 20:28:59,202] Trial 13 finished with value: -1306.2149379338664 and parameters: {'embedding_dim': 450, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -324.8132064763325. +[I 2025-12-17 20:29:43,556] Trial 14 finished with value: -958.2759933489125 and parameters: {'embedding_dim': 444, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -324.8132064763325. +[I 2025-12-17 20:30:19,257] Trial 15 finished with value: -221.11477389211348 and parameters: {'embedding_dim': 165, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:31:11,648] Trial 16 finished with value: -1431.3644722013814 and parameters: {'embedding_dim': 151, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:31:53,412] Trial 17 finished with value: -1093.443418414663 and parameters: {'embedding_dim': 242, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:32:27,995] Trial 18 finished with value: -408.86895803557695 and parameters: {'embedding_dim': 140, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:32:55,188] Trial 19 finished with value: -515.6488169500062 and parameters: {'embedding_dim': 194, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:33:09,437] Trial 20 finished with value: -1268.51217554699 and parameters: {'embedding_dim': 275, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:33:43,376] Trial 21 finished with value: -874.4887735671023 and parameters: {'embedding_dim': 158, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:34:16,646] Trial 22 finished with value: -327.9016726256018 and parameters: {'embedding_dim': 134, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:34:58,852] Trial 23 finished with value: -892.4473578249522 and parameters: {'embedding_dim': 193, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:35:33,166] Trial 24 finished with value: -283.13614957212326 and parameters: {'embedding_dim': 131, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:35:58,940] Trial 25 finished with value: -448.2455177812616 and parameters: {'embedding_dim': 233, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:36:41,749] Trial 26 finished with value: -1067.6308275837175 and parameters: {'embedding_dim': 194, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:37:15,294] Trial 27 finished with value: -1227.7322364663355 and parameters: {'embedding_dim': 166, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:37:36,851] Trial 28 finished with value: -442.61226199111195 and parameters: {'embedding_dim': 406, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:37:54,680] Trial 29 finished with value: -405.33469670718733 and parameters: {'embedding_dim': 264, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -221.11477389211348. +[I 2025-12-17 20:38:33,391] A new study created in memory with name: no-name-56ecaf0c-b489-46e0-9b7c-4fb1bec20c5a +[I 2025-12-17 20:38:42,743] Trial 0 finished with value: -26.714499930271487 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -26.714499930271487. +[I 2025-12-17 20:39:00,188] Trial 1 finished with value: -59.75423930292002 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -26.714499930271487. +[I 2025-12-17 20:39:11,799] Trial 2 finished with value: -59.74876657319918 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -26.714499930271487. +[I 2025-12-17 20:39:49,504] Trial 3 finished with value: -32.83852986201745 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -26.714499930271487. +[I 2025-12-17 20:40:25,275] Trial 4 finished with value: -25.522079054710577 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -25.522079054710577. +[I 2025-12-17 20:40:29,507] Trial 5 finished with value: -66.20350168778087 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -25.522079054710577. +[I 2025-12-17 20:40:38,436] Trial 6 finished with value: -3.655347392643553 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -3.655347392643553. +[I 2025-12-17 20:40:44,669] Trial 7 finished with value: -133.335816172337 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -3.655347392643553. +[I 2025-12-17 20:41:02,157] Trial 8 finished with value: -14.304990900981272 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -3.655347392643553. +[I 2025-12-17 20:41:08,267] Trial 9 finished with value: -26.103489907230962 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -3.655347392643553. +[I 2025-12-17 20:41:16,526] Trial 10 finished with value: -11.180790289706875 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -3.655347392643553. +[I 2025-12-17 20:41:24,779] Trial 11 finished with value: -20.345245259234474 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -3.655347392643553. +[I 2025-12-17 20:41:33,046] Trial 12 finished with value: -74.07732627199417 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -3.655347392643553. +[I 2025-12-17 20:41:41,433] Trial 13 finished with value: -20.947890314529293 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -3.655347392643553. +[I 2025-12-17 20:41:51,200] Trial 14 finished with value: -16.790164954836072 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -3.655347392643553. +[I 2025-12-17 20:42:28,117] Trial 15 finished with value: -44.9393025357881 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 6 with value: -3.655347392643553. +[I 2025-12-17 20:42:36,509] Trial 16 finished with value: -37.22576712758693 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -3.655347392643553. +[I 2025-12-17 20:42:40,663] Trial 17 finished with value: -32.4003126315858 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -3.655347392643553. +[I 2025-12-17 20:43:18,559] Trial 18 finished with value: -0.5891723000178455 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:43:53,623] Trial 19 finished with value: -0.851304167148925 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:44:29,132] Trial 20 finished with value: -12.631992895371994 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:45:05,708] Trial 21 finished with value: -23.420682276554974 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:45:42,812] Trial 22 finished with value: -7.635645038161865 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:46:17,528] Trial 23 finished with value: -4.47304735740053 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:46:41,436] Trial 24 finished with value: -9.50928695303871 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:47:16,890] Trial 25 finished with value: -1.5471307384444932 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:47:52,302] Trial 26 finished with value: -50.232990178249636 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:48:26,405] Trial 27 finished with value: -42.16781905255817 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:48:50,350] Trial 28 finished with value: -4.417234968374003 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:49:24,122] Trial 29 finished with value: -1.083305805936466 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:50:00,021] Trial 30 finished with value: -1.1391213433817895 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:50:33,939] Trial 31 finished with value: -3.7852273957265075 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:51:09,386] Trial 32 finished with value: -26.9524185002324 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:51:25,120] Trial 33 finished with value: -8.84098479406325 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:52:00,534] Trial 34 finished with value: -54.4659691212945 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:52:16,214] Trial 35 finished with value: -4.526598560550706 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:52:38,226] Trial 36 finished with value: -45.3849210887129 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:53:13,923] Trial 37 finished with value: -54.879802837727595 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:53:49,528] Trial 38 finished with value: -39.45019983588287 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:54:23,625] Trial 39 finished with value: -8.50653857214249 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:54:41,075] Trial 40 finished with value: -24.477382456884317 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:55:15,463] Trial 41 finished with value: -23.689519448122276 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:55:51,297] Trial 42 finished with value: -20.915705621408893 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:56:25,297] Trial 43 finished with value: -9.514365353146236 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:57:00,642] Trial 44 finished with value: -24.303452403510587 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:57:34,759] Trial 45 finished with value: -3.3511306113774117 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:58:09,071] Trial 46 finished with value: -6.013864539376862 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:58:30,350] Trial 47 finished with value: -37.145606229670236 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:58:52,115] Trial 48 finished with value: -88.31658791088944 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 20:59:26,212] Trial 49 finished with value: -38.03751743862431 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.5891723000178455. +[I 2025-12-17 21:00:00,375] A new study created in memory with name: no-name-fa825aba-5dd9-43b6-9bc1-8826d90c87b7 +[I 2025-12-17 21:00:09,257] Trial 0 finished with value: -517.0155908028963 and parameters: {'embedding_dim': 347, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -517.0155908028963. +[I 2025-12-17 21:00:14,087] Trial 1 finished with value: -949.6846598622897 and parameters: {'embedding_dim': 370, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -517.0155908028963. +[I 2025-12-17 21:00:30,140] Trial 2 finished with value: -1023.9614147308187 and parameters: {'embedding_dim': 268, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -517.0155908028963. +[I 2025-12-17 21:00:35,573] Trial 3 finished with value: -2016.0098570357054 and parameters: {'embedding_dim': 165, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -517.0155908028963. +[I 2025-12-17 21:00:47,805] Trial 4 finished with value: -1804.8560019992144 and parameters: {'embedding_dim': 494, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -517.0155908028963. +[I 2025-12-17 21:00:55,796] Trial 5 finished with value: -291.8941143941611 and parameters: {'embedding_dim': 416, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -291.8941143941611. +[I 2025-12-17 21:01:05,509] Trial 6 finished with value: -2133.226206205644 and parameters: {'embedding_dim': 326, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 5 with value: -291.8941143941611. +[I 2025-12-17 21:01:23,622] Trial 7 finished with value: -200.18406944343948 and parameters: {'embedding_dim': 177, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:01:33,220] Trial 8 finished with value: -202.06218746806243 and parameters: {'embedding_dim': 334, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:01:51,329] Trial 9 finished with value: -899.7725899929815 and parameters: {'embedding_dim': 396, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:02:09,730] Trial 10 finished with value: -330.50696431972153 and parameters: {'embedding_dim': 134, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:02:22,099] Trial 11 finished with value: -476.64346066488883 and parameters: {'embedding_dim': 237, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:02:36,933] Trial 12 finished with value: -304.52281798326385 and parameters: {'embedding_dim': 235, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:02:46,473] Trial 13 finished with value: -526.1602888196348 and parameters: {'embedding_dim': 281, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:02:59,838] Trial 14 finished with value: -1789.5130291228932 and parameters: {'embedding_dim': 181, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:03:17,682] Trial 15 finished with value: -524.9480505647082 and parameters: {'embedding_dim': 450, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:03:33,145] Trial 16 finished with value: -261.102825951689 and parameters: {'embedding_dim': 211, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:03:44,733] Trial 17 finished with value: -255.69833810224594 and parameters: {'embedding_dim': 286, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:03:54,251] Trial 18 finished with value: -553.9318016457026 and parameters: {'embedding_dim': 297, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:04:16,574] Trial 19 finished with value: -287.5793393571449 and parameters: {'embedding_dim': 341, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:04:36,169] Trial 20 finished with value: -313.429469473765 and parameters: {'embedding_dim': 443, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:04:49,409] Trial 21 finished with value: -1065.698048669782 and parameters: {'embedding_dim': 306, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:05:01,529] Trial 22 finished with value: -227.96579663338147 and parameters: {'embedding_dim': 254, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:05:10,460] Trial 23 finished with value: -512.4305250810286 and parameters: {'embedding_dim': 189, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:05:23,359] Trial 24 finished with value: -310.00308861517135 and parameters: {'embedding_dim': 247, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:05:30,697] Trial 25 finished with value: -704.6937883568429 and parameters: {'embedding_dim': 211, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:05:46,441] Trial 26 finished with value: -2083.843166917248 and parameters: {'embedding_dim': 141, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:06:00,176] Trial 27 finished with value: -252.21147195371978 and parameters: {'embedding_dim': 256, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:06:18,018] Trial 28 finished with value: -201.94859813380367 and parameters: {'embedding_dim': 212, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:06:29,925] Trial 29 finished with value: -1019.440867102835 and parameters: {'embedding_dim': 359, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -200.18406944343948. +[I 2025-12-17 21:06:51,047] A new study created in memory with name: no-name-2a0269f3-97d6-4f07-a7b2-8c9d2f8aa939 +[I 2025-12-17 21:07:12,615] Trial 0 finished with value: -2.5599708085144277 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -2.5599708085144277. +[I 2025-12-17 21:08:02,187] Trial 1 finished with value: -26.15729716779624 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -2.5599708085144277. +[I 2025-12-17 21:08:19,162] Trial 2 finished with value: -7.665568612901922 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -2.5599708085144277. +[I 2025-12-17 21:09:07,177] Trial 3 finished with value: -2.519395694564306 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -2.519395694564306. +[I 2025-12-17 21:09:16,573] Trial 4 finished with value: -67.03801698386727 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -2.519395694564306. +[I 2025-12-17 21:09:51,734] Trial 5 finished with value: -49.674178375123404 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -2.519395694564306. +[I 2025-12-17 21:10:02,091] Trial 6 finished with value: -46.228894899075854 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -2.519395694564306. +[I 2025-12-17 21:10:37,063] Trial 7 finished with value: -3.8158968869696004 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -2.519395694564306. +[I 2025-12-17 21:10:47,514] Trial 8 finished with value: -12.32082787342745 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -2.519395694564306. +[I 2025-12-17 21:11:10,829] Trial 9 finished with value: -17.926084910862073 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -2.519395694564306. +[I 2025-12-17 21:11:19,331] Trial 10 finished with value: -13.545052799640061 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -2.519395694564306. +[I 2025-12-17 21:11:42,681] Trial 11 finished with value: -14.492157871866619 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -2.519395694564306. +[I 2025-12-17 21:12:30,562] Trial 12 finished with value: -82.42369600871456 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -2.519395694564306. +[I 2025-12-17 21:12:53,508] Trial 13 finished with value: -11.443678112220052 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -2.519395694564306. +[I 2025-12-17 21:13:00,057] Trial 14 finished with value: -34.49911846424332 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -2.519395694564306. +[I 2025-12-17 21:13:49,336] Trial 15 finished with value: -2.305428308609515 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.305428308609515. +[I 2025-12-17 21:14:25,731] Trial 16 finished with value: -73.38358298514896 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -2.305428308609515. +[I 2025-12-17 21:15:13,152] Trial 17 finished with value: -3.0229385915883773 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.305428308609515. +[I 2025-12-17 21:15:47,663] Trial 18 finished with value: -4.536655417254403 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -2.305428308609515. +[I 2025-12-17 21:16:34,746] Trial 19 finished with value: -22.494361484693822 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.305428308609515. +[I 2025-12-17 21:17:21,621] Trial 20 finished with value: -50.43147656756409 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.305428308609515. +[I 2025-12-17 21:17:43,071] Trial 21 finished with value: -34.99264638767372 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -2.305428308609515. +[I 2025-12-17 21:18:04,588] Trial 22 finished with value: -2.8054234045380255 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -2.305428308609515. +[I 2025-12-17 21:18:12,998] Trial 23 finished with value: -26.364594197952854 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -2.305428308609515. +[I 2025-12-17 21:19:00,178] Trial 24 finished with value: -41.65976961874028 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.305428308609515. +[I 2025-12-17 21:19:16,419] Trial 25 finished with value: -47.95561947501593 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -2.305428308609515. +[I 2025-12-17 21:20:03,537] Trial 26 finished with value: -1.9140920200231946 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 26 with value: -1.9140920200231946. +[I 2025-12-17 21:20:37,916] Trial 27 finished with value: -39.57188667778429 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 26 with value: -1.9140920200231946. +[I 2025-12-17 21:21:24,686] Trial 28 finished with value: -78.39854158032469 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 26 with value: -1.9140920200231946. +[I 2025-12-17 21:22:11,731] Trial 29 finished with value: -75.19507520714073 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 26 with value: -1.9140920200231946. +[I 2025-12-17 21:22:58,674] Trial 30 finished with value: -0.5843469160308773 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 30 with value: -0.5843469160308773. +[I 2025-12-17 21:23:45,549] Trial 31 finished with value: -16.994637677053166 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 30 with value: -0.5843469160308773. +[I 2025-12-17 21:24:32,549] Trial 32 finished with value: -24.551536974756953 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 30 with value: -0.5843469160308773. +[I 2025-12-17 21:25:19,490] Trial 33 finished with value: -24.351151974391527 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 30 with value: -0.5843469160308773. +[I 2025-12-17 21:26:06,518] Trial 34 finished with value: -3.136580590511931 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 30 with value: -0.5843469160308773. +[I 2025-12-17 21:26:53,524] Trial 35 finished with value: -56.970836974911734 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 30 with value: -0.5843469160308773. +[I 2025-12-17 21:26:59,863] Trial 36 finished with value: -223.39246221300655 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 30 with value: -0.5843469160308773. +[I 2025-12-17 21:27:46,678] Trial 37 finished with value: -3.0182967468616435 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 30 with value: -0.5843469160308773. +[I 2025-12-17 21:28:33,670] Trial 38 finished with value: -9.712188713997213 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 30 with value: -0.5843469160308773. +[I 2025-12-17 21:28:55,790] Trial 39 finished with value: -5.785525448944446 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.5843469160308773. +[I 2025-12-17 21:29:30,575] Trial 40 finished with value: -0.011851902349448102 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 40 with value: -0.011851902349448102. +[I 2025-12-17 21:30:05,268] Trial 41 finished with value: -11.134982874623555 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 40 with value: -0.011851902349448102. +[I 2025-12-17 21:30:39,745] Trial 42 finished with value: -40.54460433160523 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 40 with value: -0.011851902349448102. +[I 2025-12-17 21:31:15,911] Trial 43 finished with value: -18.04062022039161 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 40 with value: -0.011851902349448102. +[I 2025-12-17 21:31:37,754] Trial 44 finished with value: -25.858077133054262 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 40 with value: -0.011851902349448102. +[I 2025-12-17 21:31:44,099] Trial 45 finished with value: -12.841472401169002 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 40 with value: -0.011851902349448102. +[I 2025-12-17 21:32:35,789] Trial 46 finished with value: -56.28503397419975 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 40 with value: -0.011851902349448102. +[I 2025-12-17 21:33:13,478] Trial 47 finished with value: -79.93616001815523 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 40 with value: -0.011851902349448102. +[I 2025-12-17 21:34:00,036] Trial 48 finished with value: -9.815718281705072 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 40 with value: -0.011851902349448102. +[I 2025-12-17 21:34:48,053] Trial 49 finished with value: -0.32531474602723837 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 40 with value: -0.011851902349448102. +[I 2025-12-17 21:35:26,152] A new study created in memory with name: no-name-255c1c22-c707-424f-a471-9a89e2975d9c +[I 2025-12-17 21:36:04,932] Trial 0 finished with value: -1896.842739843579 and parameters: {'embedding_dim': 288, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -1896.842739843579. +[I 2025-12-17 21:36:20,407] Trial 1 finished with value: -1574.0337810095998 and parameters: {'embedding_dim': 456, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 1 with value: -1574.0337810095998. +[I 2025-12-17 21:36:39,968] Trial 2 finished with value: -286.3352672847363 and parameters: {'embedding_dim': 229, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -286.3352672847363. +[I 2025-12-17 21:36:51,555] Trial 3 finished with value: -316.36152459309073 and parameters: {'embedding_dim': 316, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -286.3352672847363. +[I 2025-12-17 21:37:32,150] Trial 4 finished with value: -695.5602143945324 and parameters: {'embedding_dim': 256, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -286.3352672847363. +[I 2025-12-17 21:37:49,875] Trial 5 finished with value: -2467.5352256034794 and parameters: {'embedding_dim': 289, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 2 with value: -286.3352672847363. +[I 2025-12-17 21:38:56,362] Trial 6 finished with value: -906.0617576688044 and parameters: {'embedding_dim': 480, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -286.3352672847363. +[I 2025-12-17 21:39:45,099] Trial 7 finished with value: -153.6719272644584 and parameters: {'embedding_dim': 265, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 7 with value: -153.6719272644584. +[I 2025-12-17 21:41:09,959] Trial 8 finished with value: -585.705996203637 and parameters: {'embedding_dim': 128, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 7 with value: -153.6719272644584. +[I 2025-12-17 21:41:42,062] Trial 9 finished with value: -339.6897275378243 and parameters: {'embedding_dim': 355, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 7 with value: -153.6719272644584. +[I 2025-12-17 21:42:30,691] Trial 10 finished with value: -212.00428494242536 and parameters: {'embedding_dim': 160, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 7 with value: -153.6719272644584. +[I 2025-12-17 21:43:20,950] Trial 11 finished with value: -703.0638136138907 and parameters: {'embedding_dim': 162, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 7 with value: -153.6719272644584. +[I 2025-12-17 21:44:09,448] Trial 12 finished with value: -163.22725992651465 and parameters: {'embedding_dim': 195, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 7 with value: -153.6719272644584. +[I 2025-12-17 21:44:57,863] Trial 13 finished with value: -157.60032885478324 and parameters: {'embedding_dim': 380, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 7 with value: -153.6719272644584. +[I 2025-12-17 21:45:16,350] Trial 14 finished with value: -332.8375962094674 and parameters: {'embedding_dim': 386, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 7 with value: -153.6719272644584. +[I 2025-12-17 21:45:51,252] Trial 15 finished with value: -199.6616780948265 and parameters: {'embedding_dim': 410, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 7 with value: -153.6719272644584. +[I 2025-12-17 21:46:39,741] Trial 16 finished with value: -92.68838785885319 and parameters: {'embedding_dim': 425, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 16 with value: -92.68838785885319. +[I 2025-12-17 21:47:22,944] Trial 17 finished with value: -686.1642074473799 and parameters: {'embedding_dim': 510, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 16 with value: -92.68838785885319. +[I 2025-12-17 21:48:19,247] Trial 18 finished with value: -192.57379472608758 and parameters: {'embedding_dim': 433, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -92.68838785885319. +[I 2025-12-17 21:48:41,613] Trial 19 finished with value: -247.277357645474 and parameters: {'embedding_dim': 330, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 16 with value: -92.68838785885319. +[I 2025-12-17 21:49:06,931] Trial 20 finished with value: -924.746590940835 and parameters: {'embedding_dim': 246, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 16 with value: -92.68838785885319. +[I 2025-12-17 21:49:54,834] Trial 21 finished with value: -272.3348058461231 and parameters: {'embedding_dim': 372, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 16 with value: -92.68838785885319. +[I 2025-12-17 21:50:41,376] Trial 22 finished with value: -260.8380265696204 and parameters: {'embedding_dim': 404, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 16 with value: -92.68838785885319. +[I 2025-12-17 21:51:20,969] Trial 23 finished with value: -105.24110777249055 and parameters: {'embedding_dim': 338, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 16 with value: -92.68838785885319. +[I 2025-12-17 21:52:00,159] Trial 24 finished with value: -86.4385694362128 and parameters: {'embedding_dim': 330, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 24 with value: -86.4385694362128. +[I 2025-12-17 21:52:39,748] Trial 25 finished with value: -668.2120803943913 and parameters: {'embedding_dim': 348, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 24 with value: -86.4385694362128. +[I 2025-12-17 21:53:19,773] Trial 26 finished with value: -339.49172381050136 and parameters: {'embedding_dim': 301, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 24 with value: -86.4385694362128. +[I 2025-12-17 21:54:12,505] Trial 27 finished with value: -1062.0774320338396 and parameters: {'embedding_dim': 433, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 24 with value: -86.4385694362128. +[I 2025-12-17 21:54:32,305] Trial 28 finished with value: -501.84518081974704 and parameters: {'embedding_dim': 334, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 24 with value: -86.4385694362128. +[I 2025-12-17 21:55:13,054] Trial 29 finished with value: -963.0727199905054 and parameters: {'embedding_dim': 474, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 24 with value: -86.4385694362128. +[I 2025-12-17 21:55:53,108] A new study created in memory with name: no-name-d3ac9d14-060a-40a4-83a4-c3b0f3d53d37 +[I 2025-12-17 21:56:07,293] Trial 0 finished with value: -10.46377088063345 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -10.46377088063345. +[I 2025-12-17 21:56:33,033] Trial 1 finished with value: -21.572536729839477 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -10.46377088063345. +[I 2025-12-17 21:56:38,327] Trial 2 finished with value: -78.74119679655823 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -10.46377088063345. +[I 2025-12-17 21:56:44,764] Trial 3 finished with value: -120.18175269848449 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -10.46377088063345. +[I 2025-12-17 21:56:55,694] Trial 4 finished with value: -41.24199213134786 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -10.46377088063345. +[I 2025-12-17 21:57:31,878] Trial 5 finished with value: -12.872458658909768 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -10.46377088063345. +[I 2025-12-17 21:58:25,978] Trial 6 finished with value: -35.462043096666434 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -10.46377088063345. +[I 2025-12-17 21:58:30,530] Trial 7 finished with value: -131.8531116059025 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -10.46377088063345. +[I 2025-12-17 21:58:55,419] Trial 8 finished with value: -210.29084202105307 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -10.46377088063345. +[I 2025-12-17 21:59:03,751] Trial 9 finished with value: -155.70723003578533 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -10.46377088063345. +[I 2025-12-17 21:59:21,896] Trial 10 finished with value: -10.472786715004984 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -10.46377088063345. +[I 2025-12-17 21:59:38,700] Trial 11 finished with value: -5.738387111742241 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -5.738387111742241. +[I 2025-12-17 21:59:55,546] Trial 12 finished with value: -78.0848157418594 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -5.738387111742241. +[I 2025-12-17 22:00:20,708] Trial 13 finished with value: -8.097113059338438 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -5.738387111742241. +[I 2025-12-17 22:00:44,584] Trial 14 finished with value: -26.693146602746303 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -5.738387111742241. +[I 2025-12-17 22:01:07,263] Trial 15 finished with value: -2.1280846098934116 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1280846098934116. +[I 2025-12-17 22:01:26,513] Trial 16 finished with value: -19.05619849235324 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -2.1280846098934116. +[I 2025-12-17 22:01:53,763] Trial 17 finished with value: -47.08032178783028 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1280846098934116. +[I 2025-12-17 22:02:12,212] Trial 18 finished with value: -12.147429437019564 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -2.1280846098934116. +[I 2025-12-17 22:03:04,794] Trial 19 finished with value: -6.618287093863221 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -2.1280846098934116. +[I 2025-12-17 22:03:23,042] Trial 20 finished with value: -3.710088413963669 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -2.1280846098934116. +[I 2025-12-17 22:03:43,398] Trial 21 finished with value: -60.41922459498552 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -2.1280846098934116. +[I 2025-12-17 22:04:00,174] Trial 22 finished with value: -0.9128413507952197 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -0.9128413507952197. +[I 2025-12-17 22:04:18,683] Trial 23 finished with value: -1.6782231395940113 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -0.9128413507952197. +[I 2025-12-17 22:04:42,639] Trial 24 finished with value: -7.904409624863364 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -0.9128413507952197. +[I 2025-12-17 22:05:02,893] Trial 25 finished with value: -48.31735492903966 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -0.9128413507952197. +[I 2025-12-17 22:05:21,201] Trial 26 finished with value: -34.37739857603621 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -0.9128413507952197. +[I 2025-12-17 22:05:47,632] Trial 27 finished with value: -66.34342569548254 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 22 with value: -0.9128413507952197. +[I 2025-12-17 22:05:54,284] Trial 28 finished with value: -5.081499048957502 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -0.9128413507952197. +[I 2025-12-17 22:06:33,732] Trial 29 finished with value: -39.916611629725274 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.9128413507952197. +[I 2025-12-17 22:06:57,561] Trial 30 finished with value: -0.8169244178844881 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:07:20,174] Trial 31 finished with value: -51.27748385973819 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:07:45,492] Trial 32 finished with value: -76.1029224628832 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:08:08,093] Trial 33 finished with value: -44.26996526313669 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:08:30,630] Trial 34 finished with value: -13.724646606664908 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:08:47,295] Trial 35 finished with value: -59.63821927476074 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:08:51,824] Trial 36 finished with value: -5.365246729697827 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:09:14,378] Trial 37 finished with value: -9.49135819991638 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:09:31,350] Trial 38 finished with value: -13.010904683872202 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:09:54,498] Trial 39 finished with value: -10.755861786379183 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:10:01,213] Trial 40 finished with value: -45.66500803916971 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:10:17,949] Trial 41 finished with value: -1.898091411576603 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:10:34,595] Trial 42 finished with value: -1.207759162826426 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:10:51,341] Trial 43 finished with value: -5.301231546906954 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:11:08,180] Trial 44 finished with value: -18.249751444044747 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:11:25,062] Trial 45 finished with value: -24.907302363551103 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:11:41,790] Trial 46 finished with value: -31.774624742036988 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:12:05,039] Trial 47 finished with value: -15.757773022628434 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:12:11,728] Trial 48 finished with value: -20.700462978296194 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:12:28,581] Trial 49 finished with value: -7.162242633219075 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 30 with value: -0.8169244178844881. +[I 2025-12-17 22:12:51,241] A new study created in memory with name: no-name-fd673598-9cfe-4fd0-aacf-0ab484010a4e +[I 2025-12-17 22:13:34,992] Trial 0 finished with value: -814.7848063642801 and parameters: {'embedding_dim': 234, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -814.7848063642801. +[I 2025-12-17 22:14:18,154] Trial 1 finished with value: -409.5624843663726 and parameters: {'embedding_dim': 400, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -409.5624843663726. +[I 2025-12-17 22:14:40,238] Trial 2 finished with value: -3800.6718629493894 and parameters: {'embedding_dim': 494, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -409.5624843663726. +[I 2025-12-17 22:15:02,701] Trial 3 finished with value: -289.56480070426505 and parameters: {'embedding_dim': 180, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -289.56480070426505. +[I 2025-12-17 22:15:18,605] Trial 4 finished with value: -516.4985721728667 and parameters: {'embedding_dim': 364, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -289.56480070426505. +[I 2025-12-17 22:15:46,898] Trial 5 finished with value: -376.26319874170974 and parameters: {'embedding_dim': 347, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -289.56480070426505. +[I 2025-12-17 22:16:09,113] Trial 6 finished with value: -731.6084197628297 and parameters: {'embedding_dim': 447, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -289.56480070426505. +[I 2025-12-17 22:16:31,292] Trial 7 finished with value: -402.9059386543007 and parameters: {'embedding_dim': 246, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -289.56480070426505. +[I 2025-12-17 22:16:53,495] Trial 8 finished with value: -817.8905194335375 and parameters: {'embedding_dim': 190, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -289.56480070426505. +[I 2025-12-17 22:17:12,507] Trial 9 finished with value: -380.1065659634739 and parameters: {'embedding_dim': 248, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -289.56480070426505. +[I 2025-12-17 22:17:44,731] Trial 10 finished with value: -306.36947764243337 and parameters: {'embedding_dim': 129, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -289.56480070426505. +[I 2025-12-17 22:18:17,751] Trial 11 finished with value: -704.796520849058 and parameters: {'embedding_dim': 139, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -289.56480070426505. +[I 2025-12-17 22:18:50,603] Trial 12 finished with value: -1246.894648970186 and parameters: {'embedding_dim': 133, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -289.56480070426505. +[I 2025-12-17 22:19:18,005] Trial 13 finished with value: -387.6221249852764 and parameters: {'embedding_dim': 185, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -289.56480070426505. +[I 2025-12-17 22:19:40,373] Trial 14 finished with value: -735.2359992044821 and parameters: {'embedding_dim': 291, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -289.56480070426505. +[I 2025-12-17 22:19:57,416] Trial 15 finished with value: -1655.9655475375746 and parameters: {'embedding_dim': 179, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 3 with value: -289.56480070426505. +[I 2025-12-17 22:20:15,949] Trial 16 finished with value: -375.7790682578003 and parameters: {'embedding_dim': 292, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 3 with value: -289.56480070426505. +[I 2025-12-17 22:20:38,140] Trial 17 finished with value: -266.4461573923601 and parameters: {'embedding_dim': 129, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 17 with value: -266.4461573923601. +[I 2025-12-17 22:20:57,479] Trial 18 finished with value: -2499.5778012813876 and parameters: {'embedding_dim': 214, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 17 with value: -266.4461573923601. +[I 2025-12-17 22:21:09,558] Trial 19 finished with value: -407.0811185828537 and parameters: {'embedding_dim': 166, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 17 with value: -266.4461573923601. +[I 2025-12-17 22:21:31,421] Trial 20 finished with value: -488.01774939872445 and parameters: {'embedding_dim': 278, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 17 with value: -266.4461573923601. +[I 2025-12-17 22:22:07,911] Trial 21 finished with value: -282.80656538424984 and parameters: {'embedding_dim': 131, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 17 with value: -266.4461573923601. +[I 2025-12-17 22:22:30,264] Trial 22 finished with value: -326.09348282300465 and parameters: {'embedding_dim': 164, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 17 with value: -266.4461573923601. +[I 2025-12-17 22:22:49,159] Trial 23 finished with value: -576.792641973721 and parameters: {'embedding_dim': 220, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 17 with value: -266.4461573923601. +[I 2025-12-17 22:23:23,476] Trial 24 finished with value: -529.371416599178 and parameters: {'embedding_dim': 154, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 17 with value: -266.4461573923601. +[I 2025-12-17 22:23:41,762] Trial 25 finished with value: -424.0311944498005 and parameters: {'embedding_dim': 206, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 17 with value: -266.4461573923601. +[I 2025-12-17 22:24:18,236] Trial 26 finished with value: -204.85872779224206 and parameters: {'embedding_dim': 129, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 26 with value: -204.85872779224206. +[I 2025-12-17 22:24:44,186] Trial 27 finished with value: -2153.8095615708125 and parameters: {'embedding_dim': 150, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 26 with value: -204.85872779224206. +[I 2025-12-17 22:25:16,750] Trial 28 finished with value: -1046.8024413646829 and parameters: {'embedding_dim': 272, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 26 with value: -204.85872779224206. +[I 2025-12-17 22:25:33,461] Trial 29 finished with value: -631.7793514722093 and parameters: {'embedding_dim': 319, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 26 with value: -204.85872779224206. +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_3_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_3_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_3_incheon.csv: Class 0=7177 | Class 1=6733 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_incheon.csv: Class 0=7177 | Class 1=6733 | Class 2=14595 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_3_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_3_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_3_seoul.csv: Class 0=7303 | Class 1=6901 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_seoul.csv: Class 0=7303 | Class 1=6901 | Class 2=15873 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_3_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_3_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_3_busan.csv: Class 0=7368 | Class 1=6364 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_busan.csv: Class 0=7368 | Class 1=6364 | Class 2=16439 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_3_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_3_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_3_daegu.csv: Class 0=7456 | Class 1=6458 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_daegu.csv: Class 0=7456 | Class 1=6458 | Class 2=16913 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_3_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_3_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_3_daejeon.csv: Class 0=7114 | Class 1=6636 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_daejeon.csv: Class 0=7114 | Class 1=6636 | Class 2=15784 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_7000_3_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_7000_3_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan7000_3_gwangju.csv: Class 0=7045 | Class 1=6559 +Saved ../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_gwangju.csv: Class 0=7045 | Class 1=6559 | Class 2=16144 + +=== Processing 10000 samples === +Running smotenc_ctgan_sample_10000_1.py... +[I 2025-12-17 22:26:14,456] A new study created in memory with name: no-name-7d940fbd-c1a3-48e2-bf2e-05262192cbc2 +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +[I 2025-12-17 22:26:28,560] Trial 0 finished with value: -65.05521464731605 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -65.05521464731605. +[I 2025-12-17 22:26:53,496] Trial 1 finished with value: -16.025331677430028 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -16.025331677430028. +[I 2025-12-17 22:27:29,144] Trial 2 finished with value: -9.469083877902982 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -9.469083877902982. +[I 2025-12-17 22:27:48,773] Trial 3 finished with value: -133.63162415115585 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -9.469083877902982. +[I 2025-12-17 22:28:05,226] Trial 4 finished with value: -2.219704967528746 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -2.219704967528746. +[I 2025-12-17 22:28:09,746] Trial 5 finished with value: -141.07048714305017 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -2.219704967528746. +[I 2025-12-17 22:28:45,265] Trial 6 finished with value: -2.1774300525902075 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 6 with value: -2.1774300525902075. +[I 2025-12-17 22:29:20,652] Trial 7 finished with value: -0.8222332063442387 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -0.8222332063442387. +[I 2025-12-17 22:29:29,423] Trial 8 finished with value: -100.85260705782967 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -0.8222332063442387. +[I 2025-12-17 22:29:41,178] Trial 9 finished with value: -92.75688438674372 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -0.8222332063442387. +[I 2025-12-17 22:30:03,904] Trial 10 finished with value: -39.2369192199328 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 7 with value: -0.8222332063442387. +[I 2025-12-17 22:30:39,342] Trial 11 finished with value: -107.89964174825161 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -0.8222332063442387. +[I 2025-12-17 22:31:17,467] Trial 12 finished with value: -13.794994702568802 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -0.8222332063442387. +[I 2025-12-17 22:31:52,874] Trial 13 finished with value: -207.3605572756837 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -0.8222332063442387. +[I 2025-12-17 22:32:15,639] Trial 14 finished with value: -241.26325692965713 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 7 with value: -0.8222332063442387. +[I 2025-12-17 22:33:06,729] Trial 15 finished with value: -27.88238107871362 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -0.8222332063442387. +[I 2025-12-17 22:33:42,292] Trial 16 finished with value: -116.87671329979034 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -0.8222332063442387. +[I 2025-12-17 22:34:06,721] Trial 17 finished with value: -0.5360814789652771 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:34:29,047] Trial 18 finished with value: -2.976078474347995 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:34:33,532] Trial 19 finished with value: -15.939425700264184 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:34:55,129] Trial 20 finished with value: -22.40357535401161 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:35:28,636] Trial 21 finished with value: -76.35900722317156 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:36:16,824] Trial 22 finished with value: -19.346420444414754 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:36:50,288] Trial 23 finished with value: -58.750767915609224 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:37:13,282] Trial 24 finished with value: -7.165449426201204 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:37:47,519] Trial 25 finished with value: -41.91369322773134 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:38:33,204] Trial 26 finished with value: -19.889685601590646 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:39:09,159] Trial 27 finished with value: -20.70225178451704 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:39:13,462] Trial 28 finished with value: -4.706252454186373 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:39:29,448] Trial 29 finished with value: -3.4718518904642846 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:39:40,211] Trial 30 finished with value: -49.26398767009111 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:39:56,046] Trial 31 finished with value: -36.46503424333895 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:40:13,477] Trial 32 finished with value: -0.5746681771063554 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:40:31,844] Trial 33 finished with value: -32.80521443774454 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:40:47,799] Trial 34 finished with value: -111.54424542584735 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:41:09,068] Trial 35 finished with value: -96.64769830646517 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:41:24,987] Trial 36 finished with value: -232.69206363911977 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:42:00,620] Trial 37 finished with value: -78.85781834651542 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:42:22,060] Trial 38 finished with value: -105.16718856816622 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:42:26,435] Trial 39 finished with value: -4.9434157881715395 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:43:00,189] Trial 40 finished with value: -18.894607605436534 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:43:15,859] Trial 41 finished with value: -4.509019500078581 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:43:32,023] Trial 42 finished with value: -11.160212176962972 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:43:50,197] Trial 43 finished with value: -10.79940194001001 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:44:07,643] Trial 44 finished with value: -57.1755903278932 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:44:14,741] Trial 45 finished with value: -42.972396057390625 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:44:48,655] Trial 46 finished with value: -13.332009633806152 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:44:59,169] Trial 47 finished with value: -30.90759226382147 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:45:48,094] Trial 48 finished with value: -59.55919165670191 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:46:21,800] Trial 49 finished with value: -38.48952563245724 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 17 with value: -0.5360814789652771. +[I 2025-12-17 22:46:44,015] A new study created in memory with name: no-name-43ea206f-4f2a-4dae-baf4-555bae194dda +[I 2025-12-17 22:48:01,786] Trial 0 finished with value: -100.1761715431498 and parameters: {'embedding_dim': 140, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -100.1761715431498. +[I 2025-12-17 22:49:16,991] Trial 1 finished with value: -203.08330533464786 and parameters: {'embedding_dim': 180, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -100.1761715431498. +[I 2025-12-17 22:49:55,184] Trial 2 finished with value: -115.28041769426727 and parameters: {'embedding_dim': 512, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -100.1761715431498. +[I 2025-12-17 22:52:00,314] Trial 3 finished with value: -171.7369249308998 and parameters: {'embedding_dim': 216, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -100.1761715431498. +[I 2025-12-17 22:52:40,474] Trial 4 finished with value: -1831.0977745645478 and parameters: {'embedding_dim': 458, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -100.1761715431498. +[I 2025-12-17 22:53:15,883] Trial 5 finished with value: -348.67155523951084 and parameters: {'embedding_dim': 362, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -100.1761715431498. +[I 2025-12-17 22:53:53,488] Trial 6 finished with value: -374.8140753744034 and parameters: {'embedding_dim': 486, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -100.1761715431498. +[I 2025-12-17 22:55:06,863] Trial 7 finished with value: -4.280683471700326 and parameters: {'embedding_dim': 376, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 7 with value: -4.280683471700326. +[I 2025-12-17 22:56:01,628] Trial 8 finished with value: -371.4115489824924 and parameters: {'embedding_dim': 243, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 7 with value: -4.280683471700326. +[I 2025-12-17 22:57:17,798] Trial 9 finished with value: -1106.9031630962827 and parameters: {'embedding_dim': 215, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 7 with value: -4.280683471700326. +[I 2025-12-17 22:57:57,897] Trial 10 finished with value: -1226.262605023595 and parameters: {'embedding_dim': 366, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -4.280683471700326. +[I 2025-12-17 22:58:51,009] Trial 11 finished with value: -1.5844888863733915 and parameters: {'embedding_dim': 299, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 11 with value: -1.5844888863733915. +[I 2025-12-17 22:59:39,921] Trial 12 finished with value: -184.71736849699306 and parameters: {'embedding_dim': 302, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 11 with value: -1.5844888863733915. +[I 2025-12-17 23:00:16,309] Trial 13 finished with value: -499.98203526455393 and parameters: {'embedding_dim': 420, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 11 with value: -1.5844888863733915. +[I 2025-12-17 23:00:52,797] Trial 14 finished with value: -525.1162072635681 and parameters: {'embedding_dim': 305, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 11 with value: -1.5844888863733915. +[I 2025-12-17 23:02:14,958] Trial 15 finished with value: -2443.8253468450584 and parameters: {'embedding_dim': 369, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -1.5844888863733915. +[I 2025-12-17 23:03:16,984] Trial 16 finished with value: -1109.5912469646519 and parameters: {'embedding_dim': 267, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 11 with value: -1.5844888863733915. +[I 2025-12-17 23:03:41,304] Trial 17 finished with value: -124.1390887972986 and parameters: {'embedding_dim': 414, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 11 with value: -1.5844888863733915. +[I 2025-12-17 23:04:42,822] Trial 18 finished with value: -190.13971927764553 and parameters: {'embedding_dim': 335, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -1.5844888863733915. +[I 2025-12-17 23:05:26,817] Trial 19 finished with value: -412.6011044094581 and parameters: {'embedding_dim': 419, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 11 with value: -1.5844888863733915. +[I 2025-12-17 23:06:22,586] Trial 20 finished with value: -1.355676732320737 and parameters: {'embedding_dim': 287, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 20 with value: -1.355676732320737. +[I 2025-12-17 23:07:15,246] Trial 21 finished with value: -61.12862436571004 and parameters: {'embedding_dim': 269, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 20 with value: -1.355676732320737. +[I 2025-12-17 23:08:08,535] Trial 22 finished with value: -85.49273236474441 and parameters: {'embedding_dim': 295, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 20 with value: -1.355676732320737. +[I 2025-12-17 23:08:58,981] Trial 23 finished with value: -143.39341185086727 and parameters: {'embedding_dim': 329, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 20 with value: -1.355676732320737. +[I 2025-12-17 23:09:40,476] Trial 24 finished with value: -922.0929711790351 and parameters: {'embedding_dim': 386, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 20 with value: -1.355676732320737. +[I 2025-12-17 23:10:45,669] Trial 25 finished with value: -144.76972437892738 and parameters: {'embedding_dim': 274, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 20 with value: -1.355676732320737. +[I 2025-12-17 23:11:38,250] Trial 26 finished with value: -54.53322714568243 and parameters: {'embedding_dim': 237, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 20 with value: -1.355676732320737. +[I 2025-12-17 23:12:28,838] Trial 27 finished with value: -256.87678229798985 and parameters: {'embedding_dim': 333, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 20 with value: -1.355676732320737. +[I 2025-12-17 23:14:11,540] Trial 28 finished with value: -516.0962013612483 and parameters: {'embedding_dim': 391, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 20 with value: -1.355676732320737. +[I 2025-12-17 23:14:52,104] Trial 29 finished with value: -206.90444707758303 and parameters: {'embedding_dim': 154, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 20 with value: -1.355676732320737. +[I 2025-12-17 23:15:43,804] A new study created in memory with name: no-name-574ac181-2a30-4cbc-8ca7-210ad6802880 +[I 2025-12-17 23:15:48,393] Trial 0 finished with value: -116.81334211605345 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -116.81334211605345. +[I 2025-12-17 23:16:35,800] Trial 1 finished with value: -16.38606328490452 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -16.38606328490452. +[I 2025-12-17 23:17:24,842] Trial 2 finished with value: -0.8823100370870454 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:17:31,206] Trial 3 finished with value: -46.294066832890564 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:17:39,584] Trial 4 finished with value: -1.7753200963136877 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:18:02,328] Trial 5 finished with value: -7.088208022739278 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:18:10,810] Trial 6 finished with value: -12.80763434342112 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:18:15,125] Trial 7 finished with value: -6.0134186076338265 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:18:37,910] Trial 8 finished with value: -11.625961012337465 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:18:44,248] Trial 9 finished with value: -20.588742613493768 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:19:20,214] Trial 10 finished with value: -5.063424117023093 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:20:10,098] Trial 11 finished with value: -10.283504836485148 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:20:57,206] Trial 12 finished with value: -10.306996926156273 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:21:31,359] Trial 13 finished with value: -1.4419838768603934 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:22:05,367] Trial 14 finished with value: -2.0265027156044773 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:22:27,149] Trial 15 finished with value: -34.72763880956715 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:23:01,244] Trial 16 finished with value: -18.903172194268176 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:23:35,141] Trial 17 finished with value: -4.962446969000292 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:23:45,423] Trial 18 finished with value: -13.080286506925892 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:24:19,299] Trial 19 finished with value: -4.998009215620791 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:24:53,216] Trial 20 finished with value: -14.36437101745503 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:25:01,549] Trial 21 finished with value: -25.372531491111587 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:25:09,908] Trial 22 finished with value: -15.064979095393921 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:25:31,468] Trial 23 finished with value: -3.9686626072700077 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:26:06,906] Trial 24 finished with value: -3.8420084914328347 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:26:15,542] Trial 25 finished with value: -5.6523905638026175 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:27:03,709] Trial 26 finished with value: -10.221720657384754 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:27:37,495] Trial 27 finished with value: -10.637669236445824 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:27:59,900] Trial 28 finished with value: -16.56759124917083 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:28:04,194] Trial 29 finished with value: -15.560057376832788 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:28:13,165] Trial 30 finished with value: -47.91421420632015 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:28:47,628] Trial 31 finished with value: -6.860044164267202 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:29:24,866] Trial 32 finished with value: -12.33104567077781 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:29:58,674] Trial 33 finished with value: -8.562744813249168 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:30:37,409] Trial 34 finished with value: -3.236307522462431 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:31:15,316] Trial 35 finished with value: -30.972468455509286 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:31:19,802] Trial 36 finished with value: -24.50435304284413 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:32:10,774] Trial 37 finished with value: -16.939640066328288 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:32:28,239] Trial 38 finished with value: -9.340278793573473 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:32:37,801] Trial 39 finished with value: -9.111048740509911 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:33:15,510] Trial 40 finished with value: -9.395291180509929 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:33:52,573] Trial 41 finished with value: -8.062999219594696 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:34:28,342] Trial 42 finished with value: -20.134564021353953 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:35:05,078] Trial 43 finished with value: -16.294483071768216 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:35:41,002] Trial 44 finished with value: -9.59250175142656 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:36:14,892] Trial 45 finished with value: -8.05391148620065 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:36:36,728] Trial 46 finished with value: -5.510437551949908 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:36:45,212] Trial 47 finished with value: -9.548985090214968 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:37:19,073] Trial 48 finished with value: -6.55046551738242 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:37:40,348] Trial 49 finished with value: -7.140963310194918 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -0.8823100370870454. +[I 2025-12-17 23:38:26,798] A new study created in memory with name: no-name-01e03cba-1a20-4e9a-96ce-2c58d2cb8270 +[I 2025-12-17 23:39:24,082] Trial 0 finished with value: -1137.2989280514994 and parameters: {'embedding_dim': 461, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -1137.2989280514994. +[I 2025-12-17 23:40:02,351] Trial 1 finished with value: -559.7187665634876 and parameters: {'embedding_dim': 372, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -559.7187665634876. +[I 2025-12-17 23:41:31,964] Trial 2 finished with value: -515.9524482556102 and parameters: {'embedding_dim': 232, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -515.9524482556102. +[I 2025-12-17 23:41:49,994] Trial 3 finished with value: -618.4721148831688 and parameters: {'embedding_dim': 458, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -515.9524482556102. +[I 2025-12-17 23:42:05,340] Trial 4 finished with value: -605.4574649719029 and parameters: {'embedding_dim': 387, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 2 with value: -515.9524482556102. +[I 2025-12-17 23:42:27,606] Trial 5 finished with value: -450.3352666296857 and parameters: {'embedding_dim': 413, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -450.3352666296857. +[I 2025-12-17 23:42:55,969] Trial 6 finished with value: -581.3017365358934 and parameters: {'embedding_dim': 399, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -450.3352666296857. +[I 2025-12-17 23:43:34,625] Trial 7 finished with value: -190.10464154260475 and parameters: {'embedding_dim': 473, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 7 with value: -190.10464154260475. +[I 2025-12-17 23:44:47,365] Trial 8 finished with value: -776.9836595325115 and parameters: {'embedding_dim': 184, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 7 with value: -190.10464154260475. +[I 2025-12-17 23:45:24,310] Trial 9 finished with value: -245.02687913350343 and parameters: {'embedding_dim': 155, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 7 with value: -190.10464154260475. +[I 2025-12-17 23:45:48,023] Trial 10 finished with value: -624.3003386133154 and parameters: {'embedding_dim': 503, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 7 with value: -190.10464154260475. +[I 2025-12-17 23:46:19,064] Trial 11 finished with value: -1751.3408316405676 and parameters: {'embedding_dim': 282, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 7 with value: -190.10464154260475. +[I 2025-12-17 23:46:57,134] Trial 12 finished with value: -1029.8822301776584 and parameters: {'embedding_dim': 140, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 7 with value: -190.10464154260475. +[I 2025-12-17 23:47:42,658] Trial 13 finished with value: -757.4274019907051 and parameters: {'embedding_dim': 296, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 7 with value: -190.10464154260475. +[I 2025-12-17 23:48:13,276] Trial 14 finished with value: -238.23006823230332 and parameters: {'embedding_dim': 240, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 7 with value: -190.10464154260475. +[I 2025-12-17 23:48:36,406] Trial 15 finished with value: -87.54712771838211 and parameters: {'embedding_dim': 241, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 15 with value: -87.54712771838211. +[I 2025-12-17 23:48:48,988] Trial 16 finished with value: -464.7243913019689 and parameters: {'embedding_dim': 336, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 15 with value: -87.54712771838211. +[I 2025-12-17 23:49:12,074] Trial 17 finished with value: -439.4555847406392 and parameters: {'embedding_dim': 228, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 15 with value: -87.54712771838211. +[I 2025-12-17 23:49:35,529] Trial 18 finished with value: -1022.0469994775867 and parameters: {'embedding_dim': 349, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 15 with value: -87.54712771838211. +[I 2025-12-17 23:49:44,856] Trial 19 finished with value: -5174.7659307348595 and parameters: {'embedding_dim': 295, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 15 with value: -87.54712771838211. +[I 2025-12-17 23:50:15,678] Trial 20 finished with value: -369.79509491133217 and parameters: {'embedding_dim': 192, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 15 with value: -87.54712771838211. +[I 2025-12-17 23:50:47,602] Trial 21 finished with value: -331.00318873909936 and parameters: {'embedding_dim': 252, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 15 with value: -87.54712771838211. +[I 2025-12-17 23:51:12,050] Trial 22 finished with value: -270.6771779116561 and parameters: {'embedding_dim': 208, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 15 with value: -87.54712771838211. +[I 2025-12-17 23:51:43,499] Trial 23 finished with value: -539.8608883257965 and parameters: {'embedding_dim': 265, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 15 with value: -87.54712771838211. +[I 2025-12-17 23:52:21,094] Trial 24 finished with value: -83.06203333888709 and parameters: {'embedding_dim': 319, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 24 with value: -83.06203333888709. +[I 2025-12-17 23:52:59,015] Trial 25 finished with value: -529.5377251400457 and parameters: {'embedding_dim': 307, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 24 with value: -83.06203333888709. +[I 2025-12-17 23:53:45,183] Trial 26 finished with value: -631.2052981445795 and parameters: {'embedding_dim': 333, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 24 with value: -83.06203333888709. +[I 2025-12-17 23:54:28,890] Trial 27 finished with value: -441.57320802781965 and parameters: {'embedding_dim': 435, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 24 with value: -83.06203333888709. +[I 2025-12-17 23:56:00,164] Trial 28 finished with value: -55.424039154963516 and parameters: {'embedding_dim': 503, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 28 with value: -55.424039154963516. +[I 2025-12-17 23:57:36,055] Trial 29 finished with value: -778.9016356660377 and parameters: {'embedding_dim': 355, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 28 with value: -55.424039154963516. +[I 2025-12-17 23:59:05,047] A new study created in memory with name: no-name-bd20209f-636b-4be6-b72e-2fb585330c3e +[I 2025-12-17 23:59:13,511] Trial 0 finished with value: -16.440889499079628 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -16.440889499079628. +[I 2025-12-18 00:00:02,168] Trial 1 finished with value: -13.783448302670799 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -13.783448302670799. +[I 2025-12-18 00:00:08,505] Trial 2 finished with value: -34.43799709354937 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -13.783448302670799. +[I 2025-12-18 00:00:13,682] Trial 3 finished with value: -80.35221452522994 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -13.783448302670799. +[I 2025-12-18 00:00:23,653] Trial 4 finished with value: -4.011822247722022 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:00:30,095] Trial 5 finished with value: -46.80137718011186 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:00:40,646] Trial 6 finished with value: -44.589239479343085 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:01:16,299] Trial 7 finished with value: -5.510414732858525 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:01:22,772] Trial 8 finished with value: -8.947612934959418 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:01:31,376] Trial 9 finished with value: -11.28440434790466 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:01:53,160] Trial 10 finished with value: -4.146953939819951 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:02:16,024] Trial 11 finished with value: -38.10276962740281 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:02:37,628] Trial 12 finished with value: -54.891646534154155 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:03:00,303] Trial 13 finished with value: -24.401539037634265 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:03:21,672] Trial 14 finished with value: -28.20678904653934 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:04:09,439] Trial 15 finished with value: -129.71088515096153 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:04:39,717] Trial 16 finished with value: -11.933579962416758 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:05:03,473] Trial 17 finished with value: -23.11938336148866 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:05:07,985] Trial 18 finished with value: -19.826106017759262 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:05:42,064] Trial 19 finished with value: -8.342527750867287 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -4.011822247722022. +[I 2025-12-18 00:05:52,021] Trial 20 finished with value: -1.1371898217889391 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:06:00,529] Trial 21 finished with value: -3.716539548248127 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:06:09,121] Trial 22 finished with value: -72.2759751716689 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:06:17,491] Trial 23 finished with value: -64.67965979563847 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:06:27,318] Trial 24 finished with value: -2.3900499954506484 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:06:33,677] Trial 25 finished with value: -99.54189053927908 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:06:42,039] Trial 26 finished with value: -48.65455323339493 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:06:50,404] Trial 27 finished with value: -19.615591008298033 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:06:56,822] Trial 28 finished with value: -11.330125741375724 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:07:05,213] Trial 29 finished with value: -7.279205678722093 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:07:15,153] Trial 30 finished with value: -59.24346837566517 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:07:23,592] Trial 31 finished with value: -20.186456097585324 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:07:31,963] Trial 32 finished with value: -157.92950912350673 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:07:42,747] Trial 33 finished with value: -4.816434472577101 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:07:51,190] Trial 34 finished with value: -2.6435762954034843 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:08:38,958] Trial 35 finished with value: -25.88412269359859 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:08:47,399] Trial 36 finished with value: -38.737409316595816 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:08:53,707] Trial 37 finished with value: -3.2522196260304863 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:09:00,186] Trial 38 finished with value: -12.174727321905145 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:09:04,696] Trial 39 finished with value: -145.49209120356088 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:09:41,809] Trial 40 finished with value: -2.8650419434844574 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:10:17,252] Trial 41 finished with value: -22.127286040537673 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:10:53,177] Trial 42 finished with value: -3.879909062456012 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:11:29,217] Trial 43 finished with value: -12.992750380593591 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:12:06,078] Trial 44 finished with value: -1.7932718365351543 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:12:27,927] Trial 45 finished with value: -14.148474016564174 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:13:03,822] Trial 46 finished with value: -37.55998313087252 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:13:40,545] Trial 47 finished with value: -17.390376352361006 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:14:32,207] Trial 48 finished with value: -4.2192700771149525 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:15:10,422] Trial 49 finished with value: -1.855131223203276 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 20 with value: -1.1371898217889391. +[I 2025-12-18 00:15:19,031] A new study created in memory with name: no-name-9610f15f-6091-4356-ba32-f4be4095706f +[I 2025-12-18 00:15:39,134] Trial 0 finished with value: -1666.3289492578067 and parameters: {'embedding_dim': 466, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -1666.3289492578067. +[I 2025-12-18 00:15:59,495] Trial 1 finished with value: -569.7218907353604 and parameters: {'embedding_dim': 168, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -569.7218907353604. +[I 2025-12-18 00:16:25,716] Trial 2 finished with value: -509.2449264182973 and parameters: {'embedding_dim': 287, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -509.2449264182973. +[I 2025-12-18 00:16:38,381] Trial 3 finished with value: -464.520414876552 and parameters: {'embedding_dim': 257, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 3 with value: -464.520414876552. +[I 2025-12-18 00:17:11,475] Trial 4 finished with value: -878.6055666050323 and parameters: {'embedding_dim': 498, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -464.520414876552. +[I 2025-12-18 00:17:31,708] Trial 5 finished with value: -427.04476224627945 and parameters: {'embedding_dim': 261, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -427.04476224627945. +[I 2025-12-18 00:17:43,521] Trial 6 finished with value: -1161.518076452766 and parameters: {'embedding_dim': 442, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 5 with value: -427.04476224627945. +[I 2025-12-18 00:18:10,006] Trial 7 finished with value: -218.59652466914238 and parameters: {'embedding_dim': 399, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:18:18,004] Trial 8 finished with value: -12966.059742493351 and parameters: {'embedding_dim': 312, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:18:37,258] Trial 9 finished with value: -1263.780191347888 and parameters: {'embedding_dim': 310, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:18:54,858] Trial 10 finished with value: -852.7340266408107 and parameters: {'embedding_dim': 383, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:19:07,533] Trial 11 finished with value: -3459.799969669406 and parameters: {'embedding_dim': 198, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:19:28,094] Trial 12 finished with value: -814.1726134118874 and parameters: {'embedding_dim': 386, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:20:00,471] Trial 13 finished with value: -683.6061747700678 and parameters: {'embedding_dim': 231, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:20:11,440] Trial 14 finished with value: -235.9959140090435 and parameters: {'embedding_dim': 393, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:20:32,021] Trial 15 finished with value: -872.1487173853466 and parameters: {'embedding_dim': 373, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:20:42,720] Trial 16 finished with value: -1543.71333509439 and parameters: {'embedding_dim': 411, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:20:54,063] Trial 17 finished with value: -1978.351371364047 and parameters: {'embedding_dim': 349, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:21:13,081] Trial 18 finished with value: -1836.8805762880318 and parameters: {'embedding_dim': 433, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:21:31,722] Trial 19 finished with value: -1576.4405164628863 and parameters: {'embedding_dim': 503, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:21:44,125] Trial 20 finished with value: -780.0675200857355 and parameters: {'embedding_dim': 344, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:22:05,369] Trial 21 finished with value: -1246.370305682246 and parameters: {'embedding_dim': 259, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:22:24,920] Trial 22 finished with value: -1137.9822417840892 and parameters: {'embedding_dim': 340, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:22:37,784] Trial 23 finished with value: -498.409127758515 and parameters: {'embedding_dim': 415, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:22:58,409] Trial 24 finished with value: -1232.7770124983754 and parameters: {'embedding_dim': 274, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:23:12,980] Trial 25 finished with value: -2615.322321757191 and parameters: {'embedding_dim': 141, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 7 with value: -218.59652466914238. +[I 2025-12-18 00:23:31,713] Trial 26 finished with value: -160.00921259803954 and parameters: {'embedding_dim': 224, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 26 with value: -160.00921259803954. +[I 2025-12-18 00:23:58,271] Trial 27 finished with value: -1168.284534017664 and parameters: {'embedding_dim': 217, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 26 with value: -160.00921259803954. +[I 2025-12-18 00:24:06,399] Trial 28 finished with value: -559.4882594636057 and parameters: {'embedding_dim': 470, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 26 with value: -160.00921259803954. +[I 2025-12-18 00:24:17,850] Trial 29 finished with value: -2074.68881330807 and parameters: {'embedding_dim': 441, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 26 with value: -160.00921259803954. +[I 2025-12-18 00:24:39,269] A new study created in memory with name: no-name-ed15c8bb-bcd0-45ee-a382-8f87adf85f7f +[I 2025-12-18 00:24:52,040] Trial 0 finished with value: -32.61674818805686 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -32.61674818805686. +[I 2025-12-18 00:25:16,941] Trial 1 finished with value: -24.48815975003093 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -24.48815975003093. +[I 2025-12-18 00:25:28,103] Trial 2 finished with value: -9.68373348470197 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -9.68373348470197. +[I 2025-12-18 00:25:43,479] Trial 3 finished with value: -40.304805397393125 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -9.68373348470197. +[I 2025-12-18 00:26:10,841] Trial 4 finished with value: -14.732935432677738 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -9.68373348470197. +[I 2025-12-18 00:26:19,246] Trial 5 finished with value: -32.69551108104217 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -9.68373348470197. +[I 2025-12-18 00:26:27,524] Trial 6 finished with value: -63.040034399318195 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -9.68373348470197. +[I 2025-12-18 00:27:04,562] Trial 7 finished with value: -12.100411006445283 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -9.68373348470197. +[I 2025-12-18 00:27:11,757] Trial 8 finished with value: -77.8614610394087 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -9.68373348470197. +[I 2025-12-18 00:27:36,387] Trial 9 finished with value: -14.017072207416266 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -9.68373348470197. +[I 2025-12-18 00:28:01,635] Trial 10 finished with value: -111.84735400762143 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -9.68373348470197. +[I 2025-12-18 00:28:37,672] Trial 11 finished with value: -30.23523718104927 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -9.68373348470197. +[I 2025-12-18 00:29:14,056] Trial 12 finished with value: -4.1010746344101285 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 12 with value: -4.1010746344101285. +[I 2025-12-18 00:29:20,641] Trial 13 finished with value: -63.620572771704545 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -4.1010746344101285. +[I 2025-12-18 00:29:59,729] Trial 14 finished with value: -8.608336233579584 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 12 with value: -4.1010746344101285. +[I 2025-12-18 00:30:22,380] Trial 15 finished with value: -56.35443131149094 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 12 with value: -4.1010746344101285. +[I 2025-12-18 00:30:59,061] Trial 16 finished with value: -7.006719226865428 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 12 with value: -4.1010746344101285. +[I 2025-12-18 00:31:50,438] Trial 17 finished with value: -18.670899058684544 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 12 with value: -4.1010746344101285. +[I 2025-12-18 00:32:13,763] Trial 18 finished with value: -27.23839010569602 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 12 with value: -4.1010746344101285. +[I 2025-12-18 00:33:01,187] Trial 19 finished with value: -13.640264812743895 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 12 with value: -4.1010746344101285. +[I 2025-12-18 00:33:44,752] Trial 20 finished with value: -14.576631610583362 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 12 with value: -4.1010746344101285. +[I 2025-12-18 00:34:18,378] Trial 21 finished with value: -6.445748030828957 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 12 with value: -4.1010746344101285. +[I 2025-12-18 00:34:52,238] Trial 22 finished with value: -47.01014932019241 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 12 with value: -4.1010746344101285. +[I 2025-12-18 00:35:26,392] Trial 23 finished with value: -1.955702896502834 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:36:00,102] Trial 24 finished with value: -49.14200680506109 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:36:46,128] Trial 25 finished with value: -5.35858400087317 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:37:31,896] Trial 26 finished with value: -35.46287822504689 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:38:17,885] Trial 27 finished with value: -38.26862317879575 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:39:04,099] Trial 28 finished with value: -18.933135707567473 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:39:25,978] Trial 29 finished with value: -176.0196879546827 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:39:47,138] Trial 30 finished with value: -25.311903814420685 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:40:20,790] Trial 31 finished with value: -2.6799225389375985 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:40:54,468] Trial 32 finished with value: -2.7501280267777872 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:41:28,212] Trial 33 finished with value: -25.799752114886886 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:42:02,201] Trial 34 finished with value: -27.836388891151202 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:42:17,882] Trial 35 finished with value: -4.3052410700720705 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:42:51,803] Trial 36 finished with value: -4.590513420317936 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:42:58,129] Trial 37 finished with value: -22.465233334488232 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:43:13,966] Trial 38 finished with value: -111.47757447909574 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:43:35,528] Trial 39 finished with value: -2.294518506689887 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:43:39,773] Trial 40 finished with value: -29.41808376922283 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:44:01,363] Trial 41 finished with value: -8.303441594486522 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:44:22,938] Trial 42 finished with value: -74.51088045246847 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:44:56,405] Trial 43 finished with value: -5.014371247966849 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:45:18,113] Trial 44 finished with value: -60.12223405782197 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:45:51,884] Trial 45 finished with value: -50.324779536667684 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:46:07,781] Trial 46 finished with value: -20.721954529736003 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -1.955702896502834. +[I 2025-12-18 00:46:12,185] Trial 47 finished with value: -1.4415049695075792 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 47 with value: -1.4415049695075792. +[I 2025-12-18 00:46:16,577] Trial 48 finished with value: -27.520353699810563 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 47 with value: -1.4415049695075792. +[I 2025-12-18 00:46:20,849] Trial 49 finished with value: -7.298584036926158 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 47 with value: -1.4415049695075792. +[I 2025-12-18 00:46:25,471] A new study created in memory with name: no-name-440f97c1-c9c2-4832-a540-119d2d894a89 +[I 2025-12-18 00:46:37,020] Trial 0 finished with value: -2197.432579896551 and parameters: {'embedding_dim': 444, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -2197.432579896551. +[I 2025-12-18 00:47:18,226] Trial 1 finished with value: -91.56061192944284 and parameters: {'embedding_dim': 413, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:47:31,265] Trial 2 finished with value: -1990.1877764043313 and parameters: {'embedding_dim': 302, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:47:37,991] Trial 3 finished with value: -1401.131934720754 and parameters: {'embedding_dim': 416, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:47:45,348] Trial 4 finished with value: -3967.231670707725 and parameters: {'embedding_dim': 492, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:48:03,022] Trial 5 finished with value: -2689.99470153903 and parameters: {'embedding_dim': 308, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:48:54,656] Trial 6 finished with value: -387.93594342381573 and parameters: {'embedding_dim': 148, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:49:20,865] Trial 7 finished with value: -225.178893079802 and parameters: {'embedding_dim': 468, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:49:56,538] Trial 8 finished with value: -252.91465699887203 and parameters: {'embedding_dim': 471, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:50:06,183] Trial 9 finished with value: -7820.800258160754 and parameters: {'embedding_dim': 147, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:50:41,249] Trial 10 finished with value: -453.00026681762995 and parameters: {'embedding_dim': 361, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:51:00,677] Trial 11 finished with value: -299.1581127503854 and parameters: {'embedding_dim': 400, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:51:23,955] Trial 12 finished with value: -569.1697274912224 and parameters: {'embedding_dim': 239, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:51:38,678] Trial 13 finished with value: -624.2050027584867 and parameters: {'embedding_dim': 496, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:52:18,709] Trial 14 finished with value: -210.8384183606134 and parameters: {'embedding_dim': 366, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:52:49,881] Trial 15 finished with value: -440.2754945597788 and parameters: {'embedding_dim': 378, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:53:32,221] Trial 16 finished with value: -448.7966361287803 and parameters: {'embedding_dim': 248, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:53:51,483] Trial 17 finished with value: -2227.306035766874 and parameters: {'embedding_dim': 343, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:54:26,298] Trial 18 finished with value: -2328.49547642221 and parameters: {'embedding_dim': 252, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:54:52,903] Trial 19 finished with value: -310.42054389961316 and parameters: {'embedding_dim': 423, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:55:30,180] Trial 20 finished with value: -412.4576015831885 and parameters: {'embedding_dim': 332, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:55:55,886] Trial 21 finished with value: -319.291854254781 and parameters: {'embedding_dim': 450, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:56:16,116] Trial 22 finished with value: -506.24372224766216 and parameters: {'embedding_dim': 392, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -91.56061192944284. +[I 2025-12-18 00:56:47,879] Trial 23 finished with value: -81.03303497932845 and parameters: {'embedding_dim': 460, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 23 with value: -81.03303497932845. +[I 2025-12-18 00:57:19,964] Trial 24 finished with value: -95.36059410169877 and parameters: {'embedding_dim': 438, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 23 with value: -81.03303497932845. +[I 2025-12-18 00:57:55,832] Trial 25 finished with value: -308.4900257222346 and parameters: {'embedding_dim': 425, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 23 with value: -81.03303497932845. +[I 2025-12-18 00:58:27,056] Trial 26 finished with value: -318.5274804526986 and parameters: {'embedding_dim': 506, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -81.03303497932845. +[I 2025-12-18 00:59:01,331] Trial 27 finished with value: -38.674518485767 and parameters: {'embedding_dim': 457, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 27 with value: -38.674518485767. +[I 2025-12-18 00:59:34,940] Trial 28 finished with value: -70.04613450428684 and parameters: {'embedding_dim': 470, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 27 with value: -38.674518485767. +[I 2025-12-18 00:59:57,528] Trial 29 finished with value: -1419.315066659444 and parameters: {'embedding_dim': 467, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 27 with value: -38.674518485767. +[I 2025-12-18 01:00:32,884] A new study created in memory with name: no-name-32310615-1994-4bfb-a91d-ad59ef38eaa2 +[I 2025-12-18 01:00:50,849] Trial 0 finished with value: -8.783187789586089 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -8.783187789586089. +[I 2025-12-18 01:01:01,539] Trial 1 finished with value: -38.60902258422841 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -8.783187789586089. +[I 2025-12-18 01:01:18,756] Trial 2 finished with value: -30.702950533970903 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -8.783187789586089. +[I 2025-12-18 01:01:54,942] Trial 3 finished with value: -0.24718006827076042 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:01:59,329] Trial 4 finished with value: -88.73379943759677 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:02:23,517] Trial 5 finished with value: -13.901136187265504 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:02:32,018] Trial 6 finished with value: -0.9532505975338019 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:02:38,456] Trial 7 finished with value: -2.070898055160728 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:02:50,645] Trial 8 finished with value: -108.4926413139208 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:03:06,865] Trial 9 finished with value: -0.48413470820276605 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:03:57,386] Trial 10 finished with value: -3.9274027283940405 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:04:31,373] Trial 11 finished with value: -12.998277705391821 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:05:07,267] Trial 12 finished with value: -1.2311436805676395 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:05:44,544] Trial 13 finished with value: -5.019672855122223 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:06:08,355] Trial 14 finished with value: -8.18329232257884 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:06:29,629] Trial 15 finished with value: -0.586779526766465 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:07:03,771] Trial 16 finished with value: -2.6059392775613843 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:07:25,324] Trial 17 finished with value: -40.34765359015458 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:08:01,925] Trial 18 finished with value: -10.68716387267657 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:08:06,321] Trial 19 finished with value: -47.38875335839017 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:08:40,344] Trial 20 finished with value: -0.5898467464477078 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:09:01,919] Trial 21 finished with value: -11.824750249720072 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:09:23,099] Trial 22 finished with value: -1.6268173532738563 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:09:44,408] Trial 23 finished with value: -4.420540178379612 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:10:02,070] Trial 24 finished with value: -14.468225031479239 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:10:17,985] Trial 25 finished with value: -9.454307764795715 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:10:39,290] Trial 26 finished with value: -0.46787092662508467 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:10:55,141] Trial 27 finished with value: -21.505130959608287 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:11:03,552] Trial 28 finished with value: -4.327558389434953 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:11:37,635] Trial 29 finished with value: -41.49985164521942 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:11:48,089] Trial 30 finished with value: -0.40383618546707845 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:11:58,375] Trial 31 finished with value: -45.10590100953589 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:12:08,610] Trial 32 finished with value: -18.02953029188513 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:12:18,845] Trial 33 finished with value: -7.944587509025975 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:12:29,329] Trial 34 finished with value: -7.704672459945581 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:12:45,225] Trial 35 finished with value: -11.723687112524818 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:12:55,539] Trial 36 finished with value: -75.44749341001604 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:13:01,942] Trial 37 finished with value: -194.66417270888604 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:13:17,880] Trial 38 finished with value: -1.2629644527608859 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:13:39,380] Trial 39 finished with value: -0.5750727701560874 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:13:45,802] Trial 40 finished with value: -21.554145698893784 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:14:07,320] Trial 41 finished with value: -2.4302411945971794 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:14:28,886] Trial 42 finished with value: -8.14512252766359 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:14:50,420] Trial 43 finished with value: -12.638090109605654 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:15:12,437] Trial 44 finished with value: -40.34814938873461 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:16:01,464] Trial 45 finished with value: -20.99083845633123 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:16:24,475] Trial 46 finished with value: -54.510593929717274 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:16:58,338] Trial 47 finished with value: -42.75613710510111 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:17:09,862] Trial 48 finished with value: -13.484166163331054 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:17:59,757] Trial 49 finished with value: -1.9646351611885775 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -0.24718006827076042. +[I 2025-12-18 01:18:35,683] A new study created in memory with name: no-name-b98fca19-c911-449e-a325-f01237cfdd11 +[I 2025-12-18 01:19:03,921] Trial 0 finished with value: -1617.2712005724663 and parameters: {'embedding_dim': 370, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -1617.2712005724663. +[I 2025-12-18 01:19:36,573] Trial 1 finished with value: -139.32142452931558 and parameters: {'embedding_dim': 285, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -139.32142452931558. +[I 2025-12-18 01:20:06,357] Trial 2 finished with value: -351.5041425618096 and parameters: {'embedding_dim': 467, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -139.32142452931558. +[I 2025-12-18 01:20:18,212] Trial 3 finished with value: -217.93759435257167 and parameters: {'embedding_dim': 368, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 1 with value: -139.32142452931558. +[I 2025-12-18 01:20:44,186] Trial 4 finished with value: -318.0460673264461 and parameters: {'embedding_dim': 281, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 1 with value: -139.32142452931558. +[I 2025-12-18 01:21:26,673] Trial 5 finished with value: -427.84898725815566 and parameters: {'embedding_dim': 449, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -139.32142452931558. +[I 2025-12-18 01:21:47,480] Trial 6 finished with value: -209.12746331449 and parameters: {'embedding_dim': 273, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -139.32142452931558. +[I 2025-12-18 01:22:34,779] Trial 7 finished with value: -813.6998887528828 and parameters: {'embedding_dim': 408, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -139.32142452931558. +[I 2025-12-18 01:22:50,932] Trial 8 finished with value: -761.4528892699975 and parameters: {'embedding_dim': 258, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 1 with value: -139.32142452931558. +[I 2025-12-18 01:23:20,308] Trial 9 finished with value: -691.7066191558974 and parameters: {'embedding_dim': 476, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -139.32142452931558. +[I 2025-12-18 01:23:52,786] Trial 10 finished with value: -1661.197339329162 and parameters: {'embedding_dim': 131, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -139.32142452931558. +[I 2025-12-18 01:24:32,565] Trial 11 finished with value: -147.44308753073457 and parameters: {'embedding_dim': 215, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -139.32142452931558. +[I 2025-12-18 01:25:10,994] Trial 12 finished with value: -267.7883022461658 and parameters: {'embedding_dim': 192, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -139.32142452931558. +[I 2025-12-18 01:25:36,557] Trial 13 finished with value: -513.1670385564306 and parameters: {'embedding_dim': 205, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -139.32142452931558. +[I 2025-12-18 01:26:11,507] Trial 14 finished with value: -81.06542268971909 and parameters: {'embedding_dim': 218, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 14 with value: -81.06542268971909. +[I 2025-12-18 01:26:34,226] Trial 15 finished with value: -70.20910700755292 and parameters: {'embedding_dim': 347, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 15 with value: -70.20910700755292. +[I 2025-12-18 01:26:57,552] Trial 16 finished with value: -569.334030421028 and parameters: {'embedding_dim': 340, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 15 with value: -70.20910700755292. +[I 2025-12-18 01:27:21,805] Trial 17 finished with value: -36.909101182778464 and parameters: {'embedding_dim': 138, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 17 with value: -36.909101182778464. +[I 2025-12-18 01:27:46,254] Trial 18 finished with value: -1886.0573702182342 and parameters: {'embedding_dim': 414, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 17 with value: -36.909101182778464. +[I 2025-12-18 01:28:29,186] Trial 19 finished with value: -2066.098243732795 and parameters: {'embedding_dim': 154, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 17 with value: -36.909101182778464. +[I 2025-12-18 01:28:45,540] Trial 20 finished with value: -2459.249405735797 and parameters: {'embedding_dim': 512, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 17 with value: -36.909101182778464. +[I 2025-12-18 01:29:17,089] Trial 21 finished with value: -31.156421732509784 and parameters: {'embedding_dim': 168, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 21 with value: -31.156421732509784. +[I 2025-12-18 01:29:51,330] Trial 22 finished with value: -79.37752182928756 and parameters: {'embedding_dim': 168, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 21 with value: -31.156421732509784. +[I 2025-12-18 01:30:14,921] Trial 23 finished with value: -296.3803732035466 and parameters: {'embedding_dim': 318, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 21 with value: -31.156421732509784. +[I 2025-12-18 01:30:39,128] Trial 24 finished with value: -316.9926826054952 and parameters: {'embedding_dim': 136, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 21 with value: -31.156421732509784. +[I 2025-12-18 01:31:12,483] Trial 25 finished with value: -559.0471531974895 and parameters: {'embedding_dim': 179, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 21 with value: -31.156421732509784. +[I 2025-12-18 01:31:34,904] Trial 26 finished with value: -392.8716143672431 and parameters: {'embedding_dim': 249, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 21 with value: -31.156421732509784. +[I 2025-12-18 01:32:06,423] Trial 27 finished with value: -114.65495933408444 and parameters: {'embedding_dim': 327, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 21 with value: -31.156421732509784. +[I 2025-12-18 01:32:34,727] Trial 28 finished with value: -4352.475582750155 and parameters: {'embedding_dim': 236, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 21 with value: -31.156421732509784. +[I 2025-12-18 01:32:44,238] Trial 29 finished with value: -595.6914503464733 and parameters: {'embedding_dim': 383, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 21 with value: -31.156421732509784. +[I 2025-12-18 01:33:15,980] A new study created in memory with name: no-name-4b8ad854-5a27-4b6c-bc17-92f7cfeb73a3 +[I 2025-12-18 01:33:49,694] Trial 0 finished with value: -4.3247428176326395 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:34:11,639] Trial 1 finished with value: -28.262188560020313 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:34:33,478] Trial 2 finished with value: -31.81342894117747 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:35:07,333] Trial 3 finished with value: -81.76676217677192 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:35:22,989] Trial 4 finished with value: -10.858408193341537 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:35:38,585] Trial 5 finished with value: -42.01921696310425 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:35:59,672] Trial 6 finished with value: -61.27172173811515 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:36:15,187] Trial 7 finished with value: -15.03242107371713 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:36:36,657] Trial 8 finished with value: -62.97068544048966 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:36:42,884] Trial 9 finished with value: -21.122077299107602 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:36:51,521] Trial 10 finished with value: -16.505793827030843 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:37:12,545] Trial 11 finished with value: -67.83425509283379 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:37:48,228] Trial 12 finished with value: -48.237976012453366 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:38:04,804] Trial 13 finished with value: -25.336277807882915 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:38:10,632] Trial 14 finished with value: -7.305096663754778 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:38:14,982] Trial 15 finished with value: -322.1613457360079 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:38:20,358] Trial 16 finished with value: -104.4187025430369 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:38:24,749] Trial 17 finished with value: -4.82019200685102 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -4.3247428176326395. +[I 2025-12-18 01:39:12,489] Trial 18 finished with value: -4.009839393848617 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:40:02,669] Trial 19 finished with value: -9.192984633109601 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:40:53,323] Trial 20 finished with value: -7.024111073494152 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:41:44,184] Trial 21 finished with value: -24.405854998912872 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:41:50,436] Trial 22 finished with value: -19.892949195600174 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:42:13,191] Trial 23 finished with value: -69.12113758103612 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:43:01,579] Trial 24 finished with value: -6.15096053196064 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:43:07,848] Trial 25 finished with value: -6.920653694622958 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:43:31,614] Trial 26 finished with value: -37.22145011698815 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:43:39,961] Trial 27 finished with value: -34.5575647049197 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:44:14,608] Trial 28 finished with value: -35.50342951165787 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:44:37,387] Trial 29 finished with value: -99.45426411642609 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:44:44,990] Trial 30 finished with value: -78.50754486152097 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:45:32,488] Trial 31 finished with value: -7.472548325907992 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:46:21,992] Trial 32 finished with value: -9.167041864946821 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:47:08,985] Trial 33 finished with value: -15.755906500432653 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:47:54,912] Trial 34 finished with value: -61.76792570096998 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:48:40,783] Trial 35 finished with value: -54.831552867213006 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:49:14,515] Trial 36 finished with value: -43.703518511799636 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:50:00,366] Trial 37 finished with value: -50.66076555840163 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:50:21,941] Trial 38 finished with value: -77.4391679770988 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:50:37,433] Trial 39 finished with value: -9.853592955453571 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:51:23,314] Trial 40 finished with value: -31.446621864208666 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:51:29,853] Trial 41 finished with value: -37.31438149024697 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:51:36,142] Trial 42 finished with value: -30.39113691033162 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:51:42,609] Trial 43 finished with value: -13.769416364120286 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:51:49,006] Trial 44 finished with value: -23.88353289851438 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -4.009839393848617. +[I 2025-12-18 01:51:55,555] Trial 45 finished with value: -2.737514008753448 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 45 with value: -2.737514008753448. +[I 2025-12-18 01:52:11,150] Trial 46 finished with value: -16.755885054903914 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 45 with value: -2.737514008753448. +[I 2025-12-18 01:52:17,535] Trial 47 finished with value: -219.5302222794421 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 45 with value: -2.737514008753448. +[I 2025-12-18 01:52:22,014] Trial 48 finished with value: -53.2386783775978 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 45 with value: -2.737514008753448. +[I 2025-12-18 01:52:43,429] Trial 49 finished with value: -82.86072220972684 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 45 with value: -2.737514008753448. +[I 2025-12-18 01:52:49,803] A new study created in memory with name: no-name-c19e6d08-f458-4f34-ad1e-d7d0494125c5 +[I 2025-12-18 01:53:05,341] Trial 0 finished with value: -359.8501307879072 and parameters: {'embedding_dim': 257, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -359.8501307879072. +[I 2025-12-18 01:53:27,638] Trial 1 finished with value: -618.7874109012369 and parameters: {'embedding_dim': 467, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -359.8501307879072. +[I 2025-12-18 01:53:54,691] Trial 2 finished with value: -5257.240215657796 and parameters: {'embedding_dim': 264, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -359.8501307879072. +[I 2025-12-18 01:54:06,524] Trial 3 finished with value: -165.4196489135433 and parameters: {'embedding_dim': 142, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 3 with value: -165.4196489135433. +[I 2025-12-18 01:54:15,825] Trial 4 finished with value: -2753.484098245553 and parameters: {'embedding_dim': 189, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 3 with value: -165.4196489135433. +[I 2025-12-18 01:55:00,210] Trial 5 finished with value: -601.3313430625603 and parameters: {'embedding_dim': 381, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -165.4196489135433. +[I 2025-12-18 01:55:15,739] Trial 6 finished with value: -592.1128026515848 and parameters: {'embedding_dim': 441, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -165.4196489135433. +[I 2025-12-18 01:55:24,754] Trial 7 finished with value: -1677.5412051718731 and parameters: {'embedding_dim': 427, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 3 with value: -165.4196489135433. +[I 2025-12-18 01:56:06,744] Trial 8 finished with value: -5460.844572068998 and parameters: {'embedding_dim': 171, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -165.4196489135433. +[I 2025-12-18 01:56:27,937] Trial 9 finished with value: -490.15277148673306 and parameters: {'embedding_dim': 230, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -165.4196489135433. +[I 2025-12-18 01:57:24,164] Trial 10 finished with value: -205.33052018979984 and parameters: {'embedding_dim': 136, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -165.4196489135433. +[I 2025-12-18 01:58:19,962] Trial 11 finished with value: -189.67360161268437 and parameters: {'embedding_dim': 144, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -165.4196489135433. +[I 2025-12-18 01:59:30,577] Trial 12 finished with value: -489.16780749495547 and parameters: {'embedding_dim': 129, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -165.4196489135433. +[I 2025-12-18 02:00:12,602] Trial 13 finished with value: -71.67478123001153 and parameters: {'embedding_dim': 317, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -71.67478123001153. +[I 2025-12-18 02:00:34,950] Trial 14 finished with value: -1073.2197394004536 and parameters: {'embedding_dim': 333, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 13 with value: -71.67478123001153. +[I 2025-12-18 02:00:47,530] Trial 15 finished with value: -1083.812189526821 and parameters: {'embedding_dim': 323, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 13 with value: -71.67478123001153. +[I 2025-12-18 02:01:29,749] Trial 16 finished with value: -899.4061449932377 and parameters: {'embedding_dim': 512, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -71.67478123001153. +[I 2025-12-18 02:02:39,649] Trial 17 finished with value: -21.621585401178177 and parameters: {'embedding_dim': 225, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 17 with value: -21.621585401178177. +[I 2025-12-18 02:03:50,840] Trial 18 finished with value: -99.38152694403894 and parameters: {'embedding_dim': 280, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 17 with value: -21.621585401178177. +[I 2025-12-18 02:05:00,442] Trial 19 finished with value: -1100.8386174671718 and parameters: {'embedding_dim': 363, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 17 with value: -21.621585401178177. +[I 2025-12-18 02:05:55,919] Trial 20 finished with value: -11.009598165391504 and parameters: {'embedding_dim': 217, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -11.009598165391504. +[I 2025-12-18 02:06:51,195] Trial 21 finished with value: -1131.8666413260341 and parameters: {'embedding_dim': 211, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -11.009598165391504. +[I 2025-12-18 02:08:11,853] Trial 22 finished with value: -455.9110903347115 and parameters: {'embedding_dim': 290, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 20 with value: -11.009598165391504. +[I 2025-12-18 02:09:23,804] Trial 23 finished with value: -200.51829917068673 and parameters: {'embedding_dim': 206, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 20 with value: -11.009598165391504. +[I 2025-12-18 02:10:25,116] Trial 24 finished with value: -454.0432023686247 and parameters: {'embedding_dim': 238, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -11.009598165391504. +[I 2025-12-18 02:11:41,242] Trial 25 finished with value: -550.8555339726977 and parameters: {'embedding_dim': 288, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 20 with value: -11.009598165391504. +[I 2025-12-18 02:12:05,732] Trial 26 finished with value: -468.5036476429714 and parameters: {'embedding_dim': 357, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 20 with value: -11.009598165391504. +[I 2025-12-18 02:13:11,235] Trial 27 finished with value: -1311.5347703634914 and parameters: {'embedding_dim': 177, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -11.009598165391504. +[I 2025-12-18 02:14:09,109] Trial 28 finished with value: -489.7679319623506 and parameters: {'embedding_dim': 235, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 20 with value: -11.009598165391504. +[I 2025-12-18 02:14:50,839] Trial 29 finished with value: -544.5075207113041 and parameters: {'embedding_dim': 314, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 20 with value: -11.009598165391504. +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_1_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_1_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_1_incheon.csv: Class 0=9660 | Class 1=9755 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_incheon.csv: Class 0=9660 | Class 1=9755 | Class 2=14554 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_1_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_1_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_1_seoul.csv: Class 0=10462 | Class 1=9312 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_seoul.csv: Class 0=10462 | Class 1=9312 | Class 2=15676 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_1_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_1_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_1_busan.csv: Class 0=10301 | Class 1=9250 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_busan.csv: Class 0=10301 | Class 1=9250 | Class 2=16492 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_1_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_1_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_1_daegu.csv: Class 0=10327 | Class 1=9480 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_daegu.csv: Class 0=10327 | Class 1=9480 | Class 2=16582 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_1_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_1_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_1_daejeon.csv: Class 0=9911 | Class 1=9398 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_daejeon.csv: Class 0=9911 | Class 1=9398 | Class 2=15441 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_1_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_1_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_1_gwangju.csv: Class 0=9550 | Class 1=9696 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_gwangju.csv: Class 0=9550 | Class 1=9696 | Class 2=15692 + +Running smotenc_ctgan_sample_10000_2.py... +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 02:15:54,386] A new study created in memory with name: no-name-f8b0e203-a10d-48c3-8631-513ef433b5e3 +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +[I 2025-12-18 02:16:10,515] Trial 0 finished with value: -8.41700246450705 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -8.41700246450705. +[I 2025-12-18 02:16:26,368] Trial 1 finished with value: -13.188191340058518 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -8.41700246450705. +[I 2025-12-18 02:16:36,908] Trial 2 finished with value: -8.181814665774565 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -8.181814665774565. +[I 2025-12-18 02:16:45,638] Trial 3 finished with value: -107.27997735538146 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -8.181814665774565. +[I 2025-12-18 02:17:09,952] Trial 4 finished with value: -4.552698810281637 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -4.552698810281637. +[I 2025-12-18 02:17:31,550] Trial 5 finished with value: -9.65264843838187 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -4.552698810281637. +[I 2025-12-18 02:17:53,285] Trial 6 finished with value: -595.9120687033727 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -4.552698810281637. +[I 2025-12-18 02:18:16,582] Trial 7 finished with value: -20.19091141006728 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -4.552698810281637. +[I 2025-12-18 02:19:03,467] Trial 8 finished with value: -10.577879268170769 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -4.552698810281637. +[I 2025-12-18 02:19:38,962] Trial 9 finished with value: -7.484610071193634 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -4.552698810281637. +[I 2025-12-18 02:19:45,661] Trial 10 finished with value: -0.5219835586266215 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:19:52,024] Trial 11 finished with value: -413.1709831121142 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:19:58,358] Trial 12 finished with value: -10.636539607727418 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:20:07,098] Trial 13 finished with value: -237.4818873400115 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:20:15,196] Trial 14 finished with value: -145.57480504197383 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:20:36,952] Trial 15 finished with value: -2.7382701095127526 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:20:45,316] Trial 16 finished with value: -0.877247998275397 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:20:53,754] Trial 17 finished with value: -23.967550501397866 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:21:03,545] Trial 18 finished with value: -3.8319132201572597 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:21:10,857] Trial 19 finished with value: -218.91881754392713 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:21:19,195] Trial 20 finished with value: -12.403720812685368 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:21:25,689] Trial 21 finished with value: -24.54435022820978 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:22:13,444] Trial 22 finished with value: -102.74357144873738 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:22:24,045] Trial 23 finished with value: -352.1994513658928 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:22:30,730] Trial 24 finished with value: -9.349046805949058 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:23:06,348] Trial 25 finished with value: -1.3093578936560566 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:23:13,021] Trial 26 finished with value: -2.1769535123528367 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:23:19,656] Trial 27 finished with value: -13.954636214527918 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:23:35,494] Trial 28 finished with value: -18.75866451361236 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:24:23,005] Trial 29 finished with value: -405.5623322728198 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:24:40,465] Trial 30 finished with value: -57.73902086899987 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:24:47,059] Trial 31 finished with value: -5.58685321240416 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:24:53,345] Trial 32 finished with value: -15.06079351317478 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:24:59,985] Trial 33 finished with value: -10.2804131360061 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:25:06,299] Trial 34 finished with value: -13.539456305386746 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:25:21,965] Trial 35 finished with value: -7.975765936485658 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:25:29,965] Trial 36 finished with value: -43.363045969550946 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:26:18,425] Trial 37 finished with value: -76.84212369489298 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:26:22,877] Trial 38 finished with value: -62.14528656802117 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:26:56,934] Trial 39 finished with value: -105.17764938311204 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:27:12,707] Trial 40 finished with value: -38.20178650458324 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:27:34,815] Trial 41 finished with value: -23.306629557474174 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:27:56,742] Trial 42 finished with value: -7.291292373466412 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:28:18,493] Trial 43 finished with value: -439.97667907073884 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:28:40,195] Trial 44 finished with value: -14.001562973268502 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:29:26,322] Trial 45 finished with value: -48.50053605720913 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:30:00,129] Trial 46 finished with value: -37.80631861662273 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:30:04,410] Trial 47 finished with value: -9.185147516107982 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:30:38,608] Trial 48 finished with value: -40.558491471014655 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:30:47,192] Trial 49 finished with value: -61.9101434547712 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -0.5219835586266215. +[I 2025-12-18 02:30:57,175] A new study created in memory with name: no-name-4a236cb5-5a03-49e6-92df-e55b21b91e3c +[I 2025-12-18 02:33:06,198] Trial 0 finished with value: -766.7637284756619 and parameters: {'embedding_dim': 368, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -766.7637284756619. +[I 2025-12-18 02:34:31,697] Trial 1 finished with value: -581.0982360224489 and parameters: {'embedding_dim': 267, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -581.0982360224489. +[I 2025-12-18 02:35:58,780] Trial 2 finished with value: -212.4733053964906 and parameters: {'embedding_dim': 378, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -212.4733053964906. +[I 2025-12-18 02:36:25,925] Trial 3 finished with value: -6073.070731904821 and parameters: {'embedding_dim': 411, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 2 with value: -212.4733053964906. +[I 2025-12-18 02:37:06,152] Trial 4 finished with value: -520.4815251780803 and parameters: {'embedding_dim': 388, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -212.4733053964906. +[I 2025-12-18 02:37:22,609] Trial 5 finished with value: -478.77410078800085 and parameters: {'embedding_dim': 499, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -212.4733053964906. +[I 2025-12-18 02:38:04,784] Trial 6 finished with value: -1709.806002487483 and parameters: {'embedding_dim': 248, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -212.4733053964906. +[I 2025-12-18 02:38:29,406] Trial 7 finished with value: -581.7032658356438 and parameters: {'embedding_dim': 174, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -212.4733053964906. +[I 2025-12-18 02:39:52,710] Trial 8 finished with value: -981.5481561399397 and parameters: {'embedding_dim': 202, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -212.4733053964906. +[I 2025-12-18 02:40:25,787] Trial 9 finished with value: -89.007464190843 and parameters: {'embedding_dim': 409, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 9 with value: -89.007464190843. +[I 2025-12-18 02:41:06,898] Trial 10 finished with value: -126.14755329329361 and parameters: {'embedding_dim': 508, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -89.007464190843. +[I 2025-12-18 02:41:48,682] Trial 11 finished with value: -133.64739388079903 and parameters: {'embedding_dim': 510, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -89.007464190843. +[I 2025-12-18 02:42:22,172] Trial 12 finished with value: -345.61552712114576 and parameters: {'embedding_dim': 446, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 9 with value: -89.007464190843. +[I 2025-12-18 02:42:57,501] Trial 13 finished with value: -267.99636959888306 and parameters: {'embedding_dim': 453, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 9 with value: -89.007464190843. +[I 2025-12-18 02:43:31,413] Trial 14 finished with value: -199.93084826794123 and parameters: {'embedding_dim': 317, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 9 with value: -89.007464190843. +[I 2025-12-18 02:44:14,457] Trial 15 finished with value: -202.2751775074463 and parameters: {'embedding_dim': 457, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -89.007464190843. +[I 2025-12-18 02:44:49,061] Trial 16 finished with value: -211.83083751538845 and parameters: {'embedding_dim': 337, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 9 with value: -89.007464190843. +[I 2025-12-18 02:46:05,696] Trial 17 finished with value: -217.8961889292028 and parameters: {'embedding_dim': 428, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 9 with value: -89.007464190843. +[I 2025-12-18 02:46:41,494] Trial 18 finished with value: -1207.528828591972 and parameters: {'embedding_dim': 482, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 9 with value: -89.007464190843. +[I 2025-12-18 02:47:21,281] Trial 19 finished with value: -186.10762829511472 and parameters: {'embedding_dim': 296, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -89.007464190843. +[I 2025-12-18 02:48:25,766] Trial 20 finished with value: -357.29559533995445 and parameters: {'embedding_dim': 137, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 9 with value: -89.007464190843. +[I 2025-12-18 02:49:08,241] Trial 21 finished with value: -85.694393902486 and parameters: {'embedding_dim': 506, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 21 with value: -85.694393902486. +[I 2025-12-18 02:49:48,071] Trial 22 finished with value: -213.55268677792 and parameters: {'embedding_dim': 480, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 21 with value: -85.694393902486. +[I 2025-12-18 02:50:29,508] Trial 23 finished with value: -137.97946563590617 and parameters: {'embedding_dim': 413, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 21 with value: -85.694393902486. +[I 2025-12-18 02:51:04,353] Trial 24 finished with value: -174.4073724675053 and parameters: {'embedding_dim': 476, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 21 with value: -85.694393902486. +[I 2025-12-18 02:51:45,893] Trial 25 finished with value: -156.31493123326604 and parameters: {'embedding_dim': 510, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 21 with value: -85.694393902486. +[I 2025-12-18 02:52:21,032] Trial 26 finished with value: -1152.5450633119726 and parameters: {'embedding_dim': 435, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 21 with value: -85.694393902486. +[I 2025-12-18 02:53:00,735] Trial 27 finished with value: -68.94050063308818 and parameters: {'embedding_dim': 355, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 27 with value: -68.94050063308818. +[I 2025-12-18 02:54:03,138] Trial 28 finished with value: -586.4626799778118 and parameters: {'embedding_dim': 355, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 27 with value: -68.94050063308818. +[I 2025-12-18 02:54:44,774] Trial 29 finished with value: -271.7794144709479 and parameters: {'embedding_dim': 395, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 27 with value: -68.94050063308818. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 02:55:25,042] A new study created in memory with name: no-name-bf45bca5-1c09-4442-9787-690de4612b2e +[I 2025-12-18 02:55:35,509] Trial 0 finished with value: -16.76708333791372 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -16.76708333791372. +[I 2025-12-18 02:55:57,347] Trial 1 finished with value: -113.0575515191458 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -16.76708333791372. +[I 2025-12-18 02:56:19,108] Trial 2 finished with value: -8.12163440875643 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -8.12163440875643. +[I 2025-12-18 02:56:40,776] Trial 3 finished with value: -25.682030433247828 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -8.12163440875643. +[I 2025-12-18 02:57:02,639] Trial 4 finished with value: -3.8706863408978704 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -3.8706863408978704. +[I 2025-12-18 02:57:10,935] Trial 5 finished with value: -5.8671256980717486 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -3.8706863408978704. +[I 2025-12-18 02:57:26,660] Trial 6 finished with value: -10.695208146481999 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -3.8706863408978704. +[I 2025-12-18 02:57:35,444] Trial 7 finished with value: -1.2020500604971782 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -1.2020500604971782. +[I 2025-12-18 02:57:39,908] Trial 8 finished with value: -21.90236512552879 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -1.2020500604971782. +[I 2025-12-18 02:57:50,305] Trial 9 finished with value: -6.824755871713678 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 7 with value: -1.2020500604971782. +[I 2025-12-18 02:57:56,560] Trial 10 finished with value: -2.7658547809814773 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -1.2020500604971782. +[I 2025-12-18 02:58:02,837] Trial 11 finished with value: -18.04909600899299 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -1.2020500604971782. +[I 2025-12-18 02:58:11,134] Trial 12 finished with value: -4.285480075276688 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -1.2020500604971782. +[I 2025-12-18 02:58:17,620] Trial 13 finished with value: -11.282961930753277 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -1.2020500604971782. +[I 2025-12-18 02:58:26,070] Trial 14 finished with value: -10.323377713747973 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -1.2020500604971782. +[I 2025-12-18 02:58:32,390] Trial 15 finished with value: -2.4716950012518173 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -1.2020500604971782. +[I 2025-12-18 02:58:38,691] Trial 16 finished with value: -27.106142558024416 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -1.2020500604971782. +[I 2025-12-18 02:58:47,035] Trial 17 finished with value: -4.181933104265262 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -1.2020500604971782. +[I 2025-12-18 02:58:53,285] Trial 18 finished with value: -69.70549828471664 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -1.2020500604971782. +[I 2025-12-18 02:59:39,521] Trial 19 finished with value: -0.2751853868452574 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:00:28,773] Trial 20 finished with value: -7.505043435234067 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:01:17,283] Trial 21 finished with value: -0.35659286708116494 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:02:05,244] Trial 22 finished with value: -9.323462482537703 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:02:55,899] Trial 23 finished with value: -1.012727823820912 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:03:44,220] Trial 24 finished with value: -7.968586123061453 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:04:34,868] Trial 25 finished with value: -6.022153457642185 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:05:24,740] Trial 26 finished with value: -2.8415792979113768 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:06:10,591] Trial 27 finished with value: -2.38731297329023 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:06:58,935] Trial 28 finished with value: -10.04106504989316 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:07:45,054] Trial 29 finished with value: -7.358317364736347 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:08:21,889] Trial 30 finished with value: -0.41742886909204413 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:08:55,761] Trial 31 finished with value: -15.91905707361076 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:09:29,693] Trial 32 finished with value: -0.5605235824924645 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:10:06,300] Trial 33 finished with value: -2.108607437006979 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:10:40,178] Trial 34 finished with value: -14.919455367071535 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:11:13,946] Trial 35 finished with value: -34.2279091638285 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:11:32,424] Trial 36 finished with value: -10.710421064963915 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:11:54,083] Trial 37 finished with value: -4.242596478790789 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:12:27,683] Trial 38 finished with value: -5.587511263218135 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:12:46,011] Trial 39 finished with value: -4.477747512641196 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:13:20,131] Trial 40 finished with value: -3.1757416348471583 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:14:08,001] Trial 41 finished with value: -0.49372581450721653 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:14:54,037] Trial 42 finished with value: -11.660812023632076 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:15:42,226] Trial 43 finished with value: -4.222757810950264 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:16:30,493] Trial 44 finished with value: -0.73538223418531 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:16:52,121] Trial 45 finished with value: -81.35082005508045 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:17:09,246] Trial 46 finished with value: -9.083030600262417 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:17:45,041] Trial 47 finished with value: -1.4101993588383708 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:18:30,962] Trial 48 finished with value: -2.479059005484448 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:19:19,250] Trial 49 finished with value: -2.2645021977277042 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 19 with value: -0.2751853868452574. +[I 2025-12-18 03:20:07,895] A new study created in memory with name: no-name-10c53de5-31bb-4915-bc45-0b9bf7608364 +[I 2025-12-18 03:20:38,544] Trial 0 finished with value: -363.11304377352377 and parameters: {'embedding_dim': 265, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -363.11304377352377. +[I 2025-12-18 03:21:16,631] Trial 1 finished with value: -563.8623487552452 and parameters: {'embedding_dim': 186, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -363.11304377352377. +[I 2025-12-18 03:21:42,375] Trial 2 finished with value: -524.7774097763565 and parameters: {'embedding_dim': 485, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -363.11304377352377. +[I 2025-12-18 03:22:04,142] Trial 3 finished with value: -575.4033305019485 and parameters: {'embedding_dim': 390, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -363.11304377352377. +[I 2025-12-18 03:22:28,178] Trial 4 finished with value: -561.1646057735286 and parameters: {'embedding_dim': 220, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -363.11304377352377. +[I 2025-12-18 03:23:46,449] Trial 5 finished with value: -1489.2917007301394 and parameters: {'embedding_dim': 490, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -363.11304377352377. +[I 2025-12-18 03:23:58,361] Trial 6 finished with value: -692.5943829756918 and parameters: {'embedding_dim': 373, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -363.11304377352377. +[I 2025-12-18 03:24:17,226] Trial 7 finished with value: -697.4552537762024 and parameters: {'embedding_dim': 329, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -363.11304377352377. +[I 2025-12-18 03:24:44,652] Trial 8 finished with value: -1332.017076241252 and parameters: {'embedding_dim': 493, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -363.11304377352377. +[I 2025-12-18 03:25:15,202] Trial 9 finished with value: -600.2537457372962 and parameters: {'embedding_dim': 452, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -363.11304377352377. +[I 2025-12-18 03:25:47,256] Trial 10 finished with value: -182.76928474524072 and parameters: {'embedding_dim': 260, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 10 with value: -182.76928474524072. +[I 2025-12-18 03:26:18,051] Trial 11 finished with value: -271.7952193032472 and parameters: {'embedding_dim': 257, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 10 with value: -182.76928474524072. +[I 2025-12-18 03:26:58,525] Trial 12 finished with value: -798.1101201248272 and parameters: {'embedding_dim': 134, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -182.76928474524072. +[I 2025-12-18 03:27:28,445] Trial 13 finished with value: -363.47027922170224 and parameters: {'embedding_dim': 275, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 10 with value: -182.76928474524072. +[I 2025-12-18 03:27:43,815] Trial 14 finished with value: -446.0349970857719 and parameters: {'embedding_dim': 282, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 10 with value: -182.76928474524072. +[I 2025-12-18 03:28:48,971] Trial 15 finished with value: -39.858989414537724 and parameters: {'embedding_dim': 221, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -39.858989414537724. +[I 2025-12-18 03:29:53,274] Trial 16 finished with value: -913.8978150208344 and parameters: {'embedding_dim': 180, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -39.858989414537724. +[I 2025-12-18 03:31:10,444] Trial 17 finished with value: -119.30731281094488 and parameters: {'embedding_dim': 327, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -39.858989414537724. +[I 2025-12-18 03:32:26,993] Trial 18 finished with value: -299.5109333535505 and parameters: {'embedding_dim': 351, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -39.858989414537724. +[I 2025-12-18 03:33:40,479] Trial 19 finished with value: -280.88532202174616 and parameters: {'embedding_dim': 415, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -39.858989414537724. +[I 2025-12-18 03:34:42,499] Trial 20 finished with value: -158.0582535390396 and parameters: {'embedding_dim': 308, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -39.858989414537724. +[I 2025-12-18 03:35:45,046] Trial 21 finished with value: -41.48690477797739 and parameters: {'embedding_dim': 309, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -39.858989414537724. +[I 2025-12-18 03:36:59,117] Trial 22 finished with value: -258.4324453654244 and parameters: {'embedding_dim': 222, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -39.858989414537724. +[I 2025-12-18 03:38:00,955] Trial 23 finished with value: -84.44722849624208 and parameters: {'embedding_dim': 310, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -39.858989414537724. +[I 2025-12-18 03:39:07,570] Trial 24 finished with value: -450.2680206656414 and parameters: {'embedding_dim': 229, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 15 with value: -39.858989414537724. +[I 2025-12-18 03:40:13,920] Trial 25 finished with value: -31.271058756703447 and parameters: {'embedding_dim': 298, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 25 with value: -31.271058756703447. +[I 2025-12-18 03:41:20,254] Trial 26 finished with value: -18.425772648815606 and parameters: {'embedding_dim': 177, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 26 with value: -18.425772648815606. +[I 2025-12-18 03:42:11,522] Trial 27 finished with value: -11.395572962884978 and parameters: {'embedding_dim': 163, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 27 with value: -11.395572962884978. +[I 2025-12-18 03:43:02,227] Trial 28 finished with value: -173.06436155970695 and parameters: {'embedding_dim': 137, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 27 with value: -11.395572962884978. +[I 2025-12-18 03:43:15,706] Trial 29 finished with value: -1916.823747301154 and parameters: {'embedding_dim': 169, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 27 with value: -11.395572962884978. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 03:44:05,833] A new study created in memory with name: no-name-046d5b35-f7de-4d63-b569-907e068a55d5 +[I 2025-12-18 03:44:14,310] Trial 0 finished with value: -8.672207451053428 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -8.672207451053428. +[I 2025-12-18 03:44:35,416] Trial 1 finished with value: -7.6061580107802325 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -7.6061580107802325. +[I 2025-12-18 03:44:51,432] Trial 2 finished with value: -13.181985264043071 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -7.6061580107802325. +[I 2025-12-18 03:45:01,684] Trial 3 finished with value: -25.833860788861855 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -7.6061580107802325. +[I 2025-12-18 03:45:24,780] Trial 4 finished with value: -20.488005531511533 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -7.6061580107802325. +[I 2025-12-18 03:45:29,097] Trial 5 finished with value: -149.4549570892736 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -7.6061580107802325. +[I 2025-12-18 03:46:16,905] Trial 6 finished with value: -11.898274128764049 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -7.6061580107802325. +[I 2025-12-18 03:46:21,418] Trial 7 finished with value: -22.18821549369014 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -7.6061580107802325. +[I 2025-12-18 03:46:25,744] Trial 8 finished with value: -10.670857804973503 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -7.6061580107802325. +[I 2025-12-18 03:46:33,667] Trial 9 finished with value: -2.142712002347985 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 9 with value: -2.142712002347985. +[I 2025-12-18 03:47:07,946] Trial 10 finished with value: -1.6927803503550212 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:47:43,687] Trial 11 finished with value: -65.48082502978906 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:48:21,918] Trial 12 finished with value: -6.71458739870363 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:48:58,118] Trial 13 finished with value: -39.62601094199696 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:49:04,484] Trial 14 finished with value: -4.754292724566516 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:49:52,105] Trial 15 finished with value: -7.738844039991324 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:49:58,467] Trial 16 finished with value: -105.17412155510974 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:50:48,229] Trial 17 finished with value: -4.053250729501553 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:50:52,525] Trial 18 finished with value: -54.49637755467447 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:51:28,200] Trial 19 finished with value: -16.062773137798303 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:51:36,874] Trial 20 finished with value: -50.61559622856025 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:52:24,831] Trial 21 finished with value: -62.33218982939248 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:53:14,717] Trial 22 finished with value: -17.61683853972654 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:54:03,606] Trial 23 finished with value: -6.594239576806256 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:54:39,420] Trial 24 finished with value: -15.155719299365153 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:55:14,066] Trial 25 finished with value: -22.8881991814461 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:56:01,977] Trial 26 finished with value: -11.536949432910038 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:56:36,204] Trial 27 finished with value: -25.360950172891663 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:56:57,523] Trial 28 finished with value: -14.209885357671785 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:57:03,893] Trial 29 finished with value: -21.0762204881602 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:57:08,438] Trial 30 finished with value: -2.8853396779769156 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:57:12,837] Trial 31 finished with value: -69.93551911106498 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:57:17,202] Trial 32 finished with value: -4.439970756527212 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -1.6927803503550212. +[I 2025-12-18 03:57:21,593] Trial 33 finished with value: -1.1744220873345173 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 33 with value: -1.1744220873345173. +[I 2025-12-18 03:57:25,936] Trial 34 finished with value: -4.220716519910661 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 33 with value: -1.1744220873345173. +[I 2025-12-18 03:57:30,219] Trial 35 finished with value: -8.63501872957676 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 33 with value: -1.1744220873345173. +[I 2025-12-18 03:57:41,162] Trial 36 finished with value: -12.902814702648147 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 33 with value: -1.1744220873345173. +[I 2025-12-18 03:57:45,538] Trial 37 finished with value: -225.03103310375727 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 33 with value: -1.1744220873345173. +[I 2025-12-18 03:57:49,870] Trial 38 finished with value: -51.10521798158331 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 33 with value: -1.1744220873345173. +[I 2025-12-18 03:58:00,113] Trial 39 finished with value: -15.313076073613408 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 33 with value: -1.1744220873345173. +[I 2025-12-18 03:58:06,486] Trial 40 finished with value: -15.188778012611817 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 33 with value: -1.1744220873345173. +[I 2025-12-18 03:58:12,910] Trial 41 finished with value: -11.177870285540479 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 33 with value: -1.1744220873345173. +[I 2025-12-18 03:58:17,232] Trial 42 finished with value: -76.02781690264118 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 33 with value: -1.1744220873345173. +[I 2025-12-18 03:58:33,131] Trial 43 finished with value: -6.6224215797061 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -1.1744220873345173. +[I 2025-12-18 03:58:41,839] Trial 44 finished with value: -28.219006326444106 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 33 with value: -1.1744220873345173. +[I 2025-12-18 03:59:03,848] Trial 45 finished with value: -9.911413592755718 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 33 with value: -1.1744220873345173. +[I 2025-12-18 03:59:10,175] Trial 46 finished with value: -7.737979858918775 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 33 with value: -1.1744220873345173. +[I 2025-12-18 03:59:44,377] Trial 47 finished with value: -1.049647278080877 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 47 with value: -1.049647278080877. +[I 2025-12-18 03:59:50,715] Trial 48 finished with value: -15.960908991284315 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 47 with value: -1.049647278080877. +[I 2025-12-18 04:00:24,977] Trial 49 finished with value: -4.402486859530978 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 47 with value: -1.049647278080877. +[I 2025-12-18 04:01:04,619] A new study created in memory with name: no-name-f49bc7b3-d5d0-413d-b029-864dcde88ce1 +[I 2025-12-18 04:01:26,392] Trial 0 finished with value: -644.4591984740891 and parameters: {'embedding_dim': 158, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -644.4591984740891. +[I 2025-12-18 04:01:44,926] Trial 1 finished with value: -824.5416568685519 and parameters: {'embedding_dim': 296, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -644.4591984740891. +[I 2025-12-18 04:02:21,442] Trial 2 finished with value: -365.6604059909312 and parameters: {'embedding_dim': 259, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -365.6604059909312. +[I 2025-12-18 04:02:31,071] Trial 3 finished with value: -1706.3936300120477 and parameters: {'embedding_dim': 349, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -365.6604059909312. +[I 2025-12-18 04:03:07,128] Trial 4 finished with value: -1291.5699420082453 and parameters: {'embedding_dim': 311, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 2 with value: -365.6604059909312. +[I 2025-12-18 04:03:23,389] Trial 5 finished with value: -353.432960459346 and parameters: {'embedding_dim': 393, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 5 with value: -353.432960459346. +[I 2025-12-18 04:03:46,262] Trial 6 finished with value: -723.3947438497007 and parameters: {'embedding_dim': 481, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -353.432960459346. +[I 2025-12-18 04:04:09,592] Trial 7 finished with value: -588.10436217406 and parameters: {'embedding_dim': 409, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 5 with value: -353.432960459346. +[I 2025-12-18 04:04:36,565] Trial 8 finished with value: -439.5252498053895 and parameters: {'embedding_dim': 276, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 5 with value: -353.432960459346. +[I 2025-12-18 04:05:04,578] Trial 9 finished with value: -663.6412817222503 and parameters: {'embedding_dim': 457, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -353.432960459346. +[I 2025-12-18 04:05:13,115] Trial 10 finished with value: -3761.056632705473 and parameters: {'embedding_dim': 384, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 5 with value: -353.432960459346. +[I 2025-12-18 04:05:51,439] Trial 11 finished with value: -515.5194658645885 and parameters: {'embedding_dim': 206, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -353.432960459346. +[I 2025-12-18 04:06:39,217] Trial 12 finished with value: -1530.8483767580617 and parameters: {'embedding_dim': 251, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 5 with value: -353.432960459346. +[I 2025-12-18 04:07:07,416] Trial 13 finished with value: -328.9130904564021 and parameters: {'embedding_dim': 422, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -328.9130904564021. +[I 2025-12-18 04:07:18,601] Trial 14 finished with value: -502.1239991213045 and parameters: {'embedding_dim': 431, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 13 with value: -328.9130904564021. +[I 2025-12-18 04:07:44,526] Trial 15 finished with value: -582.8735325624584 and parameters: {'embedding_dim': 363, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -328.9130904564021. +[I 2025-12-18 04:08:27,046] Trial 16 finished with value: -982.5118925582533 and parameters: {'embedding_dim': 505, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -328.9130904564021. +[I 2025-12-18 04:08:34,909] Trial 17 finished with value: -463.60973791393485 and parameters: {'embedding_dim': 438, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 13 with value: -328.9130904564021. +[I 2025-12-18 04:09:00,461] Trial 18 finished with value: -886.9617119239152 and parameters: {'embedding_dim': 396, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -328.9130904564021. +[I 2025-12-18 04:09:14,429] Trial 19 finished with value: -3175.2520667278086 and parameters: {'embedding_dim': 339, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 13 with value: -328.9130904564021. +[I 2025-12-18 04:09:32,668] Trial 20 finished with value: -426.0812504906424 and parameters: {'embedding_dim': 512, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 13 with value: -328.9130904564021. +[I 2025-12-18 04:10:05,837] Trial 21 finished with value: -618.3790461193157 and parameters: {'embedding_dim': 241, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -328.9130904564021. +[I 2025-12-18 04:10:39,508] Trial 22 finished with value: -224.38300188467514 and parameters: {'embedding_dim': 195, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -224.38300188467514. +[I 2025-12-18 04:11:04,391] Trial 23 finished with value: -512.4921131057624 and parameters: {'embedding_dim': 166, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -224.38300188467514. +[I 2025-12-18 04:11:39,130] Trial 24 finished with value: -1192.3343670524148 and parameters: {'embedding_dim': 132, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -224.38300188467514. +[I 2025-12-18 04:12:13,374] Trial 25 finished with value: -4389.286055491674 and parameters: {'embedding_dim': 217, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -224.38300188467514. +[I 2025-12-18 04:12:57,182] Trial 26 finished with value: -1493.6493451750193 and parameters: {'embedding_dim': 369, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 22 with value: -224.38300188467514. +[I 2025-12-18 04:13:22,626] Trial 27 finished with value: -434.07394289535483 and parameters: {'embedding_dim': 414, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -224.38300188467514. +[I 2025-12-18 04:13:33,569] Trial 28 finished with value: -995.7085634323596 and parameters: {'embedding_dim': 328, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 22 with value: -224.38300188467514. +[I 2025-12-18 04:13:48,693] Trial 29 finished with value: -511.55554354223074 and parameters: {'embedding_dim': 470, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 22 with value: -224.38300188467514. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 04:14:23,831] A new study created in memory with name: no-name-2676501b-664d-4efa-b1b9-ea82f3a9fabc +[I 2025-12-18 04:15:10,763] Trial 0 finished with value: -27.71142269785034 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -27.71142269785034. +[I 2025-12-18 04:15:15,190] Trial 1 finished with value: -8.672877028403567 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -8.672877028403567. +[I 2025-12-18 04:15:19,765] Trial 2 finished with value: -5.020779172065198 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -5.020779172065198. +[I 2025-12-18 04:15:53,595] Trial 3 finished with value: -4.174959158281004 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -4.174959158281004. +[I 2025-12-18 04:16:04,267] Trial 4 finished with value: -0.9397850949896597 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:16:14,909] Trial 5 finished with value: -20.81954252716626 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:16:30,878] Trial 6 finished with value: -2.7939235598472285 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:16:52,645] Trial 7 finished with value: -48.01169221955493 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:16:58,953] Trial 8 finished with value: -2.7074718903900337 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:17:33,154] Trial 9 finished with value: -46.999208623483504 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:17:54,540] Trial 10 finished with value: -18.85230080090918 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:18:00,902] Trial 11 finished with value: -5.49314186370043 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:18:09,253] Trial 12 finished with value: -2.5676963601411895 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:18:30,498] Trial 13 finished with value: -9.219762506240068 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:18:38,868] Trial 14 finished with value: -2.5455451939722806 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:19:00,376] Trial 15 finished with value: -4.844340985549333 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:19:11,193] Trial 16 finished with value: -52.28379328784691 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:19:17,528] Trial 17 finished with value: -4.360642249524975 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:19:33,321] Trial 18 finished with value: -1.971209879008915 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:19:43,603] Trial 19 finished with value: -2.5394837854240655 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:19:53,956] Trial 20 finished with value: -3.001182080195909 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:20:04,272] Trial 21 finished with value: -56.10183686743601 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:20:14,596] Trial 22 finished with value: -11.904462861596262 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:20:30,499] Trial 23 finished with value: -39.65553671402566 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:20:40,767] Trial 24 finished with value: -15.72188396092923 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:20:51,051] Trial 25 finished with value: -58.5455155196536 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:21:06,838] Trial 26 finished with value: -1.886157218160324 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.9397850949896597. +[I 2025-12-18 04:21:22,620] Trial 27 finished with value: -0.6152057005720097 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:21:38,764] Trial 28 finished with value: -30.07496283593761 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:22:12,988] Trial 29 finished with value: -13.123221955378058 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:22:28,791] Trial 30 finished with value: -2.9819576728730492 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:22:44,765] Trial 31 finished with value: -8.939439679126636 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:23:00,647] Trial 32 finished with value: -3.646073550447744 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:23:16,600] Trial 33 finished with value: -2.0611210608973156 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:23:32,600] Trial 34 finished with value: -47.68081052105044 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:24:08,262] Trial 35 finished with value: -20.972535936690335 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:24:30,342] Trial 36 finished with value: -10.136537294175012 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:24:46,916] Trial 37 finished with value: -11.137329726413958 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:25:02,684] Trial 38 finished with value: -3.5120285949785037 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:25:36,438] Trial 39 finished with value: -2.175984811583136 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:25:49,633] Trial 40 finished with value: -37.273528668639436 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:26:05,648] Trial 41 finished with value: -23.159984036169 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:26:21,261] Trial 42 finished with value: -4.126067938489154 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:26:37,209] Trial 43 finished with value: -1.7385114080743143 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:26:55,471] Trial 44 finished with value: -6.650023483407454 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:27:12,364] Trial 45 finished with value: -5.306472701550529 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:27:20,780] Trial 46 finished with value: -7.728807153720462 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:27:56,088] Trial 47 finished with value: -2.0475297416631943 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:28:13,387] Trial 48 finished with value: -5.255860394755813 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:28:22,586] Trial 49 finished with value: -5.522801307382776 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 27 with value: -0.6152057005720097. +[I 2025-12-18 04:28:40,628] A new study created in memory with name: no-name-9ac29682-8e66-4fd4-8a3a-835077d177ca +[I 2025-12-18 04:28:48,327] Trial 0 finished with value: -572.5890559345731 and parameters: {'embedding_dim': 368, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -572.5890559345731. +[I 2025-12-18 04:29:07,923] Trial 1 finished with value: -662.0150052698518 and parameters: {'embedding_dim': 320, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -572.5890559345731. +[I 2025-12-18 04:29:23,025] Trial 2 finished with value: -643.9159983093953 and parameters: {'embedding_dim': 355, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -572.5890559345731. +[I 2025-12-18 04:29:35,672] Trial 3 finished with value: -4416.114598807293 and parameters: {'embedding_dim': 309, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -572.5890559345731. +[I 2025-12-18 04:29:44,678] Trial 4 finished with value: -896.3028155513348 and parameters: {'embedding_dim': 396, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -572.5890559345731. +[I 2025-12-18 04:30:08,413] Trial 5 finished with value: -734.3566460611086 and parameters: {'embedding_dim': 355, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -572.5890559345731. +[I 2025-12-18 04:30:18,708] Trial 6 finished with value: -514.5142328173246 and parameters: {'embedding_dim': 288, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 6 with value: -514.5142328173246. +[I 2025-12-18 04:30:28,356] Trial 7 finished with value: -913.1371954223476 and parameters: {'embedding_dim': 303, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -514.5142328173246. +[I 2025-12-18 04:30:42,429] Trial 8 finished with value: -1696.6391323818748 and parameters: {'embedding_dim': 506, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 6 with value: -514.5142328173246. +[I 2025-12-18 04:30:58,005] Trial 9 finished with value: -599.6382367361857 and parameters: {'embedding_dim': 321, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -514.5142328173246. +[I 2025-12-18 04:31:08,052] Trial 10 finished with value: -344.41218722423946 and parameters: {'embedding_dim': 159, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 10 with value: -344.41218722423946. +[I 2025-12-18 04:31:17,838] Trial 11 finished with value: -716.2256103124145 and parameters: {'embedding_dim': 144, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 10 with value: -344.41218722423946. +[I 2025-12-18 04:31:30,092] Trial 12 finished with value: -960.7227235719228 and parameters: {'embedding_dim': 155, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 10 with value: -344.41218722423946. +[I 2025-12-18 04:31:35,238] Trial 13 finished with value: -1337.695306021753 and parameters: {'embedding_dim': 225, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 10 with value: -344.41218722423946. +[I 2025-12-18 04:31:50,345] Trial 14 finished with value: -265.1714040039683 and parameters: {'embedding_dim': 220, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 14 with value: -265.1714040039683. +[I 2025-12-18 04:32:05,253] Trial 15 finished with value: -857.1955773148766 and parameters: {'embedding_dim': 203, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 14 with value: -265.1714040039683. +[I 2025-12-18 04:32:42,707] Trial 16 finished with value: -99.62693378356921 and parameters: {'embedding_dim': 230, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 16 with value: -99.62693378356921. +[I 2025-12-18 04:33:20,230] Trial 17 finished with value: -206.13079765892573 and parameters: {'embedding_dim': 233, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 16 with value: -99.62693378356921. +[I 2025-12-18 04:33:57,505] Trial 18 finished with value: -66.34293133560737 and parameters: {'embedding_dim': 260, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -66.34293133560737. +[I 2025-12-18 04:34:29,168] Trial 19 finished with value: -389.76877299884757 and parameters: {'embedding_dim': 272, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -66.34293133560737. +[I 2025-12-18 04:35:06,019] Trial 20 finished with value: -213.1972632738884 and parameters: {'embedding_dim': 256, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -66.34293133560737. +[I 2025-12-18 04:35:44,914] Trial 21 finished with value: -86.19293592610434 and parameters: {'embedding_dim': 241, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -66.34293133560737. +[I 2025-12-18 04:36:22,077] Trial 22 finished with value: -166.07577202812806 and parameters: {'embedding_dim': 190, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -66.34293133560737. +[I 2025-12-18 04:36:51,474] Trial 23 finished with value: -243.6211621887496 and parameters: {'embedding_dim': 240, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -66.34293133560737. +[I 2025-12-18 04:37:29,025] Trial 24 finished with value: -494.25297242242675 and parameters: {'embedding_dim': 191, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -66.34293133560737. +[I 2025-12-18 04:37:58,496] Trial 25 finished with value: -50.51689303060572 and parameters: {'embedding_dim': 260, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 25 with value: -50.51689303060572. +[I 2025-12-18 04:38:29,276] Trial 26 finished with value: -219.8074748147115 and parameters: {'embedding_dim': 271, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 25 with value: -50.51689303060572. +[I 2025-12-18 04:38:58,822] Trial 27 finished with value: -178.21302132232455 and parameters: {'embedding_dim': 387, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 25 with value: -50.51689303060572. +[I 2025-12-18 04:39:29,894] Trial 28 finished with value: -451.464155312245 and parameters: {'embedding_dim': 470, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 25 with value: -50.51689303060572. +[I 2025-12-18 04:40:05,454] Trial 29 finished with value: -302.7069697258377 and parameters: {'embedding_dim': 175, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 25 with value: -50.51689303060572. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 04:40:37,642] A new study created in memory with name: no-name-f44e1f88-8dd9-44a1-9b35-af44fc1be2b3 +[I 2025-12-18 04:40:59,566] Trial 0 finished with value: -13.866215406799377 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -13.866215406799377. +[I 2025-12-18 04:41:09,934] Trial 1 finished with value: -84.46039100810856 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -13.866215406799377. +[I 2025-12-18 04:41:18,373] Trial 2 finished with value: -46.22602564509729 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -13.866215406799377. +[I 2025-12-18 04:42:06,052] Trial 3 finished with value: -26.283168879726805 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -13.866215406799377. +[I 2025-12-18 04:42:16,419] Trial 4 finished with value: -68.3868836455298 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -13.866215406799377. +[I 2025-12-18 04:42:39,151] Trial 5 finished with value: -4.268683931064441 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 5 with value: -4.268683931064441. +[I 2025-12-18 04:42:43,593] Trial 6 finished with value: -45.82430151539598 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -4.268683931064441. +[I 2025-12-18 04:42:52,067] Trial 7 finished with value: -50.30587294152033 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -4.268683931064441. +[I 2025-12-18 04:43:13,852] Trial 8 finished with value: -19.35081394280197 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 5 with value: -4.268683931064441. +[I 2025-12-18 04:43:26,568] Trial 9 finished with value: -73.4594083311539 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -4.268683931064441. +[I 2025-12-18 04:43:42,608] Trial 10 finished with value: -13.844404074922126 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -4.268683931064441. +[I 2025-12-18 04:43:58,756] Trial 11 finished with value: -146.12732155734378 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -4.268683931064441. +[I 2025-12-18 04:44:14,836] Trial 12 finished with value: -19.979572024563446 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -4.268683931064441. +[I 2025-12-18 04:44:31,832] Trial 13 finished with value: -51.22554512948855 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -4.268683931064441. +[I 2025-12-18 04:44:54,682] Trial 14 finished with value: -36.154573200732074 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 5 with value: -4.268683931064441. +[I 2025-12-18 04:45:12,827] Trial 15 finished with value: -0.05136486012619281 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:45:31,075] Trial 16 finished with value: -5.946371308148617 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:45:52,583] Trial 17 finished with value: -25.622856611223572 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:45:59,039] Trial 18 finished with value: -132.6208505645531 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:46:45,414] Trial 19 finished with value: -150.7055356339506 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:47:01,354] Trial 20 finished with value: -20.392156606558494 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:47:17,344] Trial 21 finished with value: -5.876258226657847 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:47:33,308] Trial 22 finished with value: -16.775576189230712 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:47:49,597] Trial 23 finished with value: -6.487329138456113 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:48:11,661] Trial 24 finished with value: -2.1261712438835536 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:48:33,287] Trial 25 finished with value: -3.8596531993618615 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:48:54,767] Trial 26 finished with value: -14.134004725170104 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:49:16,241] Trial 27 finished with value: -33.41794720040722 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:50:02,668] Trial 28 finished with value: -3.5437068470020923 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:50:49,522] Trial 29 finished with value: -9.403510773017512 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:51:39,265] Trial 30 finished with value: -20.29875479149308 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:52:26,951] Trial 31 finished with value: -28.768371975561582 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:53:14,844] Trial 32 finished with value: -5.694420921335154 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:54:05,876] Trial 33 finished with value: -14.808969768458383 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:54:15,810] Trial 34 finished with value: -92.65991223158241 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:55:03,916] Trial 35 finished with value: -17.463464779876755 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:55:21,815] Trial 36 finished with value: -17.777114309238414 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:55:32,102] Trial 37 finished with value: -34.182127294162775 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:55:55,475] Trial 38 finished with value: -22.823307743148177 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:56:43,971] Trial 39 finished with value: -1.2647287626061081 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:57:07,634] Trial 40 finished with value: -52.89465451748819 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:57:55,433] Trial 41 finished with value: -13.81158439887185 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:58:45,025] Trial 42 finished with value: -47.53641101065559 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 04:59:32,753] Trial 43 finished with value: -1.2819032475396936 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 05:00:20,346] Trial 44 finished with value: -12.431078594717174 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 05:00:53,950] Trial 45 finished with value: -41.91066552973392 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 05:01:43,295] Trial 46 finished with value: -0.46175273426130914 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 05:02:30,740] Trial 47 finished with value: -10.480366516665686 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 05:03:04,552] Trial 48 finished with value: -1.7967473198738808 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 05:03:40,490] Trial 49 finished with value: -49.19501896676741 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.05136486012619281. +[I 2025-12-18 05:03:57,505] A new study created in memory with name: no-name-ae58e35c-b740-4f48-9d89-6cbb674bdc4c +[I 2025-12-18 05:04:08,783] Trial 0 finished with value: -1327.8590268408318 and parameters: {'embedding_dim': 134, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -1327.8590268408318. +[I 2025-12-18 05:04:29,362] Trial 1 finished with value: -314.75338144776623 and parameters: {'embedding_dim': 474, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -314.75338144776623. +[I 2025-12-18 05:04:51,623] Trial 2 finished with value: -273.92448696081505 and parameters: {'embedding_dim': 496, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -273.92448696081505. +[I 2025-12-18 05:06:05,497] Trial 3 finished with value: -55.17533192708309 and parameters: {'embedding_dim': 416, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -55.17533192708309. +[I 2025-12-18 05:06:19,040] Trial 4 finished with value: -329.35514723877105 and parameters: {'embedding_dim': 511, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 3 with value: -55.17533192708309. +[I 2025-12-18 05:06:58,331] Trial 5 finished with value: -725.3727357963548 and parameters: {'embedding_dim': 162, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -55.17533192708309. +[I 2025-12-18 05:07:56,352] Trial 6 finished with value: -43.86101636254433 and parameters: {'embedding_dim': 433, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -43.86101636254433. +[I 2025-12-18 05:09:25,337] Trial 7 finished with value: -383.76943827252757 and parameters: {'embedding_dim': 501, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 6 with value: -43.86101636254433. +[I 2025-12-18 05:09:47,874] Trial 8 finished with value: -183.2823331346875 and parameters: {'embedding_dim': 337, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 6 with value: -43.86101636254433. +[I 2025-12-18 05:10:05,657] Trial 9 finished with value: -386.80404968313985 and parameters: {'embedding_dim': 457, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 6 with value: -43.86101636254433. +[I 2025-12-18 05:10:49,027] Trial 10 finished with value: -542.1229482455142 and parameters: {'embedding_dim': 348, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -43.86101636254433. +[I 2025-12-18 05:11:46,809] Trial 11 finished with value: -33.41309080072068 and parameters: {'embedding_dim': 380, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:12:43,418] Trial 12 finished with value: -310.90471079540754 and parameters: {'embedding_dim': 252, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:13:26,479] Trial 13 finished with value: -1020.1250118147407 and parameters: {'embedding_dim': 392, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:13:58,372] Trial 14 finished with value: -390.0266106336125 and parameters: {'embedding_dim': 276, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:14:26,469] Trial 15 finished with value: -1678.519013985368 and parameters: {'embedding_dim': 392, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:15:08,582] Trial 16 finished with value: -1104.0924822209558 and parameters: {'embedding_dim': 430, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:16:19,860] Trial 17 finished with value: -537.9046411559123 and parameters: {'embedding_dim': 283, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:16:51,077] Trial 18 finished with value: -2617.221198747992 and parameters: {'embedding_dim': 374, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:17:33,469] Trial 19 finished with value: -232.02804670205913 and parameters: {'embedding_dim': 223, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:18:46,157] Trial 20 finished with value: -775.3763117745511 and parameters: {'embedding_dim': 442, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:20:02,193] Trial 21 finished with value: -380.43414997112455 and parameters: {'embedding_dim': 419, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:21:02,067] Trial 22 finished with value: -89.94296692686956 and parameters: {'embedding_dim': 366, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:22:16,976] Trial 23 finished with value: -1644.9609545298053 and parameters: {'embedding_dim': 310, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:23:18,522] Trial 24 finished with value: -1156.498493906214 and parameters: {'embedding_dim': 422, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:23:58,713] Trial 25 finished with value: -362.151229121071 and parameters: {'embedding_dim': 316, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:24:59,881] Trial 26 finished with value: -186.8024080778494 and parameters: {'embedding_dim': 389, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:25:56,841] Trial 27 finished with value: -152.29883229951213 and parameters: {'embedding_dim': 472, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:27:25,880] Trial 28 finished with value: -389.3961500273088 and parameters: {'embedding_dim': 398, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 11 with value: -33.41309080072068. +[I 2025-12-18 05:27:44,948] Trial 29 finished with value: -3593.99366212003 and parameters: {'embedding_dim': 354, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 11 with value: -33.41309080072068. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 05:28:43,802] A new study created in memory with name: no-name-2cc08250-3110-48a5-a7af-cbf340d23c4e +[I 2025-12-18 05:29:00,913] Trial 0 finished with value: -0.2544050390476769 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:29:13,257] Trial 1 finished with value: -56.59261968369113 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:30:01,537] Trial 2 finished with value: -15.553567465419398 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:30:19,371] Trial 3 finished with value: -6.819295129241731 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:30:40,591] Trial 4 finished with value: -16.087952097022107 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:31:28,908] Trial 5 finished with value: -14.193966387838278 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:31:35,317] Trial 6 finished with value: -83.02066790228845 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:32:11,340] Trial 7 finished with value: -26.411521232932564 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:32:18,049] Trial 8 finished with value: -18.12388836811461 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:32:28,342] Trial 9 finished with value: -123.18869599213517 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:32:38,775] Trial 10 finished with value: -104.92545253302238 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:32:54,639] Trial 11 finished with value: -29.980514001153132 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:33:12,982] Trial 12 finished with value: -67.4890737791806 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:33:28,888] Trial 13 finished with value: -35.593933249889524 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:33:52,525] Trial 14 finished with value: -34.93920921234541 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:33:57,037] Trial 15 finished with value: -251.4029526620487 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:34:13,130] Trial 16 finished with value: -13.551172540838431 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:34:34,644] Trial 17 finished with value: -5.071113407993803 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:34:43,077] Trial 18 finished with value: -6.234813629902787 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:35:32,372] Trial 19 finished with value: -28.30563747036275 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:35:55,997] Trial 20 finished with value: -9.989908129891361 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:36:04,484] Trial 21 finished with value: -22.6317591297732 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:36:13,273] Trial 22 finished with value: -9.727516556399564 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:36:23,992] Trial 23 finished with value: -28.902686561716926 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:36:32,761] Trial 24 finished with value: -3.7744237928978035 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:36:39,451] Trial 25 finished with value: -0.7832958538888503 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:36:46,035] Trial 26 finished with value: -28.333125004197115 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:36:52,413] Trial 27 finished with value: -1.6831949915177455 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:36:59,022] Trial 28 finished with value: -0.5125989808167712 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:37:03,757] Trial 29 finished with value: -115.63827882133127 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:37:12,829] Trial 30 finished with value: -2.8357016635784573 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:37:19,220] Trial 31 finished with value: -26.137335352397816 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:37:25,630] Trial 32 finished with value: -10.84106614930642 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:37:31,999] Trial 33 finished with value: -161.88502973956872 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:38:10,183] Trial 34 finished with value: -2.4039223659477194 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:38:16,573] Trial 35 finished with value: -8.39349572106323 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:38:22,988] Trial 36 finished with value: -37.014760933209004 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:38:47,594] Trial 37 finished with value: -18.90295382139369 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:38:54,081] Trial 38 finished with value: -0.36918384518603486 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:39:00,488] Trial 39 finished with value: -49.21488034957446 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:39:36,588] Trial 40 finished with value: -162.74448350494433 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:39:43,226] Trial 41 finished with value: -46.251701762234525 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:39:49,967] Trial 42 finished with value: -2.3611314982724423 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:39:56,406] Trial 43 finished with value: -31.415582577986786 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:40:03,109] Trial 44 finished with value: -14.475838487923834 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:40:21,693] Trial 45 finished with value: -14.14241252269313 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:40:28,402] Trial 46 finished with value: -14.380869115682405 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:40:38,942] Trial 47 finished with value: -22.960865338272637 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:40:45,593] Trial 48 finished with value: -51.95810629051738 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:41:03,871] Trial 49 finished with value: -2.141694263668393 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -0.2544050390476769. +[I 2025-12-18 05:41:20,226] A new study created in memory with name: no-name-135a1057-0968-436f-add5-efa759a50922 +[I 2025-12-18 05:41:47,972] Trial 0 finished with value: -747.9138139133464 and parameters: {'embedding_dim': 445, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -747.9138139133464. +[I 2025-12-18 05:42:18,995] Trial 1 finished with value: -1034.505326588374 and parameters: {'embedding_dim': 458, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -747.9138139133464. +[I 2025-12-18 05:43:33,565] Trial 2 finished with value: -679.3156808305685 and parameters: {'embedding_dim': 491, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -679.3156808305685. +[I 2025-12-18 05:43:52,794] Trial 3 finished with value: -1120.1823593514991 and parameters: {'embedding_dim': 313, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 2 with value: -679.3156808305685. +[I 2025-12-18 05:44:21,369] Trial 4 finished with value: -449.982120682096 and parameters: {'embedding_dim': 137, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -449.982120682096. +[I 2025-12-18 05:45:08,541] Trial 5 finished with value: -1941.0377054320957 and parameters: {'embedding_dim': 342, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -449.982120682096. +[I 2025-12-18 05:45:47,336] Trial 6 finished with value: -597.0788383454324 and parameters: {'embedding_dim': 276, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 4 with value: -449.982120682096. +[I 2025-12-18 05:45:59,958] Trial 7 finished with value: -1806.7347555242725 and parameters: {'embedding_dim': 442, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 4 with value: -449.982120682096. +[I 2025-12-18 05:46:36,713] Trial 8 finished with value: -638.966220477363 and parameters: {'embedding_dim': 370, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 4 with value: -449.982120682096. +[I 2025-12-18 05:47:48,530] Trial 9 finished with value: -59.54823376685692 and parameters: {'embedding_dim': 352, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -59.54823376685692. +[I 2025-12-18 05:48:10,240] Trial 10 finished with value: -428.0203646992793 and parameters: {'embedding_dim': 232, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -59.54823376685692. +[I 2025-12-18 05:48:31,698] Trial 11 finished with value: -720.522095786477 and parameters: {'embedding_dim': 223, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -59.54823376685692. +[I 2025-12-18 05:48:53,210] Trial 12 finished with value: -426.9275492970433 and parameters: {'embedding_dim': 213, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -59.54823376685692. +[I 2025-12-18 05:49:08,273] Trial 13 finished with value: -671.6365330724589 and parameters: {'embedding_dim': 157, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 9 with value: -59.54823376685692. +[I 2025-12-18 05:49:29,501] Trial 14 finished with value: -417.9125668192224 and parameters: {'embedding_dim': 383, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -59.54823376685692. +[I 2025-12-18 05:50:26,640] Trial 15 finished with value: -111.84875772624171 and parameters: {'embedding_dim': 402, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -59.54823376685692. +[I 2025-12-18 05:51:27,463] Trial 16 finished with value: -754.5946808738315 and parameters: {'embedding_dim': 400, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -59.54823376685692. +[I 2025-12-18 05:52:12,474] Trial 17 finished with value: -847.2390404397678 and parameters: {'embedding_dim': 309, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 9 with value: -59.54823376685692. +[I 2025-12-18 05:53:13,937] Trial 18 finished with value: -25.639474257129535 and parameters: {'embedding_dim': 408, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -25.639474257129535. +[I 2025-12-18 05:54:00,366] Trial 19 finished with value: -1428.8963301388703 and parameters: {'embedding_dim': 495, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -25.639474257129535. +[I 2025-12-18 05:55:13,459] Trial 20 finished with value: -87.5237923603021 and parameters: {'embedding_dim': 272, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -25.639474257129535. +[I 2025-12-18 05:56:29,346] Trial 21 finished with value: -179.6608154166418 and parameters: {'embedding_dim': 270, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -25.639474257129535. +[I 2025-12-18 05:57:46,850] Trial 22 finished with value: -2329.0339927079194 and parameters: {'embedding_dim': 345, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -25.639474257129535. +[I 2025-12-18 05:58:48,018] Trial 23 finished with value: -48.974297522843926 and parameters: {'embedding_dim': 291, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -25.639474257129535. +[I 2025-12-18 05:59:47,758] Trial 24 finished with value: -858.0936530001052 and parameters: {'embedding_dim': 351, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -25.639474257129535. +[I 2025-12-18 06:00:19,780] Trial 25 finished with value: -1263.262995224501 and parameters: {'embedding_dim': 418, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 18 with value: -25.639474257129535. +[I 2025-12-18 06:01:02,559] Trial 26 finished with value: -138.66517767782676 and parameters: {'embedding_dim': 190, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -25.639474257129535. +[I 2025-12-18 06:02:06,213] Trial 27 finished with value: -348.78068301722595 and parameters: {'embedding_dim': 306, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -25.639474257129535. +[I 2025-12-18 06:02:55,013] Trial 28 finished with value: -144.2964151447721 and parameters: {'embedding_dim': 251, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -25.639474257129535. +[I 2025-12-18 06:03:55,368] Trial 29 finished with value: -1.3354618009404158 and parameters: {'embedding_dim': 435, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 29 with value: -1.3354618009404158. +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_2_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_2_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_2_incheon.csv: Class 0=9070 | Class 1=6999 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_incheon.csv: Class 0=9432 | Class 1=9544 | Class 2=14637 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_2_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_2_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_2_seoul.csv: Class 0=10341 | Class 1=8190 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_seoul.csv: Class 0=10370 | Class 1=9882 | Class 2=15823 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_2_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_2_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_2_busan.csv: Class 0=10102 | Class 1=8052 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_busan.csv: Class 0=10177 | Class 1=9064 | Class 2=16457 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_2_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_2_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_2_daegu.csv: Class 0=10471 | Class 1=8742 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_daegu.csv: Class 0=10500 | Class 1=9454 | Class 2=16803 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_2_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_2_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_2_daejeon.csv: Class 0=9889 | Class 1=8100 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_daejeon.csv: Class 0=10005 | Class 1=9811 | Class 2=15717 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_2_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_2_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_2_gwangju.csv: Class 0=8952 | Class 1=7887 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_gwangju.csv: Class 0=9031 | Class 1=9592 | Class 2=15760 + +Running smotenc_ctgan_sample_10000_3.py... +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 06:05:01,010] A new study created in memory with name: no-name-c9fcb3da-6fb5-4e19-96ba-d63790650190 +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +[I 2025-12-18 06:05:27,929] Trial 0 finished with value: -8.331819100618182 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -8.331819100618182. +[I 2025-12-18 06:05:37,368] Trial 1 finished with value: -78.82615741666825 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -8.331819100618182. +[I 2025-12-18 06:05:59,184] Trial 2 finished with value: -198.39878540286256 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -8.331819100618182. +[I 2025-12-18 06:06:05,856] Trial 3 finished with value: -23.091530782404988 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -8.331819100618182. +[I 2025-12-18 06:06:17,664] Trial 4 finished with value: -58.60090678665496 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -8.331819100618182. +[I 2025-12-18 06:06:54,069] Trial 5 finished with value: -60.44790606655957 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -8.331819100618182. +[I 2025-12-18 06:06:59,464] Trial 6 finished with value: -5.8596763417091875 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -5.8596763417091875. +[I 2025-12-18 06:07:04,960] Trial 7 finished with value: -28.446910962471833 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -5.8596763417091875. +[I 2025-12-18 06:07:13,352] Trial 8 finished with value: -32.32030217706395 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -5.8596763417091875. +[I 2025-12-18 06:07:17,669] Trial 9 finished with value: -76.66320882518644 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -5.8596763417091875. +[I 2025-12-18 06:07:33,997] Trial 10 finished with value: -39.28286341588256 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -5.8596763417091875. +[I 2025-12-18 06:07:55,477] Trial 11 finished with value: -20.40228428232213 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 6 with value: -5.8596763417091875. +[I 2025-12-18 06:08:16,721] Trial 12 finished with value: -41.736536541006885 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 6 with value: -5.8596763417091875. +[I 2025-12-18 06:08:32,456] Trial 13 finished with value: -5.491522454890464 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:09:06,168] Trial 14 finished with value: -155.44529545605877 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:09:10,476] Trial 15 finished with value: -85.45533410492864 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:09:26,170] Trial 16 finished with value: -17.328058426714296 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:09:36,552] Trial 17 finished with value: -35.44256991334797 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:09:43,002] Trial 18 finished with value: -71.68821212878022 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:10:16,838] Trial 19 finished with value: -12.728424743819087 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:10:21,140] Trial 20 finished with value: -53.256129405773386 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:10:42,412] Trial 21 finished with value: -30.158671101683478 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:11:03,519] Trial 22 finished with value: -67.8104880285845 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:11:24,673] Trial 23 finished with value: -18.39829317824921 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:11:40,345] Trial 24 finished with value: -18.116241975045433 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:11:57,440] Trial 25 finished with value: -19.967982249766266 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:12:13,184] Trial 26 finished with value: -75.7558775617322 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:12:35,496] Trial 27 finished with value: -68.84048494307646 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:12:59,420] Trial 28 finished with value: -177.41968589917474 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:13:07,754] Trial 29 finished with value: -155.20627203651387 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:13:15,320] Trial 30 finished with value: -35.816644445597206 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:13:51,421] Trial 31 finished with value: -211.6005426898254 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:14:26,927] Trial 32 finished with value: -329.42184523530017 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:15:03,373] Trial 33 finished with value: -231.12817253543398 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:15:27,426] Trial 34 finished with value: -97.30727086720442 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:16:04,314] Trial 35 finished with value: -65.37680506264506 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:16:28,793] Trial 36 finished with value: -228.603536965632 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:16:37,146] Trial 37 finished with value: -194.57463282057813 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:16:54,096] Trial 38 finished with value: -9.30924719807635 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:17:05,511] Trial 39 finished with value: -6.334490772926497 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:17:16,038] Trial 40 finished with value: -25.08741325850962 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:17:29,139] Trial 41 finished with value: -76.92774976289039 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:17:41,376] Trial 42 finished with value: -52.120527504420586 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:17:52,026] Trial 43 finished with value: -290.60959909519494 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:18:09,500] Trial 44 finished with value: -20.589823958437073 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:18:20,891] Trial 45 finished with value: -144.95660150557617 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:18:32,457] Trial 46 finished with value: -107.91003039575338 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 13 with value: -5.491522454890464. +[I 2025-12-18 06:18:38,960] Trial 47 finished with value: -5.364924770257339 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 47 with value: -5.364924770257339. +[I 2025-12-18 06:18:43,560] Trial 48 finished with value: -68.6167667329182 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 47 with value: -5.364924770257339. +[I 2025-12-18 06:18:51,049] Trial 49 finished with value: -151.42705808931237 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 47 with value: -5.364924770257339. +[I 2025-12-18 06:18:57,820] A new study created in memory with name: no-name-56d7d112-1cc5-48be-9f1a-270fa7540967 +[I 2025-12-18 06:19:37,004] Trial 0 finished with value: -44.52560169161746 and parameters: {'embedding_dim': 130, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -44.52560169161746. +[I 2025-12-18 06:20:12,718] Trial 1 finished with value: -444.7319851755525 and parameters: {'embedding_dim': 200, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -44.52560169161746. +[I 2025-12-18 06:20:41,448] Trial 2 finished with value: -440.4868112276623 and parameters: {'embedding_dim': 193, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 0 with value: -44.52560169161746. +[I 2025-12-18 06:21:09,835] Trial 3 finished with value: -532.0706351406668 and parameters: {'embedding_dim': 331, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -44.52560169161746. +[I 2025-12-18 06:21:49,408] Trial 4 finished with value: -844.6464198142787 and parameters: {'embedding_dim': 184, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -44.52560169161746. +[I 2025-12-18 06:22:27,298] Trial 5 finished with value: -1797.1946745076798 and parameters: {'embedding_dim': 344, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -44.52560169161746. +[I 2025-12-18 06:23:16,662] Trial 6 finished with value: -5.796210450977993 and parameters: {'embedding_dim': 358, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 6 with value: -5.796210450977993. +[I 2025-12-18 06:23:53,978] Trial 7 finished with value: -136.04795119430065 and parameters: {'embedding_dim': 484, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -5.796210450977993. +[I 2025-12-18 06:24:30,982] Trial 8 finished with value: -335.85753019176644 and parameters: {'embedding_dim': 361, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -5.796210450977993. +[I 2025-12-18 06:25:04,009] Trial 9 finished with value: -365.22564430762486 and parameters: {'embedding_dim': 178, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -5.796210450977993. +[I 2025-12-18 06:27:07,934] Trial 10 finished with value: -680.9605511680795 and parameters: {'embedding_dim': 438, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 6 with value: -5.796210450977993. +[I 2025-12-18 06:27:57,675] Trial 11 finished with value: -235.91777013795414 and parameters: {'embedding_dim': 274, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 6 with value: -5.796210450977993. +[I 2025-12-18 06:28:47,003] Trial 12 finished with value: -0.4867830151176225 and parameters: {'embedding_dim': 275, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:29:49,385] Trial 13 finished with value: -428.6318466523811 and parameters: {'embedding_dim': 268, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:30:39,487] Trial 14 finished with value: -603.6339570382104 and parameters: {'embedding_dim': 403, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:32:42,466] Trial 15 finished with value: -1484.2004165071978 and parameters: {'embedding_dim': 278, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:33:44,307] Trial 16 finished with value: -587.1437970644705 and parameters: {'embedding_dim': 400, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:34:34,291] Trial 17 finished with value: -14.860323167236544 and parameters: {'embedding_dim': 248, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:35:02,455] Trial 18 finished with value: -1151.0881263307647 and parameters: {'embedding_dim': 511, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:36:01,720] Trial 19 finished with value: -887.7337173344496 and parameters: {'embedding_dim': 303, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:37:04,367] Trial 20 finished with value: -665.311543731952 and parameters: {'embedding_dim': 398, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:37:54,225] Trial 21 finished with value: -28.29623645427501 and parameters: {'embedding_dim': 236, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:38:49,967] Trial 22 finished with value: -518.618226754313 and parameters: {'embedding_dim': 245, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:39:44,494] Trial 23 finished with value: -441.2820691211956 and parameters: {'embedding_dim': 312, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:40:21,325] Trial 24 finished with value: -31.707681628672887 and parameters: {'embedding_dim': 363, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:41:15,919] Trial 25 finished with value: -24.318188238606485 and parameters: {'embedding_dim': 227, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:42:22,580] Trial 26 finished with value: -360.4052236925053 and parameters: {'embedding_dim': 290, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:43:03,487] Trial 27 finished with value: -516.7052378857255 and parameters: {'embedding_dim': 153, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:43:38,163] Trial 28 finished with value: -360.57562764124333 and parameters: {'embedding_dim': 371, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 12 with value: -0.4867830151176225. +[I 2025-12-18 06:44:19,485] Trial 29 finished with value: -316.54373421470905 and parameters: {'embedding_dim': 128, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 12 with value: -0.4867830151176225. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 06:45:12,209] A new study created in memory with name: no-name-553123f7-8a2c-4dba-9660-5baf2ee4288c +[I 2025-12-18 06:45:33,826] Trial 0 finished with value: -7.934988113907795 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -7.934988113907795. +[I 2025-12-18 06:45:51,323] Trial 1 finished with value: -20.34652674241843 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -7.934988113907795. +[I 2025-12-18 06:45:57,676] Trial 2 finished with value: -14.845260529529153 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -7.934988113907795. +[I 2025-12-18 06:46:18,860] Trial 3 finished with value: -3.7400711358996994 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -3.7400711358996994. +[I 2025-12-18 06:47:05,559] Trial 4 finished with value: -1.63505171018829 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -1.63505171018829. +[I 2025-12-18 06:47:24,065] Trial 5 finished with value: -7.65856767312329 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -1.63505171018829. +[I 2025-12-18 06:47:28,506] Trial 6 finished with value: -7.680287506920947 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -1.63505171018829. +[I 2025-12-18 06:47:44,178] Trial 7 finished with value: -7.5891107374618265 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -1.63505171018829. +[I 2025-12-18 06:48:05,831] Trial 8 finished with value: -15.11859875103253 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -1.63505171018829. +[I 2025-12-18 06:48:55,053] Trial 9 finished with value: -12.008635072551238 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -1.63505171018829. +[I 2025-12-18 06:49:42,453] Trial 10 finished with value: -3.264937768556091 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -1.63505171018829. +[I 2025-12-18 06:50:29,745] Trial 11 finished with value: -13.101658889897688 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -1.63505171018829. +[I 2025-12-18 06:51:16,380] Trial 12 finished with value: -3.8890880148320814 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -1.63505171018829. +[I 2025-12-18 06:52:03,873] Trial 13 finished with value: -1.2328431364047618 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:52:54,868] Trial 14 finished with value: -8.64441534796533 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:53:40,090] Trial 15 finished with value: -2.748199489374276 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:53:47,713] Trial 16 finished with value: -1.952040066886746 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:54:35,220] Trial 17 finished with value: -4.767217850897102 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:55:11,656] Trial 18 finished with value: -33.65567227327686 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:55:21,327] Trial 19 finished with value: -45.08891750035565 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:55:54,869] Trial 20 finished with value: -53.366777719724254 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:56:01,388] Trial 21 finished with value: -3.5566921797473756 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:56:08,050] Trial 22 finished with value: -3.6926169708838157 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:56:14,421] Trial 23 finished with value: -28.63424976030531 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:56:25,855] Trial 24 finished with value: -10.16427678623058 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:56:31,313] Trial 25 finished with value: -6.028454171915526 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:57:17,326] Trial 26 finished with value: -8.975761924333582 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:57:51,102] Trial 27 finished with value: -28.462242437984045 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 13 with value: -1.2328431364047618. +[I 2025-12-18 06:58:12,250] Trial 28 finished with value: -0.5041221806449905 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 06:58:33,568] Trial 29 finished with value: -9.53373056933243 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 06:58:54,722] Trial 30 finished with value: -7.193589708272658 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 06:59:15,976] Trial 31 finished with value: -2.329434503604402 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 06:59:31,842] Trial 32 finished with value: -7.532868549794167 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 06:59:53,041] Trial 33 finished with value: -12.35367734196024 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:00:01,363] Trial 34 finished with value: -19.14745314059736 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:00:17,170] Trial 35 finished with value: -14.113212796914187 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:00:38,911] Trial 36 finished with value: -55.539334331964426 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:00:45,333] Trial 37 finished with value: -5.7942492151580165 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:01:06,543] Trial 38 finished with value: -20.116084686882544 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:01:54,919] Trial 39 finished with value: -6.7742000007775225 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:02:12,134] Trial 40 finished with value: -8.310977127503337 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:02:34,748] Trial 41 finished with value: -3.0960242972344245 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:02:55,696] Trial 42 finished with value: -23.692089727013162 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:03:16,845] Trial 43 finished with value: -3.0583564014136173 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:03:39,178] Trial 44 finished with value: -6.535999274998157 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:04:00,411] Trial 45 finished with value: -16.060713782806683 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:04:50,087] Trial 46 finished with value: -8.023641848582493 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:05:38,218] Trial 47 finished with value: -4.5654498159277495 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:05:42,734] Trial 48 finished with value: -11.882336235045937 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:06:33,103] Trial 49 finished with value: -6.178349576912905 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 28 with value: -0.5041221806449905. +[I 2025-12-18 07:06:56,305] A new study created in memory with name: no-name-0c598ad4-d86a-4c37-b14f-8b27b67736e4 +[I 2025-12-18 07:07:49,388] Trial 0 finished with value: -153.52110071111937 and parameters: {'embedding_dim': 178, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -153.52110071111937. +[I 2025-12-18 07:08:04,022] Trial 1 finished with value: -285.7835784829649 and parameters: {'embedding_dim': 209, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 0 with value: -153.52110071111937. +[I 2025-12-18 07:08:13,533] Trial 2 finished with value: -738.1027954060227 and parameters: {'embedding_dim': 403, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -153.52110071111937. +[I 2025-12-18 07:09:17,278] Trial 3 finished with value: -94.29568291866374 and parameters: {'embedding_dim': 416, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:10:08,365] Trial 4 finished with value: -190.5620588049222 and parameters: {'embedding_dim': 155, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:10:31,985] Trial 5 finished with value: -596.1575539718899 and parameters: {'embedding_dim': 508, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:10:56,362] Trial 6 finished with value: -903.5830307219925 and parameters: {'embedding_dim': 165, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:12:03,025] Trial 7 finished with value: -98.64484652610012 and parameters: {'embedding_dim': 264, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:12:28,187] Trial 8 finished with value: -7001.863699028996 and parameters: {'embedding_dim': 153, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:12:41,462] Trial 9 finished with value: -512.5295258622334 and parameters: {'embedding_dim': 150, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:13:35,112] Trial 10 finished with value: -477.6400718297911 and parameters: {'embedding_dim': 377, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:14:38,495] Trial 11 finished with value: -620.0275326059991 and parameters: {'embedding_dim': 278, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:15:40,815] Trial 12 finished with value: -116.32575724996835 and parameters: {'embedding_dim': 294, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:16:43,449] Trial 13 finished with value: -316.0954140947234 and parameters: {'embedding_dim': 453, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:17:47,202] Trial 14 finished with value: -1310.3689636015076 and parameters: {'embedding_dim': 349, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:18:36,333] Trial 15 finished with value: -195.14438121888782 and parameters: {'embedding_dim': 431, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:19:12,249] Trial 16 finished with value: -433.69472678321455 and parameters: {'embedding_dim': 244, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:19:50,946] Trial 17 finished with value: -276.81431953743504 and parameters: {'embedding_dim': 325, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:20:41,227] Trial 18 finished with value: -1277.0917178545392 and parameters: {'embedding_dim': 253, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:21:44,032] Trial 19 finished with value: -153.79411389156996 and parameters: {'embedding_dim': 479, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -94.29568291866374. +[I 2025-12-18 07:22:08,002] Trial 20 finished with value: -84.43662995122398 and parameters: {'embedding_dim': 363, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 20 with value: -84.43662995122398. +[I 2025-12-18 07:22:31,197] Trial 21 finished with value: -133.32306398937794 and parameters: {'embedding_dim': 373, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 20 with value: -84.43662995122398. +[I 2025-12-18 07:22:54,405] Trial 22 finished with value: -503.3517853368678 and parameters: {'embedding_dim': 333, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 20 with value: -84.43662995122398. +[I 2025-12-18 07:23:24,867] Trial 23 finished with value: -51.50185316149896 and parameters: {'embedding_dim': 416, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 23 with value: -51.50185316149896. +[I 2025-12-18 07:23:48,996] Trial 24 finished with value: -201.35050571234666 and parameters: {'embedding_dim': 418, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 23 with value: -51.50185316149896. +[I 2025-12-18 07:24:19,376] Trial 25 finished with value: -72.82064733610258 and parameters: {'embedding_dim': 386, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 23 with value: -51.50185316149896. +[I 2025-12-18 07:24:49,996] Trial 26 finished with value: -2285.515910742512 and parameters: {'embedding_dim': 382, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 23 with value: -51.50185316149896. +[I 2025-12-18 07:25:05,701] Trial 27 finished with value: -1953.8277966801506 and parameters: {'embedding_dim': 453, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 23 with value: -51.50185316149896. +[I 2025-12-18 07:25:28,266] Trial 28 finished with value: -193.543721847336 and parameters: {'embedding_dim': 358, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 23 with value: -51.50185316149896. +[I 2025-12-18 07:25:59,665] Trial 29 finished with value: -132.33903256557366 and parameters: {'embedding_dim': 308, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 23 with value: -51.50185316149896. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 07:26:30,757] A new study created in memory with name: no-name-54c9b691-0c2f-4e6b-867b-a52e83d0811f +[I 2025-12-18 07:26:35,351] Trial 0 finished with value: -33.66923250661326 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -33.66923250661326. +[I 2025-12-18 07:26:39,882] Trial 1 finished with value: -15.35017122375276 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -15.35017122375276. +[I 2025-12-18 07:26:44,592] Trial 2 finished with value: -5.639042996635129 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -5.639042996635129. +[I 2025-12-18 07:27:18,056] Trial 3 finished with value: -11.515573041335356 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -5.639042996635129. +[I 2025-12-18 07:27:26,408] Trial 4 finished with value: -3.9414758645506067 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -3.9414758645506067. +[I 2025-12-18 07:27:36,656] Trial 5 finished with value: -4.248346929727209 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -3.9414758645506067. +[I 2025-12-18 07:27:58,079] Trial 6 finished with value: -9.046820291588512 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -3.9414758645506067. +[I 2025-12-18 07:28:43,686] Trial 7 finished with value: -20.662971043115355 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -3.9414758645506067. +[I 2025-12-18 07:28:52,311] Trial 8 finished with value: -18.538697224805983 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -3.9414758645506067. +[I 2025-12-18 07:29:03,115] Trial 9 finished with value: -79.92315850392741 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -3.9414758645506067. +[I 2025-12-18 07:29:09,444] Trial 10 finished with value: -3.1697940108307248 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -3.1697940108307248. +[I 2025-12-18 07:29:15,696] Trial 11 finished with value: -73.14377025361152 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -3.1697940108307248. +[I 2025-12-18 07:29:24,262] Trial 12 finished with value: -0.9551901900324772 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:29:30,650] Trial 13 finished with value: -3.0428697144747434 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:29:39,338] Trial 14 finished with value: -34.11629170999924 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:29:56,073] Trial 15 finished with value: -15.802702560138698 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:30:02,484] Trial 16 finished with value: -7.305977646620592 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:30:10,731] Trial 17 finished with value: -8.92316326959201 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:30:26,477] Trial 18 finished with value: -31.01098698295464 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:31:00,091] Trial 19 finished with value: -6.632458847791448 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:31:08,413] Trial 20 finished with value: -19.331215605759645 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:31:14,702] Trial 21 finished with value: -87.04265271695368 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:31:21,197] Trial 22 finished with value: -32.10841408588804 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:31:27,855] Trial 23 finished with value: -7.135620779046972 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:31:36,565] Trial 24 finished with value: -15.053301285251916 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:31:43,079] Trial 25 finished with value: -25.951842126350037 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:31:49,507] Trial 26 finished with value: -17.880488935263884 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:31:58,353] Trial 27 finished with value: -2.485031373478018 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -0.9551901900324772. +[I 2025-12-18 07:32:19,862] Trial 28 finished with value: -0.8475053817433922 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 28 with value: -0.8475053817433922. +[I 2025-12-18 07:32:40,906] Trial 29 finished with value: -0.6716884604034656 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:33:02,488] Trial 30 finished with value: -24.308322044257245 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:33:24,657] Trial 31 finished with value: -1.1940125620098407 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:33:46,889] Trial 32 finished with value: -0.6765535135202823 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:34:08,678] Trial 33 finished with value: -18.65053097278013 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:34:30,288] Trial 34 finished with value: -7.650859679824693 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:34:51,880] Trial 35 finished with value: -5.875232284818624 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:35:12,939] Trial 36 finished with value: -2.5825400691488496 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:35:33,956] Trial 37 finished with value: -8.928019047083056 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:35:55,148] Trial 38 finished with value: -2.3435916237075025 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:36:16,267] Trial 39 finished with value: -2.9735312182013383 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:37:01,971] Trial 40 finished with value: -17.932711099101134 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:37:23,943] Trial 41 finished with value: -4.52464176664204 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:37:45,681] Trial 42 finished with value: -1.0803210975619497 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:38:07,551] Trial 43 finished with value: -21.14473154987685 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:38:28,972] Trial 44 finished with value: -7.651065248744932 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:38:50,418] Trial 45 finished with value: -4.628857309549491 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:39:12,224] Trial 46 finished with value: -6.72993803550924 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:39:57,483] Trial 47 finished with value: -2.2049794073240268 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:40:19,083] Trial 48 finished with value: -12.61904226838633 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:40:29,220] Trial 49 finished with value: -27.198188241071037 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 29 with value: -0.6716884604034656. +[I 2025-12-18 07:40:51,552] A new study created in memory with name: no-name-35328e74-91d4-4c2c-bd90-7302098d537d +[I 2025-12-18 07:40:59,104] Trial 0 finished with value: -2349.778987843587 and parameters: {'embedding_dim': 320, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -2349.778987843587. +[I 2025-12-18 07:41:24,696] Trial 1 finished with value: -203.09480105420334 and parameters: {'embedding_dim': 234, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -203.09480105420334. +[I 2025-12-18 07:41:40,037] Trial 2 finished with value: -1220.608891186138 and parameters: {'embedding_dim': 352, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -203.09480105420334. +[I 2025-12-18 07:41:56,481] Trial 3 finished with value: -794.3800094378837 and parameters: {'embedding_dim': 192, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -203.09480105420334. +[I 2025-12-18 07:42:07,449] Trial 4 finished with value: -2223.2771875288026 and parameters: {'embedding_dim': 245, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 1 with value: -203.09480105420334. +[I 2025-12-18 07:42:32,048] Trial 5 finished with value: -1123.8061969631758 and parameters: {'embedding_dim': 388, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -203.09480105420334. +[I 2025-12-18 07:42:49,777] Trial 6 finished with value: -325.23472035500254 and parameters: {'embedding_dim': 206, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -203.09480105420334. +[I 2025-12-18 07:43:32,310] Trial 7 finished with value: -829.8579107104359 and parameters: {'embedding_dim': 253, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -203.09480105420334. +[I 2025-12-18 07:44:23,434] Trial 8 finished with value: -226.15507492225814 and parameters: {'embedding_dim': 204, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -203.09480105420334. +[I 2025-12-18 07:45:05,122] Trial 9 finished with value: -143.0632571537413 and parameters: {'embedding_dim': 437, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -143.0632571537413. +[I 2025-12-18 07:45:35,811] Trial 10 finished with value: -753.2520014042857 and parameters: {'embedding_dim': 508, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 9 with value: -143.0632571537413. +[I 2025-12-18 07:46:09,856] Trial 11 finished with value: -220.48432294356684 and parameters: {'embedding_dim': 483, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -143.0632571537413. +[I 2025-12-18 07:46:42,606] Trial 12 finished with value: -175.03303731624223 and parameters: {'embedding_dim': 429, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -143.0632571537413. +[I 2025-12-18 07:47:25,355] Trial 13 finished with value: -217.09827822965957 and parameters: {'embedding_dim': 448, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -143.0632571537413. +[I 2025-12-18 07:47:57,964] Trial 14 finished with value: -188.7046562970915 and parameters: {'embedding_dim': 414, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -143.0632571537413. +[I 2025-12-18 07:48:23,300] Trial 15 finished with value: -299.0338319456032 and parameters: {'embedding_dim': 314, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 9 with value: -143.0632571537413. +[I 2025-12-18 07:48:56,483] Trial 16 finished with value: -322.3595796376049 and parameters: {'embedding_dim': 444, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -143.0632571537413. +[I 2025-12-18 07:49:47,411] Trial 17 finished with value: -343.7685058282636 and parameters: {'embedding_dim': 378, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 9 with value: -143.0632571537413. +[I 2025-12-18 07:50:05,456] Trial 18 finished with value: -921.4083973168547 and parameters: {'embedding_dim': 452, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 9 with value: -143.0632571537413. +[I 2025-12-18 07:50:26,726] Trial 19 finished with value: -1301.0363747713013 and parameters: {'embedding_dim': 290, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 9 with value: -143.0632571537413. +[I 2025-12-18 07:50:59,655] Trial 20 finished with value: -296.07847821380744 and parameters: {'embedding_dim': 130, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -143.0632571537413. +[I 2025-12-18 07:51:33,960] Trial 21 finished with value: -961.5429980095512 and parameters: {'embedding_dim': 425, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -143.0632571537413. +[I 2025-12-18 07:52:06,913] Trial 22 finished with value: -630.1233464750771 and parameters: {'embedding_dim': 401, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -143.0632571537413. +[I 2025-12-18 07:52:48,615] Trial 23 finished with value: -98.28337923304434 and parameters: {'embedding_dim': 360, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 23 with value: -98.28337923304434. +[I 2025-12-18 07:53:30,547] Trial 24 finished with value: -351.97515666146 and parameters: {'embedding_dim': 365, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 23 with value: -98.28337923304434. +[I 2025-12-18 07:54:21,442] Trial 25 finished with value: -1332.7783651682157 and parameters: {'embedding_dim': 467, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 23 with value: -98.28337923304434. +[I 2025-12-18 07:55:04,357] Trial 26 finished with value: -2414.7299872381795 and parameters: {'embedding_dim': 351, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 23 with value: -98.28337923304434. +[I 2025-12-18 07:55:47,381] Trial 27 finished with value: -192.1332033842361 and parameters: {'embedding_dim': 502, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 23 with value: -98.28337923304434. +[I 2025-12-18 07:56:08,011] Trial 28 finished with value: -541.4258927207994 and parameters: {'embedding_dim': 424, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 23 with value: -98.28337923304434. +[I 2025-12-18 07:56:19,000] Trial 29 finished with value: -1017.7762618983254 and parameters: {'embedding_dim': 298, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 23 with value: -98.28337923304434. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 07:57:02,409] A new study created in memory with name: no-name-8bf5643d-b986-4f69-ba9e-732b95d98940 +[I 2025-12-18 07:57:24,013] Trial 0 finished with value: -8.306813042851761 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -8.306813042851761. +[I 2025-12-18 07:57:28,350] Trial 1 finished with value: -87.39291330752309 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -8.306813042851761. +[I 2025-12-18 07:58:13,758] Trial 2 finished with value: -7.003765396125658 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -7.003765396125658. +[I 2025-12-18 07:58:35,122] Trial 3 finished with value: -51.52561410163226 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 2 with value: -7.003765396125658. +[I 2025-12-18 07:58:39,399] Trial 4 finished with value: -7.970473484251549 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -7.003765396125658. +[I 2025-12-18 07:58:43,615] Trial 5 finished with value: -64.31614665490578 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -7.003765396125658. +[I 2025-12-18 07:58:47,691] Trial 6 finished with value: -1.8937491936546766 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 6 with value: -1.8937491936546766. +[I 2025-12-18 07:58:56,196] Trial 7 finished with value: -28.553516274209986 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -1.8937491936546766. +[I 2025-12-18 07:59:12,832] Trial 8 finished with value: -15.692564196599319 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -1.8937491936546766. +[I 2025-12-18 07:59:17,022] Trial 9 finished with value: -1.25158278659255 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 07:59:50,308] Trial 10 finished with value: -76.59961588073713 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 07:59:54,489] Trial 11 finished with value: -49.86961669777921 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:00:00,815] Trial 12 finished with value: -38.697450474507036 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:00:04,885] Trial 13 finished with value: -32.10821512115214 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:00:09,165] Trial 14 finished with value: -64.62076297780533 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:00:43,071] Trial 15 finished with value: -43.66929011040432 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:00:47,228] Trial 16 finished with value: -1.9643791960640593 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:00:53,323] Trial 17 finished with value: -36.50782514391253 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:01:15,765] Trial 18 finished with value: -101.33222618886056 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:01:31,653] Trial 19 finished with value: -19.98923786499922 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:01:35,910] Trial 20 finished with value: -2.740171446007672 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:01:40,045] Trial 21 finished with value: -14.59002673430706 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:01:44,284] Trial 22 finished with value: -35.55501441805217 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:01:48,417] Trial 23 finished with value: -1.643473080802186 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:01:52,485] Trial 24 finished with value: -11.044760684594372 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:01:58,693] Trial 25 finished with value: -11.355127345407928 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:02:02,892] Trial 26 finished with value: -12.667513916779718 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:02:07,038] Trial 27 finished with value: -1.2883788809831023 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:02:40,145] Trial 28 finished with value: -17.35480438029053 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:02:50,161] Trial 29 finished with value: -5.920319188800929 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:03:00,263] Trial 30 finished with value: -8.725415341913727 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:03:04,581] Trial 31 finished with value: -76.85892820555851 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:03:08,719] Trial 32 finished with value: -10.291622147535934 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:03:12,892] Trial 33 finished with value: -2.286912321857977 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:03:16,979] Trial 34 finished with value: -20.047303215245236 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:03:21,205] Trial 35 finished with value: -24.466518717790184 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:03:29,943] Trial 36 finished with value: -15.958609572281475 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:03:34,319] Trial 37 finished with value: -19.597581423126783 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:03:56,107] Trial 38 finished with value: -57.533190404076606 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:04:11,797] Trial 39 finished with value: -9.023111487305773 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:04:16,110] Trial 40 finished with value: -14.107010769918936 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:04:20,255] Trial 41 finished with value: -3.665216057091709 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:04:24,526] Trial 42 finished with value: -10.832739990830166 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:04:28,867] Trial 43 finished with value: -17.43659292107575 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:04:33,093] Trial 44 finished with value: -3.183621586086972 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:04:37,451] Trial 45 finished with value: -10.53104084663574 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:04:45,785] Trial 46 finished with value: -22.13107197280281 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:04:51,935] Trial 47 finished with value: -55.16052373523726 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:05:13,335] Trial 48 finished with value: -35.274381162313134 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:05:17,584] Trial 49 finished with value: -12.914538799290252 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -1.25158278659255. +[I 2025-12-18 08:05:22,068] A new study created in memory with name: no-name-ae43d4e4-8bc6-415e-bcd6-536ee9552eb6 +[I 2025-12-18 08:05:34,362] Trial 0 finished with value: -316.18093356235187 and parameters: {'embedding_dim': 278, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 0 with value: -316.18093356235187. +[I 2025-12-18 08:05:43,247] Trial 1 finished with value: -673.5309381434272 and parameters: {'embedding_dim': 479, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -316.18093356235187. +[I 2025-12-18 08:05:55,301] Trial 2 finished with value: -1673.2570240866662 and parameters: {'embedding_dim': 469, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -316.18093356235187. +[I 2025-12-18 08:06:11,791] Trial 3 finished with value: -983.5155856924873 and parameters: {'embedding_dim': 394, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -316.18093356235187. +[I 2025-12-18 08:06:19,711] Trial 4 finished with value: -111.29063205043497 and parameters: {'embedding_dim': 360, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -111.29063205043497. +[I 2025-12-18 08:06:31,617] Trial 5 finished with value: -263.6060449012396 and parameters: {'embedding_dim': 258, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 4 with value: -111.29063205043497. +[I 2025-12-18 08:06:50,133] Trial 6 finished with value: -412.41272969832016 and parameters: {'embedding_dim': 462, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -111.29063205043497. +[I 2025-12-18 08:07:15,021] Trial 7 finished with value: -348.54122435477694 and parameters: {'embedding_dim': 186, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 4 with value: -111.29063205043497. +[I 2025-12-18 08:07:23,748] Trial 8 finished with value: -424.7403570700708 and parameters: {'embedding_dim': 161, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -111.29063205043497. +[I 2025-12-18 08:07:38,818] Trial 9 finished with value: -430.7325698082898 and parameters: {'embedding_dim': 391, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -111.29063205043497. +[I 2025-12-18 08:07:47,063] Trial 10 finished with value: -71.30126692753741 and parameters: {'embedding_dim': 350, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:07:54,976] Trial 11 finished with value: -1813.0531089937963 and parameters: {'embedding_dim': 349, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:08:02,689] Trial 12 finished with value: -6567.4442744066955 and parameters: {'embedding_dim': 322, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:08:10,252] Trial 13 finished with value: -846.6987294304529 and parameters: {'embedding_dim': 392, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:08:17,341] Trial 14 finished with value: -513.5107439473655 and parameters: {'embedding_dim': 250, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:08:24,993] Trial 15 finished with value: -7455.1531445225355 and parameters: {'embedding_dim': 352, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:08:37,065] Trial 16 finished with value: -2228.7553577399167 and parameters: {'embedding_dim': 435, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:08:45,225] Trial 17 finished with value: -672.2390094154376 and parameters: {'embedding_dim': 280, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:08:52,482] Trial 18 finished with value: -2739.47907600902 and parameters: {'embedding_dim': 218, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:09:00,326] Trial 19 finished with value: -4317.1430904967 and parameters: {'embedding_dim': 334, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:09:20,776] Trial 20 finished with value: -839.315799837867 and parameters: {'embedding_dim': 413, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:09:32,358] Trial 21 finished with value: -501.3591691928581 and parameters: {'embedding_dim': 289, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:09:41,277] Trial 22 finished with value: -263.6639866500691 and parameters: {'embedding_dim': 233, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:09:53,154] Trial 23 finished with value: -313.97514971920185 and parameters: {'embedding_dim': 365, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:10:09,332] Trial 24 finished with value: -505.1075326524568 and parameters: {'embedding_dim': 511, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:10:15,112] Trial 25 finished with value: -254.1148273233222 and parameters: {'embedding_dim': 302, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:10:23,282] Trial 26 finished with value: -2547.7235902215953 and parameters: {'embedding_dim': 319, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:10:31,120] Trial 27 finished with value: -1395.531265085439 and parameters: {'embedding_dim': 309, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:10:38,626] Trial 28 finished with value: -632.6890267691022 and parameters: {'embedding_dim': 369, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 10 with value: -71.30126692753741. +[I 2025-12-18 08:10:44,320] Trial 29 finished with value: -1540.125037589493 and parameters: {'embedding_dim': 295, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 10 with value: -71.30126692753741. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 08:10:53,216] A new study created in memory with name: no-name-e8e54abc-1069-4b7b-8807-9a200441defc +[I 2025-12-18 08:10:57,772] Trial 0 finished with value: -42.31400582894207 and parameters: {'embedding_dim': 107, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -42.31400582894207. +[I 2025-12-18 08:11:32,966] Trial 1 finished with value: -0.7383089806050342 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -0.7383089806050342. +[I 2025-12-18 08:11:41,650] Trial 2 finished with value: -8.446639762115648 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -0.7383089806050342. +[I 2025-12-18 08:12:04,223] Trial 3 finished with value: -21.56363686787659 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -0.7383089806050342. +[I 2025-12-18 08:12:25,817] Trial 4 finished with value: -22.982745916271206 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -0.7383089806050342. +[I 2025-12-18 08:12:35,983] Trial 5 finished with value: -38.6527407241462 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.7383089806050342. +[I 2025-12-18 08:12:51,801] Trial 6 finished with value: -8.539432177820672 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -0.7383089806050342. +[I 2025-12-18 08:13:37,756] Trial 7 finished with value: -61.82604900518612 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -0.7383089806050342. +[I 2025-12-18 08:14:23,383] Trial 8 finished with value: -0.5903060030049747 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:14:29,623] Trial 9 finished with value: -2.0434784925562504 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:15:16,322] Trial 10 finished with value: -0.5931682579306818 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:16:03,049] Trial 11 finished with value: -12.749998469695436 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:16:48,774] Trial 12 finished with value: -2.643816023103691 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:17:34,631] Trial 13 finished with value: -13.867569082853274 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:18:08,361] Trial 14 finished with value: -1.368349372443255 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:18:54,174] Trial 15 finished with value: -16.42697890219705 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:19:28,681] Trial 16 finished with value: -9.64720238651109 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:20:14,479] Trial 17 finished with value: -14.37166497352209 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:20:22,795] Trial 18 finished with value: -3.162709041645395 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:20:38,739] Trial 19 finished with value: -2.9259637123135125 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:21:11,977] Trial 20 finished with value: -1.3783927653252854 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:21:45,472] Trial 21 finished with value: -1.0284062824419649 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:22:19,284] Trial 22 finished with value: -68.9263517924361 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:22:52,610] Trial 23 finished with value: -61.66076072326864 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:23:38,248] Trial 24 finished with value: -39.7758913882355 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:23:59,914] Trial 25 finished with value: -16.95786549121072 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:24:46,659] Trial 26 finished with value: -31.026797669773316 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:25:20,328] Trial 27 finished with value: -4.014700341900457 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:25:28,959] Trial 28 finished with value: -5.870600401718668 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:25:39,487] Trial 29 finished with value: -65.53331845491218 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:25:48,432] Trial 30 finished with value: -6.450237599294566 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:26:22,518] Trial 31 finished with value: -15.79971473444358 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:26:55,994] Trial 32 finished with value: -40.57795666504399 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:27:30,582] Trial 33 finished with value: -45.093681486446364 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:28:04,468] Trial 34 finished with value: -75.16375152561614 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:28:26,192] Trial 35 finished with value: -11.541809019758176 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:28:42,367] Trial 36 finished with value: -149.67581925310665 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:29:16,684] Trial 37 finished with value: -9.248137751995742 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:29:21,012] Trial 38 finished with value: -95.70724464778759 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:30:07,757] Trial 39 finished with value: -11.063788431981195 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:30:41,283] Trial 40 finished with value: -4.882820337541673 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:31:14,504] Trial 41 finished with value: -27.639290876954824 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:31:48,556] Trial 42 finished with value: -9.414593795620268 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:32:22,237] Trial 43 finished with value: -1.6311901927606893 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:32:37,926] Trial 44 finished with value: -52.16579513704553 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:33:23,414] Trial 45 finished with value: -0.9954535124694766 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:34:09,393] Trial 46 finished with value: -20.24883514018564 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:34:55,203] Trial 47 finished with value: -5.102548048813497 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:35:40,993] Trial 48 finished with value: -9.219638672702729 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:35:49,192] Trial 49 finished with value: -81.61692508488385 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -0.5903060030049747. +[I 2025-12-18 08:36:35,665] A new study created in memory with name: no-name-17efec81-f158-430f-a473-9e59347ca3eb +[I 2025-12-18 08:37:49,947] Trial 0 finished with value: -1656.7065170839508 and parameters: {'embedding_dim': 470, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -1656.7065170839508. +[I 2025-12-18 08:38:26,533] Trial 1 finished with value: -937.0652391452272 and parameters: {'embedding_dim': 442, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -937.0652391452272. +[I 2025-12-18 08:38:48,409] Trial 2 finished with value: -553.622655334529 and parameters: {'embedding_dim': 336, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -553.622655334529. +[I 2025-12-18 08:39:04,283] Trial 3 finished with value: -226.50659883338804 and parameters: {'embedding_dim': 454, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -226.50659883338804. +[I 2025-12-18 08:39:17,046] Trial 4 finished with value: -971.8810538318501 and parameters: {'embedding_dim': 419, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 3 with value: -226.50659883338804. +[I 2025-12-18 08:39:33,261] Trial 5 finished with value: -1873.0195558101514 and parameters: {'embedding_dim': 448, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 3 with value: -226.50659883338804. +[I 2025-12-18 08:40:04,493] Trial 6 finished with value: -294.85036069731746 and parameters: {'embedding_dim': 387, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 3 with value: -226.50659883338804. +[I 2025-12-18 08:40:20,581] Trial 7 finished with value: -1130.9756711258854 and parameters: {'embedding_dim': 342, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 3 with value: -226.50659883338804. +[I 2025-12-18 08:40:35,824] Trial 8 finished with value: -534.1488234413039 and parameters: {'embedding_dim': 503, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -226.50659883338804. +[I 2025-12-18 08:40:59,185] Trial 9 finished with value: -1864.311592016763 and parameters: {'embedding_dim': 243, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 3 with value: -226.50659883338804. +[I 2025-12-18 08:42:01,878] Trial 10 finished with value: -1294.6814491096939 and parameters: {'embedding_dim': 164, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -226.50659883338804. +[I 2025-12-18 08:42:16,496] Trial 11 finished with value: -527.1712969578408 and parameters: {'embedding_dim': 373, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -226.50659883338804. +[I 2025-12-18 08:42:53,288] Trial 12 finished with value: -120.06789148734349 and parameters: {'embedding_dim': 279, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 12 with value: -120.06789148734349. +[I 2025-12-18 08:43:11,284] Trial 13 finished with value: -405.4808178678589 and parameters: {'embedding_dim': 264, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 12 with value: -120.06789148734349. +[I 2025-12-18 08:44:13,583] Trial 14 finished with value: -444.4783307179072 and parameters: {'embedding_dim': 263, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -120.06789148734349. +[I 2025-12-18 08:44:37,475] Trial 15 finished with value: -2855.2473637163534 and parameters: {'embedding_dim': 180, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 12 with value: -120.06789148734349. +[I 2025-12-18 08:44:58,599] Trial 16 finished with value: -556.4071627752139 and parameters: {'embedding_dim': 213, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 12 with value: -120.06789148734349. +[I 2025-12-18 08:45:15,881] Trial 17 finished with value: -373.8665905421711 and parameters: {'embedding_dim': 301, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 12 with value: -120.06789148734349. +[I 2025-12-18 08:45:45,360] Trial 18 finished with value: -362.1067687065863 and parameters: {'embedding_dim': 300, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 12 with value: -120.06789148734349. +[I 2025-12-18 08:46:34,561] Trial 19 finished with value: -599.8862655420102 and parameters: {'embedding_dim': 392, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -120.06789148734349. +[I 2025-12-18 08:46:46,186] Trial 20 finished with value: -2865.2852686380675 and parameters: {'embedding_dim': 217, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 12 with value: -120.06789148734349. +[I 2025-12-18 08:47:15,752] Trial 21 finished with value: -495.1372283371312 and parameters: {'embedding_dim': 386, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 12 with value: -120.06789148734349. +[I 2025-12-18 08:47:45,827] Trial 22 finished with value: -42.28438134567276 and parameters: {'embedding_dim': 493, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 22 with value: -42.28438134567276. +[I 2025-12-18 08:48:23,307] Trial 23 finished with value: -419.9276488969496 and parameters: {'embedding_dim': 505, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 22 with value: -42.28438134567276. +[I 2025-12-18 08:48:53,878] Trial 24 finished with value: -500.504027130252 and parameters: {'embedding_dim': 475, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 22 with value: -42.28438134567276. +[I 2025-12-18 08:49:17,142] Trial 25 finished with value: -567.6412153267526 and parameters: {'embedding_dim': 423, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 22 with value: -42.28438134567276. +[I 2025-12-18 08:49:54,993] Trial 26 finished with value: -383.95507439641915 and parameters: {'embedding_dim': 134, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 22 with value: -42.28438134567276. +[I 2025-12-18 08:50:33,239] Trial 27 finished with value: -362.46413075747114 and parameters: {'embedding_dim': 485, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 22 with value: -42.28438134567276. +[I 2025-12-18 08:51:22,013] Trial 28 finished with value: -477.74448332477886 and parameters: {'embedding_dim': 355, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -42.28438134567276. +[I 2025-12-18 08:51:43,702] Trial 29 finished with value: -290.84008523165005 and parameters: {'embedding_dim': 308, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 22 with value: -42.28438134567276. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 08:52:15,503] A new study created in memory with name: no-name-9c4aab2d-59e0-4dd3-adef-d317d56dceea +[I 2025-12-18 08:53:01,567] Trial 0 finished with value: -57.15149884697763 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -57.15149884697763. +[I 2025-12-18 08:53:36,034] Trial 1 finished with value: -0.8104636190311557 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -0.8104636190311557. +[I 2025-12-18 08:53:42,290] Trial 2 finished with value: -22.105481683043017 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -0.8104636190311557. +[I 2025-12-18 08:54:04,665] Trial 3 finished with value: -44.94475880225106 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -0.8104636190311557. +[I 2025-12-18 08:54:38,834] Trial 4 finished with value: -0.2496333906720688 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 08:55:12,841] Trial 5 finished with value: -32.686814212743506 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 08:55:23,275] Trial 6 finished with value: -103.32963581868793 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 08:55:38,767] Trial 7 finished with value: -60.180060384662234 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 08:55:43,143] Trial 8 finished with value: -50.30420034812607 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 08:55:51,905] Trial 9 finished with value: -36.47698059800566 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 08:56:38,108] Trial 10 finished with value: -34.12072629048489 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 08:57:11,425] Trial 11 finished with value: -6.659918571859585 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 08:57:46,490] Trial 12 finished with value: -1.6613247421812487 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 08:58:20,790] Trial 13 finished with value: -18.746318245555134 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 08:59:07,507] Trial 14 finished with value: -5.345754534098697 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 08:59:17,784] Trial 15 finished with value: -112.50774387448048 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 08:59:51,764] Trial 16 finished with value: -5.202692560246912 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:00:13,692] Trial 17 finished with value: -85.35788849991519 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:00:22,474] Trial 18 finished with value: -29.109790998443213 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:00:38,070] Trial 19 finished with value: -17.96153937816174 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:01:11,656] Trial 20 finished with value: -163.3047578411191 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:01:45,511] Trial 21 finished with value: -15.924177922720073 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:02:19,322] Trial 22 finished with value: -33.046042517893994 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:02:53,153] Trial 23 finished with value: -6.8741041194408545 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:03:26,706] Trial 24 finished with value: -2.674684990255133 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:04:12,850] Trial 25 finished with value: -15.179345376174462 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:04:35,208] Trial 26 finished with value: -75.25520429156094 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:05:09,239] Trial 27 finished with value: -13.932076809262364 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:05:24,733] Trial 28 finished with value: -61.02275028035866 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:05:33,531] Trial 29 finished with value: -4.390558226657161 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:06:07,816] Trial 30 finished with value: -21.992632823809917 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:06:41,340] Trial 31 finished with value: -53.16025740103312 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:07:15,315] Trial 32 finished with value: -111.77696579709624 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:07:49,032] Trial 33 finished with value: -38.62048868163504 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:08:22,797] Trial 34 finished with value: -108.30118044971566 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:08:57,170] Trial 35 finished with value: -93.76791993889903 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:09:31,413] Trial 36 finished with value: -2.4484741347869954 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:09:35,636] Trial 37 finished with value: -189.35291540845606 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:09:51,017] Trial 38 finished with value: -15.352236897506463 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:10:24,685] Trial 39 finished with value: -34.17925149171786 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:10:46,316] Trial 40 finished with value: -36.836054227841856 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:11:21,040] Trial 41 finished with value: -13.940394589931426 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:11:54,624] Trial 42 finished with value: -19.233819770581114 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:12:28,160] Trial 43 finished with value: -19.84651746140245 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:13:01,921] Trial 44 finished with value: -4.170867636647317 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:13:08,246] Trial 45 finished with value: -71.55093676387698 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:13:41,613] Trial 46 finished with value: -0.9618804705354288 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:14:27,329] Trial 47 finished with value: -6.842874833657767 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:14:43,106] Trial 48 finished with value: -61.30207497596351 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:15:16,496] Trial 49 finished with value: -10.297277224885582 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -0.2496333906720688. +[I 2025-12-18 09:15:50,848] A new study created in memory with name: no-name-9622f1fa-3b1d-4367-b456-9b2d32e7e2af +[I 2025-12-18 09:16:12,348] Trial 0 finished with value: -766.4939225331451 and parameters: {'embedding_dim': 427, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -766.4939225331451. +[I 2025-12-18 09:16:33,441] Trial 1 finished with value: -1573.1537735772545 and parameters: {'embedding_dim': 427, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -766.4939225331451. +[I 2025-12-18 09:17:00,000] Trial 2 finished with value: -536.9436181286451 and parameters: {'embedding_dim': 264, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -536.9436181286451. +[I 2025-12-18 09:17:11,492] Trial 3 finished with value: -521.4823289519913 and parameters: {'embedding_dim': 181, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 3 with value: -521.4823289519913. +[I 2025-12-18 09:17:28,206] Trial 4 finished with value: -451.5645689078043 and parameters: {'embedding_dim': 206, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 4 with value: -451.5645689078043. +[I 2025-12-18 09:17:48,913] Trial 5 finished with value: -779.0947373004852 and parameters: {'embedding_dim': 308, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -451.5645689078043. +[I 2025-12-18 09:18:52,385] Trial 6 finished with value: -972.5061236904651 and parameters: {'embedding_dim': 424, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 4 with value: -451.5645689078043. +[I 2025-12-18 09:19:13,167] Trial 7 finished with value: -507.9039252811227 and parameters: {'embedding_dim': 251, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 4 with value: -451.5645689078043. +[I 2025-12-18 09:19:34,309] Trial 8 finished with value: -6633.699449008986 and parameters: {'embedding_dim': 310, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -451.5645689078043. +[I 2025-12-18 09:19:56,455] Trial 9 finished with value: -391.5023190075208 and parameters: {'embedding_dim': 206, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 9 with value: -391.5023190075208. +[I 2025-12-18 09:20:14,698] Trial 10 finished with value: -134.7271086139484 and parameters: {'embedding_dim': 143, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:20:32,195] Trial 11 finished with value: -551.1727020252787 and parameters: {'embedding_dim': 135, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:20:49,764] Trial 12 finished with value: -191.7090513931726 and parameters: {'embedding_dim': 132, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:21:07,773] Trial 13 finished with value: -287.6266733825859 and parameters: {'embedding_dim': 130, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:21:22,227] Trial 14 finished with value: -524.4580997971325 and parameters: {'embedding_dim': 170, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:21:39,806] Trial 15 finished with value: -2304.5379515596283 and parameters: {'embedding_dim': 358, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:21:53,867] Trial 16 finished with value: -742.7034628390768 and parameters: {'embedding_dim': 250, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:22:05,053] Trial 17 finished with value: -554.8793413157887 and parameters: {'embedding_dim': 498, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:22:23,850] Trial 18 finished with value: -476.16820244074455 and parameters: {'embedding_dim': 164, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:22:38,835] Trial 19 finished with value: -986.5348333804168 and parameters: {'embedding_dim': 224, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:22:50,523] Trial 20 finished with value: -1991.57589531955 and parameters: {'embedding_dim': 362, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:23:08,743] Trial 21 finished with value: -1416.3168474193742 and parameters: {'embedding_dim': 128, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:23:26,404] Trial 22 finished with value: -2441.3757523576132 and parameters: {'embedding_dim': 129, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:23:47,519] Trial 23 finished with value: -1549.0203576367308 and parameters: {'embedding_dim': 166, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:24:06,227] Trial 24 finished with value: -495.64895737412894 and parameters: {'embedding_dim': 194, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:24:21,006] Trial 25 finished with value: -2431.585399528839 and parameters: {'embedding_dim': 154, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:24:41,313] Trial 26 finished with value: -380.1787652692849 and parameters: {'embedding_dim': 236, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:24:59,318] Trial 27 finished with value: -1461.8738156933498 and parameters: {'embedding_dim': 150, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 10 with value: -134.7271086139484. +[I 2025-12-18 09:25:51,875] Trial 28 finished with value: -2.4881262762573906 and parameters: {'embedding_dim': 272, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 28 with value: -2.4881262762573906. +[I 2025-12-18 09:26:54,242] Trial 29 finished with value: -1056.5473098626583 and parameters: {'embedding_dim': 290, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 28 with value: -2.4881262762573906. +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_3_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_3_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_3_incheon.csv: Class 0=9124 | Class 1=7251 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_incheon.csv: Class 0=9431 | Class 1=9893 | Class 2=14595 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_3_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_3_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_3_seoul.csv: Class 0=10380 | Class 1=7769 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_seoul.csv: Class 0=10396 | Class 1=9424 | Class 2=15873 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_3_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_3_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_3_busan.csv: Class 0=10404 | Class 1=8351 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_busan.csv: Class 0=10464 | Class 1=9396 | Class 2=16439 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_3_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_3_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_3_daegu.csv: Class 0=10260 | Class 1=8680 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_daegu.csv: Class 0=10293 | Class 1=9278 | Class 2=16913 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_3_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_3_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_3_daejeon.csv: Class 0=10194 | Class 1=7720 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_daejeon.csv: Class 0=10279 | Class 1=9395 | Class 2=15784 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_10000_3_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_10000_3_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan10000_3_gwangju.csv: Class 0=10006 | Class 1=8338 +Saved ../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_gwangju.csv: Class 0=10057 | Class 1=9687 | Class 2=16144 + +=== Processing 20000 samples === +Running smotenc_ctgan_sample_20000_1.py... +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 09:27:50,290] A new study created in memory with name: no-name-9685d679-c887-4285-98f3-5f529cc3a61d +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +[I 2025-12-18 09:28:02,219] Trial 0 finished with value: -90.0526745437926 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -90.0526745437926. +[I 2025-12-18 09:28:06,730] Trial 1 finished with value: -24.81336231311588 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -24.81336231311588. +[I 2025-12-18 09:28:15,020] Trial 2 finished with value: -45.05874589885323 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -24.81336231311588. +[I 2025-12-18 09:28:23,648] Trial 3 finished with value: -24.477259800398606 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -24.477259800398606. +[I 2025-12-18 09:28:28,159] Trial 4 finished with value: -21.521544749615025 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -21.521544749615025. +[I 2025-12-18 09:28:36,485] Trial 5 finished with value: -93.22301180154084 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -21.521544749615025. +[I 2025-12-18 09:28:58,991] Trial 6 finished with value: -13.340734132179453 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 6 with value: -13.340734132179453. +[I 2025-12-18 09:29:09,828] Trial 7 finished with value: -125.81577432205277 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -13.340734132179453. +[I 2025-12-18 09:29:31,279] Trial 8 finished with value: -56.130060224179275 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 6 with value: -13.340734132179453. +[I 2025-12-18 09:29:38,045] Trial 9 finished with value: -68.15569553230331 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 6 with value: -13.340734132179453. +[I 2025-12-18 09:29:54,156] Trial 10 finished with value: -66.85607668372754 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -13.340734132179453. +[I 2025-12-18 09:30:10,264] Trial 11 finished with value: -151.35439134327981 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -13.340734132179453. +[I 2025-12-18 09:30:32,108] Trial 12 finished with value: -78.36972706101903 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 6 with value: -13.340734132179453. +[I 2025-12-18 09:30:48,655] Trial 13 finished with value: -43.520909983542296 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -13.340734132179453. +[I 2025-12-18 09:31:04,398] Trial 14 finished with value: -13.882267369994837 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -13.340734132179453. +[I 2025-12-18 09:31:20,255] Trial 15 finished with value: -59.84468607772392 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 6 with value: -13.340734132179453. +[I 2025-12-18 09:31:41,567] Trial 16 finished with value: -17.275938037249503 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 6 with value: -13.340734132179453. +[I 2025-12-18 09:31:57,268] Trial 17 finished with value: -12.32410817645884 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 17 with value: -12.32410817645884. +[I 2025-12-18 09:32:13,863] Trial 18 finished with value: -11.20085818722193 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 18 with value: -11.20085818722193. +[I 2025-12-18 09:32:47,574] Trial 19 finished with value: -35.08183357684971 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -11.20085818722193. +[I 2025-12-18 09:33:03,371] Trial 20 finished with value: -5.7597308636668405 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 20 with value: -5.7597308636668405. +[I 2025-12-18 09:33:18,967] Trial 21 finished with value: -110.25855559227756 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 20 with value: -5.7597308636668405. +[I 2025-12-18 09:33:34,615] Trial 22 finished with value: -71.0989422611765 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 20 with value: -5.7597308636668405. +[I 2025-12-18 09:33:50,297] Trial 23 finished with value: -16.403744347366775 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 20 with value: -5.7597308636668405. +[I 2025-12-18 09:34:06,020] Trial 24 finished with value: -151.245865846103 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 20 with value: -5.7597308636668405. +[I 2025-12-18 09:34:21,830] Trial 25 finished with value: -8.071358674743003 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 20 with value: -5.7597308636668405. +[I 2025-12-18 09:34:55,518] Trial 26 finished with value: -103.58774426659338 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 20 with value: -5.7597308636668405. +[I 2025-12-18 09:35:06,110] Trial 27 finished with value: -3.873135430231117 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:35:16,569] Trial 28 finished with value: -82.3538520162795 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:35:27,154] Trial 29 finished with value: -12.51620174150758 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:35:49,082] Trial 30 finished with value: -366.37587917953834 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:36:04,971] Trial 31 finished with value: -17.381872506622976 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:36:15,550] Trial 32 finished with value: -96.11361742526006 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:36:37,186] Trial 33 finished with value: -8.784368105547069 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:36:58,402] Trial 34 finished with value: -23.716370602291057 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:37:19,363] Trial 35 finished with value: -8.46336039614015 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:37:27,574] Trial 36 finished with value: -7.025401521510638 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:37:36,439] Trial 37 finished with value: -48.40976647291503 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:37:44,797] Trial 38 finished with value: -114.55977300678185 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:37:49,386] Trial 39 finished with value: -168.85410127392964 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:37:58,139] Trial 40 finished with value: -18.055042010927327 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:38:06,878] Trial 41 finished with value: -13.114798322890085 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 27 with value: -3.873135430231117. +[I 2025-12-18 09:38:15,111] Trial 42 finished with value: -1.1364699647335617 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 42 with value: -1.1364699647335617. +[I 2025-12-18 09:38:23,963] Trial 43 finished with value: -11.737347867776991 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 42 with value: -1.1364699647335617. +[I 2025-12-18 09:38:32,574] Trial 44 finished with value: -9.869425517916147 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 42 with value: -1.1364699647335617. +[I 2025-12-18 09:38:40,791] Trial 45 finished with value: -24.222803759572635 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 42 with value: -1.1364699647335617. +[I 2025-12-18 09:38:49,202] Trial 46 finished with value: -28.515215435678726 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 42 with value: -1.1364699647335617. +[I 2025-12-18 09:38:55,437] Trial 47 finished with value: -71.88643527551733 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 42 with value: -1.1364699647335617. +[I 2025-12-18 09:38:59,829] Trial 48 finished with value: -13.313421273610714 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 42 with value: -1.1364699647335617. +[I 2025-12-18 09:39:34,050] Trial 49 finished with value: -11.784755027098196 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 42 with value: -1.1364699647335617. +[I 2025-12-18 09:39:42,656] A new study created in memory with name: no-name-7df09cb9-6175-4337-8c41-ea703c8fa0d1 +[I 2025-12-18 09:40:19,089] Trial 0 finished with value: -461.1343936835058 and parameters: {'embedding_dim': 152, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -461.1343936835058. +[I 2025-12-18 09:40:39,566] Trial 1 finished with value: -323.5387196231581 and parameters: {'embedding_dim': 222, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 1 with value: -323.5387196231581. +[I 2025-12-18 09:40:55,179] Trial 2 finished with value: -717.2755807920195 and parameters: {'embedding_dim': 224, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 1 with value: -323.5387196231581. +[I 2025-12-18 09:43:00,138] Trial 3 finished with value: -426.394387969043 and parameters: {'embedding_dim': 437, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -323.5387196231581. +[I 2025-12-18 09:44:03,126] Trial 4 finished with value: -1933.1020592243117 and parameters: {'embedding_dim': 330, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -323.5387196231581. +[I 2025-12-18 09:45:25,371] Trial 5 finished with value: -425.9288262870122 and parameters: {'embedding_dim': 322, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -323.5387196231581. +[I 2025-12-18 09:45:53,218] Trial 6 finished with value: -322.54805610707746 and parameters: {'embedding_dim': 448, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 6 with value: -322.54805610707746. +[I 2025-12-18 09:46:27,105] Trial 7 finished with value: -547.8441289738392 and parameters: {'embedding_dim': 401, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -322.54805610707746. +[I 2025-12-18 09:47:02,563] Trial 8 finished with value: -1274.6909969971705 and parameters: {'embedding_dim': 348, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -322.54805610707746. +[I 2025-12-18 09:47:16,638] Trial 9 finished with value: -732.3366524753702 and parameters: {'embedding_dim': 472, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 6 with value: -322.54805610707746. +[I 2025-12-18 09:47:42,999] Trial 10 finished with value: -291.6146041616974 and parameters: {'embedding_dim': 496, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 10 with value: -291.6146041616974. +[I 2025-12-18 09:48:09,968] Trial 11 finished with value: -670.6337849019928 and parameters: {'embedding_dim': 497, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 10 with value: -291.6146041616974. +[I 2025-12-18 09:48:43,634] Trial 12 finished with value: -833.9360066307005 and parameters: {'embedding_dim': 410, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 10 with value: -291.6146041616974. +[I 2025-12-18 09:49:11,753] Trial 13 finished with value: -380.05477478103865 and parameters: {'embedding_dim': 505, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 10 with value: -291.6146041616974. +[I 2025-12-18 09:49:51,907] Trial 14 finished with value: -183.55292246042757 and parameters: {'embedding_dim': 449, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 14 with value: -183.55292246042757. +[I 2025-12-18 09:51:53,983] Trial 15 finished with value: -132.09248298244827 and parameters: {'embedding_dim': 378, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -132.09248298244827. +[I 2025-12-18 09:53:57,570] Trial 16 finished with value: -401.19925292662265 and parameters: {'embedding_dim': 383, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -132.09248298244827. +[I 2025-12-18 09:55:59,291] Trial 17 finished with value: -236.6254690546961 and parameters: {'embedding_dim': 282, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -132.09248298244827. +[I 2025-12-18 09:58:03,113] Trial 18 finished with value: -300.17516059936867 and parameters: {'embedding_dim': 364, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 15 with value: -132.09248298244827. +[I 2025-12-18 09:59:46,038] Trial 19 finished with value: -39.16007395168329 and parameters: {'embedding_dim': 283, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 19 with value: -39.16007395168329. +[I 2025-12-18 10:01:27,602] Trial 20 finished with value: -1493.9199005988164 and parameters: {'embedding_dim': 284, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 19 with value: -39.16007395168329. +[I 2025-12-18 10:03:31,497] Trial 21 finished with value: -30.64733086694374 and parameters: {'embedding_dim': 275, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 21 with value: -30.64733086694374. +[I 2025-12-18 10:05:12,228] Trial 22 finished with value: -354.4495804048223 and parameters: {'embedding_dim': 273, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 21 with value: -30.64733086694374. +[I 2025-12-18 10:07:14,996] Trial 23 finished with value: -50.38333509310528 and parameters: {'embedding_dim': 236, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 21 with value: -30.64733086694374. +[I 2025-12-18 10:08:57,255] Trial 24 finished with value: -1040.1507595618211 and parameters: {'embedding_dim': 219, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 21 with value: -30.64733086694374. +[I 2025-12-18 10:11:00,310] Trial 25 finished with value: -189.5882583133951 and parameters: {'embedding_dim': 174, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 21 with value: -30.64733086694374. +[I 2025-12-18 10:12:44,326] Trial 26 finished with value: -796.2559078855655 and parameters: {'embedding_dim': 251, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 21 with value: -30.64733086694374. +[I 2025-12-18 10:14:46,359] Trial 27 finished with value: -432.83725507376033 and parameters: {'embedding_dim': 185, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 21 with value: -30.64733086694374. +[I 2025-12-18 10:16:29,190] Trial 28 finished with value: -996.5304657231666 and parameters: {'embedding_dim': 257, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 21 with value: -30.64733086694374. +[I 2025-12-18 10:17:43,056] Trial 29 finished with value: -553.4764918345136 and parameters: {'embedding_dim': 151, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 21 with value: -30.64733086694374. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 10:19:48,509] A new study created in memory with name: no-name-08efbcdf-fd9b-407c-9d92-ed6545cb6661 +[I 2025-12-18 10:19:53,160] Trial 0 finished with value: -8.565636657690174 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -8.565636657690174. +[I 2025-12-18 10:20:15,054] Trial 1 finished with value: -23.29437385117685 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -8.565636657690174. +[I 2025-12-18 10:20:48,869] Trial 2 finished with value: -6.3860656048497315 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -6.3860656048497315. +[I 2025-12-18 10:21:04,826] Trial 3 finished with value: -14.087060798521795 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -6.3860656048497315. +[I 2025-12-18 10:21:11,108] Trial 4 finished with value: -11.166328727456031 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -6.3860656048497315. +[I 2025-12-18 10:21:21,232] Trial 5 finished with value: -4.765507566477034 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -4.765507566477034. +[I 2025-12-18 10:21:31,692] Trial 6 finished with value: -4.626740344451417 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -4.626740344451417. +[I 2025-12-18 10:21:41,922] Trial 7 finished with value: -5.345432087257096 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -4.626740344451417. +[I 2025-12-18 10:21:52,096] Trial 8 finished with value: -13.07371854061127 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -4.626740344451417. +[I 2025-12-18 10:22:26,258] Trial 9 finished with value: -1.5079378128791547 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 9 with value: -1.5079378128791547. +[I 2025-12-18 10:23:11,934] Trial 10 finished with value: -3.0758668657125914 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 9 with value: -1.5079378128791547. +[I 2025-12-18 10:23:57,594] Trial 11 finished with value: -12.10471904879748 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 9 with value: -1.5079378128791547. +[I 2025-12-18 10:24:43,119] Trial 12 finished with value: -13.769379062358158 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 9 with value: -1.5079378128791547. +[I 2025-12-18 10:25:29,515] Trial 13 finished with value: -1.7585860397450892 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 9 with value: -1.5079378128791547. +[I 2025-12-18 10:26:15,555] Trial 14 finished with value: -13.914678053170253 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 9 with value: -1.5079378128791547. +[I 2025-12-18 10:26:49,180] Trial 15 finished with value: -15.25473798226398 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 9 with value: -1.5079378128791547. +[I 2025-12-18 10:27:23,214] Trial 16 finished with value: -8.07004559264604 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 9 with value: -1.5079378128791547. +[I 2025-12-18 10:27:31,968] Trial 17 finished with value: -3.5894127162933955 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 9 with value: -1.5079378128791547. +[I 2025-12-18 10:28:05,785] Trial 18 finished with value: -0.21830717941641856 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.21830717941641856. +[I 2025-12-18 10:28:39,494] Trial 19 finished with value: -15.535366913841669 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.21830717941641856. +[I 2025-12-18 10:28:46,023] Trial 20 finished with value: -11.73755849405789 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -0.21830717941641856. +[I 2025-12-18 10:29:19,643] Trial 21 finished with value: -6.362887643991247 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 18 with value: -0.21830717941641856. +[I 2025-12-18 10:29:53,712] Trial 22 finished with value: -0.09009233584072066 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:30:27,472] Trial 23 finished with value: -13.2716394340983 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:31:01,665] Trial 24 finished with value: -2.039525281401156 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:31:35,466] Trial 25 finished with value: -1.035821909203739 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:32:09,406] Trial 26 finished with value: -7.971368191218727 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:32:43,102] Trial 27 finished with value: -11.32685916179991 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:32:49,491] Trial 28 finished with value: -25.252928475512405 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:33:11,482] Trial 29 finished with value: -8.338893348043706 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:33:18,064] Trial 30 finished with value: -19.644705722205074 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:33:51,686] Trial 31 finished with value: -5.800196313436041 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:34:25,238] Trial 32 finished with value: -6.9776310489545 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:34:59,121] Trial 33 finished with value: -7.730638753563881 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:35:32,560] Trial 34 finished with value: -1.7410174192630776 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:36:06,259] Trial 35 finished with value: -4.695535862801003 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:36:39,786] Trial 36 finished with value: -9.6339623640415 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:36:50,171] Trial 37 finished with value: -13.14353492615475 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:37:11,913] Trial 38 finished with value: -3.8960863972841655 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:37:27,854] Trial 39 finished with value: -32.3545661535116 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:38:01,654] Trial 40 finished with value: -2.7392356575176167 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:38:35,981] Trial 41 finished with value: -1.6764352260854596 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:39:09,932] Trial 42 finished with value: -4.493176716790468 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:39:43,454] Trial 43 finished with value: -7.121143511836253 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:40:17,218] Trial 44 finished with value: -0.861515613926685 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:40:33,538] Trial 45 finished with value: -4.035095575953854 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:41:19,445] Trial 46 finished with value: -2.176082186313454 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:41:53,383] Trial 47 finished with value: -5.258503494405822 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:41:57,658] Trial 48 finished with value: -31.87718079535056 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:42:31,176] Trial 49 finished with value: -1.3419132611861986 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 22 with value: -0.09009233584072066. +[I 2025-12-18 10:43:05,684] A new study created in memory with name: no-name-f68c8a26-eb7e-4f59-bbba-c498eabbe6f3 +[I 2025-12-18 10:43:29,360] Trial 0 finished with value: -955.9760089768961 and parameters: {'embedding_dim': 158, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -955.9760089768961. +[I 2025-12-18 10:43:44,542] Trial 1 finished with value: -287.77769892524884 and parameters: {'embedding_dim': 271, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 1 with value: -287.77769892524884. +[I 2025-12-18 10:44:26,042] Trial 2 finished with value: -239.75703322701165 and parameters: {'embedding_dim': 445, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:44:56,009] Trial 3 finished with value: -636.6389784089608 and parameters: {'embedding_dim': 337, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:45:17,508] Trial 4 finished with value: -351.1149608714277 and parameters: {'embedding_dim': 371, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:46:29,586] Trial 5 finished with value: -937.2773771458402 and parameters: {'embedding_dim': 437, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:46:57,349] Trial 6 finished with value: -4298.3776705088385 and parameters: {'embedding_dim': 159, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:47:34,413] Trial 7 finished with value: -639.4542070716807 and parameters: {'embedding_dim': 143, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:48:47,019] Trial 8 finished with value: -1716.5962298727559 and parameters: {'embedding_dim': 398, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:50:14,063] Trial 9 finished with value: -610.5575642519884 and parameters: {'embedding_dim': 241, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:50:43,148] Trial 10 finished with value: -859.2079393602053 and parameters: {'embedding_dim': 498, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:50:55,341] Trial 11 finished with value: -448.0040155157159 and parameters: {'embedding_dim': 262, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:51:07,502] Trial 12 finished with value: -1946.3540046745015 and parameters: {'embedding_dim': 268, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:51:22,145] Trial 13 finished with value: -558.850640398731 and parameters: {'embedding_dim': 471, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:51:34,811] Trial 14 finished with value: -1710.0345717581208 and parameters: {'embedding_dim': 305, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:52:33,142] Trial 15 finished with value: -329.31353156646315 and parameters: {'embedding_dim': 214, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:52:42,466] Trial 16 finished with value: -294.19099638302527 and parameters: {'embedding_dim': 416, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:52:54,219] Trial 17 finished with value: -537.2384255037832 and parameters: {'embedding_dim': 331, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:53:53,041] Trial 18 finished with value: -580.524480860813 and parameters: {'embedding_dim': 213, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:54:31,427] Trial 19 finished with value: -739.3217540654598 and parameters: {'embedding_dim': 365, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:54:43,375] Trial 20 finished with value: -347.8257153408904 and parameters: {'embedding_dim': 297, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:54:52,682] Trial 21 finished with value: -1731.7456805552322 and parameters: {'embedding_dim': 428, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:55:02,264] Trial 22 finished with value: -325.60251877546153 and parameters: {'embedding_dim': 449, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:55:11,891] Trial 23 finished with value: -1621.757487490502 and parameters: {'embedding_dim': 511, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:55:24,141] Trial 24 finished with value: -881.3104552722527 and parameters: {'embedding_dim': 402, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:55:52,689] Trial 25 finished with value: -1033.1938047846838 and parameters: {'embedding_dim': 471, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:56:07,397] Trial 26 finished with value: -467.0402722242602 and parameters: {'embedding_dim': 404, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:56:19,147] Trial 27 finished with value: -1684.4651506513428 and parameters: {'embedding_dim': 364, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:56:34,910] Trial 28 finished with value: -799.6908666209808 and parameters: {'embedding_dim': 481, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 2 with value: -239.75703322701165. +[I 2025-12-18 10:57:32,823] Trial 29 finished with value: -556.4493022221993 and parameters: {'embedding_dim': 286, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -239.75703322701165. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 10:58:18,363] A new study created in memory with name: no-name-2e6cdc8d-28d8-4ffc-ae98-27029615ff19 +[I 2025-12-18 10:58:34,453] Trial 0 finished with value: -7.196421109404462 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -7.196421109404462. +[I 2025-12-18 10:58:50,642] Trial 1 finished with value: -4.092249053435873 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -4.092249053435873. +[I 2025-12-18 10:59:01,111] Trial 2 finished with value: -77.31826945064789 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -4.092249053435873. +[I 2025-12-18 10:59:23,080] Trial 3 finished with value: -3.88395373715308 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -3.88395373715308. +[I 2025-12-18 10:59:31,465] Trial 4 finished with value: -18.257041161655938 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -3.88395373715308. +[I 2025-12-18 11:00:18,659] Trial 5 finished with value: -4.2824684496179195 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -3.88395373715308. +[I 2025-12-18 11:00:27,223] Trial 6 finished with value: -7.558779576685351 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -3.88395373715308. +[I 2025-12-18 11:00:48,734] Trial 7 finished with value: -9.317779942815863 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -3.88395373715308. +[I 2025-12-18 11:00:53,049] Trial 8 finished with value: -8.737809218372352 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -3.88395373715308. +[I 2025-12-18 11:01:01,327] Trial 9 finished with value: -73.88040371413958 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -3.88395373715308. +[I 2025-12-18 11:01:36,134] Trial 10 finished with value: -2.7360740735337403 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -2.7360740735337403. +[I 2025-12-18 11:02:09,860] Trial 11 finished with value: -47.94334577229303 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -2.7360740735337403. +[I 2025-12-18 11:02:43,836] Trial 12 finished with value: -5.581827710063302 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -2.7360740735337403. +[I 2025-12-18 11:03:05,591] Trial 13 finished with value: -21.40587544724879 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 10 with value: -2.7360740735337403. +[I 2025-12-18 11:03:21,601] Trial 14 finished with value: -5.924987340382743 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -2.7360740735337403. +[I 2025-12-18 11:03:55,754] Trial 15 finished with value: -0.48670606734453775 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:04:29,687] Trial 16 finished with value: -1.8793184322737195 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:04:51,538] Trial 17 finished with value: -19.504923113277535 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:05:25,240] Trial 18 finished with value: -41.87694493899503 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:05:46,895] Trial 19 finished with value: -12.942441886719593 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:06:20,955] Trial 20 finished with value: -2.0663661016187604 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:06:54,722] Trial 21 finished with value: -8.395709668594327 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:07:29,459] Trial 22 finished with value: -8.317236498684323 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:08:03,643] Trial 23 finished with value: -1.1179484285212395 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:08:37,303] Trial 24 finished with value: -0.4918609214420142 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:09:11,050] Trial 25 finished with value: -3.008888409217562 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:09:32,688] Trial 26 finished with value: -14.353704693397999 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:10:07,419] Trial 27 finished with value: -0.6865724531015879 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:10:43,032] Trial 28 finished with value: -4.956543849338516 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:10:49,671] Trial 29 finished with value: -9.941078565450171 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:11:23,797] Trial 30 finished with value: -5.521813269552505 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.48670606734453775. +[I 2025-12-18 11:11:57,765] Trial 31 finished with value: -0.05567726462356086 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:12:32,037] Trial 32 finished with value: -23.978218953019844 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:13:05,838] Trial 33 finished with value: -10.365245364476731 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:13:21,694] Trial 34 finished with value: -12.081248251227622 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:13:56,124] Trial 35 finished with value: -3.997854520411562 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:14:41,924] Trial 36 finished with value: -0.8555940262990543 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:14:52,418] Trial 37 finished with value: -19.99894085399155 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:15:37,803] Trial 38 finished with value: -23.100148796905298 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:15:44,156] Trial 39 finished with value: -16.97384487208463 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:16:00,193] Trial 40 finished with value: -4.740560044185237 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:16:45,983] Trial 41 finished with value: -1.5820539391148394 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:17:32,413] Trial 42 finished with value: -13.538107414163028 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:18:19,366] Trial 43 finished with value: -2.4153926143648925 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:19:05,239] Trial 44 finished with value: -0.9731299549857014 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:19:11,760] Trial 45 finished with value: -3.6290895072424263 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:19:46,403] Trial 46 finished with value: -10.066818008322226 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:20:32,183] Trial 47 finished with value: -18.08734448606895 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:21:05,997] Trial 48 finished with value: -2.4243744556187607 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:21:51,524] Trial 49 finished with value: -4.511573264470318 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 31 with value: -0.05567726462356086. +[I 2025-12-18 11:22:26,836] A new study created in memory with name: no-name-6811053d-cc61-434a-b135-8467a356f801 +[I 2025-12-18 11:22:33,550] Trial 0 finished with value: -1446.7471907582474 and parameters: {'embedding_dim': 414, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 0 with value: -1446.7471907582474. +[I 2025-12-18 11:22:43,173] Trial 1 finished with value: -334.22588396151986 and parameters: {'embedding_dim': 363, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -334.22588396151986. +[I 2025-12-18 11:22:52,284] Trial 2 finished with value: -2370.867421053069 and parameters: {'embedding_dim': 308, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 1 with value: -334.22588396151986. +[I 2025-12-18 11:23:08,569] Trial 3 finished with value: -1137.3164757402576 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -334.22588396151986. +[I 2025-12-18 11:23:27,582] Trial 4 finished with value: -168.07932684918336 and parameters: {'embedding_dim': 185, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:23:37,858] Trial 5 finished with value: -1552.7981382462092 and parameters: {'embedding_dim': 294, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:23:48,945] Trial 6 finished with value: -4367.486140855198 and parameters: {'embedding_dim': 319, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:24:05,840] Trial 7 finished with value: -287.33092267768143 and parameters: {'embedding_dim': 311, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:24:32,501] Trial 8 finished with value: -498.92402256206316 and parameters: {'embedding_dim': 370, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:24:47,755] Trial 9 finished with value: -481.88063030152824 and parameters: {'embedding_dim': 393, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:25:20,322] Trial 10 finished with value: -229.46826014934317 and parameters: {'embedding_dim': 162, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:25:52,179] Trial 11 finished with value: -433.9003181752108 and parameters: {'embedding_dim': 164, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:26:29,974] Trial 12 finished with value: -1185.8672388593407 and parameters: {'embedding_dim': 217, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:27:01,724] Trial 13 finished with value: -1301.1612243765992 and parameters: {'embedding_dim': 505, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:27:28,609] Trial 14 finished with value: -354.644274022189 and parameters: {'embedding_dim': 220, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:28:00,491] Trial 15 finished with value: -1533.5532667725374 and parameters: {'embedding_dim': 225, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:28:20,288] Trial 16 finished with value: -1256.676135457115 and parameters: {'embedding_dim': 170, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:28:57,995] Trial 17 finished with value: -971.3778471368673 and parameters: {'embedding_dim': 253, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:29:11,723] Trial 18 finished with value: -264.5258127067282 and parameters: {'embedding_dim': 130, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:29:36,347] Trial 19 finished with value: -371.7618803653953 and parameters: {'embedding_dim': 172, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:30:02,356] Trial 20 finished with value: -1741.9825320690086 and parameters: {'embedding_dim': 262, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:30:15,524] Trial 21 finished with value: -4104.371214200635 and parameters: {'embedding_dim': 154, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:30:29,072] Trial 22 finished with value: -1147.7367709975356 and parameters: {'embedding_dim': 198, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:30:48,252] Trial 23 finished with value: -214.22982394030439 and parameters: {'embedding_dim': 132, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:31:07,434] Trial 24 finished with value: -1783.7287171582946 and parameters: {'embedding_dim': 192, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:31:28,255] Trial 25 finished with value: -1056.2802194333062 and parameters: {'embedding_dim': 269, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:31:53,659] Trial 26 finished with value: -1024.3330718341492 and parameters: {'embedding_dim': 145, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:32:25,444] Trial 27 finished with value: -1313.5827704109429 and parameters: {'embedding_dim': 190, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:32:35,973] Trial 28 finished with value: -870.6664827103857 and parameters: {'embedding_dim': 231, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -168.07932684918336. +[I 2025-12-18 11:32:42,541] Trial 29 finished with value: -6199.069134103073 and parameters: {'embedding_dim': 474, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 4 with value: -168.07932684918336. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 11:33:03,790] A new study created in memory with name: no-name-2d76059e-8320-49fc-8652-91f6e904f034 +[I 2025-12-18 11:33:49,400] Trial 0 finished with value: -5.032276326518579 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -5.032276326518579. +[I 2025-12-18 11:34:10,905] Trial 1 finished with value: -7.0709471862980875 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -5.032276326518579. +[I 2025-12-18 11:34:45,491] Trial 2 finished with value: -112.23368266603211 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -5.032276326518579. +[I 2025-12-18 11:35:06,989] Trial 3 finished with value: -30.834032644049138 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -5.032276326518579. +[I 2025-12-18 11:35:40,758] Trial 4 finished with value: -35.51742680610112 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -5.032276326518579. +[I 2025-12-18 11:35:45,345] Trial 5 finished with value: -63.43202384058277 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -5.032276326518579. +[I 2025-12-18 11:35:53,851] Trial 6 finished with value: -50.14779409223502 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -5.032276326518579. +[I 2025-12-18 11:36:00,382] Trial 7 finished with value: -6.9490215086362745 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -5.032276326518579. +[I 2025-12-18 11:36:21,569] Trial 8 finished with value: -21.810642207316057 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -5.032276326518579. +[I 2025-12-18 11:36:25,929] Trial 9 finished with value: -26.055431671987996 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -5.032276326518579. +[I 2025-12-18 11:37:11,580] Trial 10 finished with value: -16.176645480650095 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -5.032276326518579. +[I 2025-12-18 11:37:44,732] Trial 11 finished with value: -15.159670153591383 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -5.032276326518579. +[I 2025-12-18 11:37:51,303] Trial 12 finished with value: -4.054667346328274 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -4.054667346328274. +[I 2025-12-18 11:37:55,708] Trial 13 finished with value: -13.031047831509312 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 12 with value: -4.054667346328274. +[I 2025-12-18 11:38:29,466] Trial 14 finished with value: -42.38571747572448 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 12 with value: -4.054667346328274. +[I 2025-12-18 11:38:35,960] Trial 15 finished with value: -3.4095220168106515 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:38:42,169] Trial 16 finished with value: -21.60371093808588 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:38:46,691] Trial 17 finished with value: -132.12576450207536 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:38:53,155] Trial 18 finished with value: -98.97428648249024 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:38:57,593] Trial 19 finished with value: -36.399794159856434 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:39:04,004] Trial 20 finished with value: -15.97877987459836 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:39:49,337] Trial 21 finished with value: -5.86436884546128 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:40:22,662] Trial 22 finished with value: -42.741349779959066 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:40:38,624] Trial 23 finished with value: -20.333342677040207 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:40:46,736] Trial 24 finished with value: -12.396330204029494 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:41:19,806] Trial 25 finished with value: -53.8500099443269 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:41:26,234] Trial 26 finished with value: -9.674183303484018 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:41:35,066] Trial 27 finished with value: -6.509671434731967 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:41:50,792] Trial 28 finished with value: -7.646087759413489 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:42:35,742] Trial 29 finished with value: -45.88845882156389 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:42:56,554] Trial 30 finished with value: -34.42327783189484 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:43:41,709] Trial 31 finished with value: -9.495343716882388 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -3.4095220168106515. +[I 2025-12-18 11:44:26,910] Trial 32 finished with value: -2.9858813168011276 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 32 with value: -2.9858813168011276. +[I 2025-12-18 11:45:12,623] Trial 33 finished with value: -12.835697650642198 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 32 with value: -2.9858813168011276. +[I 2025-12-18 11:45:46,197] Trial 34 finished with value: -38.67272015774775 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -2.9858813168011276. +[I 2025-12-18 11:46:31,311] Trial 35 finished with value: -36.682876526312555 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 32 with value: -2.9858813168011276. +[I 2025-12-18 11:47:04,575] Trial 36 finished with value: -4.081291154762358 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -2.9858813168011276. +[I 2025-12-18 11:47:37,875] Trial 37 finished with value: -86.01961714671006 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -2.9858813168011276. +[I 2025-12-18 11:47:44,138] Trial 38 finished with value: -57.860855821773384 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 32 with value: -2.9858813168011276. +[I 2025-12-18 11:48:17,559] Trial 39 finished with value: -31.127995209339872 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -2.9858813168011276. +[I 2025-12-18 11:48:33,243] Trial 40 finished with value: -12.646247864092038 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 32 with value: -2.9858813168011276. +[I 2025-12-18 11:49:18,780] Trial 41 finished with value: -6.22757584918169 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 32 with value: -2.9858813168011276. +[I 2025-12-18 11:49:52,192] Trial 42 finished with value: -40.820329826626335 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 32 with value: -2.9858813168011276. +[I 2025-12-18 11:50:37,473] Trial 43 finished with value: -1.7058871599196865 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 43 with value: -1.7058871599196865. +[I 2025-12-18 11:50:58,971] Trial 44 finished with value: -63.84092818195006 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 43 with value: -1.7058871599196865. +[I 2025-12-18 11:51:05,167] Trial 45 finished with value: -65.8535839613009 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 43 with value: -1.7058871599196865. +[I 2025-12-18 11:51:50,869] Trial 46 finished with value: -7.21328321864301 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 43 with value: -1.7058871599196865. +[I 2025-12-18 11:51:57,325] Trial 47 finished with value: -27.149051050475514 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 43 with value: -1.7058871599196865. +[I 2025-12-18 11:52:42,593] Trial 48 finished with value: -10.84920878046513 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 43 with value: -1.7058871599196865. +[I 2025-12-18 11:52:49,088] Trial 49 finished with value: -22.66230010776674 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 43 with value: -1.7058871599196865. +[I 2025-12-18 11:53:34,924] A new study created in memory with name: no-name-5e39979d-db97-4aa6-a69a-b3734cd6dad2 +[I 2025-12-18 11:53:49,329] Trial 0 finished with value: -501.52105059713017 and parameters: {'embedding_dim': 271, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -501.52105059713017. +[I 2025-12-18 11:54:03,476] Trial 1 finished with value: -732.1393954232519 and parameters: {'embedding_dim': 388, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -501.52105059713017. +[I 2025-12-18 11:54:14,382] Trial 2 finished with value: -499.1170439011835 and parameters: {'embedding_dim': 350, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -499.1170439011835. +[I 2025-12-18 11:54:25,158] Trial 3 finished with value: -429.09987175488413 and parameters: {'embedding_dim': 306, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 3 with value: -429.09987175488413. +[I 2025-12-18 11:54:32,435] Trial 4 finished with value: -2932.7489444825683 and parameters: {'embedding_dim': 204, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 3 with value: -429.09987175488413. +[I 2025-12-18 11:54:52,853] Trial 5 finished with value: -727.2666311874607 and parameters: {'embedding_dim': 133, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -429.09987175488413. +[I 2025-12-18 11:55:09,696] Trial 6 finished with value: -422.6872803536625 and parameters: {'embedding_dim': 465, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 6 with value: -422.6872803536625. +[I 2025-12-18 11:55:20,105] Trial 7 finished with value: -1308.2938605894515 and parameters: {'embedding_dim': 171, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 6 with value: -422.6872803536625. +[I 2025-12-18 11:55:31,285] Trial 8 finished with value: -410.98707651840374 and parameters: {'embedding_dim': 441, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 8 with value: -410.98707651840374. +[I 2025-12-18 11:55:44,325] Trial 9 finished with value: -6636.904634051171 and parameters: {'embedding_dim': 360, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 8 with value: -410.98707651840374. +[I 2025-12-18 11:56:08,965] Trial 10 finished with value: -195.03356478575023 and parameters: {'embedding_dim': 506, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 10 with value: -195.03356478575023. +[I 2025-12-18 11:56:34,879] Trial 11 finished with value: -155.73438271746303 and parameters: {'embedding_dim': 490, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -155.73438271746303. +[I 2025-12-18 11:57:00,637] Trial 12 finished with value: -735.7600078122962 and parameters: {'embedding_dim': 506, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -155.73438271746303. +[I 2025-12-18 11:57:25,946] Trial 13 finished with value: -296.8909980602943 and parameters: {'embedding_dim': 507, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -155.73438271746303. +[I 2025-12-18 11:57:52,568] Trial 14 finished with value: -235.40258846073837 and parameters: {'embedding_dim': 417, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -155.73438271746303. +[I 2025-12-18 11:58:30,263] Trial 15 finished with value: -170.51859775244242 and parameters: {'embedding_dim': 465, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 11 with value: -155.73438271746303. +[I 2025-12-18 11:59:09,737] Trial 16 finished with value: -115.94160610742135 and parameters: {'embedding_dim': 453, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 16 with value: -115.94160610742135. +[I 2025-12-18 11:59:49,159] Trial 17 finished with value: -119.50982484309944 and parameters: {'embedding_dim': 409, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 16 with value: -115.94160610742135. +[I 2025-12-18 12:00:28,141] Trial 18 finished with value: -85.19370940675135 and parameters: {'embedding_dim': 409, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -85.19370940675135. +[I 2025-12-18 12:01:07,000] Trial 19 finished with value: -93.21757505060219 and parameters: {'embedding_dim': 296, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -85.19370940675135. +[I 2025-12-18 12:01:41,526] Trial 20 finished with value: -116.88652990675449 and parameters: {'embedding_dim': 258, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 18 with value: -85.19370940675135. +[I 2025-12-18 12:02:20,604] Trial 21 finished with value: -116.83980584764512 and parameters: {'embedding_dim': 336, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 18 with value: -85.19370940675135. +[I 2025-12-18 12:02:58,062] Trial 22 finished with value: -75.3583372370781 and parameters: {'embedding_dim': 297, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 22 with value: -75.3583372370781. +[I 2025-12-18 12:03:31,303] Trial 23 finished with value: -190.6183231196841 and parameters: {'embedding_dim': 277, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 22 with value: -75.3583372370781. +[I 2025-12-18 12:04:08,158] Trial 24 finished with value: -119.23491515191232 and parameters: {'embedding_dim': 234, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 22 with value: -75.3583372370781. +[I 2025-12-18 12:04:46,590] Trial 25 finished with value: -70.03301828709029 and parameters: {'embedding_dim': 308, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 25 with value: -70.03301828709029. +[I 2025-12-18 12:05:19,081] Trial 26 finished with value: -614.9359742863861 and parameters: {'embedding_dim': 233, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 25 with value: -70.03301828709029. +[I 2025-12-18 12:05:56,639] Trial 27 finished with value: -510.979356762229 and parameters: {'embedding_dim': 380, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 25 with value: -70.03301828709029. +[I 2025-12-18 12:06:10,472] Trial 28 finished with value: -420.6615926087576 and parameters: {'embedding_dim': 314, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 25 with value: -70.03301828709029. +[I 2025-12-18 12:06:49,284] Trial 29 finished with value: -152.73277254410442 and parameters: {'embedding_dim': 331, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 25 with value: -70.03301828709029. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 12:07:30,367] A new study created in memory with name: no-name-ee3d87ed-46d7-4cea-84c8-598833bdc649 +[I 2025-12-18 12:07:46,230] Trial 0 finished with value: -23.43943107791736 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -23.43943107791736. +[I 2025-12-18 12:07:50,593] Trial 1 finished with value: -13.323227498368507 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -13.323227498368507. +[I 2025-12-18 12:08:00,901] Trial 2 finished with value: -83.2965996823834 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -13.323227498368507. +[I 2025-12-18 12:08:05,185] Trial 3 finished with value: -16.939213002112485 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -13.323227498368507. +[I 2025-12-18 12:08:09,559] Trial 4 finished with value: -65.18019810494519 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -13.323227498368507. +[I 2025-12-18 12:08:14,058] Trial 5 finished with value: -2.8274249085825214 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 5 with value: -2.8274249085825214. +[I 2025-12-18 12:08:35,753] Trial 6 finished with value: -79.6592540662736 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 5 with value: -2.8274249085825214. +[I 2025-12-18 12:08:44,236] Trial 7 finished with value: -41.64936692575566 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -2.8274249085825214. +[I 2025-12-18 12:09:06,207] Trial 8 finished with value: -3.2143147042426206 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 5 with value: -2.8274249085825214. +[I 2025-12-18 12:09:10,572] Trial 9 finished with value: -2.815235058410534 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 9 with value: -2.815235058410534. +[I 2025-12-18 12:09:26,975] Trial 10 finished with value: -0.2483506486280592 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -0.2483506486280592. +[I 2025-12-18 12:09:42,761] Trial 11 finished with value: -33.63161806842869 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -0.2483506486280592. +[I 2025-12-18 12:10:04,954] Trial 12 finished with value: -14.199159291880777 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -0.2483506486280592. +[I 2025-12-18 12:10:20,585] Trial 13 finished with value: -6.545075344394995 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 10 with value: -0.2483506486280592. +[I 2025-12-18 12:10:54,324] Trial 14 finished with value: -11.388514291143448 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 10 with value: -0.2483506486280592. +[I 2025-12-18 12:11:03,096] Trial 15 finished with value: -0.17893236907679497 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:11:24,122] Trial 16 finished with value: -7.657596110196105 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:11:45,263] Trial 17 finished with value: -2.4049237782618054 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:11:51,939] Trial 18 finished with value: -2.045015508860105 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:12:37,577] Trial 19 finished with value: -32.24462025844997 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:12:43,916] Trial 20 finished with value: -8.824545521092583 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:12:50,794] Trial 21 finished with value: -1.0898467913263814 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:12:57,382] Trial 22 finished with value: -2.002694365248246 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:13:03,816] Trial 23 finished with value: -4.433476327659208 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:13:12,596] Trial 24 finished with value: -11.965292188358752 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:13:28,953] Trial 25 finished with value: -1.3465471622582343 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:13:35,521] Trial 26 finished with value: -1.5286915082421713 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:13:43,858] Trial 27 finished with value: -2.0049927507251235 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:14:18,153] Trial 28 finished with value: -9.357491267726752 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:14:39,191] Trial 29 finished with value: -1.887070370382649 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:14:54,837] Trial 30 finished with value: -96.93639486348195 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:15:10,777] Trial 31 finished with value: -45.239039843554785 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:15:26,495] Trial 32 finished with value: -4.412295103981218 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:15:42,116] Trial 33 finished with value: -20.467122497609346 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:15:58,127] Trial 34 finished with value: -52.17613370009279 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:16:14,419] Trial 35 finished with value: -25.199313112148523 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:16:21,139] Trial 36 finished with value: -0.7584177923237565 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:16:27,976] Trial 37 finished with value: -17.904211842720986 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:16:32,531] Trial 38 finished with value: -0.7606564962319413 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:16:37,062] Trial 39 finished with value: -73.12657591858323 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:16:41,325] Trial 40 finished with value: -10.82526071898198 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:16:45,702] Trial 41 finished with value: -5.033660154436889 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:16:50,165] Trial 42 finished with value: -15.925321809781916 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:16:54,510] Trial 43 finished with value: -82.59889392421125 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:17:03,427] Trial 44 finished with value: -12.656252904753433 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:17:09,970] Trial 45 finished with value: -23.61940990527074 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:17:14,561] Trial 46 finished with value: -4.5674386026029365 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:17:21,042] Trial 47 finished with value: -134.57981095082494 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:18:06,807] Trial 48 finished with value: -23.93169903272179 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:18:13,507] Trial 49 finished with value: -21.23927473132215 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.17893236907679497. +[I 2025-12-18 12:18:22,352] A new study created in memory with name: no-name-37e3e520-d145-4126-ba3b-4a592166137d +[I 2025-12-18 12:19:33,864] Trial 0 finished with value: -341.4882155699237 and parameters: {'embedding_dim': 425, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -341.4882155699237. +[I 2025-12-18 12:19:55,275] Trial 1 finished with value: -388.59819553577364 and parameters: {'embedding_dim': 401, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -341.4882155699237. +[I 2025-12-18 12:20:07,220] Trial 2 finished with value: -521.9483427127407 and parameters: {'embedding_dim': 501, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -341.4882155699237. +[I 2025-12-18 12:20:55,066] Trial 3 finished with value: -398.32276001372554 and parameters: {'embedding_dim': 283, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -341.4882155699237. +[I 2025-12-18 12:21:16,041] Trial 4 finished with value: -251.49823879212227 and parameters: {'embedding_dim': 224, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -251.49823879212227. +[I 2025-12-18 12:21:38,897] Trial 5 finished with value: -644.159856334607 and parameters: {'embedding_dim': 389, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 4 with value: -251.49823879212227. +[I 2025-12-18 12:21:47,919] Trial 6 finished with value: -7698.731528748744 and parameters: {'embedding_dim': 322, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 4 with value: -251.49823879212227. +[I 2025-12-18 12:22:46,623] Trial 7 finished with value: -96.32167954558366 and parameters: {'embedding_dim': 379, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -96.32167954558366. +[I 2025-12-18 12:22:58,674] Trial 8 finished with value: -757.0920707114733 and parameters: {'embedding_dim': 226, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 7 with value: -96.32167954558366. +[I 2025-12-18 12:24:12,055] Trial 9 finished with value: -905.8784627361841 and parameters: {'embedding_dim': 503, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 7 with value: -96.32167954558366. +[I 2025-12-18 12:25:09,604] Trial 10 finished with value: -1597.3343692449687 and parameters: {'embedding_dim': 157, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -96.32167954558366. +[I 2025-12-18 12:26:22,454] Trial 11 finished with value: -13.134929380834466 and parameters: {'embedding_dim': 202, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:27:19,274] Trial 12 finished with value: -68.65058219811108 and parameters: {'embedding_dim': 327, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:28:32,355] Trial 13 finished with value: -329.6239514172345 and parameters: {'embedding_dim': 131, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:29:30,335] Trial 14 finished with value: -176.35213266803814 and parameters: {'embedding_dim': 304, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:30:42,623] Trial 15 finished with value: -39.610578714633064 and parameters: {'embedding_dim': 212, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:31:56,681] Trial 16 finished with value: -323.88710244698564 and parameters: {'embedding_dim': 211, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:32:34,173] Trial 17 finished with value: -326.89188928226355 and parameters: {'embedding_dim': 183, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:34:02,666] Trial 18 finished with value: -98.625697592608 and parameters: {'embedding_dim': 269, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:35:15,305] Trial 19 finished with value: -96.93921609416118 and parameters: {'embedding_dim': 255, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:35:31,779] Trial 20 finished with value: -1474.3134705032296 and parameters: {'embedding_dim': 172, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:36:29,023] Trial 21 finished with value: -162.058676672103 and parameters: {'embedding_dim': 338, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:37:27,256] Trial 22 finished with value: -705.8856502975223 and parameters: {'embedding_dim': 246, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:38:24,074] Trial 23 finished with value: -479.0960275194562 and parameters: {'embedding_dim': 357, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:39:37,504] Trial 24 finished with value: -44.06615728249505 and parameters: {'embedding_dim': 291, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:40:49,373] Trial 25 finished with value: -333.7937435830475 and parameters: {'embedding_dim': 193, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:42:18,105] Trial 26 finished with value: -309.3381822753248 and parameters: {'embedding_dim': 129, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:43:29,829] Trial 27 finished with value: -27.79323336511419 and parameters: {'embedding_dim': 291, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:44:07,881] Trial 28 finished with value: -288.31612163053217 and parameters: {'embedding_dim': 241, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 11 with value: -13.134929380834466. +[I 2025-12-18 12:45:36,578] Trial 29 finished with value: -204.7790076837752 and parameters: {'embedding_dim': 204, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 11 with value: -13.134929380834466. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 12:46:49,188] A new study created in memory with name: no-name-4bbcf5ec-7c89-4bd4-bfe3-f2b2369989c5 +[I 2025-12-18 12:47:34,901] Trial 0 finished with value: -28.333997814952824 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -28.333997814952824. +[I 2025-12-18 12:47:43,490] Trial 1 finished with value: -10.429628953261593 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -10.429628953261593. +[I 2025-12-18 12:47:59,256] Trial 2 finished with value: -24.58810215991719 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -10.429628953261593. +[I 2025-12-18 12:48:09,504] Trial 3 finished with value: -8.240742963354615 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:48:43,259] Trial 4 finished with value: -13.221116258845075 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:49:17,636] Trial 5 finished with value: -43.780930040115784 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:49:26,062] Trial 6 finished with value: -66.04295039478791 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:49:41,769] Trial 7 finished with value: -168.85516594656895 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:50:02,937] Trial 8 finished with value: -43.5366137481704 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:50:13,134] Trial 9 finished with value: -236.92806203255768 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:50:23,472] Trial 10 finished with value: -111.28477303074187 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:50:27,675] Trial 11 finished with value: -9.50905409871309 and parameters: {'embedding_dim': 65, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:50:31,889] Trial 12 finished with value: -81.2308324690413 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:50:36,271] Trial 13 finished with value: -54.91345988663974 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:50:40,472] Trial 14 finished with value: -149.3217194360121 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:50:50,552] Trial 15 finished with value: -69.11307267926605 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:50:54,789] Trial 16 finished with value: -163.20253496275257 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:51:10,363] Trial 17 finished with value: -274.5885544343172 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:51:14,751] Trial 18 finished with value: -189.4626345153619 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:51:49,047] Trial 19 finished with value: -107.9490940667337 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:51:53,292] Trial 20 finished with value: -23.438850385527402 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:52:01,869] Trial 21 finished with value: -14.518852673777968 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -8.240742963354615. +[I 2025-12-18 12:52:08,274] Trial 22 finished with value: -4.093094419735411 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -4.093094419735411. +[I 2025-12-18 12:52:14,833] Trial 23 finished with value: -1.0599729799780122 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 23 with value: -1.0599729799780122. +[I 2025-12-18 12:52:21,461] Trial 24 finished with value: -50.36530013845349 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 23 with value: -1.0599729799780122. +[I 2025-12-18 12:52:36,982] Trial 25 finished with value: -1.0227866588849692 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:52:43,526] Trial 26 finished with value: -56.68097372041162 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:52:59,409] Trial 27 finished with value: -10.448977788327973 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:53:33,025] Trial 28 finished with value: -7.863732279781882 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:53:39,591] Trial 29 finished with value: -6.473063776862572 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:54:25,524] Trial 30 finished with value: -1.3759430297718933 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:55:12,809] Trial 31 finished with value: -6.035879935076813 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:55:58,688] Trial 32 finished with value: -11.401663309428034 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:56:32,275] Trial 33 finished with value: -24.203484475762146 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:57:06,799] Trial 34 finished with value: -21.01756833176352 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:57:52,294] Trial 35 finished with value: -13.834156626409477 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:58:07,870] Trial 36 finished with value: -36.01561586407171 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:58:14,349] Trial 37 finished with value: -25.68832665757782 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:59:01,209] Trial 38 finished with value: -47.576690337928596 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:59:16,685] Trial 39 finished with value: -4.812338964822446 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:59:22,967] Trial 40 finished with value: -32.10505862068556 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:59:38,491] Trial 41 finished with value: -49.891854425215605 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 12:59:54,037] Trial 42 finished with value: -4.465037437727478 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 13:00:09,535] Trial 43 finished with value: -32.507065422330626 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 13:00:25,893] Trial 44 finished with value: -13.014815814001912 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 13:00:42,443] Trial 45 finished with value: -47.8811067078561 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 13:00:58,618] Trial 46 finished with value: -13.466333122372555 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 13:01:14,768] Trial 47 finished with value: -42.59184724320051 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 13:01:23,468] Trial 48 finished with value: -8.627529195503387 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 13:01:58,104] Trial 49 finished with value: -3.923479438710114 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 25 with value: -1.0227866588849692. +[I 2025-12-18 13:02:14,490] A new study created in memory with name: no-name-36f10bcf-fb15-4bbc-97c9-038c9ee5c696 +[I 2025-12-18 13:02:35,981] Trial 0 finished with value: -729.1798104442508 and parameters: {'embedding_dim': 366, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -729.1798104442508. +[I 2025-12-18 13:04:03,831] Trial 1 finished with value: -197.301851885394 and parameters: {'embedding_dim': 345, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:04:46,297] Trial 2 finished with value: -2733.5401518630597 and parameters: {'embedding_dim': 365, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:05:10,464] Trial 3 finished with value: -2186.404714319142 and parameters: {'embedding_dim': 476, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:05:33,676] Trial 4 finished with value: -280.85522654410045 and parameters: {'embedding_dim': 249, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:05:48,953] Trial 5 finished with value: -691.5595519539752 and parameters: {'embedding_dim': 508, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:07:01,334] Trial 6 finished with value: -231.90846637357095 and parameters: {'embedding_dim': 199, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:07:19,513] Trial 7 finished with value: -1826.1415094624008 and parameters: {'embedding_dim': 263, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:08:33,227] Trial 8 finished with value: -792.6582209507344 and parameters: {'embedding_dim': 461, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:08:52,528] Trial 9 finished with value: -623.5927137395771 and parameters: {'embedding_dim': 195, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:10:20,220] Trial 10 finished with value: -947.4414443381861 and parameters: {'embedding_dim': 396, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:11:48,389] Trial 11 finished with value: -592.2664278496835 and parameters: {'embedding_dim': 170, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:12:45,211] Trial 12 finished with value: -601.2849282152813 and parameters: {'embedding_dim': 269, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:13:56,726] Trial 13 finished with value: -294.9779516171467 and parameters: {'embedding_dim': 135, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:15:22,400] Trial 14 finished with value: -694.2022471443963 and parameters: {'embedding_dim': 301, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:15:51,325] Trial 15 finished with value: -653.8863063343971 and parameters: {'embedding_dim': 213, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:16:30,736] Trial 16 finished with value: -259.025938982341 and parameters: {'embedding_dim': 320, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:17:58,500] Trial 17 finished with value: -602.1953319640346 and parameters: {'embedding_dim': 403, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -197.301851885394. +[I 2025-12-18 13:18:56,607] Trial 18 finished with value: -50.64482216912764 and parameters: {'embedding_dim': 329, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -50.64482216912764. +[I 2025-12-18 13:19:26,661] Trial 19 finished with value: -387.21941216911387 and parameters: {'embedding_dim': 355, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 18 with value: -50.64482216912764. +[I 2025-12-18 13:19:55,891] Trial 20 finished with value: -213.83605313769135 and parameters: {'embedding_dim': 427, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -50.64482216912764. +[I 2025-12-18 13:20:24,049] Trial 21 finished with value: -1401.0015624894606 and parameters: {'embedding_dim': 327, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -50.64482216912764. +[I 2025-12-18 13:20:52,066] Trial 22 finished with value: -211.3755686186662 and parameters: {'embedding_dim': 422, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 18 with value: -50.64482216912764. +[I 2025-12-18 13:21:34,909] Trial 23 finished with value: -66.22212158958777 and parameters: {'embedding_dim': 426, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -50.64482216912764. +[I 2025-12-18 13:22:17,963] Trial 24 finished with value: -259.69893358021284 and parameters: {'embedding_dim': 297, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -50.64482216912764. +[I 2025-12-18 13:23:15,024] Trial 25 finished with value: -445.35707147672593 and parameters: {'embedding_dim': 343, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -50.64482216912764. +[I 2025-12-18 13:24:12,380] Trial 26 finished with value: -1380.614384754098 and parameters: {'embedding_dim': 461, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 18 with value: -50.64482216912764. +[I 2025-12-18 13:24:55,136] Trial 27 finished with value: -180.98860484698787 and parameters: {'embedding_dim': 382, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 18 with value: -50.64482216912764. +[I 2025-12-18 13:25:17,971] Trial 28 finished with value: -468.85110777199577 and parameters: {'embedding_dim': 391, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 18 with value: -50.64482216912764. +[I 2025-12-18 13:25:29,164] Trial 29 finished with value: -1304.0314266262633 and parameters: {'embedding_dim': 429, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 18 with value: -50.64482216912764. +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_1_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_1_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_1_incheon.csv: Class 0=18281 | Class 1=16738 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_incheon.csv: Class 0=18650 | Class 1=19335 | Class 2=14554 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_1_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_1_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_1_seoul.csv: Class 0=20028 | Class 1=16833 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_seoul.csv: Class 0=20061 | Class 1=18644 | Class 2=15676 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_1_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_1_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_1_busan.csv: Class 0=20123 | Class 1=15961 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_busan.csv: Class 0=20176 | Class 1=16936 | Class 2=16492 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_1_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_1_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_1_daegu.csv: Class 0=20273 | Class 1=17781 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_daegu.csv: Class 0=20307 | Class 1=18685 | Class 2=16582 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_1_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_1_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_1_daejeon.csv: Class 0=18976 | Class 1=17309 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_daejeon.csv: Class 0=19121 | Class 1=19243 | Class 2=15441 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_1_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_1_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_1_gwangju.csv: Class 0=18643 | Class 1=17579 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_gwangju.csv: Class 0=18703 | Class 1=19347 | Class 2=15692 + +Running smotenc_ctgan_sample_20000_2.py... +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 13:26:31,526] A new study created in memory with name: no-name-3fbf56cd-7ab2-4df1-8dcd-42b4680460c8 +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +[I 2025-12-18 13:27:08,630] Trial 0 finished with value: -69.84820155515344 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -69.84820155515344. +[I 2025-12-18 13:27:15,206] Trial 1 finished with value: -8.040464392849122 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -8.040464392849122. +[I 2025-12-18 13:27:23,838] Trial 2 finished with value: -43.29778099690944 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -8.040464392849122. +[I 2025-12-18 13:27:30,074] Trial 3 finished with value: -41.249412296556905 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -8.040464392849122. +[I 2025-12-18 13:27:40,489] Trial 4 finished with value: -129.37395666975803 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -8.040464392849122. +[I 2025-12-18 13:27:56,639] Trial 5 finished with value: -16.00120136399801 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -8.040464392849122. +[I 2025-12-18 13:28:01,010] Trial 6 finished with value: -121.85536200971536 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -8.040464392849122. +[I 2025-12-18 13:28:23,032] Trial 7 finished with value: -118.08707268395189 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -8.040464392849122. +[I 2025-12-18 13:28:44,273] Trial 8 finished with value: -10.581473616576067 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -8.040464392849122. +[I 2025-12-18 13:29:00,024] Trial 9 finished with value: -31.437696813272893 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -8.040464392849122. +[I 2025-12-18 13:29:21,792] Trial 10 finished with value: -6.329725163476598 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 10 with value: -6.329725163476598. +[I 2025-12-18 13:29:44,155] Trial 11 finished with value: -18.588362864219903 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 10 with value: -6.329725163476598. +[I 2025-12-18 13:30:05,773] Trial 12 finished with value: -14.248089414563529 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 10 with value: -6.329725163476598. +[I 2025-12-18 13:30:27,517] Trial 13 finished with value: -31.08842600495098 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 10 with value: -6.329725163476598. +[I 2025-12-18 13:30:34,006] Trial 14 finished with value: -21.041194417272855 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 10 with value: -6.329725163476598. +[I 2025-12-18 13:30:55,838] Trial 15 finished with value: -3.4727173745766557 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:31:17,742] Trial 16 finished with value: -4.151654527918858 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:31:40,021] Trial 17 finished with value: -107.72073273061952 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:32:02,312] Trial 18 finished with value: -55.02603687203998 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:32:23,930] Trial 19 finished with value: -48.33529776081861 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:32:45,685] Trial 20 finished with value: -4.654945499582764 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:33:07,361] Trial 21 finished with value: -12.743262821869546 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:33:29,665] Trial 22 finished with value: -44.54606391943245 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:33:51,645] Trial 23 finished with value: -6.741278789990261 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:34:13,172] Trial 24 finished with value: -145.17015815856922 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:34:47,906] Trial 25 finished with value: -51.45679361910396 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:35:09,439] Trial 26 finished with value: -9.592486187236368 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:35:31,317] Trial 27 finished with value: -59.93990937015098 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:36:05,226] Trial 28 finished with value: -67.29306678771218 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:36:38,715] Trial 29 finished with value: -45.76595378067457 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -3.4727173745766557. +[I 2025-12-18 13:37:00,353] Trial 30 finished with value: -0.42436087180774573 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:37:22,091] Trial 31 finished with value: -39.66959100291913 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:37:43,738] Trial 32 finished with value: -37.85072120556193 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:38:05,810] Trial 33 finished with value: -65.76505965671875 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:38:10,265] Trial 34 finished with value: -21.84886570401616 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:38:32,402] Trial 35 finished with value: -833.2418360443072 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:38:38,984] Trial 36 finished with value: -8.000458033597749 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:39:00,802] Trial 37 finished with value: -593.0240150872634 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:39:21,796] Trial 38 finished with value: -29.1314086583429 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:39:55,762] Trial 39 finished with value: -15.612351202099102 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:39:59,989] Trial 40 finished with value: -45.39271379491455 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:40:21,604] Trial 41 finished with value: -11.128692001845371 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:40:43,577] Trial 42 finished with value: -27.867830864468708 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:40:53,977] Trial 43 finished with value: -317.7948554413189 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:41:15,878] Trial 44 finished with value: -114.0803166652916 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:41:37,851] Trial 45 finished with value: -8.788543704740063 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:41:59,657] Trial 46 finished with value: -48.92247590051239 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:42:20,667] Trial 47 finished with value: -54.09495547560723 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:42:42,481] Trial 48 finished with value: -19.023364804511505 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:43:04,123] Trial 49 finished with value: -35.12208812291769 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 30 with value: -0.42436087180774573. +[I 2025-12-18 13:43:26,434] A new study created in memory with name: no-name-bf911247-3b27-4166-96fc-339b09dd2dcf +[I 2025-12-18 13:44:27,301] Trial 0 finished with value: -479.9157996884535 and parameters: {'embedding_dim': 341, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -479.9157996884535. +[I 2025-12-18 13:44:41,562] Trial 1 finished with value: -1292.3068207142446 and parameters: {'embedding_dim': 310, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -479.9157996884535. +[I 2025-12-18 13:45:22,235] Trial 2 finished with value: -125.96148899298942 and parameters: {'embedding_dim': 202, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -125.96148899298942. +[I 2025-12-18 13:46:24,269] Trial 3 finished with value: -520.0028259588298 and parameters: {'embedding_dim': 375, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -125.96148899298942. +[I 2025-12-18 13:47:23,415] Trial 4 finished with value: -10.921215796098164 and parameters: {'embedding_dim': 270, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 13:48:23,665] Trial 5 finished with value: -15.84948572132836 and parameters: {'embedding_dim': 312, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 13:49:00,000] Trial 6 finished with value: -66.55904906765497 and parameters: {'embedding_dim': 195, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 13:50:22,370] Trial 7 finished with value: -874.7779125352912 and parameters: {'embedding_dim': 425, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 13:50:58,711] Trial 8 finished with value: -219.38047868487809 and parameters: {'embedding_dim': 366, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 13:51:40,498] Trial 9 finished with value: -410.45380428993235 and parameters: {'embedding_dim': 401, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 13:52:19,936] Trial 10 finished with value: -203.24925680476704 and parameters: {'embedding_dim': 132, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 13:53:20,460] Trial 11 finished with value: -141.44180572231016 and parameters: {'embedding_dim': 501, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 13:54:41,669] Trial 12 finished with value: -42.48476333550863 and parameters: {'embedding_dim': 276, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 13:55:42,415] Trial 13 finished with value: -548.4684901231333 and parameters: {'embedding_dim': 258, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 13:56:21,132] Trial 14 finished with value: -1898.5378609306144 and parameters: {'embedding_dim': 244, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 13:57:43,807] Trial 15 finished with value: -1271.4326248829789 and parameters: {'embedding_dim': 313, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 13:58:45,294] Trial 16 finished with value: -83.18640329374668 and parameters: {'embedding_dim': 458, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 14:00:28,512] Trial 17 finished with value: -412.68133117388584 and parameters: {'embedding_dim': 208, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 14:01:51,920] Trial 18 finished with value: -377.775597490291 and parameters: {'embedding_dim': 281, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 14:02:06,023] Trial 19 finished with value: -217.45654121156983 and parameters: {'embedding_dim': 170, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 14:03:05,787] Trial 20 finished with value: -1250.2155176455794 and parameters: {'embedding_dim': 236, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 14:04:28,136] Trial 21 finished with value: -1651.7059704600213 and parameters: {'embedding_dim': 284, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 14:05:49,744] Trial 22 finished with value: -1122.2754435189768 and parameters: {'embedding_dim': 338, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 14:07:11,185] Trial 23 finished with value: -84.43094710804299 and parameters: {'embedding_dim': 278, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 14:08:12,374] Trial 24 finished with value: -56.33998154588082 and parameters: {'embedding_dim': 310, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 14:09:56,136] Trial 25 finished with value: -695.3838219904286 and parameters: {'embedding_dim': 232, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 14:10:57,245] Trial 26 finished with value: -661.2798640443154 and parameters: {'embedding_dim': 344, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 14:12:18,687] Trial 27 finished with value: -255.63020537633864 and parameters: {'embedding_dim': 270, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 14:12:32,768] Trial 28 finished with value: -2364.5245177860015 and parameters: {'embedding_dim': 299, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 4 with value: -10.921215796098164. +[I 2025-12-18 14:13:22,046] Trial 29 finished with value: -228.12059638414263 and parameters: {'embedding_dim': 363, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 4 with value: -10.921215796098164. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 14:14:22,798] A new study created in memory with name: no-name-5b06171a-95c2-4a75-a6e5-f6d07d5e3288 +[I 2025-12-18 14:14:29,137] Trial 0 finished with value: -8.015658143867192 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -8.015658143867192. +[I 2025-12-18 14:14:37,868] Trial 1 finished with value: -8.618707432431245 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -8.015658143867192. +[I 2025-12-18 14:14:53,560] Trial 2 finished with value: -45.12030826642418 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -8.015658143867192. +[I 2025-12-18 14:14:57,918] Trial 3 finished with value: -14.744875503516326 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -8.015658143867192. +[I 2025-12-18 14:15:31,354] Trial 4 finished with value: -1.5209511251255592 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 4 with value: -1.5209511251255592. +[I 2025-12-18 14:15:37,926] Trial 5 finished with value: -27.20653186473666 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -1.5209511251255592. +[I 2025-12-18 14:15:59,739] Trial 6 finished with value: -62.73333257490232 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 4 with value: -1.5209511251255592. +[I 2025-12-18 14:16:20,891] Trial 7 finished with value: -14.162164165616304 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 4 with value: -1.5209511251255592. +[I 2025-12-18 14:16:54,848] Trial 8 finished with value: -0.8586482297676793 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.8586482297676793. +[I 2025-12-18 14:17:28,850] Trial 9 finished with value: -18.246578979957867 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.8586482297676793. +[I 2025-12-18 14:18:14,285] Trial 10 finished with value: -11.505191301719524 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.8586482297676793. +[I 2025-12-18 14:18:35,962] Trial 11 finished with value: -5.467714440458011 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 8 with value: -0.8586482297676793. +[I 2025-12-18 14:19:09,345] Trial 12 finished with value: -9.79107542245849 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.8586482297676793. +[I 2025-12-18 14:19:42,752] Trial 13 finished with value: -16.914367257655456 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.8586482297676793. +[I 2025-12-18 14:20:28,277] Trial 14 finished with value: -12.281769675757745 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.8586482297676793. +[I 2025-12-18 14:20:50,157] Trial 15 finished with value: -0.5611893209768036 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:21:00,382] Trial 16 finished with value: -7.528637337105985 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:21:22,528] Trial 17 finished with value: -44.173757416588685 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:21:44,972] Trial 18 finished with value: -64.47736002828617 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:21:55,162] Trial 19 finished with value: -109.55591226200715 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:22:29,117] Trial 20 finished with value: -0.7793550691173996 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:23:03,187] Trial 21 finished with value: -5.446869587936166 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:23:36,849] Trial 22 finished with value: -9.508793865495118 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:24:22,236] Trial 23 finished with value: -8.378174455150303 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:24:44,250] Trial 24 finished with value: -7.576997529180303 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:25:17,880] Trial 25 finished with value: -12.987333616064152 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:26:04,099] Trial 26 finished with value: -38.292968335843284 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:26:38,063] Trial 27 finished with value: -16.444022457314837 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:26:42,467] Trial 28 finished with value: -26.580353147082374 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:26:57,903] Trial 29 finished with value: -1.6154732990410885 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:27:04,257] Trial 30 finished with value: -1.6473147749103823 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:27:38,126] Trial 31 finished with value: -3.2918793071018775 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:28:11,979] Trial 32 finished with value: -3.5182332818036706 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:28:45,642] Trial 33 finished with value: -25.330800075823593 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:29:31,380] Trial 34 finished with value: -4.956466971663742 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:29:37,718] Trial 35 finished with value: -14.00563453384082 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:30:11,824] Trial 36 finished with value: -4.629116319998807 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:30:21,892] Trial 37 finished with value: -27.358158428384872 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:30:28,273] Trial 38 finished with value: -18.787134035826675 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 15 with value: -0.5611893209768036. +[I 2025-12-18 14:31:14,306] Trial 39 finished with value: -0.2612232593037492 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 39 with value: -0.2612232593037492. +[I 2025-12-18 14:31:59,986] Trial 40 finished with value: -11.88218577111893 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 39 with value: -0.2612232593037492. +[I 2025-12-18 14:32:46,191] Trial 41 finished with value: -4.9828954312794895 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 39 with value: -0.2612232593037492. +[I 2025-12-18 14:33:32,135] Trial 42 finished with value: -1.3462719284665714 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 39 with value: -0.2612232593037492. +[I 2025-12-18 14:34:17,836] Trial 43 finished with value: -10.678864786036321 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 39 with value: -0.2612232593037492. +[I 2025-12-18 14:35:03,590] Trial 44 finished with value: -5.125035913539531 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 39 with value: -0.2612232593037492. +[I 2025-12-18 14:35:49,108] Trial 45 finished with value: -70.03950115394315 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 39 with value: -0.2612232593037492. +[I 2025-12-18 14:36:35,064] Trial 46 finished with value: -8.8308845163887 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 39 with value: -0.2612232593037492. +[I 2025-12-18 14:37:20,741] Trial 47 finished with value: -65.75653820088566 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 39 with value: -0.2612232593037492. +[I 2025-12-18 14:37:41,683] Trial 48 finished with value: -5.396851303891821 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 39 with value: -0.2612232593037492. +[I 2025-12-18 14:38:27,592] Trial 49 finished with value: -32.39868700325182 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 39 with value: -0.2612232593037492. +[I 2025-12-18 14:39:13,742] A new study created in memory with name: no-name-6a021fc1-f297-44ad-a451-5a2fabdd6eb5 +[I 2025-12-18 14:39:44,513] Trial 0 finished with value: -367.8534498434625 and parameters: {'embedding_dim': 240, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -367.8534498434625. +[I 2025-12-18 14:40:45,649] Trial 1 finished with value: -161.53885801062586 and parameters: {'embedding_dim': 347, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -161.53885801062586. +[I 2025-12-18 14:41:22,397] Trial 2 finished with value: -581.6437845542213 and parameters: {'embedding_dim': 221, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -161.53885801062586. +[I 2025-12-18 14:41:38,721] Trial 3 finished with value: -567.4508766361221 and parameters: {'embedding_dim': 413, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 1 with value: -161.53885801062586. +[I 2025-12-18 14:42:16,054] Trial 4 finished with value: -720.7769114818431 and parameters: {'embedding_dim': 257, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -161.53885801062586. +[I 2025-12-18 14:43:01,944] Trial 5 finished with value: -227.992004060713 and parameters: {'embedding_dim': 439, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 1 with value: -161.53885801062586. +[I 2025-12-18 14:43:13,785] Trial 6 finished with value: -807.2782378773354 and parameters: {'embedding_dim': 460, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 1 with value: -161.53885801062586. +[I 2025-12-18 14:43:51,205] Trial 7 finished with value: -580.547793518708 and parameters: {'embedding_dim': 334, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -161.53885801062586. +[I 2025-12-18 14:44:07,215] Trial 8 finished with value: -659.4754505773997 and parameters: {'embedding_dim': 370, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 1 with value: -161.53885801062586. +[I 2025-12-18 14:44:16,258] Trial 9 finished with value: -612.8867010041683 and parameters: {'embedding_dim': 501, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 1 with value: -161.53885801062586. +[I 2025-12-18 14:45:31,134] Trial 10 finished with value: -646.6066789582671 and parameters: {'embedding_dim': 154, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -161.53885801062586. +[I 2025-12-18 14:46:45,693] Trial 11 finished with value: -2039.2648888305923 and parameters: {'embedding_dim': 405, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 1 with value: -161.53885801062586. +[I 2025-12-18 14:47:22,993] Trial 12 finished with value: -1269.492044656185 and parameters: {'embedding_dim': 306, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 1 with value: -161.53885801062586. +[I 2025-12-18 14:47:59,682] Trial 13 finished with value: -116.58029318765176 and parameters: {'embedding_dim': 446, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 13 with value: -116.58029318765176. +[I 2025-12-18 14:49:02,188] Trial 14 finished with value: -415.13029713467097 and parameters: {'embedding_dim': 504, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -116.58029318765176. +[I 2025-12-18 14:49:39,127] Trial 15 finished with value: -565.5081629809699 and parameters: {'embedding_dim': 360, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 13 with value: -116.58029318765176. +[I 2025-12-18 14:50:28,746] Trial 16 finished with value: -200.47013528294806 and parameters: {'embedding_dim': 293, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -116.58029318765176. +[I 2025-12-18 14:51:31,283] Trial 17 finished with value: -237.7542704255667 and parameters: {'embedding_dim': 373, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -116.58029318765176. +[I 2025-12-18 14:52:16,270] Trial 18 finished with value: -214.71725126325833 and parameters: {'embedding_dim': 449, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 13 with value: -116.58029318765176. +[I 2025-12-18 14:52:33,883] Trial 19 finished with value: -320.2724783705187 and parameters: {'embedding_dim': 131, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 13 with value: -116.58029318765176. +[I 2025-12-18 14:53:03,065] Trial 20 finished with value: -697.8538894984761 and parameters: {'embedding_dim': 193, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 13 with value: -116.58029318765176. +[I 2025-12-18 14:53:53,671] Trial 21 finished with value: -334.2552259859005 and parameters: {'embedding_dim': 277, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 13 with value: -116.58029318765176. +[I 2025-12-18 14:54:43,849] Trial 22 finished with value: -9.804243238452854 and parameters: {'embedding_dim': 315, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -9.804243238452854. +[I 2025-12-18 14:55:33,736] Trial 23 finished with value: -408.1258947503523 and parameters: {'embedding_dim': 346, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -9.804243238452854. +[I 2025-12-18 14:56:34,921] Trial 24 finished with value: -455.36558999839474 and parameters: {'embedding_dim': 393, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 22 with value: -9.804243238452854. +[I 2025-12-18 14:57:12,365] Trial 25 finished with value: -646.8316844032989 and parameters: {'embedding_dim': 306, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 22 with value: -9.804243238452854. +[I 2025-12-18 14:58:16,443] Trial 26 finished with value: -526.7655829237619 and parameters: {'embedding_dim': 332, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 22 with value: -9.804243238452854. +[I 2025-12-18 14:59:04,554] Trial 27 finished with value: -48.198702285622076 and parameters: {'embedding_dim': 428, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 22 with value: -9.804243238452854. +[I 2025-12-18 14:59:19,089] Trial 28 finished with value: -370.60637491351156 and parameters: {'embedding_dim': 466, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 22 with value: -9.804243238452854. +[I 2025-12-18 14:59:42,593] Trial 29 finished with value: -310.8826321038441 and parameters: {'embedding_dim': 430, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 22 with value: -9.804243238452854. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 15:00:33,137] A new study created in memory with name: no-name-e883fb9e-5cc1-4aec-b6d7-04882d08b9dc +[I 2025-12-18 15:00:49,269] Trial 0 finished with value: -1.98245233851042 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:00:58,050] Trial 1 finished with value: -9.338768956254432 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:01:31,938] Trial 2 finished with value: -8.097014499932548 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:01:36,163] Trial 3 finished with value: -116.51310840282864 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:01:57,962] Trial 4 finished with value: -109.22971645684693 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:02:32,123] Trial 5 finished with value: -14.627340969743445 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:02:42,288] Trial 6 finished with value: -46.07872958559319 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:02:46,591] Trial 7 finished with value: -32.91005306300089 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:03:09,057] Trial 8 finished with value: -36.23443460241829 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:03:55,238] Trial 9 finished with value: -9.19324215937543 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:04:11,129] Trial 10 finished with value: -28.062688239039456 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:04:26,827] Trial 11 finished with value: -24.173561600951928 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:04:43,102] Trial 12 finished with value: -14.078747372330376 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:05:29,321] Trial 13 finished with value: -22.844237180627193 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:05:45,035] Trial 14 finished with value: -8.620098947658708 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:06:19,450] Trial 15 finished with value: -7.12297436666455 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:06:40,791] Trial 16 finished with value: -4.940179258376898 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:07:01,916] Trial 17 finished with value: -43.13390011926409 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:07:23,868] Trial 18 finished with value: -25.150898963283886 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:07:45,687] Trial 19 finished with value: -26.545759448535303 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:08:01,818] Trial 20 finished with value: -14.543043331487528 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:08:17,605] Trial 21 finished with value: -34.5760950607677 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:08:51,615] Trial 22 finished with value: -11.250591026029717 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:08:58,359] Trial 23 finished with value: -2.1435344678072763 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:09:06,666] Trial 24 finished with value: -96.84519752680166 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -1.98245233851042. +[I 2025-12-18 15:09:13,325] Trial 25 finished with value: -0.44078252612282987 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:09:19,632] Trial 26 finished with value: -59.67024115562955 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:09:26,193] Trial 27 finished with value: -3.7946506828638813 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:09:30,766] Trial 28 finished with value: -43.37322057650468 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:09:37,419] Trial 29 finished with value: -26.71036872004704 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:09:43,979] Trial 30 finished with value: -35.31874025043953 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:09:50,228] Trial 31 finished with value: -54.70778512578154 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:09:56,651] Trial 32 finished with value: -12.867447981668558 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:10:03,102] Trial 33 finished with value: -12.840817000524282 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:10:09,579] Trial 34 finished with value: -73.1026463631267 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:10:16,188] Trial 35 finished with value: -10.975801493786278 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:10:22,682] Trial 36 finished with value: -129.9332066128072 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:10:26,944] Trial 37 finished with value: -14.810766954107969 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:10:31,459] Trial 38 finished with value: -7.988957531614752 and parameters: {'embedding_dim': 109, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:10:37,978] Trial 39 finished with value: -7.467742097061713 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:10:44,566] Trial 40 finished with value: -17.693867013701333 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:11:05,941] Trial 41 finished with value: -2.858582404418275 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:11:22,397] Trial 42 finished with value: -12.841294982151393 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:11:43,673] Trial 43 finished with value: -5.318915117748827 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:11:59,826] Trial 44 finished with value: -4.702995397078684 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:12:06,133] Trial 45 finished with value: -7.857283732298172 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:12:17,096] Trial 46 finished with value: -41.71895531538763 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:13:03,202] Trial 47 finished with value: -47.38396863167293 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:13:09,476] Trial 48 finished with value: -5.892686120201458 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:13:30,816] Trial 49 finished with value: -26.932629943271827 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 25 with value: -0.44078252612282987. +[I 2025-12-18 15:13:37,346] A new study created in memory with name: no-name-349bc1cb-aed1-461c-b334-b63a777e6856 +[I 2025-12-18 15:14:10,625] Trial 0 finished with value: -992.7216821060124 and parameters: {'embedding_dim': 417, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -992.7216821060124. +[I 2025-12-18 15:14:31,690] Trial 1 finished with value: -720.8517693051532 and parameters: {'embedding_dim': 286, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 1 with value: -720.8517693051532. +[I 2025-12-18 15:14:42,713] Trial 2 finished with value: -350.29658687804886 and parameters: {'embedding_dim': 390, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -350.29658687804886. +[I 2025-12-18 15:15:16,021] Trial 3 finished with value: -1920.63266882991 and parameters: {'embedding_dim': 471, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -350.29658687804886. +[I 2025-12-18 15:15:31,771] Trial 4 finished with value: -394.7311293861538 and parameters: {'embedding_dim': 146, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -350.29658687804886. +[I 2025-12-18 15:15:56,345] Trial 5 finished with value: -438.41789389947724 and parameters: {'embedding_dim': 223, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -350.29658687804886. +[I 2025-12-18 15:16:22,207] Trial 6 finished with value: -2212.708346475334 and parameters: {'embedding_dim': 385, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -350.29658687804886. +[I 2025-12-18 15:16:38,245] Trial 7 finished with value: -305.45569692365825 and parameters: {'embedding_dim': 240, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:16:45,499] Trial 8 finished with value: -505.293581119682 and parameters: {'embedding_dim': 294, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:17:06,607] Trial 9 finished with value: -421.3541886630103 and parameters: {'embedding_dim': 490, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:17:23,602] Trial 10 finished with value: -3845.757504256637 and parameters: {'embedding_dim': 145, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:17:34,891] Trial 11 finished with value: -1306.890539628045 and parameters: {'embedding_dim': 358, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:17:43,203] Trial 12 finished with value: -2342.1320444157413 and parameters: {'embedding_dim': 234, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:18:09,934] Trial 13 finished with value: -1917.8254273008301 and parameters: {'embedding_dim': 227, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:18:17,650] Trial 14 finished with value: -3343.238500246266 and parameters: {'embedding_dim': 350, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:18:42,459] Trial 15 finished with value: -1571.0224060184275 and parameters: {'embedding_dim': 446, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:18:50,444] Trial 16 finished with value: -1283.1800031416142 and parameters: {'embedding_dim': 312, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:19:07,598] Trial 17 finished with value: -2490.233928303719 and parameters: {'embedding_dim': 189, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:19:32,144] Trial 18 finished with value: -1333.85287130683 and parameters: {'embedding_dim': 263, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:19:57,281] Trial 19 finished with value: -581.2599873690118 and parameters: {'embedding_dim': 415, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:20:04,558] Trial 20 finished with value: -4065.4365259060883 and parameters: {'embedding_dim': 342, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:20:19,596] Trial 21 finished with value: -399.62374020600896 and parameters: {'embedding_dim': 133, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 7 with value: -305.45569692365825. +[I 2025-12-18 15:20:36,092] Trial 22 finished with value: -73.20150553118913 and parameters: {'embedding_dim': 162, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 22 with value: -73.20150553118913. +[I 2025-12-18 15:20:58,470] Trial 23 finished with value: -565.611022912823 and parameters: {'embedding_dim': 184, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 22 with value: -73.20150553118913. +[I 2025-12-18 15:21:15,212] Trial 24 finished with value: -1695.8277850059708 and parameters: {'embedding_dim': 186, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 22 with value: -73.20150553118913. +[I 2025-12-18 15:21:32,864] Trial 25 finished with value: -1728.981898401189 and parameters: {'embedding_dim': 262, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 22 with value: -73.20150553118913. +[I 2025-12-18 15:21:48,505] Trial 26 finished with value: -185.1915499877594 and parameters: {'embedding_dim': 169, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 22 with value: -73.20150553118913. +[I 2025-12-18 15:21:58,859] Trial 27 finished with value: -468.40575443056366 and parameters: {'embedding_dim': 173, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 22 with value: -73.20150553118913. +[I 2025-12-18 15:22:20,177] Trial 28 finished with value: -452.3172965046465 and parameters: {'embedding_dim': 211, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 22 with value: -73.20150553118913. +[I 2025-12-18 15:22:41,242] Trial 29 finished with value: -288.7102906981556 and parameters: {'embedding_dim': 166, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 22 with value: -73.20150553118913. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 15:22:58,306] A new study created in memory with name: no-name-a9533345-192c-4dda-9971-baa3f64d1479 +[I 2025-12-18 15:23:31,870] Trial 0 finished with value: -40.733311551603876 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -40.733311551603876. +[I 2025-12-18 15:23:41,972] Trial 1 finished with value: -15.983875905508796 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -15.983875905508796. +[I 2025-12-18 15:24:15,542] Trial 2 finished with value: -4.053284809581098 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 2 with value: -4.053284809581098. +[I 2025-12-18 15:24:31,775] Trial 3 finished with value: -17.17576718159755 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -4.053284809581098. +[I 2025-12-18 15:24:40,608] Trial 4 finished with value: -20.147140808198643 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -4.053284809581098. +[I 2025-12-18 15:24:50,921] Trial 5 finished with value: -4.339409422095895 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 2 with value: -4.053284809581098. +[I 2025-12-18 15:25:12,484] Trial 6 finished with value: -4.641845649668508 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -4.053284809581098. +[I 2025-12-18 15:25:34,148] Trial 7 finished with value: -1.3117808825847772 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 7 with value: -1.3117808825847772. +[I 2025-12-18 15:25:42,630] Trial 8 finished with value: -44.62969847284239 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -1.3117808825847772. +[I 2025-12-18 15:26:03,959] Trial 9 finished with value: -2.3853854586461405 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 7 with value: -1.3117808825847772. +[I 2025-12-18 15:26:26,261] Trial 10 finished with value: -1.1881079127076006 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -1.1881079127076006. +[I 2025-12-18 15:26:47,538] Trial 11 finished with value: -1.6756648326300911 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -1.1881079127076006. +[I 2025-12-18 15:27:09,096] Trial 12 finished with value: -7.5518218050233035 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -1.1881079127076006. +[I 2025-12-18 15:27:30,951] Trial 13 finished with value: -20.22251784101162 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 10 with value: -1.1881079127076006. +[I 2025-12-18 15:27:46,723] Trial 14 finished with value: -0.33939039779596536 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:27:53,162] Trial 15 finished with value: -21.879079154763673 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:28:08,954] Trial 16 finished with value: -4.8823064583174505 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:28:24,582] Trial 17 finished with value: -11.588963959658546 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:28:57,928] Trial 18 finished with value: -16.884924493129752 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:29:02,289] Trial 19 finished with value: -16.27667123506964 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:29:18,330] Trial 20 finished with value: -2.704293305133487 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:29:39,245] Trial 21 finished with value: -11.84647485315881 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:30:00,066] Trial 22 finished with value: -5.93186756760722 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:30:21,312] Trial 23 finished with value: -5.285074927065858 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:30:38,011] Trial 24 finished with value: -0.7815316706153267 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:30:54,268] Trial 25 finished with value: -0.8355393127351357 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:31:10,514] Trial 26 finished with value: -13.19754076674364 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:31:26,582] Trial 27 finished with value: -1.9898807423905485 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:31:33,099] Trial 28 finished with value: -20.52064660539318 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:31:55,050] Trial 29 finished with value: -67.44905180394456 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:32:28,359] Trial 30 finished with value: -4.5779638052335745 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:32:43,904] Trial 31 finished with value: -1.962229962851284 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:33:00,185] Trial 32 finished with value: -7.277647566477436 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:33:11,169] Trial 33 finished with value: -13.55153751027009 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:33:26,999] Trial 34 finished with value: -12.321302955839705 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:33:42,930] Trial 35 finished with value: -3.7584413111615054 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:33:58,621] Trial 36 finished with value: -5.978111790497035 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:34:14,639] Trial 37 finished with value: -3.4453109914879163 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:34:48,703] Trial 38 finished with value: -15.553306837510263 and parameters: {'embedding_dim': 74, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:35:04,263] Trial 39 finished with value: -7.044896661152458 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:35:08,707] Trial 40 finished with value: -1.9502499829222868 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:35:29,686] Trial 41 finished with value: -9.484217912546491 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:35:51,287] Trial 42 finished with value: -5.452930742103018 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:36:12,384] Trial 43 finished with value: -3.4639358570716605 and parameters: {'embedding_dim': 117, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:36:33,922] Trial 44 finished with value: -12.366041869778893 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:36:55,423] Trial 45 finished with value: -2.0039405959697 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:37:16,773] Trial 46 finished with value: -6.459185261140636 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:37:32,170] Trial 47 finished with value: -3.7196787221256207 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:37:40,573] Trial 48 finished with value: -32.531333494066786 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:38:13,560] Trial 49 finished with value: -7.162601354347043 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 14 with value: -0.33939039779596536. +[I 2025-12-18 15:38:29,601] A new study created in memory with name: no-name-46fa4a14-c40f-4b43-8eb7-b2902c598c2f +[I 2025-12-18 15:38:53,810] Trial 0 finished with value: -959.1369678621367 and parameters: {'embedding_dim': 251, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -959.1369678621367. +[I 2025-12-18 15:39:17,816] Trial 1 finished with value: -435.12336415656625 and parameters: {'embedding_dim': 210, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -435.12336415656625. +[I 2025-12-18 15:39:36,088] Trial 2 finished with value: -679.0648773176764 and parameters: {'embedding_dim': 250, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -435.12336415656625. +[I 2025-12-18 15:39:51,173] Trial 3 finished with value: -985.5364027494811 and parameters: {'embedding_dim': 248, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 1 with value: -435.12336415656625. +[I 2025-12-18 15:40:00,176] Trial 4 finished with value: -694.2635553470493 and parameters: {'embedding_dim': 321, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 1 with value: -435.12336415656625. +[I 2025-12-18 15:40:05,096] Trial 5 finished with value: -690.1496345590531 and parameters: {'embedding_dim': 474, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 1 with value: -435.12336415656625. +[I 2025-12-18 15:40:10,797] Trial 6 finished with value: -1065.235736332733 and parameters: {'embedding_dim': 440, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 1 with value: -435.12336415656625. +[I 2025-12-18 15:40:18,551] Trial 7 finished with value: -1103.1346134594203 and parameters: {'embedding_dim': 224, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -435.12336415656625. +[I 2025-12-18 15:40:28,622] Trial 8 finished with value: -381.57672871324286 and parameters: {'embedding_dim': 486, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 8 with value: -381.57672871324286. +[I 2025-12-18 15:40:52,978] Trial 9 finished with value: -530.1869087723006 and parameters: {'embedding_dim': 211, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -381.57672871324286. +[I 2025-12-18 15:41:08,490] Trial 10 finished with value: -2324.482354757154 and parameters: {'embedding_dim': 387, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 8 with value: -381.57672871324286. +[I 2025-12-18 15:41:38,400] Trial 11 finished with value: -98.90686261584821 and parameters: {'embedding_dim': 140, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -98.90686261584821. +[I 2025-12-18 15:41:52,941] Trial 12 finished with value: -197.36200140470143 and parameters: {'embedding_dim': 133, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 11 with value: -98.90686261584821. +[I 2025-12-18 15:42:28,413] Trial 13 finished with value: -48.93926966420417 and parameters: {'embedding_dim': 136, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -48.93926966420417. +[I 2025-12-18 15:42:57,984] Trial 14 finished with value: -1403.2728327234736 and parameters: {'embedding_dim': 129, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -48.93926966420417. +[I 2025-12-18 15:43:27,411] Trial 15 finished with value: -83.27004378445733 and parameters: {'embedding_dim': 164, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -48.93926966420417. +[I 2025-12-18 15:44:03,951] Trial 16 finished with value: -200.107563689178 and parameters: {'embedding_dim': 170, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -48.93926966420417. +[I 2025-12-18 15:44:33,623] Trial 17 finished with value: -137.7835686445937 and parameters: {'embedding_dim': 312, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -48.93926966420417. +[I 2025-12-18 15:45:09,607] Trial 18 finished with value: -670.6038698234397 and parameters: {'embedding_dim': 182, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -48.93926966420417. +[I 2025-12-18 15:45:39,195] Trial 19 finished with value: -4282.153564302418 and parameters: {'embedding_dim': 300, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -48.93926966420417. +[I 2025-12-18 15:45:58,056] Trial 20 finished with value: -577.0810475533531 and parameters: {'embedding_dim': 366, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 13 with value: -48.93926966420417. +[I 2025-12-18 15:46:28,696] Trial 21 finished with value: -1226.961181563101 and parameters: {'embedding_dim': 165, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -48.93926966420417. +[I 2025-12-18 15:46:58,880] Trial 22 finished with value: -832.5837512897814 and parameters: {'embedding_dim': 156, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 13 with value: -48.93926966420417. +[I 2025-12-18 15:47:34,818] Trial 23 finished with value: -51.74834265864618 and parameters: {'embedding_dim': 192, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -48.93926966420417. +[I 2025-12-18 15:48:11,720] Trial 24 finished with value: -48.97232061310016 and parameters: {'embedding_dim': 194, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -48.93926966420417. +[I 2025-12-18 15:48:47,630] Trial 25 finished with value: -334.7966301028331 and parameters: {'embedding_dim': 292, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -48.93926966420417. +[I 2025-12-18 15:49:24,466] Trial 26 finished with value: -669.8315406182778 and parameters: {'embedding_dim': 194, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 13 with value: -48.93926966420417. +[I 2025-12-18 15:50:00,119] Trial 27 finished with value: -13.785194295038204 and parameters: {'embedding_dim': 239, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 27 with value: -13.785194295038204. +[I 2025-12-18 15:50:18,703] Trial 28 finished with value: -987.71085530915 and parameters: {'embedding_dim': 275, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 27 with value: -13.785194295038204. +[I 2025-12-18 15:50:55,652] Trial 29 finished with value: -208.68444504920149 and parameters: {'embedding_dim': 232, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 27 with value: -13.785194295038204. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 15:51:34,440] A new study created in memory with name: no-name-ed058827-b07c-4faa-97e8-1ff4400af217 +[I 2025-12-18 15:51:55,148] Trial 0 finished with value: -2.098167877540744 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -2.098167877540744. +[I 2025-12-18 15:52:01,973] Trial 1 finished with value: -6.011208247187999 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -2.098167877540744. +[I 2025-12-18 15:52:06,367] Trial 2 finished with value: -63.075220618930935 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -2.098167877540744. +[I 2025-12-18 15:52:28,009] Trial 3 finished with value: -50.28028883348844 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -2.098167877540744. +[I 2025-12-18 15:52:32,350] Trial 4 finished with value: -10.457186766237578 and parameters: {'embedding_dim': 126, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -2.098167877540744. +[I 2025-12-18 15:52:54,331] Trial 5 finished with value: -84.89774054127273 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -2.098167877540744. +[I 2025-12-18 15:53:03,413] Trial 6 finished with value: -42.447458216911755 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -2.098167877540744. +[I 2025-12-18 15:53:25,357] Trial 7 finished with value: -19.859848848037856 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 0 with value: -2.098167877540744. +[I 2025-12-18 15:54:00,537] Trial 8 finished with value: -113.481199234392 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -2.098167877540744. +[I 2025-12-18 15:54:21,779] Trial 9 finished with value: -12.49118846201408 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -2.098167877540744. +[I 2025-12-18 15:54:43,883] Trial 10 finished with value: -45.719118214002904 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -2.098167877540744. +[I 2025-12-18 15:54:59,746] Trial 11 finished with value: -8.97730909886182 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -2.098167877540744. +[I 2025-12-18 15:55:06,140] Trial 12 finished with value: -49.74402279071029 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -2.098167877540744. +[I 2025-12-18 15:55:27,571] Trial 13 finished with value: -0.8089325454915156 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 15:55:48,735] Trial 14 finished with value: -20.44257177695125 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 15:56:10,092] Trial 15 finished with value: -5.911002464378229 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 15:56:31,463] Trial 16 finished with value: -2.5921426120761453 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 15:56:53,428] Trial 17 finished with value: -88.13849841562211 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 15:57:09,208] Trial 18 finished with value: -22.79123347751578 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 15:57:31,459] Trial 19 finished with value: -24.73574858067243 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 15:57:47,148] Trial 20 finished with value: -38.63878748280302 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 15:58:08,486] Trial 21 finished with value: -37.70055473166803 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 15:58:30,252] Trial 22 finished with value: -3.242291960205334 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 15:58:52,570] Trial 23 finished with value: -21.22752059570672 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 15:59:14,334] Trial 24 finished with value: -39.82313628243857 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 15:59:35,564] Trial 25 finished with value: -25.09302358722843 and parameters: {'embedding_dim': 93, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 15:59:57,036] Trial 26 finished with value: -13.761053571395557 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 16:00:13,345] Trial 27 finished with value: -29.834435651103654 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 16:00:59,609] Trial 28 finished with value: -18.970217788672265 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 16:01:15,549] Trial 29 finished with value: -9.245036166205638 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 13 with value: -0.8089325454915156. +[I 2025-12-18 16:01:24,043] Trial 30 finished with value: -0.4037577974343217 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:01:32,621] Trial 31 finished with value: -2.6214322631651603 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:01:41,300] Trial 32 finished with value: -0.8129214081734764 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:01:50,077] Trial 33 finished with value: -75.65133165942177 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:01:58,721] Trial 34 finished with value: -63.00787096533404 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:02:07,117] Trial 35 finished with value: -52.69640361531036 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:02:15,440] Trial 36 finished with value: -41.186157557902085 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:02:21,752] Trial 37 finished with value: -4.050587642790966 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:02:26,120] Trial 38 finished with value: -9.143376622718828 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:02:34,535] Trial 39 finished with value: -4.498786556845019 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:03:20,451] Trial 40 finished with value: -15.65007834289775 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:03:29,183] Trial 41 finished with value: -8.778109470598991 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:03:37,583] Trial 42 finished with value: -18.142484387837026 and parameters: {'embedding_dim': 73, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:04:24,565] Trial 43 finished with value: -22.056327911010246 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:04:32,871] Trial 44 finished with value: -50.17413557995819 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:04:54,414] Trial 45 finished with value: -1.4637916881610598 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:05:15,718] Trial 46 finished with value: -54.48947384558903 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:05:24,647] Trial 47 finished with value: -11.248479133578204 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:05:58,095] Trial 48 finished with value: -28.483300014974184 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:06:08,774] Trial 49 finished with value: -9.544778122584905 and parameters: {'embedding_dim': 78, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 30 with value: -0.4037577974343217. +[I 2025-12-18 16:06:17,408] A new study created in memory with name: no-name-3484f354-d098-470b-98dc-4d5f5fe98392 +[I 2025-12-18 16:06:26,484] Trial 0 finished with value: -696.5865649469129 and parameters: {'embedding_dim': 498, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -696.5865649469129. +[I 2025-12-18 16:07:39,792] Trial 1 finished with value: -445.5726310444287 and parameters: {'embedding_dim': 141, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 1 with value: -445.5726310444287. +[I 2025-12-18 16:08:53,404] Trial 2 finished with value: -5.572569138375988 and parameters: {'embedding_dim': 167, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:09:23,565] Trial 3 finished with value: -1179.4725697858087 and parameters: {'embedding_dim': 312, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:09:41,186] Trial 4 finished with value: -338.64088173865673 and parameters: {'embedding_dim': 207, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:10:53,191] Trial 5 finished with value: -1675.9791992506684 and parameters: {'embedding_dim': 134, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:11:02,038] Trial 6 finished with value: -1121.276310479708 and parameters: {'embedding_dim': 445, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:11:39,509] Trial 7 finished with value: -274.09484880606584 and parameters: {'embedding_dim': 488, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:11:48,416] Trial 8 finished with value: -863.5606215065096 and parameters: {'embedding_dim': 232, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:12:04,017] Trial 9 finished with value: -1220.5080379754245 and parameters: {'embedding_dim': 297, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:13:31,011] Trial 10 finished with value: -256.6421500277638 and parameters: {'embedding_dim': 376, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:14:58,665] Trial 11 finished with value: -463.3518309984412 and parameters: {'embedding_dim': 391, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:16:25,973] Trial 12 finished with value: -458.4215080076939 and parameters: {'embedding_dim': 379, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:17:54,112] Trial 13 finished with value: -17.894161854677012 and parameters: {'embedding_dim': 380, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:18:37,316] Trial 14 finished with value: -148.6557070732574 and parameters: {'embedding_dim': 249, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:20:04,576] Trial 15 finished with value: -1047.8063105878189 and parameters: {'embedding_dim': 185, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:21:17,938] Trial 16 finished with value: -124.48419707993664 and parameters: {'embedding_dim': 277, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:21:49,546] Trial 17 finished with value: -198.13825070126336 and parameters: {'embedding_dim': 349, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:22:32,869] Trial 18 finished with value: -399.750297638793 and parameters: {'embedding_dim': 430, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:24:00,698] Trial 19 finished with value: -635.0290838094677 and parameters: {'embedding_dim': 343, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:24:32,255] Trial 20 finished with value: -1125.1493129729733 and parameters: {'embedding_dim': 178, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:25:46,622] Trial 21 finished with value: -159.24266030669503 and parameters: {'embedding_dim': 270, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:27:00,950] Trial 22 finished with value: -530.3317235279588 and parameters: {'embedding_dim': 271, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:28:27,748] Trial 23 finished with value: -8.665127864992105 and parameters: {'embedding_dim': 414, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:29:54,784] Trial 24 finished with value: -407.53656449663004 and parameters: {'embedding_dim': 420, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:31:22,429] Trial 25 finished with value: -79.50597821180133 and parameters: {'embedding_dim': 468, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:32:48,489] Trial 26 finished with value: -819.1859265598812 and parameters: {'embedding_dim': 409, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:34:02,754] Trial 27 finished with value: -182.3108843013477 and parameters: {'embedding_dim': 343, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:34:50,255] Trial 28 finished with value: -288.9064507210917 and parameters: {'embedding_dim': 471, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 2 with value: -5.572569138375988. +[I 2025-12-18 16:36:21,598] Trial 29 finished with value: -380.6672141718606 and parameters: {'embedding_dim': 364, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -5.572569138375988. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 16:37:35,680] A new study created in memory with name: no-name-6df631b6-1f34-4269-9d26-c228c6cf45bf +[I 2025-12-18 16:38:08,913] Trial 0 finished with value: -54.88031064597623 and parameters: {'embedding_dim': 126, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 0 with value: -54.88031064597623. +[I 2025-12-18 16:38:25,076] Trial 1 finished with value: -50.9173468537459 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -50.9173468537459. +[I 2025-12-18 16:38:40,960] Trial 2 finished with value: -18.39808846077279 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 2 with value: -18.39808846077279. +[I 2025-12-18 16:39:03,217] Trial 3 finished with value: -1.2869221030724303 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:39:24,744] Trial 4 finished with value: -6.636903053549126 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:39:35,634] Trial 5 finished with value: -58.50537945930958 and parameters: {'embedding_dim': 115, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:39:57,378] Trial 6 finished with value: -80.70085174192751 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:40:13,083] Trial 7 finished with value: -137.60018835761363 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:40:21,659] Trial 8 finished with value: -1.543637300761495 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:40:26,186] Trial 9 finished with value: -87.92555346192023 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:41:12,274] Trial 10 finished with value: -3.9532381730280584 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:41:20,653] Trial 11 finished with value: -8.354334883488342 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:41:29,537] Trial 12 finished with value: -2.8230259337867536 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:41:38,470] Trial 13 finished with value: -2.101892496725058 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:41:44,994] Trial 14 finished with value: -7.332923939053046 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:42:31,016] Trial 15 finished with value: -33.54867871624145 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:42:35,303] Trial 16 finished with value: -39.771837467543534 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:43:08,646] Trial 17 finished with value: -5.629348328061342 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:43:15,271] Trial 18 finished with value: -6.1144761222851365 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:43:37,080] Trial 19 finished with value: -49.241809466330224 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:43:46,024] Trial 20 finished with value: -17.837888779697924 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:43:55,011] Trial 21 finished with value: -17.555278774290336 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:44:03,411] Trial 22 finished with value: -3.9825679334625748 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:44:11,810] Trial 23 finished with value: -2.220898197713612 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:44:20,607] Trial 24 finished with value: -11.080095832878792 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:45:06,399] Trial 25 finished with value: -8.719890998768296 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:45:13,098] Trial 26 finished with value: -1.7633542622363696 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:45:17,528] Trial 27 finished with value: -103.33343297773783 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:45:33,847] Trial 28 finished with value: -29.395210270486622 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:46:09,084] Trial 29 finished with value: -5.497633235726618 and parameters: {'embedding_dim': 121, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:46:42,535] Trial 30 finished with value: -83.92987105154307 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:46:51,051] Trial 31 finished with value: -17.741250412529322 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:46:59,736] Trial 32 finished with value: -4.337126856475141 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -1.2869221030724303. +[I 2025-12-18 16:47:06,136] Trial 33 finished with value: -0.33434818801657384 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 33 with value: -0.33434818801657384. +[I 2025-12-18 16:47:13,019] Trial 34 finished with value: -12.167149450167313 and parameters: {'embedding_dim': 108, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 33 with value: -0.33434818801657384. +[I 2025-12-18 16:47:29,422] Trial 35 finished with value: -1.2848752013875069 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.33434818801657384. +[I 2025-12-18 16:47:39,693] Trial 36 finished with value: -30.157964317761497 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 33 with value: -0.33434818801657384. +[I 2025-12-18 16:47:49,854] Trial 37 finished with value: -15.08086587523345 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 33 with value: -0.33434818801657384. +[I 2025-12-18 16:48:05,883] Trial 38 finished with value: -58.64838077784765 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.33434818801657384. +[I 2025-12-18 16:48:21,915] Trial 39 finished with value: -43.47799715229859 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.33434818801657384. +[I 2025-12-18 16:48:37,781] Trial 40 finished with value: -9.158766557876657 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.33434818801657384. +[I 2025-12-18 16:48:53,890] Trial 41 finished with value: -9.511918344350637 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.33434818801657384. +[I 2025-12-18 16:49:27,419] Trial 42 finished with value: -47.251978855641745 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.33434818801657384. +[I 2025-12-18 16:49:33,793] Trial 43 finished with value: -42.58521343340065 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 33 with value: -0.33434818801657384. +[I 2025-12-18 16:49:40,141] Trial 44 finished with value: -22.611172386297206 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 33 with value: -0.33434818801657384. +[I 2025-12-18 16:49:50,530] Trial 45 finished with value: -97.70424174939917 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 33 with value: -0.33434818801657384. +[I 2025-12-18 16:50:24,310] Trial 46 finished with value: -0.23957517346386312 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 46 with value: -0.23957517346386312. +[I 2025-12-18 16:50:45,838] Trial 47 finished with value: -10.988895768457747 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 46 with value: -0.23957517346386312. +[I 2025-12-18 16:51:18,978] Trial 48 finished with value: -28.140862963513342 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 46 with value: -0.23957517346386312. +[I 2025-12-18 16:51:41,228] Trial 49 finished with value: -7.6088799519105415 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 46 with value: -0.23957517346386312. +[I 2025-12-18 16:52:15,121] A new study created in memory with name: no-name-fc261f2f-a564-4689-af89-32d0c0bfe311 +[I 2025-12-18 16:53:00,813] Trial 0 finished with value: -161.10025853843626 and parameters: {'embedding_dim': 282, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -161.10025853843626. +[I 2025-12-18 16:53:19,200] Trial 1 finished with value: -962.9508039752461 and parameters: {'embedding_dim': 347, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -161.10025853843626. +[I 2025-12-18 16:54:02,040] Trial 2 finished with value: -3710.0540547156343 and parameters: {'embedding_dim': 319, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -161.10025853843626. +[I 2025-12-18 16:54:30,147] Trial 3 finished with value: -49.059973274071986 and parameters: {'embedding_dim': 140, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 16:55:14,456] Trial 4 finished with value: -75.23214110911917 and parameters: {'embedding_dim': 284, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 16:56:12,107] Trial 5 finished with value: -646.8492012564036 and parameters: {'embedding_dim': 263, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 16:56:50,140] Trial 6 finished with value: -650.0554478507802 and parameters: {'embedding_dim': 435, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 16:57:37,094] Trial 7 finished with value: -334.0212885178794 and parameters: {'embedding_dim': 491, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 16:58:49,056] Trial 8 finished with value: -251.58781939376638 and parameters: {'embedding_dim': 425, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 16:58:58,214] Trial 9 finished with value: -1286.150847409226 and parameters: {'embedding_dim': 134, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 16:59:25,524] Trial 10 finished with value: -359.36898267491915 and parameters: {'embedding_dim': 132, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 16:59:49,376] Trial 11 finished with value: -735.6344119003235 and parameters: {'embedding_dim': 203, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:00:32,309] Trial 12 finished with value: -2528.112410439753 and parameters: {'embedding_dim': 217, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:01:03,003] Trial 13 finished with value: -229.83277568915153 and parameters: {'embedding_dim': 211, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:01:24,459] Trial 14 finished with value: -679.5148384136338 and parameters: {'embedding_dim': 372, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:01:51,753] Trial 15 finished with value: -169.9695796632529 and parameters: {'embedding_dim': 176, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:02:21,852] Trial 16 finished with value: -680.6323740091475 and parameters: {'embedding_dim': 268, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:02:44,936] Trial 17 finished with value: -502.41895136083366 and parameters: {'embedding_dim': 394, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:03:56,999] Trial 18 finished with value: -1224.8101420497676 and parameters: {'embedding_dim': 316, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:04:12,479] Trial 19 finished with value: -1143.0280963127266 and parameters: {'embedding_dim': 507, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:05:37,675] Trial 20 finished with value: -292.5957157976113 and parameters: {'embedding_dim': 175, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:06:22,551] Trial 21 finished with value: -855.5448624491314 and parameters: {'embedding_dim': 273, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:07:09,278] Trial 22 finished with value: -1057.9298229661308 and parameters: {'embedding_dim': 291, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:07:47,952] Trial 23 finished with value: -368.1930885108612 and parameters: {'embedding_dim': 237, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:08:33,405] Trial 24 finished with value: -924.1915172753534 and parameters: {'embedding_dim': 348, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:09:11,305] Trial 25 finished with value: -1249.3671205940675 and parameters: {'embedding_dim': 178, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:09:57,332] Trial 26 finished with value: -1122.0663833290726 and parameters: {'embedding_dim': 244, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:10:13,633] Trial 27 finished with value: -2971.7336606785157 and parameters: {'embedding_dim': 296, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 1}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:10:28,584] Trial 28 finished with value: -322.97403914053336 and parameters: {'embedding_dim': 351, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 3 with value: -49.059973274071986. +[I 2025-12-18 17:11:42,653] Trial 29 finished with value: -167.07312019727215 and parameters: {'embedding_dim': 396, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 3 with value: -49.059973274071986. +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_2_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_2_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_2_incheon.csv: Class 0=18299 | Class 1=16819 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_incheon.csv: Class 0=18661 | Class 1=19364 | Class 2=14637 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_2_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_2_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_2_seoul.csv: Class 0=20422 | Class 1=17844 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_seoul.csv: Class 0=20451 | Class 1=19536 | Class 2=15823 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_2_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_2_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_2_busan.csv: Class 0=20131 | Class 1=16340 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_busan.csv: Class 0=20206 | Class 1=17352 | Class 2=16457 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_2_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_2_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_2_daegu.csv: Class 0=20459 | Class 1=18122 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_daegu.csv: Class 0=20488 | Class 1=18834 | Class 2=16803 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_2_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_2_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_2_daejeon.csv: Class 0=19530 | Class 1=17362 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_daejeon.csv: Class 0=19646 | Class 1=19073 | Class 2=15717 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_2_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_2_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_2_gwangju.csv: Class 0=18274 | Class 1=17340 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_gwangju.csv: Class 0=18353 | Class 1=19045 | Class 2=15760 + +Running smotenc_ctgan_sample_20000_3.py... +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 17:12:14,509] A new study created in memory with name: no-name-78e8ebed-5cda-4af2-98cf-331fa6725337 +Using device: cuda +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 0... +[I 2025-12-18 17:12:33,667] Trial 0 finished with value: -103.93129720461575 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 0 with value: -103.93129720461575. +[I 2025-12-18 17:12:42,101] Trial 1 finished with value: -3.199285240183642 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:13:16,583] Trial 2 finished with value: -13.58396839127552 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:13:38,808] Trial 3 finished with value: -22.582810263750964 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:13:54,541] Trial 4 finished with value: -65.41552103056921 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:13:58,879] Trial 5 finished with value: -36.567054740748574 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:14:15,162] Trial 6 finished with value: -245.38261968085678 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:14:31,510] Trial 7 finished with value: -32.156021822362376 and parameters: {'embedding_dim': 103, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:15:05,424] Trial 8 finished with value: -77.78459347440148 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:15:09,734] Trial 9 finished with value: -64.52184820991329 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:15:18,112] Trial 10 finished with value: -129.81960254013214 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:16:04,948] Trial 11 finished with value: -43.30821816955252 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:16:50,876] Trial 12 finished with value: -163.833251937051 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:17:12,965] Trial 13 finished with value: -108.14700882382412 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:17:21,710] Trial 14 finished with value: -11.373699576244245 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:17:30,164] Trial 15 finished with value: -25.636837422457454 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:17:39,110] Trial 16 finished with value: -3.965831775507085 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:17:47,673] Trial 17 finished with value: -6.639534920838069 and parameters: {'embedding_dim': 83, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:17:56,596] Trial 18 finished with value: -7.809156333564965 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:18:05,130] Trial 19 finished with value: -12.784250603371866 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:18:11,964] Trial 20 finished with value: -9.45078628703285 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:18:20,862] Trial 21 finished with value: -16.10077006911106 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:18:29,804] Trial 22 finished with value: -9.118808501169077 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:18:38,735] Trial 23 finished with value: -13.396127850850544 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:18:47,618] Trial 24 finished with value: -11.59062470393918 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:18:56,304] Trial 25 finished with value: -62.63117104576233 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:19:05,373] Trial 26 finished with value: -5.784981474402519 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:19:14,480] Trial 27 finished with value: -39.08738283211088 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:19:21,004] Trial 28 finished with value: -5.420926609235044 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:19:27,501] Trial 29 finished with value: -32.291405543340616 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:19:43,789] Trial 30 finished with value: -42.642667767315444 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:19:50,567] Trial 31 finished with value: -89.97253856174946 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:19:56,853] Trial 32 finished with value: -33.99891826800178 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:20:05,680] Trial 33 finished with value: -3.8079429678390224 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:20:12,450] Trial 34 finished with value: -228.08071350524833 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:20:16,801] Trial 35 finished with value: -130.42223857163785 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:20:32,531] Trial 36 finished with value: -9.113377731299376 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:21:19,335] Trial 37 finished with value: -10.223473088388333 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:21:35,603] Trial 38 finished with value: -83.89900037004395 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:21:40,187] Trial 39 finished with value: -48.80980220996078 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:21:48,708] Trial 40 finished with value: -10.246559752374004 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:21:57,021] Trial 41 finished with value: -21.47884071667623 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:22:05,812] Trial 42 finished with value: -62.41606383393147 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:22:14,633] Trial 43 finished with value: -12.7683110567645 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:22:23,515] Trial 44 finished with value: -9.297077974585747 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:23:09,754] Trial 45 finished with value: -47.92036672796471 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:23:26,040] Trial 46 finished with value: -192.92997771196002 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:23:34,846] Trial 47 finished with value: -40.69021663188017 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:23:43,313] Trial 48 finished with value: -16.00692865238517 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:24:30,120] Trial 49 finished with value: -28.94288814609186 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -3.199285240183642. +[I 2025-12-18 17:24:39,051] A new study created in memory with name: no-name-439a93ef-abe9-461f-ac38-ec2369bcb6b1 +[I 2025-12-18 17:25:52,826] Trial 0 finished with value: -993.5179216574868 and parameters: {'embedding_dim': 178, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -993.5179216574868. +[I 2025-12-18 17:26:30,216] Trial 1 finished with value: -437.11489630557554 and parameters: {'embedding_dim': 444, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 1 with value: -437.11489630557554. +[I 2025-12-18 17:27:43,061] Trial 2 finished with value: -56.880962122129404 and parameters: {'embedding_dim': 238, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 2 with value: -56.880962122129404. +[I 2025-12-18 17:29:07,246] Trial 3 finished with value: -1443.8419740861727 and parameters: {'embedding_dim': 451, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -56.880962122129404. +[I 2025-12-18 17:29:43,418] Trial 4 finished with value: -219.64172969967873 and parameters: {'embedding_dim': 280, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -56.880962122129404. +[I 2025-12-18 17:30:20,303] Trial 5 finished with value: -239.0017184426981 and parameters: {'embedding_dim': 468, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -56.880962122129404. +[I 2025-12-18 17:30:41,755] Trial 6 finished with value: -137.4524082956272 and parameters: {'embedding_dim': 453, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 2 with value: -56.880962122129404. +[I 2025-12-18 17:31:15,130] Trial 7 finished with value: -360.80733636569744 and parameters: {'embedding_dim': 318, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -56.880962122129404. +[I 2025-12-18 17:32:29,449] Trial 8 finished with value: -169.55393520071306 and parameters: {'embedding_dim': 394, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 2 with value: -56.880962122129404. +[I 2025-12-18 17:33:45,777] Trial 9 finished with value: -372.6565741647486 and parameters: {'embedding_dim': 474, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 2 with value: -56.880962122129404. +[I 2025-12-18 17:35:30,672] Trial 10 finished with value: -175.51241099368033 and parameters: {'embedding_dim': 146, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -56.880962122129404. +[I 2025-12-18 17:35:44,938] Trial 11 finished with value: -1051.2197735020914 and parameters: {'embedding_dim': 234, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -56.880962122129404. +[I 2025-12-18 17:36:12,326] Trial 12 finished with value: -484.84745036050333 and parameters: {'embedding_dim': 357, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 2 with value: -56.880962122129404. +[I 2025-12-18 17:36:26,688] Trial 13 finished with value: -1366.0057846894422 and parameters: {'embedding_dim': 256, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -56.880962122129404. +[I 2025-12-18 17:37:01,526] Trial 14 finished with value: -131.41085784435802 and parameters: {'embedding_dim': 509, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 2 with value: -56.880962122129404. +[I 2025-12-18 17:38:43,356] Trial 15 finished with value: -148.23963573024025 and parameters: {'embedding_dim': 191, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -56.880962122129404. +[I 2025-12-18 17:39:17,033] Trial 16 finished with value: -37.61863817248262 and parameters: {'embedding_dim': 372, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 16 with value: -37.61863817248262. +[I 2025-12-18 17:40:31,721] Trial 17 finished with value: -376.9686315476732 and parameters: {'embedding_dim': 373, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 16 with value: -37.61863817248262. +[I 2025-12-18 17:41:04,810] Trial 18 finished with value: -578.1407219363316 and parameters: {'embedding_dim': 328, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 16 with value: -37.61863817248262. +[I 2025-12-18 17:43:10,290] Trial 19 finished with value: -108.78524778931578 and parameters: {'embedding_dim': 293, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 16 with value: -37.61863817248262. +[I 2025-12-18 17:43:37,996] Trial 20 finished with value: -601.6903674758053 and parameters: {'embedding_dim': 226, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 16 with value: -37.61863817248262. +[I 2025-12-18 17:45:41,931] Trial 21 finished with value: -687.0533122703221 and parameters: {'embedding_dim': 305, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 16 with value: -37.61863817248262. +[I 2025-12-18 17:47:46,835] Trial 22 finished with value: -712.9896278742094 and parameters: {'embedding_dim': 411, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 16 with value: -37.61863817248262. +[I 2025-12-18 17:49:29,046] Trial 23 finished with value: -1281.3969193866333 and parameters: {'embedding_dim': 276, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 16 with value: -37.61863817248262. +[I 2025-12-18 17:51:33,037] Trial 24 finished with value: -1059.8248855868285 and parameters: {'embedding_dim': 354, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 16 with value: -37.61863817248262. +[I 2025-12-18 17:53:15,819] Trial 25 finished with value: -41.28525701369942 and parameters: {'embedding_dim': 212, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 16 with value: -37.61863817248262. +[I 2025-12-18 17:54:05,574] Trial 26 finished with value: -868.284026592749 and parameters: {'embedding_dim': 205, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -37.61863817248262. +[I 2025-12-18 17:54:38,933] Trial 27 finished with value: -127.49782597747583 and parameters: {'embedding_dim': 152, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 16 with value: -37.61863817248262. +[I 2025-12-18 17:56:21,980] Trial 28 finished with value: -92.3624336034819 and parameters: {'embedding_dim': 238, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 16 with value: -37.61863817248262. +[I 2025-12-18 17:57:23,794] Trial 29 finished with value: -252.65579938866284 and parameters: {'embedding_dim': 167, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 16 with value: -37.61863817248262. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 17:57:59,472] A new study created in memory with name: no-name-8bb692c5-3227-4e10-a995-4382047ac29e +[I 2025-12-18 17:58:10,102] Trial 0 finished with value: -60.359500868593 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 0 with value: -60.359500868593. +[I 2025-12-18 17:58:44,609] Trial 1 finished with value: -40.170164856797385 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -40.170164856797385. +[I 2025-12-18 17:59:31,333] Trial 2 finished with value: -6.186798796980795 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -6.186798796980795. +[I 2025-12-18 17:59:47,224] Trial 3 finished with value: -2.8913919882627797 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 3 with value: -2.8913919882627797. +[I 2025-12-18 18:00:33,605] Trial 4 finished with value: -41.23227752812044 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -2.8913919882627797. +[I 2025-12-18 18:01:19,582] Trial 5 finished with value: -0.9619007852862211 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:01:35,676] Trial 6 finished with value: -8.931132533702824 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:01:52,453] Trial 7 finished with value: -3.9184961801021614 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:02:03,329] Trial 8 finished with value: -13.223452525089716 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:02:38,074] Trial 9 finished with value: -115.90464588488675 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:02:46,975] Trial 10 finished with value: -19.33041366759148 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:02:55,296] Trial 11 finished with value: -2.9632177317934434 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:03:05,641] Trial 12 finished with value: -5.020527356618512 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:03:40,188] Trial 13 finished with value: -12.062251431461435 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:03:48,687] Trial 14 finished with value: -34.649339167032196 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:04:04,502] Trial 15 finished with value: -35.771772980809374 and parameters: {'embedding_dim': 111, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:04:50,673] Trial 16 finished with value: -30.387635579945204 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:05:01,703] Trial 17 finished with value: -11.328828567433684 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:05:35,729] Trial 18 finished with value: -3.946237394802359 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:05:42,211] Trial 19 finished with value: -17.30711271278495 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:06:28,246] Trial 20 finished with value: -2.413782738223717 and parameters: {'embedding_dim': 80, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:07:14,707] Trial 21 finished with value: -6.885971078572362 and parameters: {'embedding_dim': 79, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:08:00,806] Trial 22 finished with value: -7.960216787977785 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:08:47,081] Trial 23 finished with value: -49.25856020812408 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:09:21,277] Trial 24 finished with value: -4.773048542757418 and parameters: {'embedding_dim': 102, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:09:42,918] Trial 25 finished with value: -6.273008781545618 and parameters: {'embedding_dim': 66, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 5 with value: -0.9619007852862211. +[I 2025-12-18 18:10:29,286] Trial 26 finished with value: -0.19671469930014696 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 26 with value: -0.19671469930014696. +[I 2025-12-18 18:11:16,219] Trial 27 finished with value: -3.222440009948943 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 26 with value: -0.19671469930014696. +[I 2025-12-18 18:12:03,249] Trial 28 finished with value: -3.3948684598097416 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 26 with value: -0.19671469930014696. +[I 2025-12-18 18:12:50,257] Trial 29 finished with value: -15.79131562177955 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 26 with value: -0.19671469930014696. +[I 2025-12-18 18:13:36,567] Trial 30 finished with value: -1.809664412703187 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 26 with value: -0.19671469930014696. +[I 2025-12-18 18:14:23,088] Trial 31 finished with value: -3.273682325235947 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 26 with value: -0.19671469930014696. +[I 2025-12-18 18:15:09,691] Trial 32 finished with value: -1.9944529877736645 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 26 with value: -0.19671469930014696. +[I 2025-12-18 18:15:55,768] Trial 33 finished with value: -0.059562296907238445 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 33 with value: -0.059562296907238445. +[I 2025-12-18 18:16:41,895] Trial 34 finished with value: -6.212567251201251 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 33 with value: -0.059562296907238445. +[I 2025-12-18 18:17:29,135] Trial 35 finished with value: -12.32414817064366 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 33 with value: -0.059562296907238445. +[I 2025-12-18 18:18:15,927] Trial 36 finished with value: -6.3331894051471425 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 33 with value: -0.059562296907238445. +[I 2025-12-18 18:19:02,393] Trial 37 finished with value: -35.15902033354705 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 33 with value: -0.059562296907238445. +[I 2025-12-18 18:19:49,065] Trial 38 finished with value: -6.944982866232015 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 33 with value: -0.059562296907238445. +[I 2025-12-18 18:19:57,541] Trial 39 finished with value: -14.839648319360599 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 33 with value: -0.059562296907238445. +[I 2025-12-18 18:20:31,875] Trial 40 finished with value: -0.00665296458462046 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 40 with value: -0.00665296458462046. +[I 2025-12-18 18:21:06,156] Trial 41 finished with value: -1.6047826101085758 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 40 with value: -0.00665296458462046. +[I 2025-12-18 18:21:40,746] Trial 42 finished with value: -21.818061454428246 and parameters: {'embedding_dim': 75, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 40 with value: -0.00665296458462046. +[I 2025-12-18 18:22:15,636] Trial 43 finished with value: -25.681615999965395 and parameters: {'embedding_dim': 69, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 40 with value: -0.00665296458462046. +[I 2025-12-18 18:22:51,442] Trial 44 finished with value: -5.586345814268394 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 40 with value: -0.00665296458462046. +[I 2025-12-18 18:23:25,598] Trial 45 finished with value: -9.11886931050355 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 40 with value: -0.00665296458462046. +[I 2025-12-18 18:23:59,663] Trial 46 finished with value: -22.606711112865213 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 40 with value: -0.00665296458462046. +[I 2025-12-18 18:24:04,196] Trial 47 finished with value: -17.139785473979465 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 40 with value: -0.00665296458462046. +[I 2025-12-18 18:24:39,136] Trial 48 finished with value: -1.182499666394511 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 40 with value: -0.00665296458462046. +[I 2025-12-18 18:25:13,816] Trial 49 finished with value: -13.57593105266541 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 40 with value: -0.00665296458462046. +[I 2025-12-18 18:25:48,280] A new study created in memory with name: no-name-7fdebabe-2916-4392-b3b4-8d6615717638 +[I 2025-12-18 18:26:25,752] Trial 0 finished with value: -449.83511341681935 and parameters: {'embedding_dim': 392, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 0 with value: -449.83511341681935. +[I 2025-12-18 18:27:30,224] Trial 1 finished with value: -1154.3879376207374 and parameters: {'embedding_dim': 383, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -449.83511341681935. +[I 2025-12-18 18:27:38,332] Trial 2 finished with value: -6251.575705569066 and parameters: {'embedding_dim': 465, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -449.83511341681935. +[I 2025-12-18 18:28:15,582] Trial 3 finished with value: -345.2930332555039 and parameters: {'embedding_dim': 293, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 3 with value: -345.2930332555039. +[I 2025-12-18 18:28:46,114] Trial 4 finished with value: -157.48542986015522 and parameters: {'embedding_dim': 355, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 4 with value: -157.48542986015522. +[I 2025-12-18 18:29:23,869] Trial 5 finished with value: -174.92031221074276 and parameters: {'embedding_dim': 301, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 4 with value: -157.48542986015522. +[I 2025-12-18 18:29:35,674] Trial 6 finished with value: -279.42149811243877 and parameters: {'embedding_dim': 235, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -157.48542986015522. +[I 2025-12-18 18:29:46,890] Trial 7 finished with value: -801.6975882561627 and parameters: {'embedding_dim': 185, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 4 with value: -157.48542986015522. +[I 2025-12-18 18:30:05,604] Trial 8 finished with value: -473.323298200168 and parameters: {'embedding_dim': 354, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -157.48542986015522. +[I 2025-12-18 18:31:08,426] Trial 9 finished with value: -63.35798151744064 and parameters: {'embedding_dim': 403, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 9 with value: -63.35798151744064. +[I 2025-12-18 18:32:23,342] Trial 10 finished with value: -524.7127257607398 and parameters: {'embedding_dim': 500, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 9 with value: -63.35798151744064. +[I 2025-12-18 18:32:53,193] Trial 11 finished with value: -141.69792480388926 and parameters: {'embedding_dim': 434, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 9 with value: -63.35798151744064. +[I 2025-12-18 18:33:43,847] Trial 12 finished with value: -19.935408035907674 and parameters: {'embedding_dim': 430, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:35:00,549] Trial 13 finished with value: -201.12682065288274 and parameters: {'embedding_dim': 428, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:35:51,210] Trial 14 finished with value: -168.2118407579889 and parameters: {'embedding_dim': 502, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:37:06,504] Trial 15 finished with value: -2237.643646149249 and parameters: {'embedding_dim': 437, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:37:31,169] Trial 16 finished with value: -597.2381551394695 and parameters: {'embedding_dim': 253, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:38:33,727] Trial 17 finished with value: -322.5263538168124 and parameters: {'embedding_dim': 397, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:39:24,087] Trial 18 finished with value: -242.54223808391063 and parameters: {'embedding_dim': 128, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:40:13,490] Trial 19 finished with value: -26.830491236239368 and parameters: {'embedding_dim': 328, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:40:50,466] Trial 20 finished with value: -671.6447593580083 and parameters: {'embedding_dim': 330, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:41:41,372] Trial 21 finished with value: -106.27738615204272 and parameters: {'embedding_dim': 470, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:42:31,386] Trial 22 finished with value: -87.82534146957664 and parameters: {'embedding_dim': 350, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:43:33,742] Trial 23 finished with value: -361.2926170171896 and parameters: {'embedding_dim': 279, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:44:11,927] Trial 24 finished with value: -1543.0505908248792 and parameters: {'embedding_dim': 407, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:45:02,109] Trial 25 finished with value: -66.04474139793753 and parameters: {'embedding_dim': 469, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:46:05,096] Trial 26 finished with value: -547.3162601940573 and parameters: {'embedding_dim': 324, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:47:20,458] Trial 27 finished with value: -133.11240906939346 and parameters: {'embedding_dim': 375, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:47:38,337] Trial 28 finished with value: -418.00877117450386 and parameters: {'embedding_dim': 416, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 12 with value: -19.935408035907674. +[I 2025-12-18 18:48:08,699] Trial 29 finished with value: -189.63911012927812 and parameters: {'embedding_dim': 377, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 12 with value: -19.935408035907674. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 18:49:01,023] A new study created in memory with name: no-name-1723e827-be37-4ada-9f14-c824b280cb8b +[I 2025-12-18 18:49:48,125] Trial 0 finished with value: -7.220953797889413 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -7.220953797889413. +[I 2025-12-18 18:50:10,288] Trial 1 finished with value: -34.013197403063316 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -7.220953797889413. +[I 2025-12-18 18:50:14,871] Trial 2 finished with value: -99.2122395084933 and parameters: {'embedding_dim': 127, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -7.220953797889413. +[I 2025-12-18 18:50:36,000] Trial 3 finished with value: -6.522826317190221 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 3 with value: -6.522826317190221. +[I 2025-12-18 18:50:46,666] Trial 4 finished with value: -160.31369832595286 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 3 with value: -6.522826317190221. +[I 2025-12-18 18:51:08,622] Trial 5 finished with value: -36.56536007587185 and parameters: {'embedding_dim': 114, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 3 with value: -6.522826317190221. +[I 2025-12-18 18:51:17,346] Trial 6 finished with value: -4.8699793426766655 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 6 with value: -4.8699793426766655. +[I 2025-12-18 18:51:28,371] Trial 7 finished with value: -7.153552621026417 and parameters: {'embedding_dim': 123, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 6 with value: -4.8699793426766655. +[I 2025-12-18 18:52:03,074] Trial 8 finished with value: -0.29770507460812917 and parameters: {'embedding_dim': 68, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:52:24,393] Trial 9 finished with value: -2.0319436349458355 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:52:59,195] Trial 10 finished with value: -43.58034009474336 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:53:33,128] Trial 11 finished with value: -7.668997972505861 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:53:49,388] Trial 12 finished with value: -7.236671527633911 and parameters: {'embedding_dim': 65, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:54:23,743] Trial 13 finished with value: -11.302035806057496 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:54:30,048] Trial 14 finished with value: -48.2915277664471 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:54:51,358] Trial 15 finished with value: -4.7527068501829115 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:55:26,289] Trial 16 finished with value: -20.361016871035556 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:55:48,077] Trial 17 finished with value: -1.6249782861042574 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:56:22,268] Trial 18 finished with value: -1.9015937097995361 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:56:30,671] Trial 19 finished with value: -4.812984824663994 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:57:04,704] Trial 20 finished with value: -10.030388856660513 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:57:40,299] Trial 21 finished with value: -58.48556285363741 and parameters: {'embedding_dim': 103, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:58:14,124] Trial 22 finished with value: -40.75863753483532 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:58:48,739] Trial 23 finished with value: -93.26283207554421 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:59:23,329] Trial 24 finished with value: -28.72513236152607 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 18:59:34,479] Trial 25 finished with value: -60.56374771332551 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 19:00:08,084] Trial 26 finished with value: -18.213993991672297 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 19:00:54,870] Trial 27 finished with value: -49.15143111193337 and parameters: {'embedding_dim': 117, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 19:01:01,433] Trial 28 finished with value: -0.3579648370773168 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 19:01:10,006] Trial 29 finished with value: -5.032434049501707 and parameters: {'embedding_dim': 98, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 19:01:18,367] Trial 30 finished with value: -9.24214149272039 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 19:01:24,928] Trial 31 finished with value: -30.309513797549297 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 19:01:31,193] Trial 32 finished with value: -23.52785859618192 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 8 with value: -0.29770507460812917. +[I 2025-12-18 19:01:47,213] Trial 33 finished with value: -0.005196172789738027 and parameters: {'embedding_dim': 100, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:02:03,791] Trial 34 finished with value: -6.915683119421919 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:02:14,766] Trial 35 finished with value: -24.037214203935598 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:02:30,783] Trial 36 finished with value: -21.957819810057305 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:02:41,163] Trial 37 finished with value: -3.8294670358257656 and parameters: {'embedding_dim': 70, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:03:02,581] Trial 38 finished with value: -11.114811898545485 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:03:07,018] Trial 39 finished with value: -16.165145347428428 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:03:23,326] Trial 40 finished with value: -7.2876115004779045 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:03:39,366] Trial 41 finished with value: -11.215142539361121 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:04:13,882] Trial 42 finished with value: -3.980432311252795 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:04:20,408] Trial 43 finished with value: -19.8278504035244 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:04:37,020] Trial 44 finished with value: -54.35215800583204 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:05:11,822] Trial 45 finished with value: -0.9529882889437069 and parameters: {'embedding_dim': 94, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:05:27,599] Trial 46 finished with value: -0.20875264323213924 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:06:02,196] Trial 47 finished with value: -8.459006667979098 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:06:08,423] Trial 48 finished with value: -6.262623365236349 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:06:24,522] Trial 49 finished with value: -3.701548949714223 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 33 with value: -0.005196172789738027. +[I 2025-12-18 19:06:41,582] A new study created in memory with name: no-name-93e2d238-01e6-433a-b594-4e9e7df1f3fe +[I 2025-12-18 19:07:02,514] Trial 0 finished with value: -787.8349181610895 and parameters: {'embedding_dim': 512, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -787.8349181610895. +[I 2025-12-18 19:07:20,083] Trial 1 finished with value: -1357.1850364560453 and parameters: {'embedding_dim': 487, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -787.8349181610895. +[I 2025-12-18 19:07:37,553] Trial 2 finished with value: -83.36721117130165 and parameters: {'embedding_dim': 434, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:07:54,264] Trial 3 finished with value: -626.3177628776132 and parameters: {'embedding_dim': 240, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:08:37,530] Trial 4 finished with value: -778.842965838541 and parameters: {'embedding_dim': 412, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:09:11,315] Trial 5 finished with value: -494.3550500539189 and parameters: {'embedding_dim': 423, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:09:33,033] Trial 6 finished with value: -1121.9465537153312 and parameters: {'embedding_dim': 459, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:10:24,230] Trial 7 finished with value: -1349.9151058399773 and parameters: {'embedding_dim': 220, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:10:45,578] Trial 8 finished with value: -1028.1342988336169 and parameters: {'embedding_dim': 145, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:11:28,687] Trial 9 finished with value: -1254.4970674537674 and parameters: {'embedding_dim': 396, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:11:45,254] Trial 10 finished with value: -1051.179933295112 and parameters: {'embedding_dim': 341, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:12:11,167] Trial 11 finished with value: -676.2698190068638 and parameters: {'embedding_dim': 368, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:12:36,544] Trial 12 finished with value: -386.0540624373639 and parameters: {'embedding_dim': 425, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:13:00,848] Trial 13 finished with value: -1013.9237484999151 and parameters: {'embedding_dim': 293, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:13:08,859] Trial 14 finished with value: -1218.834488254563 and parameters: {'embedding_dim': 456, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:13:24,831] Trial 15 finished with value: -445.2521107310073 and parameters: {'embedding_dim': 302, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:13:41,816] Trial 16 finished with value: -3878.9885559810937 and parameters: {'embedding_dim': 360, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:14:07,067] Trial 17 finished with value: -374.76256786525283 and parameters: {'embedding_dim': 436, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:14:28,293] Trial 18 finished with value: -795.1634404737688 and parameters: {'embedding_dim': 466, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:14:36,673] Trial 19 finished with value: -4858.536366885681 and parameters: {'embedding_dim': 256, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:15:10,237] Trial 20 finished with value: -155.3076499058528 and parameters: {'embedding_dim': 384, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:15:44,508] Trial 21 finished with value: -112.73626717410339 and parameters: {'embedding_dim': 384, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:16:27,876] Trial 22 finished with value: -930.8688653201242 and parameters: {'embedding_dim': 388, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:17:00,403] Trial 23 finished with value: -853.7235048447528 and parameters: {'embedding_dim': 332, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:17:44,038] Trial 24 finished with value: -237.23362489471359 and parameters: {'embedding_dim': 379, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:18:18,847] Trial 25 finished with value: -2313.2100271773006 and parameters: {'embedding_dim': 349, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:18:52,822] Trial 26 finished with value: -2514.031820122439 and parameters: {'embedding_dim': 310, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:19:36,354] Trial 27 finished with value: -712.0297854630284 and parameters: {'embedding_dim': 401, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:19:51,241] Trial 28 finished with value: -1385.910794630032 and parameters: {'embedding_dim': 496, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 2 with value: -83.36721117130165. +[I 2025-12-18 19:20:07,646] Trial 29 finished with value: -3169.820437615807 and parameters: {'embedding_dim': 270, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 2 with value: -83.36721117130165. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 19:20:27,004] A new study created in memory with name: no-name-312cf868-55c0-447e-a0e0-49133d140ef4 +[I 2025-12-18 19:20:48,158] Trial 0 finished with value: -29.582450422571895 and parameters: {'embedding_dim': 106, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 0 with value: -29.582450422571895. +[I 2025-12-18 19:20:52,542] Trial 1 finished with value: -20.89495153634547 and parameters: {'embedding_dim': 116, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -20.89495153634547. +[I 2025-12-18 19:21:02,782] Trial 2 finished with value: -62.72000169492832 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -20.89495153634547. +[I 2025-12-18 19:21:09,058] Trial 3 finished with value: -8.539733412278723 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 3 with value: -8.539733412278723. +[I 2025-12-18 19:21:13,415] Trial 4 finished with value: -232.2669421982693 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 3 with value: -8.539733412278723. +[I 2025-12-18 19:21:59,451] Trial 5 finished with value: -71.85649422639639 and parameters: {'embedding_dim': 71, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 3 with value: -8.539733412278723. +[I 2025-12-18 19:22:33,060] Trial 6 finished with value: -34.18222143346203 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 3 with value: -8.539733412278723. +[I 2025-12-18 19:23:19,430] Trial 7 finished with value: -1.0494340555773458 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:23:35,526] Trial 8 finished with value: -4.510307499772583 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:23:57,151] Trial 9 finished with value: -89.50504092420931 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:24:43,012] Trial 10 finished with value: -30.449445501188876 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:24:59,099] Trial 11 finished with value: -42.26135449281364 and parameters: {'embedding_dim': 70, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:25:21,423] Trial 12 finished with value: -42.47561047636363 and parameters: {'embedding_dim': 84, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:25:55,038] Trial 13 finished with value: -6.695988684533196 and parameters: {'embedding_dim': 78, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:26:11,480] Trial 14 finished with value: -8.628268545963135 and parameters: {'embedding_dim': 99, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:26:57,537] Trial 15 finished with value: -41.21292409493001 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:27:13,152] Trial 16 finished with value: -29.540033649744487 and parameters: {'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:28:00,025] Trial 17 finished with value: -3.842875852399056 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:28:45,692] Trial 18 finished with value: -28.166684201387113 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:29:31,908] Trial 19 finished with value: -3.6971759143926883 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:30:17,897] Trial 20 finished with value: -9.354373928338742 and parameters: {'embedding_dim': 120, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:31:04,362] Trial 21 finished with value: -5.509681251202721 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:31:50,589] Trial 22 finished with value: -63.70990850298192 and parameters: {'embedding_dim': 91, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:32:37,025] Trial 23 finished with value: -26.557540021398857 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:33:22,999] Trial 24 finished with value: -27.433725438376253 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:34:08,928] Trial 25 finished with value: -12.760075499319484 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:34:17,192] Trial 26 finished with value: -15.61743545982989 and parameters: {'embedding_dim': 114, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:35:04,372] Trial 27 finished with value: -2.835854287307929 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:35:38,111] Trial 28 finished with value: -88.18682364380638 and parameters: {'embedding_dim': 87, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:36:23,825] Trial 29 finished with value: -11.166165139174415 and parameters: {'embedding_dim': 81, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:36:32,115] Trial 30 finished with value: -13.157729138027435 and parameters: {'embedding_dim': 104, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:37:18,134] Trial 31 finished with value: -5.507780819909534 and parameters: {'embedding_dim': 95, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:38:04,835] Trial 32 finished with value: -3.2234274431861074 and parameters: {'embedding_dim': 87, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:38:50,842] Trial 33 finished with value: -13.574122182895758 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:39:36,655] Trial 34 finished with value: -16.02488176569186 and parameters: {'embedding_dim': 110, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:39:44,873] Trial 35 finished with value: -5.0792270761618505 and parameters: {'embedding_dim': 75, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:40:06,521] Trial 36 finished with value: -25.273367681020176 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:40:52,619] Trial 37 finished with value: -31.199104536595033 and parameters: {'embedding_dim': 119, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:41:00,946] Trial 38 finished with value: -6.26388340357699 and parameters: {'embedding_dim': 88, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:41:35,030] Trial 39 finished with value: -6.428994438384795 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:42:09,206] Trial 40 finished with value: -30.40030437206482 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:42:55,416] Trial 41 finished with value: -27.707025665325 and parameters: {'embedding_dim': 96, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:43:41,306] Trial 42 finished with value: -4.476707604876703 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:44:27,698] Trial 43 finished with value: -30.266022665299563 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:45:13,471] Trial 44 finished with value: -100.97425365672783 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:45:59,127] Trial 45 finished with value: -123.63894578661663 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:46:20,460] Trial 46 finished with value: -66.27189388826959 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:46:41,888] Trial 47 finished with value: -76.8867838842647 and parameters: {'embedding_dim': 110, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:47:28,378] Trial 48 finished with value: -49.315730991508275 and parameters: {'embedding_dim': 124, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:47:50,102] Trial 49 finished with value: -27.451244153404883 and parameters: {'embedding_dim': 77, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 7 with value: -1.0494340555773458. +[I 2025-12-18 19:48:36,588] A new study created in memory with name: no-name-569cc351-e7ba-4412-914a-08e2d1fc7809 +[I 2025-12-18 19:49:00,740] Trial 0 finished with value: -213.4363430241164 and parameters: {'embedding_dim': 224, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -213.4363430241164. +[I 2025-12-18 19:49:13,159] Trial 1 finished with value: -1181.6853205066755 and parameters: {'embedding_dim': 366, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 0 with value: -213.4363430241164. +[I 2025-12-18 19:49:29,100] Trial 2 finished with value: -941.0367103227454 and parameters: {'embedding_dim': 160, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -213.4363430241164. +[I 2025-12-18 19:49:47,724] Trial 3 finished with value: -1100.9743850052632 and parameters: {'embedding_dim': 342, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -213.4363430241164. +[I 2025-12-18 19:49:57,625] Trial 4 finished with value: -736.8113531381948 and parameters: {'embedding_dim': 205, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -213.4363430241164. +[I 2025-12-18 19:50:05,150] Trial 5 finished with value: -480.0410952261403 and parameters: {'embedding_dim': 378, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -213.4363430241164. +[I 2025-12-18 19:50:20,024] Trial 6 finished with value: -442.479736222115 and parameters: {'embedding_dim': 282, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 0 with value: -213.4363430241164. +[I 2025-12-18 19:50:40,843] Trial 7 finished with value: -351.7152978270157 and parameters: {'embedding_dim': 130, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 0 with value: -213.4363430241164. +[I 2025-12-18 19:50:56,510] Trial 8 finished with value: -1288.0927439657132 and parameters: {'embedding_dim': 402, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 0 with value: -213.4363430241164. +[I 2025-12-18 19:51:03,918] Trial 9 finished with value: -1035.8743535227813 and parameters: {'embedding_dim': 361, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -213.4363430241164. +[I 2025-12-18 19:51:11,740] Trial 10 finished with value: -469.6704790515681 and parameters: {'embedding_dim': 469, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -213.4363430241164. +[I 2025-12-18 19:51:33,051] Trial 11 finished with value: -203.13349418853673 and parameters: {'embedding_dim': 135, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -203.13349418853673. +[I 2025-12-18 19:51:58,748] Trial 12 finished with value: -211.59073653738517 and parameters: {'embedding_dim': 239, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 11 with value: -203.13349418853673. +[I 2025-12-18 19:52:18,680] Trial 13 finished with value: -610.0031102316503 and parameters: {'embedding_dim': 274, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -203.13349418853673. +[I 2025-12-18 19:52:43,111] Trial 14 finished with value: -515.8776566295272 and parameters: {'embedding_dim': 198, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 11 with value: -203.13349418853673. +[I 2025-12-18 19:53:03,132] Trial 15 finished with value: -259.99128396497053 and parameters: {'embedding_dim': 260, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 11 with value: -203.13349418853673. +[I 2025-12-18 19:53:28,023] Trial 16 finished with value: -32.287764179031356 and parameters: {'embedding_dim': 132, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 16 with value: -32.287764179031356. +[I 2025-12-18 19:53:39,810] Trial 17 finished with value: -584.3885106065414 and parameters: {'embedding_dim': 150, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 16 with value: -32.287764179031356. +[I 2025-12-18 19:54:00,555] Trial 18 finished with value: -771.2408440191888 and parameters: {'embedding_dim': 180, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 16 with value: -32.287764179031356. +[I 2025-12-18 19:54:25,564] Trial 19 finished with value: -280.6401832965448 and parameters: {'embedding_dim': 484, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 16 with value: -32.287764179031356. +[I 2025-12-18 19:54:37,179] Trial 20 finished with value: -161.63755523506546 and parameters: {'embedding_dim': 131, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 16 with value: -32.287764179031356. +[I 2025-12-18 19:54:49,073] Trial 21 finished with value: -209.28205164680526 and parameters: {'embedding_dim': 140, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 16 with value: -32.287764179031356. +[I 2025-12-18 19:54:57,539] Trial 22 finished with value: -233.62441889824245 and parameters: {'embedding_dim': 177, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 16 with value: -32.287764179031356. +[I 2025-12-18 19:55:09,698] Trial 23 finished with value: -848.8658258949861 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 16 with value: -32.287764179031356. +[I 2025-12-18 19:55:24,656] Trial 24 finished with value: -279.4234639290282 and parameters: {'embedding_dim': 175, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 16 with value: -32.287764179031356. +[I 2025-12-18 19:55:41,010] Trial 25 finished with value: -765.6001300724286 and parameters: {'embedding_dim': 311, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 16 with value: -32.287764179031356. +[I 2025-12-18 19:55:46,631] Trial 26 finished with value: -687.582825501005 and parameters: {'embedding_dim': 216, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 16 with value: -32.287764179031356. +[I 2025-12-18 19:55:58,352] Trial 27 finished with value: -352.73391870689875 and parameters: {'embedding_dim': 417, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 16 with value: -32.287764179031356. +[I 2025-12-18 19:56:12,865] Trial 28 finished with value: -253.23880792993805 and parameters: {'embedding_dim': 242, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 16 with value: -32.287764179031356. +[I 2025-12-18 19:56:37,737] Trial 29 finished with value: -541.3594735640255 and parameters: {'embedding_dim': 165, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 16 with value: -32.287764179031356. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 19:57:03,541] A new study created in memory with name: no-name-7d6f7add-b4aa-4708-a53f-f4ffde26b8a1 +[I 2025-12-18 19:57:50,286] Trial 0 finished with value: -29.895903635811848 and parameters: {'embedding_dim': 83, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 0 with value: -29.895903635811848. +[I 2025-12-18 19:58:37,317] Trial 1 finished with value: -0.8810856816152959 and parameters: {'embedding_dim': 99, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 19:58:59,232] Trial 2 finished with value: -18.69323632126114 and parameters: {'embedding_dim': 101, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 19:59:20,673] Trial 3 finished with value: -14.772581337519625 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 19:59:30,830] Trial 4 finished with value: -1.2757743035380151 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 19:59:52,595] Trial 5 finished with value: -23.882795629906564 and parameters: {'embedding_dim': 85, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 20:00:26,621] Trial 6 finished with value: -16.342761274946312 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 20:00:30,895] Trial 7 finished with value: -164.67540460300796 and parameters: {'embedding_dim': 113, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 20:01:17,751] Trial 8 finished with value: -2.5768283104935854 and parameters: {'embedding_dim': 68, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 20:01:39,711] Trial 9 finished with value: -8.734848141969879 and parameters: {'embedding_dim': 121, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 20:01:46,056] Trial 10 finished with value: -38.88742201878578 and parameters: {'embedding_dim': 66, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 20:02:02,323] Trial 11 finished with value: -6.038940818256583 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 20:02:12,488] Trial 12 finished with value: -266.64528347780515 and parameters: {'embedding_dim': 97, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 20:02:28,484] Trial 13 finished with value: -43.638127453448725 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 20:02:35,186] Trial 14 finished with value: -101.52400630010968 and parameters: {'embedding_dim': 105, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 20:03:22,345] Trial 15 finished with value: -1.1769317043703273 and parameters: {'embedding_dim': 91, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 20:04:08,403] Trial 16 finished with value: -20.900037446144758 and parameters: {'embedding_dim': 76, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 1 with value: -0.8810856816152959. +[I 2025-12-18 20:04:54,559] Trial 17 finished with value: -0.3996774804402014 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 17 with value: -0.3996774804402014. +[I 2025-12-18 20:05:41,030] Trial 18 finished with value: -7.6155417377186145 and parameters: {'embedding_dim': 76, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 17 with value: -0.3996774804402014. +[I 2025-12-18 20:06:28,314] Trial 19 finished with value: -24.954233860245314 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 17 with value: -0.3996774804402014. +[I 2025-12-18 20:07:02,694] Trial 20 finished with value: -5.664695170877735 and parameters: {'embedding_dim': 118, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 17 with value: -0.3996774804402014. +[I 2025-12-18 20:07:48,960] Trial 21 finished with value: -34.47749639936402 and parameters: {'embedding_dim': 90, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 17 with value: -0.3996774804402014. +[I 2025-12-18 20:08:35,517] Trial 22 finished with value: -4.700192111230487 and parameters: {'embedding_dim': 89, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 17 with value: -0.3996774804402014. +[I 2025-12-18 20:09:22,424] Trial 23 finished with value: -11.198329142143669 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 17 with value: -0.3996774804402014. +[I 2025-12-18 20:10:08,768] Trial 24 finished with value: -4.78516453372615 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 17 with value: -0.3996774804402014. +[I 2025-12-18 20:10:17,244] Trial 25 finished with value: -0.01488625275036666 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:10:23,694] Trial 26 finished with value: -137.46042084395629 and parameters: {'embedding_dim': 102, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:10:32,389] Trial 27 finished with value: -1.6318528937975745 and parameters: {'embedding_dim': 128, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:10:40,802] Trial 28 finished with value: -25.33148821518878 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:10:49,046] Trial 29 finished with value: -0.48611214024748517 and parameters: {'embedding_dim': 80, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:10:55,324] Trial 30 finished with value: -3.5137890308118918 and parameters: {'embedding_dim': 72, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:11:04,210] Trial 31 finished with value: -26.926325728152985 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:11:12,815] Trial 32 finished with value: -50.21145696463047 and parameters: {'embedding_dim': 86, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:11:21,075] Trial 33 finished with value: -2.828881693045495 and parameters: {'embedding_dim': 98, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:11:29,936] Trial 34 finished with value: -44.81278240928277 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:11:38,794] Trial 35 finished with value: -79.34759189202994 and parameters: {'embedding_dim': 88, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:12:24,925] Trial 36 finished with value: -8.863790439859942 and parameters: {'embedding_dim': 100, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:12:33,460] Trial 37 finished with value: -10.350255737876434 and parameters: {'embedding_dim': 93, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:13:19,755] Trial 38 finished with value: -3.707930174966784 and parameters: {'embedding_dim': 112, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:13:26,104] Trial 39 finished with value: -46.1329356923254 and parameters: {'embedding_dim': 106, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:13:48,144] Trial 40 finished with value: -38.32015726326897 and parameters: {'embedding_dim': 79, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:14:34,052] Trial 41 finished with value: -19.527872567420918 and parameters: {'embedding_dim': 92, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:15:20,500] Trial 42 finished with value: -5.607675639633684 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:16:06,945] Trial 43 finished with value: -19.016334289315378 and parameters: {'embedding_dim': 95, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:16:53,083] Trial 44 finished with value: -3.697604989461756 and parameters: {'embedding_dim': 85, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:17:39,019] Trial 45 finished with value: -0.7656482465248793 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:17:49,506] Trial 46 finished with value: -6.860470123706376 and parameters: {'embedding_dim': 64, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:18:36,172] Trial 47 finished with value: -0.5795132536478492 and parameters: {'embedding_dim': 72, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:19:21,962] Trial 48 finished with value: -14.661154462358603 and parameters: {'embedding_dim': 71, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:19:30,261] Trial 49 finished with value: -0.4058804462709335 and parameters: {'embedding_dim': 69, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 25 with value: -0.01488625275036666. +[I 2025-12-18 20:19:39,306] A new study created in memory with name: no-name-ca4632dd-d9b1-40fc-8b94-9b8400d0d8bf +[I 2025-12-18 20:20:53,658] Trial 0 finished with value: -94.5713937557659 and parameters: {'embedding_dim': 463, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -94.5713937557659. +[I 2025-12-18 20:22:09,851] Trial 1 finished with value: -403.90937900466236 and parameters: {'embedding_dim': 416, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -94.5713937557659. +[I 2025-12-18 20:22:24,951] Trial 2 finished with value: -1606.8205178264832 and parameters: {'embedding_dim': 297, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 3}. Best is trial 0 with value: -94.5713937557659. +[I 2025-12-18 20:22:36,675] Trial 3 finished with value: -4683.778130748453 and parameters: {'embedding_dim': 391, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -94.5713937557659. +[I 2025-12-18 20:22:45,794] Trial 4 finished with value: -471.2477559968099 and parameters: {'embedding_dim': 289, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -94.5713937557659. +[I 2025-12-18 20:22:57,582] Trial 5 finished with value: -2610.7146638619506 and parameters: {'embedding_dim': 420, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 2}. Best is trial 0 with value: -94.5713937557659. +[I 2025-12-18 20:23:18,101] Trial 6 finished with value: -493.5120426293405 and parameters: {'embedding_dim': 241, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 0 with value: -94.5713937557659. +[I 2025-12-18 20:23:48,872] Trial 7 finished with value: -369.98379733287504 and parameters: {'embedding_dim': 486, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -94.5713937557659. +[I 2025-12-18 20:25:05,137] Trial 8 finished with value: -618.8478038588833 and parameters: {'embedding_dim': 257, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -94.5713937557659. +[I 2025-12-18 20:26:20,657] Trial 9 finished with value: -1728.3434586755582 and parameters: {'embedding_dim': 297, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 0 with value: -94.5713937557659. +[I 2025-12-18 20:26:59,589] Trial 10 finished with value: -50.568181782049614 and parameters: {'embedding_dim': 174, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -50.568181782049614. +[I 2025-12-18 20:27:38,643] Trial 11 finished with value: -409.4783626388238 and parameters: {'embedding_dim': 136, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -50.568181782049614. +[I 2025-12-18 20:28:15,966] Trial 12 finished with value: -219.1237830361222 and parameters: {'embedding_dim': 152, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -50.568181782049614. +[I 2025-12-18 20:28:52,866] Trial 13 finished with value: -182.33207903559264 and parameters: {'embedding_dim': 212, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 10 with value: -50.568181782049614. +[I 2025-12-18 20:29:52,908] Trial 14 finished with value: -93.24267271498425 and parameters: {'embedding_dim': 357, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -50.568181782049614. +[I 2025-12-18 20:30:55,700] Trial 15 finished with value: -228.55353412973773 and parameters: {'embedding_dim': 354, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 10 with value: -50.568181782049614. +[I 2025-12-18 20:31:25,738] Trial 16 finished with value: -427.52050568105545 and parameters: {'embedding_dim': 191, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 10 with value: -50.568181782049614. +[I 2025-12-18 20:32:04,340] Trial 17 finished with value: -41.57122147760429 and parameters: {'embedding_dim': 343, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 17 with value: -41.57122147760429. +[I 2025-12-18 20:32:26,635] Trial 18 finished with value: -409.7289205525641 and parameters: {'embedding_dim': 358, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 17 with value: -41.57122147760429. +[I 2025-12-18 20:32:57,041] Trial 19 finished with value: -283.0649757479858 and parameters: {'embedding_dim': 165, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 17 with value: -41.57122147760429. +[I 2025-12-18 20:33:34,705] Trial 20 finished with value: -131.8149506040577 and parameters: {'embedding_dim': 254, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 17 with value: -41.57122147760429. +[I 2025-12-18 20:34:38,086] Trial 21 finished with value: -41.54358848393262 and parameters: {'embedding_dim': 335, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 21 with value: -41.54358848393262. +[I 2025-12-18 20:35:14,881] Trial 22 finished with value: -320.57931758763965 and parameters: {'embedding_dim': 327, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 21 with value: -41.54358848393262. +[I 2025-12-18 20:35:51,463] Trial 23 finished with value: -243.2426311243094 and parameters: {'embedding_dim': 332, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 21 with value: -41.54358848393262. +[I 2025-12-18 20:36:42,400] Trial 24 finished with value: -1.0702297137364334 and parameters: {'embedding_dim': 402, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 24 with value: -1.0702297137364334. +[I 2025-12-18 20:37:32,826] Trial 25 finished with value: -129.33449613508293 and parameters: {'embedding_dim': 443, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 24 with value: -1.0702297137364334. +[I 2025-12-18 20:38:10,015] Trial 26 finished with value: -1059.8969908163099 and parameters: {'embedding_dim': 384, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 24 with value: -1.0702297137364334. +[I 2025-12-18 20:39:00,366] Trial 27 finished with value: -567.4649078522216 and parameters: {'embedding_dim': 509, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 24 with value: -1.0702297137364334. +[I 2025-12-18 20:39:49,667] Trial 28 finished with value: -19.54893998742944 and parameters: {'embedding_dim': 384, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 24 with value: -1.0702297137364334. +[I 2025-12-18 20:40:14,070] Trial 29 finished with value: -46.87576110056801 and parameters: {'embedding_dim': 458, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 24 with value: -1.0702297137364334. +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:484: FutureWarning: `BaseEstimator._check_n_features` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_n_features` instead. + warnings.warn( +/opt/conda/envs/py39/lib/python3.9/site-packages/sklearn/base.py:493: FutureWarning: `BaseEstimator._check_feature_names` is deprecated in 1.6 and will be removed in 1.7. Use `sklearn.utils.validation._check_feature_names` instead. + warnings.warn( +[I 2025-12-18 20:41:06,419] A new study created in memory with name: no-name-fa55ef3f-03d2-4519-a11a-7c8d08151a04 +[I 2025-12-18 20:41:15,175] Trial 0 finished with value: -26.261535409815764 and parameters: {'embedding_dim': 105, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 0 with value: -26.261535409815764. +[I 2025-12-18 20:41:19,432] Trial 1 finished with value: -37.471886209802626 and parameters: {'embedding_dim': 94, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -26.261535409815764. +[I 2025-12-18 20:42:05,708] Trial 2 finished with value: -7.449742730473408 and parameters: {'embedding_dim': 108, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 2 with value: -7.449742730473408. +[I 2025-12-18 20:42:27,499] Trial 3 finished with value: -21.534291942436916 and parameters: {'embedding_dim': 77, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -7.449742730473408. +[I 2025-12-18 20:42:49,917] Trial 4 finished with value: -90.20708896113409 and parameters: {'embedding_dim': 92, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 1}. Best is trial 2 with value: -7.449742730473408. +[I 2025-12-18 20:42:58,711] Trial 5 finished with value: -5.169671012330819 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 5 with value: -5.169671012330819. +[I 2025-12-18 20:43:09,331] Trial 6 finished with value: -182.7102279721978 and parameters: {'embedding_dim': 82, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 5 with value: -5.169671012330819. +[I 2025-12-18 20:43:15,581] Trial 7 finished with value: -13.852004240101428 and parameters: {'embedding_dim': 111, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 5 with value: -5.169671012330819. +[I 2025-12-18 20:44:01,838] Trial 8 finished with value: -7.004204172432893 and parameters: {'embedding_dim': 67, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 3}. Best is trial 5 with value: -5.169671012330819. +[I 2025-12-18 20:44:36,072] Trial 9 finished with value: -245.47488424378926 and parameters: {'embedding_dim': 67, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 5 with value: -5.169671012330819. +[I 2025-12-18 20:44:57,319] Trial 10 finished with value: -5.876541996762147 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 5 with value: -5.169671012330819. +[I 2025-12-18 20:45:18,785] Trial 11 finished with value: -1.8328224965237159 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 11 with value: -1.8328224965237159. +[I 2025-12-18 20:45:34,690] Trial 12 finished with value: -4.226378141545593 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -1.8328224965237159. +[I 2025-12-18 20:45:50,548] Trial 13 finished with value: -27.86150621506293 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -1.8328224965237159. +[I 2025-12-18 20:46:06,579] Trial 14 finished with value: -11.655717285598902 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -1.8328224965237159. +[I 2025-12-18 20:46:22,414] Trial 15 finished with value: -59.873851589494684 and parameters: {'embedding_dim': 118, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 11 with value: -1.8328224965237159. +[I 2025-12-18 20:46:38,349] Trial 16 finished with value: -1.3080035174410252 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 16 with value: -1.3080035174410252. +[I 2025-12-18 20:47:00,018] Trial 17 finished with value: -42.78274399233578 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 16 with value: -1.3080035174410252. +[I 2025-12-18 20:47:16,076] Trial 18 finished with value: -32.19730947036871 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 16 with value: -1.3080035174410252. +[I 2025-12-18 20:47:38,743] Trial 19 finished with value: -75.11481748005704 and parameters: {'embedding_dim': 127, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 16 with value: -1.3080035174410252. +[I 2025-12-18 20:47:54,514] Trial 20 finished with value: -12.512693734102495 and parameters: {'embedding_dim': 101, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 16 with value: -1.3080035174410252. +[I 2025-12-18 20:48:10,325] Trial 21 finished with value: -8.996830527637389 and parameters: {'embedding_dim': 122, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 16 with value: -1.3080035174410252. +[I 2025-12-18 20:48:26,165] Trial 22 finished with value: -6.08868424625778 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 16 with value: -1.3080035174410252. +[I 2025-12-18 20:48:42,167] Trial 23 finished with value: -0.41201614357559596 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:48:52,385] Trial 24 finished with value: -163.96031449659594 and parameters: {'embedding_dim': 113, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:49:08,180] Trial 25 finished with value: -90.51139150913451 and parameters: {'embedding_dim': 119, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:49:24,593] Trial 26 finished with value: -12.032604108983735 and parameters: {'embedding_dim': 122, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:49:45,902] Trial 27 finished with value: -5.345873007062729 and parameters: {'embedding_dim': 115, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 3}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:50:01,768] Trial 28 finished with value: -52.49627122861388 and parameters: {'embedding_dim': 109, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:50:10,281] Trial 29 finished with value: -12.208602954685889 and parameters: {'embedding_dim': 104, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:50:18,963] Trial 30 finished with value: -63.08379950318569 and parameters: {'embedding_dim': 128, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:50:35,014] Trial 31 finished with value: -60.77278401848871 and parameters: {'embedding_dim': 123, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:50:51,583] Trial 32 finished with value: -19.530051233158197 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:51:02,328] Trial 33 finished with value: -17.202480736295666 and parameters: {'embedding_dim': 124, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:51:18,854] Trial 34 finished with value: -7.960836523585964 and parameters: {'embedding_dim': 116, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:51:52,812] Trial 35 finished with value: -17.42127085288466 and parameters: {'embedding_dim': 107, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:51:57,332] Trial 36 finished with value: -203.4216191313313 and parameters: {'embedding_dim': 125, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:52:07,679] Trial 37 finished with value: -38.25889824941553 and parameters: {'embedding_dim': 86, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 128, 'discriminator_steps': 1}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:52:41,763] Trial 38 finished with value: -6.643104366624849 and parameters: {'embedding_dim': 112, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:52:58,264] Trial 39 finished with value: -6.100671182027996 and parameters: {'embedding_dim': 73, 'generator_dim': (128, 128), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 128, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:53:06,876] Trial 40 finished with value: -86.64421000945194 and parameters: {'embedding_dim': 120, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:53:15,644] Trial 41 finished with value: -20.934363253079308 and parameters: {'embedding_dim': 90, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:53:23,953] Trial 42 finished with value: -81.0131639341121 and parameters: {'embedding_dim': 89, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:53:32,417] Trial 43 finished with value: -102.01727392117176 and parameters: {'embedding_dim': 96, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:53:40,954] Trial 44 finished with value: -4.454021265646464 and parameters: {'embedding_dim': 82, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:54:14,868] Trial 45 finished with value: -2.4728910575699645 and parameters: {'embedding_dim': 84, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:54:48,999] Trial 46 finished with value: -9.617860097369373 and parameters: {'embedding_dim': 74, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:55:23,062] Trial 47 finished with value: -119.43471017629268 and parameters: {'embedding_dim': 81, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:55:57,282] Trial 48 finished with value: -59.72979689945067 and parameters: {'embedding_dim': 125, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 4, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:56:31,722] Trial 49 finished with value: -4.340613762106582 and parameters: {'embedding_dim': 97, 'generator_dim': (64, 64), 'discriminator_dim': (64, 64), 'pac': 8, 'batch_size': 64, 'discriminator_steps': 2}. Best is trial 23 with value: -0.41201614357559596. +[I 2025-12-18 20:56:48,464] A new study created in memory with name: no-name-5709f19d-50b4-4681-b54b-ac96fb65e4f0 +[I 2025-12-18 20:57:05,289] Trial 0 finished with value: -373.5427081308229 and parameters: {'embedding_dim': 404, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 0 with value: -373.5427081308229. +[I 2025-12-18 20:57:26,339] Trial 1 finished with value: -1263.6110332820128 and parameters: {'embedding_dim': 418, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 1}. Best is trial 0 with value: -373.5427081308229. +[I 2025-12-18 20:57:47,068] Trial 2 finished with value: -3084.8963296560073 and parameters: {'embedding_dim': 235, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 0 with value: -373.5427081308229. +[I 2025-12-18 20:57:55,841] Trial 3 finished with value: -377.69750112087706 and parameters: {'embedding_dim': 461, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 1}. Best is trial 0 with value: -373.5427081308229. +[I 2025-12-18 20:58:23,291] Trial 4 finished with value: -201.40721086391898 and parameters: {'embedding_dim': 287, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 4 with value: -201.40721086391898. +[I 2025-12-18 20:59:16,910] Trial 5 finished with value: -424.4647709101849 and parameters: {'embedding_dim': 208, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 4}. Best is trial 4 with value: -201.40721086391898. +[I 2025-12-18 21:00:00,433] Trial 6 finished with value: -1897.7939680924728 and parameters: {'embedding_dim': 472, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 3}. Best is trial 4 with value: -201.40721086391898. +[I 2025-12-18 21:01:05,121] Trial 7 finished with value: -448.65892795627315 and parameters: {'embedding_dim': 200, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 256, 'discriminator_steps': 5}. Best is trial 4 with value: -201.40721086391898. +[I 2025-12-18 21:01:36,164] Trial 8 finished with value: -1085.7837324070124 and parameters: {'embedding_dim': 333, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2}. Best is trial 4 with value: -201.40721086391898. +[I 2025-12-18 21:02:01,972] Trial 9 finished with value: -251.24696820862198 and parameters: {'embedding_dim': 262, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 4 with value: -201.40721086391898. +[I 2025-12-18 21:02:22,920] Trial 10 finished with value: -238.64089344911798 and parameters: {'embedding_dim': 129, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -201.40721086391898. +[I 2025-12-18 21:02:44,091] Trial 11 finished with value: -1473.90784890763 and parameters: {'embedding_dim': 132, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -201.40721086391898. +[I 2025-12-18 21:03:02,146] Trial 12 finished with value: -324.15844852381167 and parameters: {'embedding_dim': 132, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 4 with value: -201.40721086391898. +[I 2025-12-18 21:03:23,703] Trial 13 finished with value: -660.4721505082293 and parameters: {'embedding_dim': 318, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -201.40721086391898. +[I 2025-12-18 21:03:49,637] Trial 14 finished with value: -283.5133956355826 and parameters: {'embedding_dim': 306, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 4 with value: -201.40721086391898. +[I 2025-12-18 21:04:10,692] Trial 15 finished with value: -431.28853250065634 and parameters: {'embedding_dim': 178, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 4 with value: -201.40721086391898. +[I 2025-12-18 21:04:37,725] Trial 16 finished with value: -173.93142431880605 and parameters: {'embedding_dim': 270, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 16 with value: -173.93142431880605. +[I 2025-12-18 21:04:58,668] Trial 17 finished with value: -319.05395800878347 and parameters: {'embedding_dim': 367, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -173.93142431880605. +[I 2025-12-18 21:05:20,452] Trial 18 finished with value: -381.0070130272949 and parameters: {'embedding_dim': 273, 'generator_dim': (128, 128), 'discriminator_dim': (128, 128), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -173.93142431880605. +[I 2025-12-18 21:05:47,316] Trial 19 finished with value: -332.8538735034296 and parameters: {'embedding_dim': 283, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 16 with value: -173.93142431880605. +[I 2025-12-18 21:06:04,004] Trial 20 finished with value: -666.8533296802971 and parameters: {'embedding_dim': 365, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 2}. Best is trial 16 with value: -173.93142431880605. +[I 2025-12-18 21:06:25,802] Trial 21 finished with value: -275.3656146876316 and parameters: {'embedding_dim': 175, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 16 with value: -173.93142431880605. +[I 2025-12-18 21:06:51,561] Trial 22 finished with value: -323.246627463434 and parameters: {'embedding_dim': 237, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 16 with value: -173.93142431880605. +[I 2025-12-18 21:07:21,942] Trial 23 finished with value: -568.4610121045886 and parameters: {'embedding_dim': 342, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 16 with value: -173.93142431880605. +[I 2025-12-18 21:07:39,513] Trial 24 finished with value: -447.68462829051145 and parameters: {'embedding_dim': 245, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 16 with value: -173.93142431880605. +[I 2025-12-18 21:08:11,307] Trial 25 finished with value: -468.7579283419807 and parameters: {'embedding_dim': 505, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 5}. Best is trial 16 with value: -173.93142431880605. +[I 2025-12-18 21:08:28,587] Trial 26 finished with value: -1148.0101725041936 and parameters: {'embedding_dim': 162, 'generator_dim': (256, 256), 'discriminator_dim': (128, 128), 'pac': 8, 'batch_size': 1024, 'discriminator_steps': 4}. Best is trial 16 with value: -173.93142431880605. +[I 2025-12-18 21:08:49,411] Trial 27 finished with value: -1041.2857606279479 and parameters: {'embedding_dim': 295, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 3}. Best is trial 16 with value: -173.93142431880605. +[I 2025-12-18 21:09:16,797] Trial 28 finished with value: -472.4919177977298 and parameters: {'embedding_dim': 218, 'generator_dim': (256, 256), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 512, 'discriminator_steps': 4}. Best is trial 16 with value: -173.93142431880605. +[I 2025-12-18 21:09:39,460] Trial 29 finished with value: -371.11038994846564 and parameters: {'embedding_dim': 422, 'generator_dim': (128, 128), 'discriminator_dim': (256, 256), 'pac': 4, 'batch_size': 1024, 'discriminator_steps': 5}. Best is trial 16 with value: -173.93142431880605. +Processing ../../data/data_for_modeling/incheon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_3_incheon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_3_incheon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_3_incheon.csv: Class 0=18766 | Class 1=16372 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_incheon.csv: Class 0=19073 | Class 1=19014 | Class 2=14595 +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/seoul_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_3_seoul_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_3_seoul_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_3_seoul.csv: Class 0=20482 | Class 1=17676 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_seoul.csv: Class 0=20498 | Class 1=19331 | Class 2=15873 +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/busan_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_3_busan_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_3_busan_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_3_busan.csv: Class 0=20057 | Class 1=15457 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_busan.csv: Class 0=20117 | Class 1=16502 | Class 2=16439 +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daegu_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_3_daegu_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_3_daegu_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_3_daegu.csv: Class 0=20290 | Class 1=18247 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_daegu.csv: Class 0=20323 | Class 1=18845 | Class 2=16913 +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/daejeon_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_3_daejeon_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_3_daejeon_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_3_daejeon.csv: Class 0=19664 | Class 1=17753 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_daejeon.csv: Class 0=19749 | Class 1=19428 | Class 2=15784 +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 0... +Processing ../../data/data_for_modeling/gwangju_train.csv: Optimizing CTGAN for class 1... +Saved CTGAN model for class 0: ../save_model/oversampling_models/smotenc_ctgan_20000_3_gwangju_class0.pkl +Saved CTGAN model for class 1: ../save_model/oversampling_models/smotenc_ctgan_20000_3_gwangju_class1.pkl +Saved augmented data only ../../data/data_oversampled/augmented_only/smotenc_ctgan20000_3_gwangju.csv: Class 0=19226 | Class 1=16920 +Saved ../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_gwangju.csv: Class 0=19277 | Class 1=18269 | Class 2=16144 + +========================================== +All SMOTENC+CTGAN sample generation completed! +========================================== diff --git a/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_10000_1.py b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_10000_1.py new file mode 100644 index 0000000000000000000000000000000000000000..d18ad67537e95bb99ed82cc248e861e99dbbb7c0 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_10000_1.py @@ -0,0 +1,316 @@ +import pandas as pd +import numpy as np +from pathlib import Path +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2018, 2019] +TARGET_SAMPLES_CLASS_0 = 10000 +TARGET_SAMPLES_CLASS_1_BASE = 10000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 CTGAN만 적용하여 증강 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # 원본 데이터에 multi_class 추가 + train_data = X.copy() + train_data['multi_class'] = y + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(train_data) + + # 클래스별 샘플 수 계산 + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - count_class_1 + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + train_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + train_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'ctgan_only_10000_1_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'ctgan_only_10000_1_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 저장 (CTGAN으로 생성된 샘플만) + augmented_only = pd.concat([well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # 원본 데이터와 필터링된 CTGAN 샘플 병합 + ctgan_data = pd.concat([train_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + ctgan_data = add_derived_features(ctgan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = ctgan_data[ctgan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/ctgan10000/ctgan10000_1_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) + diff --git a/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_10000_2.py b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_10000_2.py new file mode 100644 index 0000000000000000000000000000000000000000..7ba1b25ef1a2f8053a59d0bdd92b409a18a85d72 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_10000_2.py @@ -0,0 +1,317 @@ +import pandas as pd +import numpy as np +import os +from pathlib import Path +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2018, 2020] +TARGET_SAMPLES_CLASS_0 = 10000 +TARGET_SAMPLES_CLASS_1_BASE = 10000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 CTGAN만 적용하여 증강 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # 원본 데이터에 multi_class 추가 + train_data = X.copy() + train_data['multi_class'] = y + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(train_data) + + # 클래스별 샘플 수 계산 + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - count_class_1 + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + train_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + train_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'ctgan_only_10000_2_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'ctgan_only_10000_2_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 저장 (CTGAN으로 생성된 샘플만) + augmented_only = pd.concat([well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # 원본 데이터와 필터링된 CTGAN 샘플 병합 + ctgan_data = pd.concat([train_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + ctgan_data = add_derived_features(ctgan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = ctgan_data[ctgan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/ctgan10000/ctgan10000_2_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) + diff --git a/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_10000_3.py b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_10000_3.py new file mode 100644 index 0000000000000000000000000000000000000000..7d93bffd54f2007ab1e548439eb11fed087260ec --- /dev/null +++ b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_10000_3.py @@ -0,0 +1,317 @@ +import pandas as pd +import numpy as np +import os +from pathlib import Path +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2019, 2020] +TARGET_SAMPLES_CLASS_0 = 10000 +TARGET_SAMPLES_CLASS_1_BASE = 10000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 CTGAN만 적용하여 증강 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # 원본 데이터에 multi_class 추가 + train_data = X.copy() + train_data['multi_class'] = y + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(train_data) + + # 클래스별 샘플 수 계산 + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - count_class_1 + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + train_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + train_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'ctgan_only_10000_3_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'ctgan_only_10000_3_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 저장 (CTGAN으로 생성된 샘플만) + augmented_only = pd.concat([well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # 원본 데이터와 필터링된 CTGAN 샘플 병합 + ctgan_data = pd.concat([train_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + ctgan_data = add_derived_features(ctgan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = ctgan_data[ctgan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/ctgan10000/ctgan10000_3_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) + diff --git a/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_20000_1.py b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_20000_1.py new file mode 100644 index 0000000000000000000000000000000000000000..fc275ee7eedf41cdd48c16a595571f0eecc70a2a --- /dev/null +++ b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_20000_1.py @@ -0,0 +1,316 @@ +import pandas as pd +import numpy as np +from pathlib import Path +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2018, 2019] +TARGET_SAMPLES_CLASS_0 = 20000 +TARGET_SAMPLES_CLASS_1_BASE = 20000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 CTGAN만 적용하여 증강 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # 원본 데이터에 multi_class 추가 + train_data = X.copy() + train_data['multi_class'] = y + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(train_data) + + # 클래스별 샘플 수 계산 + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - count_class_1 + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + train_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + train_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'ctgan_only_20000_1_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'ctgan_only_20000_1_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 저장 (CTGAN으로 생성된 샘플만) + augmented_only = pd.concat([well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # 원본 데이터와 필터링된 CTGAN 샘플 병합 + ctgan_data = pd.concat([train_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + ctgan_data = add_derived_features(ctgan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = ctgan_data[ctgan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/ctgan20000/ctgan20000_1_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) + diff --git a/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_20000_2.py b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_20000_2.py new file mode 100644 index 0000000000000000000000000000000000000000..b35be55b34ba3b6eeabf0925e4d4ce65ec5468b1 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_20000_2.py @@ -0,0 +1,317 @@ +import pandas as pd +import numpy as np +import os +from pathlib import Path +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2018, 2020] +TARGET_SAMPLES_CLASS_0 = 20000 +TARGET_SAMPLES_CLASS_1_BASE = 20000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 CTGAN만 적용하여 증강 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # 원본 데이터에 multi_class 추가 + train_data = X.copy() + train_data['multi_class'] = y + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(train_data) + + # 클래스별 샘플 수 계산 + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - count_class_1 + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + train_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + train_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'ctgan_only_20000_2_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'ctgan_only_20000_2_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 저장 (CTGAN으로 생성된 샘플만) + augmented_only = pd.concat([well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # 원본 데이터와 필터링된 CTGAN 샘플 병합 + ctgan_data = pd.concat([train_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + ctgan_data = add_derived_features(ctgan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = ctgan_data[ctgan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/ctgan20000/ctgan20000_2_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) + diff --git a/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_20000_3.py b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_20000_3.py new file mode 100644 index 0000000000000000000000000000000000000000..21d66c9d02942c2976c463c1a756f939aa07af63 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_20000_3.py @@ -0,0 +1,317 @@ +import pandas as pd +import numpy as np +import os +from pathlib import Path +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2019, 2020] +TARGET_SAMPLES_CLASS_0 = 20000 +TARGET_SAMPLES_CLASS_1_BASE = 20000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 CTGAN만 적용하여 증강 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # 원본 데이터에 multi_class 추가 + train_data = X.copy() + train_data['multi_class'] = y + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(train_data) + + # 클래스별 샘플 수 계산 + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - count_class_1 + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + train_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + train_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'ctgan_only_20000_3_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'ctgan_only_20000_3_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 저장 (CTGAN으로 생성된 샘플만) + augmented_only = pd.concat([well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # 원본 데이터와 필터링된 CTGAN 샘플 병합 + ctgan_data = pd.concat([train_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + ctgan_data = add_derived_features(ctgan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = ctgan_data[ctgan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/ctgan20000/ctgan20000_3_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) + diff --git a/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_7000_1.py b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_7000_1.py new file mode 100644 index 0000000000000000000000000000000000000000..36156eb3256db5285abfb41cf932292812bceb00 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_7000_1.py @@ -0,0 +1,317 @@ +import pandas as pd +import numpy as np +import os +from pathlib import Path +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2018, 2019] +TARGET_SAMPLES_CLASS_0 = 7000 +TARGET_SAMPLES_CLASS_1_BASE = 7000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 CTGAN만 적용하여 증강 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # 원본 데이터에 multi_class 추가 + train_data = X.copy() + train_data['multi_class'] = y + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(train_data) + + # 클래스별 샘플 수 계산 + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - count_class_1 + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + train_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + train_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'ctgan_only_7000_1_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'ctgan_only_7000_1_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 저장 (CTGAN으로 생성된 샘플만) + augmented_only = pd.concat([well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # 원본 데이터와 필터링된 CTGAN 샘플 병합 + ctgan_data = pd.concat([train_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + ctgan_data = add_derived_features(ctgan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = ctgan_data[ctgan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/ctgan7000/ctgan7000_1_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) + diff --git a/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_7000_2.py b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_7000_2.py new file mode 100644 index 0000000000000000000000000000000000000000..c976a15372df4a79efa9266eb5afc892d3c3c1a0 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_7000_2.py @@ -0,0 +1,317 @@ +import pandas as pd +import numpy as np +import os +from pathlib import Path +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2018, 2020] +TARGET_SAMPLES_CLASS_0 = 7000 +TARGET_SAMPLES_CLASS_1_BASE = 7000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 CTGAN만 적용하여 증강 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # 원본 데이터에 multi_class 추가 + train_data = X.copy() + train_data['multi_class'] = y + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(train_data) + + # 클래스별 샘플 수 계산 + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - count_class_1 + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + train_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + train_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'ctgan_only_7000_2_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'ctgan_only_7000_2_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 저장 (CTGAN으로 생성된 샘플만) + augmented_only = pd.concat([well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # 원본 데이터와 필터링된 CTGAN 샘플 병합 + ctgan_data = pd.concat([train_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + ctgan_data = add_derived_features(ctgan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = ctgan_data[ctgan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/ctgan7000/ctgan7000_2_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) + diff --git a/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_7000_3.py b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_7000_3.py new file mode 100644 index 0000000000000000000000000000000000000000..68d3a3619c70ae4d1bb033475c376bb231b2dfed --- /dev/null +++ b/Analysis_code/2.make_oversample_data/only_ctgan/ctgan_sample_7000_3.py @@ -0,0 +1,317 @@ +import pandas as pd +import numpy as np +import os +from pathlib import Path +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2019, 2020] +TARGET_SAMPLES_CLASS_0 = 7000 +TARGET_SAMPLES_CLASS_1_BASE = 7000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 CTGAN만 적용하여 증강 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # 원본 데이터에 multi_class 추가 + train_data = X.copy() + train_data['multi_class'] = y + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(train_data) + + # 클래스별 샘플 수 계산 + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - count_class_1 + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + train_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + train_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'ctgan_only_7000_3_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'ctgan_only_7000_3_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 저장 (CTGAN으로 생성된 샘플만) + augmented_only = pd.concat([well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # 원본 데이터와 필터링된 CTGAN 샘플 병합 + ctgan_data = pd.concat([train_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + ctgan_data = add_derived_features(ctgan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = ctgan_data[ctgan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/ctgan7000/ctgan7000_3_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) + diff --git a/Analysis_code/2.make_oversample_data/run_ctgan_gpu0.bash b/Analysis_code/2.make_oversample_data/run_ctgan_gpu0.bash new file mode 100755 index 0000000000000000000000000000000000000000..04ee5272dd7030fe4a048da996aa4812e5d40c40 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/run_ctgan_gpu0.bash @@ -0,0 +1,58 @@ +#!/bin/bash + +# GPU 0번에서 CTGAN 샘플 생성 스크립트들을 순차적으로 실행 +# 실행 디렉토리: /workspace/visibility_prediction/Analysis_code/make_oversample_data + +export CUDA_VISIBLE_DEVICES=0 + +echo "==========================================" +echo "Starting CTGAN sample generation on GPU 0" +echo "==========================================" +echo "" + +# 7000 샘플 생성 +echo "=== Processing 7000 samples ===" +echo "Running only_ctgan/ctgan_sample_7000_1.py..." +python only_ctgan/ctgan_sample_7000_1.py +echo "" + +echo "Running only_ctgan/ctgan_sample_7000_2.py..." +python only_ctgan/ctgan_sample_7000_2.py +echo "" + +echo "Running only_ctgan/ctgan_sample_7000_3.py..." +python only_ctgan/ctgan_sample_7000_3.py +echo "" + +# 10000 샘플 생성 +echo "=== Processing 10000 samples ===" +echo "Running only_ctgan/ctgan_sample_10000_1.py..." +python only_ctgan/ctgan_sample_10000_1.py +echo "" + +echo "Running only_ctgan/ctgan_sample_10000_2.py..." +python only_ctgan/ctgan_sample_10000_2.py +echo "" + +echo "Running only_ctgan/ctgan_sample_10000_3.py..." +python only_ctgan/ctgan_sample_10000_3.py +echo "" + +# 20000 샘플 생성 +echo "=== Processing 20000 samples ===" +echo "Running only_ctgan/ctgan_sample_20000_1.py..." +python only_ctgan/ctgan_sample_20000_1.py +echo "" + +echo "Running only_ctgan/ctgan_sample_20000_2.py..." +python only_ctgan/ctgan_sample_20000_2.py +echo "" + +echo "Running only_ctgan/ctgan_sample_20000_3.py..." +python only_ctgan/ctgan_sample_20000_3.py +echo "" + +echo "==========================================" +echo "All CTGAN sample generation completed!" +echo "==========================================" + diff --git a/Analysis_code/2.make_oversample_data/run_ctgan_gpu1.bash b/Analysis_code/2.make_oversample_data/run_ctgan_gpu1.bash new file mode 100755 index 0000000000000000000000000000000000000000..e10bbfb43ad63a302a06db98b50d93854fd4fc74 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/run_ctgan_gpu1.bash @@ -0,0 +1,58 @@ +#!/bin/bash + +# GPU 1번에서 SMOTENC+CTGAN 샘플 생성 스크립트들을 순차적으로 실행 +# 실행 디렉토리: /workspace/visibility_prediction/Analysis_code/make_oversample_data + +export CUDA_VISIBLE_DEVICES=1 + +echo "==========================================" +echo "Starting SMOTENC+CTGAN sample generation on GPU 1" +echo "==========================================" +echo "" + +# 7000 샘플 생성 +echo "=== Processing 7000 samples ===" +echo "Running smotenc_ctgan/smotenc_ctgan_sample_7000_1.py..." +python smotenc_ctgan/smotenc_ctgan_sample_7000_1.py +echo "" + +echo "Running smotenc_ctgan/smotenc_ctgan_sample_7000_2.py..." +python smotenc_ctgan/smotenc_ctgan_sample_7000_2.py +echo "" + +echo "Running smotenc_ctgan/smotenc_ctgan_sample_7000_3.py..." +python smotenc_ctgan/smotenc_ctgan_sample_7000_3.py +echo "" + +# 10000 샘플 생성 +echo "=== Processing 10000 samples ===" +echo "Running smotenc_ctgan/smotenc_ctgan_sample_10000_1.py..." +python smotenc_ctgan/smotenc_ctgan_sample_10000_1.py +echo "" + +echo "Running smotenc_ctgan/smotenc_ctgan_sample_10000_2.py..." +python smotenc_ctgan/smotenc_ctgan_sample_10000_2.py +echo "" + +echo "Running smotenc_ctgan/smotenc_ctgan_sample_10000_3.py..." +python smotenc_ctgan/smotenc_ctgan_sample_10000_3.py +echo "" + +# 20000 샘플 생성 +echo "=== Processing 20000 samples ===" +echo "Running smotenc_ctgan/smotenc_ctgan_sample_20000_1.py..." +python smotenc_ctgan/smotenc_ctgan_sample_20000_1.py +echo "" + +echo "Running smotenc_ctgan/smotenc_ctgan_sample_20000_2.py..." +python smotenc_ctgan/smotenc_ctgan_sample_20000_2.py +echo "" + +echo "Running smotenc_ctgan/smotenc_ctgan_sample_20000_3.py..." +python smotenc_ctgan/smotenc_ctgan_sample_20000_3.py +echo "" + +echo "==========================================" +echo "All SMOTENC+CTGAN sample generation completed!" +echo "==========================================" + diff --git a/Analysis_code/2.make_oversample_data/smote_only/smote_sample_1.py b/Analysis_code/2.make_oversample_data/smote_only/smote_sample_1.py new file mode 100644 index 0000000000000000000000000000000000000000..4768d9d056a3cf186c85e82051dd1ba6a37d0955 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/smote_only/smote_sample_1.py @@ -0,0 +1,86 @@ +import pandas as pd +import numpy as np +from pathlib import Path + +from imblearn.over_sampling import SMOTENC + +# 지역별 데이터 파일 경로 +regions = ['incheon', 'seoul','busan', 'daegu', 'daejeon', 'gwangju'] +file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in regions] +output_paths = [f'../../../data/data_oversampled/smote/smote_1_{region}.csv' for region in regions] + +# 지역별 처리 +for file_path, output_path in zip(file_paths, output_paths): + # 데이터 로드 + original_data = pd.read_csv(file_path, index_col=0) + data = original_data.loc[original_data['year'].isin([2018, 2019]), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'], inplace=True) + + # SMOTENC에서 사용할 범주형 변수 열 번호 설정 + categorical_features_indices = [i for i, dtype in enumerate(X.dtypes) if dtype != 'float64'] + + # sampling_strategy 설정 + count_class_2 = (y == 2).sum() + sampling_strategy = { + 0: int(np.ceil(count_class_2 / 1000) * 500), + 1: int(np.ceil(count_class_2 / 1000) * 500), + 2: count_class_2 + } + + # SMOTENC 적용 + smotenc = SMOTENC(categorical_features=categorical_features_indices, sampling_strategy=sampling_strategy, random_state=42) + X_resampled, y_resampled = smotenc.fit_resample(X, y) + + # Resampled 데이터 생성 + lerp_data = X_resampled.copy() + lerp_data['multi_class'] = y_resampled + + # 제거변수 복구 + lerp_data['binary_class'] = lerp_data['multi_class'].apply(lambda x: 0 if x == 2 else 1) + lerp_data['hour_sin'] = np.sin(2 * np.pi * lerp_data['hour'] / 24) + lerp_data['hour_cos'] = np.cos(2 * np.pi * lerp_data['hour'] / 24) + lerp_data['month_sin'] = np.sin(2 * np.pi * lerp_data['month'] / 12) + lerp_data['month_cos'] = np.cos(2 * np.pi * lerp_data['month'] / 12) + lerp_data['ground_temp - temp_C'] = lerp_data['groundtemp'] - lerp_data['temp_C'] + + # 증강된 데이터만 저장 (SMOTENC으로 증강된 부분만) + # lerp_data의 처음 len(X)개는 원본 데이터이므로 제외 + original_data_count = len(X) + augmented_only = lerp_data.iloc[original_data_count:].copy() # SMOTENC으로 증강된 부분만 + augmented_only = augmented_only[augmented_only['multi_class'] != 2].copy() # 클래스 2 제외 + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = lerp_data[lerp_data['multi_class'] != 2] + original_class_2 = data[data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") \ No newline at end of file diff --git a/Analysis_code/2.make_oversample_data/smote_only/smote_sample_2.py b/Analysis_code/2.make_oversample_data/smote_only/smote_sample_2.py new file mode 100644 index 0000000000000000000000000000000000000000..57ebe158c00c82fbe0416daf59db3d52e627d3b8 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/smote_only/smote_sample_2.py @@ -0,0 +1,86 @@ +import pandas as pd +import numpy as np +from pathlib import Path + +from imblearn.over_sampling import SMOTENC + +# 지역별 데이터 파일 경로 +regions = ['incheon', 'seoul','busan', 'daegu', 'daejeon', 'gwangju'] +file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in regions] +output_paths = [f'../../../data/data_oversampled/smote/smote_2_{region}.csv' for region in regions] + +# 지역별 처리 +for file_path, output_path in zip(file_paths, output_paths): + # 데이터 로드 + original_data = pd.read_csv(file_path, index_col=0) + data = original_data.loc[original_data['year'].isin([2018, 2020]), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'], inplace=True) + + # SMOTENC에서 사용할 범주형 변수 열 번호 설정 + categorical_features_indices = [i for i, dtype in enumerate(X.dtypes) if dtype != 'float64'] + + # sampling_strategy 설정 + count_class_2 = (y == 2).sum() + sampling_strategy = { + 0: int(np.ceil(count_class_2 / 1000) * 500), + 1: int(np.ceil(count_class_2 / 1000) * 500), + 2: count_class_2 + } + + # SMOTENC 적용 + smotenc = SMOTENC(categorical_features=categorical_features_indices, sampling_strategy=sampling_strategy, random_state=42) + X_resampled, y_resampled = smotenc.fit_resample(X, y) + + # Resampled 데이터 생성 + lerp_data = X_resampled.copy() + lerp_data['multi_class'] = y_resampled + + # 제거변수 복구 + lerp_data['binary_class'] = lerp_data['multi_class'].apply(lambda x: 0 if x == 2 else 1) + lerp_data['hour_sin'] = np.sin(2 * np.pi * lerp_data['hour'] / 24) + lerp_data['hour_cos'] = np.cos(2 * np.pi * lerp_data['hour'] / 24) + lerp_data['month_sin'] = np.sin(2 * np.pi * lerp_data['month'] / 12) + lerp_data['month_cos'] = np.cos(2 * np.pi * lerp_data['month'] / 12) + lerp_data['ground_temp - temp_C'] = lerp_data['groundtemp'] - lerp_data['temp_C'] + + # 증강된 데이터만 저장 (SMOTENC으로 증강된 부분만) + # lerp_data의 처음 len(X)개는 원본 데이터이므로 제외 + original_data_count = len(X) + augmented_only = lerp_data.iloc[original_data_count:].copy() # SMOTENC으로 증강된 부분만 + augmented_only = augmented_only[augmented_only['multi_class'] != 2].copy() # 클래스 2 제외 + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = lerp_data[lerp_data['multi_class'] != 2] + original_class_2 = data[data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") \ No newline at end of file diff --git a/Analysis_code/2.make_oversample_data/smote_only/smote_sample_3.py b/Analysis_code/2.make_oversample_data/smote_only/smote_sample_3.py new file mode 100644 index 0000000000000000000000000000000000000000..a66a5ef0732cdfe8a25bfdb51770c9780018df5d --- /dev/null +++ b/Analysis_code/2.make_oversample_data/smote_only/smote_sample_3.py @@ -0,0 +1,86 @@ +import pandas as pd +import numpy as np +from pathlib import Path + +from imblearn.over_sampling import SMOTENC + +# 지역별 데이터 파일 경로 +regions = ['incheon', 'seoul','busan', 'daegu', 'daejeon', 'gwangju'] +file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in regions] +output_paths = [f'../../../data/data_oversampled/smote/smote_3_{region}.csv' for region in regions] + +# 지역별 처리 +for file_path, output_path in zip(file_paths, output_paths): + # 데이터 로드 + original_data = pd.read_csv(file_path, index_col=0) + data = original_data.loc[original_data['year'].isin([2019, 2020]), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'], inplace=True) + + # SMOTENC에서 사용할 범주형 변수 열 번호 설정 + categorical_features_indices = [i for i, dtype in enumerate(X.dtypes) if dtype != 'float64'] + + # sampling_strategy 설정 + count_class_2 = (y == 2).sum() + sampling_strategy = { + 0: int(np.ceil(count_class_2 / 1000) * 500), + 1: int(np.ceil(count_class_2 / 1000) * 500), + 2: count_class_2 + } + + # SMOTENC 적용 + smotenc = SMOTENC(categorical_features=categorical_features_indices, sampling_strategy=sampling_strategy, random_state=42) + X_resampled, y_resampled = smotenc.fit_resample(X, y) + + # Resampled 데이터 생성 + lerp_data = X_resampled.copy() + lerp_data['multi_class'] = y_resampled + + # 제거변수 복구 + lerp_data['binary_class'] = lerp_data['multi_class'].apply(lambda x: 0 if x == 2 else 1) + lerp_data['hour_sin'] = np.sin(2 * np.pi * lerp_data['hour'] / 24) + lerp_data['hour_cos'] = np.cos(2 * np.pi * lerp_data['hour'] / 24) + lerp_data['month_sin'] = np.sin(2 * np.pi * lerp_data['month'] / 12) + lerp_data['month_cos'] = np.cos(2 * np.pi * lerp_data['month'] / 12) + lerp_data['ground_temp - temp_C'] = lerp_data['groundtemp'] - lerp_data['temp_C'] + + # 증강된 데이터만 저장 (SMOTENC으로 증강된 부분만) + # lerp_data의 처음 len(X)개는 원본 데이터이므로 제외 + original_data_count = len(X) + augmented_only = lerp_data.iloc[original_data_count:].copy() # SMOTENC으로 증강된 부분만 + augmented_only = augmented_only[augmented_only['multi_class'] != 2].copy() # 클래스 2 제외 + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = lerp_data[lerp_data['multi_class'] != 2] + original_class_2 = data[data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") \ No newline at end of file diff --git a/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_10000_1.py b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_10000_1.py new file mode 100644 index 0000000000000000000000000000000000000000..7557507bd8f15010f6c7b67a52d21e3cd889375e --- /dev/null +++ b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_10000_1.py @@ -0,0 +1,375 @@ +import pandas as pd +import numpy as np +from pathlib import Path +from imblearn.over_sampling import SMOTENC +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2018, 2019] +TARGET_SAMPLES_CLASS_0 = 10000 +TARGET_SAMPLES_CLASS_1_BASE = 10000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_indices(X: pd.DataFrame) -> list: + """범주형 변수의 열 인덱스 반환""" + return [i for i, dtype in enumerate(X.dtypes) if dtype != 'float64'] + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def calculate_sampling_strategy(y: pd.Series) -> dict: + """ + SMOTENC를 위한 sampling_strategy 계산 + + Args: + y: 타겟 변수 + + Returns: + sampling_strategy 딕셔너리 + """ + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + count_class_2 = (y == 2).sum() + + return { + 0: 500 if count_class_0 <= 500 else 1000, + 1: int(np.ceil(count_class_1 / 100) * 100), # 백의 자리로 올림 + 2: count_class_2 + } + + +def apply_smotenc(X: pd.DataFrame, y: pd.Series, + categorical_features_indices: list, + sampling_strategy: dict) -> pd.DataFrame: + """ + SMOTENC 적용하여 데이터 증강 + + Args: + X: 특징 데이터 + y: 타겟 데이터 + categorical_features_indices: 범주형 변수 인덱스 + sampling_strategy: 샘플링 전략 + + Returns: + 증강된 데이터프레임 (multi_class 포함) + """ + smotenc = SMOTENC( + categorical_features=categorical_features_indices, + sampling_strategy=sampling_strategy, + random_state=RANDOM_STATE + ) + X_resampled, y_resampled = smotenc.fit_resample(X, y) + + resampled_data = X_resampled.copy() + resampled_data['multi_class'] = y_resampled + + return resampled_data + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 SMOTENC와 CTGAN을 순차적으로 적용 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # SMOTENC 적용 + categorical_features_indices = get_categorical_feature_indices(X) + sampling_strategy = calculate_sampling_strategy(y) + smotenc_data = apply_smotenc(X, y, categorical_features_indices, sampling_strategy) + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(smotenc_data) + + # 클래스별 샘플 수 계산 + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - int(np.ceil(count_class_1 / 100) * 100) + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + smotenc_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + smotenc_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'smotenc_ctgan_10000_1_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'smotenc_ctgan_10000_1_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 추출 (SMOTENC으로 증강된 부분 + CTGAN으로 생성된 샘플) + # smotenc_data의 처음 len(X)개는 원본 데이터이므로 제외 + original_data_count = len(X) + smotenc_augmented = smotenc_data.iloc[original_data_count:].copy() # SMOTENC으로 증강된 부분만 + + # 증강된 데이터만 병합 (SMOTENC 증강 + CTGAN 증강) + augmented_only = pd.concat([smotenc_augmented, well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # SMOTENC 데이터와 필터링된 CTGAN 샘플 병합 (최종 결과용) + smote_gan_data = pd.concat([smotenc_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + smote_gan_data = add_derived_features(smote_gan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = smote_gan_data[smote_gan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) diff --git a/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_10000_2.py b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_10000_2.py new file mode 100644 index 0000000000000000000000000000000000000000..34739dfc267dfb8e5c9fe41302489278c62a2bc1 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_10000_2.py @@ -0,0 +1,376 @@ +import pandas as pd +import numpy as np +import os +from pathlib import Path +from imblearn.over_sampling import SMOTENC +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2018, 2020] +TARGET_SAMPLES_CLASS_0 = 10000 +TARGET_SAMPLES_CLASS_1_BASE = 10000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_indices(X: pd.DataFrame) -> list: + """범주형 변수의 열 인덱스 반환""" + return [i for i, dtype in enumerate(X.dtypes) if dtype != 'float64'] + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def calculate_sampling_strategy(y: pd.Series) -> dict: + """ + SMOTENC를 위한 sampling_strategy 계산 + + Args: + y: 타겟 변수 + + Returns: + sampling_strategy 딕셔너리 + """ + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + count_class_2 = (y == 2).sum() + + return { + 0: 500 if count_class_0 <= 500 else 1000, + 1: int(np.ceil(count_class_1 / 100) * 100), # 백의 자리로 올림 + 2: count_class_2 + } + + +def apply_smotenc(X: pd.DataFrame, y: pd.Series, + categorical_features_indices: list, + sampling_strategy: dict) -> pd.DataFrame: + """ + SMOTENC 적용하여 데이터 증강 + + Args: + X: 특징 데이터 + y: 타겟 데이터 + categorical_features_indices: 범주형 변수 인덱스 + sampling_strategy: 샘플링 전략 + + Returns: + 증강된 데이터프레임 (multi_class 포함) + """ + smotenc = SMOTENC( + categorical_features=categorical_features_indices, + sampling_strategy=sampling_strategy, + random_state=RANDOM_STATE + ) + X_resampled, y_resampled = smotenc.fit_resample(X, y) + + resampled_data = X_resampled.copy() + resampled_data['multi_class'] = y_resampled + + return resampled_data + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 SMOTENC와 CTGAN을 순차적으로 적용 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # SMOTENC 적용 + categorical_features_indices = get_categorical_feature_indices(X) + sampling_strategy = calculate_sampling_strategy(y) + smotenc_data = apply_smotenc(X, y, categorical_features_indices, sampling_strategy) + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(smotenc_data) + + # 클래스별 샘플 수 계산 + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - int(np.ceil(count_class_1 / 100) * 100) + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + smotenc_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + smotenc_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'smotenc_ctgan_10000_2_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'smotenc_ctgan_10000_2_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 추출 (SMOTENC으로 증강된 부분 + CTGAN으로 생성된 샘플) + # smotenc_data의 처음 len(X)개는 원본 데이터이므로 제외 + original_data_count = len(X) + smotenc_augmented = smotenc_data.iloc[original_data_count:].copy() # SMOTENC으로 증강된 부분만 + + # 증강된 데이터만 병합 (SMOTENC 증강 + CTGAN 증강) + augmented_only = pd.concat([smotenc_augmented, well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # SMOTENC 데이터와 필터링된 CTGAN 샘플 병합 (최종 결과용) + smote_gan_data = pd.concat([smotenc_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + smote_gan_data = add_derived_features(smote_gan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = smote_gan_data[smote_gan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) diff --git a/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_10000_3.py b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_10000_3.py new file mode 100644 index 0000000000000000000000000000000000000000..3a6059a696b1685cbf3733de16562500832f2088 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_10000_3.py @@ -0,0 +1,376 @@ +import pandas as pd +import numpy as np +import os +from pathlib import Path +from imblearn.over_sampling import SMOTENC +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2019, 2020] +TARGET_SAMPLES_CLASS_0 = 10000 +TARGET_SAMPLES_CLASS_1_BASE = 10000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_indices(X: pd.DataFrame) -> list: + """범주형 변수의 열 인덱스 반환""" + return [i for i, dtype in enumerate(X.dtypes) if dtype != 'float64'] + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def calculate_sampling_strategy(y: pd.Series) -> dict: + """ + SMOTENC를 위한 sampling_strategy 계산 + + Args: + y: 타겟 변수 + + Returns: + sampling_strategy 딕셔너리 + """ + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + count_class_2 = (y == 2).sum() + + return { + 0: 500 if count_class_0 <= 500 else 1000, + 1: int(np.ceil(count_class_1 / 100) * 100), # 백의 자리로 올림 + 2: count_class_2 + } + + +def apply_smotenc(X: pd.DataFrame, y: pd.Series, + categorical_features_indices: list, + sampling_strategy: dict) -> pd.DataFrame: + """ + SMOTENC 적용하여 데이터 증강 + + Args: + X: 특징 데이터 + y: 타겟 데이터 + categorical_features_indices: 범주형 변수 인덱스 + sampling_strategy: 샘플링 전략 + + Returns: + 증강된 데이터프레임 (multi_class 포함) + """ + smotenc = SMOTENC( + categorical_features=categorical_features_indices, + sampling_strategy=sampling_strategy, + random_state=RANDOM_STATE + ) + X_resampled, y_resampled = smotenc.fit_resample(X, y) + + resampled_data = X_resampled.copy() + resampled_data['multi_class'] = y_resampled + + return resampled_data + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 SMOTENC와 CTGAN을 순차적으로 적용 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # SMOTENC 적용 + categorical_features_indices = get_categorical_feature_indices(X) + sampling_strategy = calculate_sampling_strategy(y) + smotenc_data = apply_smotenc(X, y, categorical_features_indices, sampling_strategy) + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(smotenc_data) + + # 클래스별 샘플 수 계산 + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - int(np.ceil(count_class_1 / 100) * 100) + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + smotenc_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + smotenc_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'smotenc_ctgan_10000_3_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'smotenc_ctgan_10000_3_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 추출 (SMOTENC으로 증강된 부분 + CTGAN으로 생성된 샘플) + # smotenc_data의 처음 len(X)개는 원본 데이터이므로 제외 + original_data_count = len(X) + smotenc_augmented = smotenc_data.iloc[original_data_count:].copy() # SMOTENC으로 증강된 부분만 + + # 증강된 데이터만 병합 (SMOTENC 증강 + CTGAN 증강) + augmented_only = pd.concat([smotenc_augmented, well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # SMOTENC 데이터와 필터링된 CTGAN 샘플 병합 (최종 결과용) + smote_gan_data = pd.concat([smotenc_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + smote_gan_data = add_derived_features(smote_gan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = smote_gan_data[smote_gan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) diff --git a/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_20000_1.py b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_20000_1.py new file mode 100644 index 0000000000000000000000000000000000000000..15e693ea1d7b26877ac0a92d94c6fa5aa93ad0c1 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_20000_1.py @@ -0,0 +1,375 @@ +import pandas as pd +import numpy as np +from pathlib import Path +from imblearn.over_sampling import SMOTENC +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2018, 2019] +TARGET_SAMPLES_CLASS_0 = 20000 +TARGET_SAMPLES_CLASS_1_BASE = 20000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_indices(X: pd.DataFrame) -> list: + """범주형 변수의 열 인덱스 반환""" + return [i for i, dtype in enumerate(X.dtypes) if dtype != 'float64'] + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def calculate_sampling_strategy(y: pd.Series) -> dict: + """ + SMOTENC를 위한 sampling_strategy 계산 + + Args: + y: 타겟 변수 + + Returns: + sampling_strategy 딕셔너리 + """ + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + count_class_2 = (y == 2).sum() + + return { + 0: 500 if count_class_0 <= 500 else 1000, + 1: int(np.ceil(count_class_1 / 100) * 100), # 백의 자리로 올림 + 2: count_class_2 + } + + +def apply_smotenc(X: pd.DataFrame, y: pd.Series, + categorical_features_indices: list, + sampling_strategy: dict) -> pd.DataFrame: + """ + SMOTENC 적용하여 데이터 증강 + + Args: + X: 특징 데이터 + y: 타겟 데이터 + categorical_features_indices: 범주형 변수 인덱스 + sampling_strategy: 샘플링 전략 + + Returns: + 증강된 데이터프레임 (multi_class 포함) + """ + smotenc = SMOTENC( + categorical_features=categorical_features_indices, + sampling_strategy=sampling_strategy, + random_state=RANDOM_STATE + ) + X_resampled, y_resampled = smotenc.fit_resample(X, y) + + resampled_data = X_resampled.copy() + resampled_data['multi_class'] = y_resampled + + return resampled_data + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 SMOTENC와 CTGAN을 순차적으로 적용 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # SMOTENC 적용 + categorical_features_indices = get_categorical_feature_indices(X) + sampling_strategy = calculate_sampling_strategy(y) + smotenc_data = apply_smotenc(X, y, categorical_features_indices, sampling_strategy) + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(smotenc_data) + + # 클래스별 샘플 수 계산 + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - int(np.ceil(count_class_1 / 100) * 100) + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + smotenc_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + smotenc_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'smotenc_ctgan_20000_1_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'smotenc_ctgan_20000_1_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 추출 (SMOTENC으로 증강된 부분 + CTGAN으로 생성된 샘플) + # smotenc_data의 처음 len(X)개는 원본 데이터이므로 제외 + original_data_count = len(X) + smotenc_augmented = smotenc_data.iloc[original_data_count:].copy() # SMOTENC으로 증강된 부분만 + + # 증강된 데이터만 병합 (SMOTENC 증강 + CTGAN 증강) + augmented_only = pd.concat([smotenc_augmented, well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # SMOTENC 데이터와 필터링된 CTGAN 샘플 병합 (최종 결과용) + smote_gan_data = pd.concat([smotenc_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + smote_gan_data = add_derived_features(smote_gan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = smote_gan_data[smote_gan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) diff --git a/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_20000_2.py b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_20000_2.py new file mode 100644 index 0000000000000000000000000000000000000000..fdf599444e328f2357e983e2df7f2da9f61f6ae6 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_20000_2.py @@ -0,0 +1,376 @@ +import pandas as pd +import numpy as np +import os +from pathlib import Path +from imblearn.over_sampling import SMOTENC +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2018, 2020] +TARGET_SAMPLES_CLASS_0 = 20000 +TARGET_SAMPLES_CLASS_1_BASE = 20000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_indices(X: pd.DataFrame) -> list: + """범주형 변수의 열 인덱스 반환""" + return [i for i, dtype in enumerate(X.dtypes) if dtype != 'float64'] + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def calculate_sampling_strategy(y: pd.Series) -> dict: + """ + SMOTENC를 위한 sampling_strategy 계산 + + Args: + y: 타겟 변수 + + Returns: + sampling_strategy 딕셔너리 + """ + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + count_class_2 = (y == 2).sum() + + return { + 0: 500 if count_class_0 <= 500 else 1000, + 1: int(np.ceil(count_class_1 / 100) * 100), # 백의 자리로 올림 + 2: count_class_2 + } + + +def apply_smotenc(X: pd.DataFrame, y: pd.Series, + categorical_features_indices: list, + sampling_strategy: dict) -> pd.DataFrame: + """ + SMOTENC 적용하여 데이터 증강 + + Args: + X: 특징 데이터 + y: 타겟 데이터 + categorical_features_indices: 범주형 변수 인덱스 + sampling_strategy: 샘플링 전략 + + Returns: + 증강된 데이터프레임 (multi_class 포함) + """ + smotenc = SMOTENC( + categorical_features=categorical_features_indices, + sampling_strategy=sampling_strategy, + random_state=RANDOM_STATE + ) + X_resampled, y_resampled = smotenc.fit_resample(X, y) + + resampled_data = X_resampled.copy() + resampled_data['multi_class'] = y_resampled + + return resampled_data + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 SMOTENC와 CTGAN을 순차적으로 적용 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # SMOTENC 적용 + categorical_features_indices = get_categorical_feature_indices(X) + sampling_strategy = calculate_sampling_strategy(y) + smotenc_data = apply_smotenc(X, y, categorical_features_indices, sampling_strategy) + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(smotenc_data) + + # 클래스별 샘플 수 계산 + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - int(np.ceil(count_class_1 / 100) * 100) + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + smotenc_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + smotenc_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'smotenc_ctgan_20000_2_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'smotenc_ctgan_20000_2_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 추출 (SMOTENC으로 증강된 부분 + CTGAN으로 생성된 샘플) + # smotenc_data의 처음 len(X)개는 원본 데이터이므로 제외 + original_data_count = len(X) + smotenc_augmented = smotenc_data.iloc[original_data_count:].copy() # SMOTENC으로 증강된 부분만 + + # 증강된 데이터만 병합 (SMOTENC 증강 + CTGAN 증강) + augmented_only = pd.concat([smotenc_augmented, well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # SMOTENC 데이터와 필터링된 CTGAN 샘플 병합 (최종 결과용) + smote_gan_data = pd.concat([smotenc_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + smote_gan_data = add_derived_features(smote_gan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = smote_gan_data[smote_gan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) diff --git a/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_20000_3.py b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_20000_3.py new file mode 100644 index 0000000000000000000000000000000000000000..cd192f2f7fd3d6348c7f0b91b86f15d7ea478659 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_20000_3.py @@ -0,0 +1,376 @@ +import pandas as pd +import numpy as np +import os +from pathlib import Path +from imblearn.over_sampling import SMOTENC +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2019, 2020] +TARGET_SAMPLES_CLASS_0 = 20000 +TARGET_SAMPLES_CLASS_1_BASE = 20000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_indices(X: pd.DataFrame) -> list: + """범주형 변수의 열 인덱스 반환""" + return [i for i, dtype in enumerate(X.dtypes) if dtype != 'float64'] + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def calculate_sampling_strategy(y: pd.Series) -> dict: + """ + SMOTENC를 위한 sampling_strategy 계산 + + Args: + y: 타겟 변수 + + Returns: + sampling_strategy 딕셔너리 + """ + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + count_class_2 = (y == 2).sum() + + return { + 0: 500 if count_class_0 <= 500 else 1000, + 1: int(np.ceil(count_class_1 / 100) * 100), # 백의 자리로 올림 + 2: count_class_2 + } + + +def apply_smotenc(X: pd.DataFrame, y: pd.Series, + categorical_features_indices: list, + sampling_strategy: dict) -> pd.DataFrame: + """ + SMOTENC 적용하여 데이터 증강 + + Args: + X: 특징 데이터 + y: 타겟 데이터 + categorical_features_indices: 범주형 변수 인덱스 + sampling_strategy: 샘플링 전략 + + Returns: + 증강된 데이터프레임 (multi_class 포함) + """ + smotenc = SMOTENC( + categorical_features=categorical_features_indices, + sampling_strategy=sampling_strategy, + random_state=RANDOM_STATE + ) + X_resampled, y_resampled = smotenc.fit_resample(X, y) + + resampled_data = X_resampled.copy() + resampled_data['multi_class'] = y_resampled + + return resampled_data + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 SMOTENC와 CTGAN을 순차적으로 적용 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # SMOTENC 적용 + categorical_features_indices = get_categorical_feature_indices(X) + sampling_strategy = calculate_sampling_strategy(y) + smotenc_data = apply_smotenc(X, y, categorical_features_indices, sampling_strategy) + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(smotenc_data) + + # 클래스별 샘플 수 계산 + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - int(np.ceil(count_class_1 / 100) * 100) + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + smotenc_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + smotenc_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'smotenc_ctgan_20000_3_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'smotenc_ctgan_20000_3_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 추출 (SMOTENC으로 증강된 부분 + CTGAN으로 생성된 샘플) + # smotenc_data의 처음 len(X)개는 원본 데이터이므로 제외 + original_data_count = len(X) + smotenc_augmented = smotenc_data.iloc[original_data_count:].copy() # SMOTENC으로 증강된 부분만 + + # 증강된 데이터만 병합 (SMOTENC 증강 + CTGAN 증강) + augmented_only = pd.concat([smotenc_augmented, well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # SMOTENC 데이터와 필터링된 CTGAN 샘플 병합 (최종 결과용) + smote_gan_data = pd.concat([smotenc_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + smote_gan_data = add_derived_features(smote_gan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = smote_gan_data[smote_gan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) diff --git a/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_7000_1.py b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_7000_1.py new file mode 100644 index 0000000000000000000000000000000000000000..9fa8abefe069d3ce202c6eab46bcc34f95b0ac80 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_7000_1.py @@ -0,0 +1,378 @@ +import pandas as pd +import numpy as np +import os +from pathlib import Path +from imblearn.over_sampling import SMOTENC +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2018, 2019] +TARGET_SAMPLES_CLASS_0 = 7000 +TARGET_SAMPLES_CLASS_1_BASE = 7000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_indices(X: pd.DataFrame) -> list: + """범주형 변수의 열 인덱스 반환""" + return [i for i, dtype in enumerate(X.dtypes) if dtype != 'float64'] + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def calculate_sampling_strategy(y: pd.Series) -> dict: + """ + SMOTENC를 위한 sampling_strategy 계산 + + Args: + y: 타겟 변수 + + Returns: + sampling_strategy 딕셔너리 + """ + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + count_class_2 = (y == 2).sum() + + return { + 0: 500 if count_class_0 <= 500 else 1000, + 1: int(np.ceil(count_class_1 / 100) * 100), # 백의 자리로 올림 + 2: count_class_2 + } + + +def apply_smotenc(X: pd.DataFrame, y: pd.Series, + categorical_features_indices: list, + sampling_strategy: dict) -> pd.DataFrame: + """ + SMOTENC 적용하여 데이터 증강 + + Args: + X: 특징 데이터 + y: 타겟 데이터 + categorical_features_indices: 범주형 변수 인덱스 + sampling_strategy: 샘플링 전략 + + Returns: + 증강된 데이터프레임 (multi_class 포함) + """ + smotenc = SMOTENC( + categorical_features=categorical_features_indices, + sampling_strategy=sampling_strategy, + random_state=RANDOM_STATE + ) + X_resampled, y_resampled = smotenc.fit_resample(X, y) + + resampled_data = X_resampled.copy() + resampled_data['multi_class'] = y_resampled + + return resampled_data + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 SMOTENC와 CTGAN을 순차적으로 적용 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # SMOTENC 적용 + categorical_features_indices = get_categorical_feature_indices(X) + sampling_strategy = calculate_sampling_strategy(y) + smotenc_data = apply_smotenc(X, y, categorical_features_indices, sampling_strategy) + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(smotenc_data) + + # 클래스별 샘플 수 계산 + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - int(np.ceil(count_class_1 / 100) * 100) + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + smotenc_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + smotenc_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'smotenc_ctgan_7000_1_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'smotenc_ctgan_7000_1_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 추출 (SMOTENC으로 증강된 부분 + CTGAN으로 생성된 샘플) + # smotenc_data의 처음 len(X)개는 원본 데이터이므로 제외 + original_data_count = len(X) + smotenc_augmented = smotenc_data.iloc[original_data_count:].copy() # SMOTENC으로 증강된 부분만 + + # 증강된 데이터만 병합 (SMOTENC 증강 + CTGAN 증강) + augmented_only = pd.concat([smotenc_augmented, well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # SMOTENC 데이터와 필터링된 CTGAN 샘플 병합 (최종 결과용) + smote_gan_data = pd.concat([smotenc_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + smote_gan_data = add_derived_features(smote_gan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = smote_gan_data[smote_gan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) diff --git a/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_7000_2.py b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_7000_2.py new file mode 100644 index 0000000000000000000000000000000000000000..871d32436ee49cab58ef9150bb9d46c6661f381e --- /dev/null +++ b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_7000_2.py @@ -0,0 +1,376 @@ +import pandas as pd +import numpy as np +import os +from pathlib import Path +from imblearn.over_sampling import SMOTENC +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2018, 2020] +TARGET_SAMPLES_CLASS_0 = 7000 +TARGET_SAMPLES_CLASS_1_BASE = 7000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_indices(X: pd.DataFrame) -> list: + """범주형 변수의 열 인덱스 반환""" + return [i for i, dtype in enumerate(X.dtypes) if dtype != 'float64'] + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def calculate_sampling_strategy(y: pd.Series) -> dict: + """ + SMOTENC를 위한 sampling_strategy 계산 + + Args: + y: 타겟 변수 + + Returns: + sampling_strategy 딕셔너리 + """ + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + count_class_2 = (y == 2).sum() + + return { + 0: 500 if count_class_0 <= 500 else 1000, + 1: int(np.ceil(count_class_1 / 100) * 100), # 백의 자리로 올림 + 2: count_class_2 + } + + +def apply_smotenc(X: pd.DataFrame, y: pd.Series, + categorical_features_indices: list, + sampling_strategy: dict) -> pd.DataFrame: + """ + SMOTENC 적용하여 데이터 증강 + + Args: + X: 특징 데이터 + y: 타겟 데이터 + categorical_features_indices: 범주형 변수 인덱스 + sampling_strategy: 샘플링 전략 + + Returns: + 증강된 데이터프레임 (multi_class 포함) + """ + smotenc = SMOTENC( + categorical_features=categorical_features_indices, + sampling_strategy=sampling_strategy, + random_state=RANDOM_STATE + ) + X_resampled, y_resampled = smotenc.fit_resample(X, y) + + resampled_data = X_resampled.copy() + resampled_data['multi_class'] = y_resampled + + return resampled_data + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 SMOTENC와 CTGAN을 순차적으로 적용 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # SMOTENC 적용 + categorical_features_indices = get_categorical_feature_indices(X) + sampling_strategy = calculate_sampling_strategy(y) + smotenc_data = apply_smotenc(X, y, categorical_features_indices, sampling_strategy) + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(smotenc_data) + + # 클래스별 샘플 수 계산 + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - int(np.ceil(count_class_1 / 100) * 100) + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + smotenc_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + smotenc_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'smotenc_ctgan_7000_2_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'smotenc_ctgan_7000_2_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 추출 (SMOTENC으로 증강된 부분 + CTGAN으로 생성된 샘플) + # smotenc_data의 처음 len(X)개는 원본 데이터이므로 제외 + original_data_count = len(X) + smotenc_augmented = smotenc_data.iloc[original_data_count:].copy() # SMOTENC으로 증강된 부분만 + + # 증강된 데이터만 병합 (SMOTENC 증강 + CTGAN 증강) + augmented_only = pd.concat([smotenc_augmented, well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # SMOTENC 데이터와 필터링된 CTGAN 샘플 병합 (최종 결과용) + smote_gan_data = pd.concat([smotenc_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + smote_gan_data = add_derived_features(smote_gan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = smote_gan_data[smote_gan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) diff --git a/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_7000_3.py b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_7000_3.py new file mode 100644 index 0000000000000000000000000000000000000000..e7f9b619e02a9abf54bdb023ae38d14e0c818086 --- /dev/null +++ b/Analysis_code/2.make_oversample_data/smotenc_ctgan/smotenc_ctgan_sample_7000_3.py @@ -0,0 +1,376 @@ +import pandas as pd +import numpy as np +import os +from pathlib import Path +from imblearn.over_sampling import SMOTENC +import optuna +from ctgan import CTGAN +import torch +import warnings + +# ==================== 상수 정의 ==================== +REGIONS = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] +TRAIN_YEARS = [2019, 2020] +TARGET_SAMPLES_CLASS_0 = 7000 +TARGET_SAMPLES_CLASS_1_BASE = 7000 +RANDOM_STATE = 42 + +# Optuna 최적화 설정 +CLASS_0_TRIALS = 50 +CLASS_1_TRIALS = 30 + +# 클래스별 하이퍼파라미터 탐색 범위 +CLASS_0_HP_RANGES = { + 'embedding_dim': (64, 128), + 'generator_dim': [(64, 64), (128, 128)], + 'discriminator_dim': [(64, 64), (128, 128)], + 'pac': [4, 8], + 'batch_size': [64, 128, 256], + 'discriminator_steps': (1, 3) +} + +CLASS_1_HP_RANGES = { + 'embedding_dim': (128, 512), + 'generator_dim': [(128, 128), (256, 256)], + 'discriminator_dim': [(128, 128), (256, 256)], + 'pac': [4, 8], + 'batch_size': [256, 512, 1024], + 'discriminator_steps': (1, 5) +} + +# 제거할 열 목록 +COLUMNS_TO_DROP = ['ground_temp - temp_C', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos'] + +# ==================== 유틸리티 함수 ==================== + +def setup_environment(): + """환경 설정 (GPU, 경고 무시)""" + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + print(f"Using device: {device}") + warnings.filterwarnings("ignore", category=UserWarning, module="optuna.distributions") + return device + + +def load_and_preprocess_data(file_path: str, train_years: list) -> tuple: + """ + 데이터 로드 및 전처리 + + Args: + file_path: 데이터 파일 경로 + train_years: 학습에 사용할 연도 리스트 + + Returns: + (data, X, y): 원본 데이터, 특징 데이터, 타겟 데이터 + """ + data = pd.read_csv(file_path, index_col=0) + data = data.loc[data['year'].isin(train_years), :] + data['cloudcover'] = data['cloudcover'].astype('int') + data['lm_cloudcover'] = data['lm_cloudcover'].astype('int') + + X = data.drop(columns=['multi_class', 'binary_class']) + y = data['multi_class'] + + # 불필요한 열 제거 + X.drop(columns=COLUMNS_TO_DROP, inplace=True) + + return data, X, y + + +def get_categorical_feature_indices(X: pd.DataFrame) -> list: + """범주형 변수의 열 인덱스 반환""" + return [i for i, dtype in enumerate(X.dtypes) if dtype != 'float64'] + + +def get_categorical_feature_names(df: pd.DataFrame) -> list: + """범주형 변수의 열 이름 반환""" + return [col for col, dtype in zip(df.columns, df.dtypes) if dtype != 'float64'] + + +def calculate_sampling_strategy(y: pd.Series) -> dict: + """ + SMOTENC를 위한 sampling_strategy 계산 + + Args: + y: 타겟 변수 + + Returns: + sampling_strategy 딕셔너리 + """ + count_class_0 = (y == 0).sum() + count_class_1 = (y == 1).sum() + count_class_2 = (y == 2).sum() + + return { + 0: 500 if count_class_0 <= 500 else 1000, + 1: int(np.ceil(count_class_1 / 100) * 100), # 백의 자리로 올림 + 2: count_class_2 + } + + +def apply_smotenc(X: pd.DataFrame, y: pd.Series, + categorical_features_indices: list, + sampling_strategy: dict) -> pd.DataFrame: + """ + SMOTENC 적용하여 데이터 증강 + + Args: + X: 특징 데이터 + y: 타겟 데이터 + categorical_features_indices: 범주형 변수 인덱스 + sampling_strategy: 샘플링 전략 + + Returns: + 증강된 데이터프레임 (multi_class 포함) + """ + smotenc = SMOTENC( + categorical_features=categorical_features_indices, + sampling_strategy=sampling_strategy, + random_state=RANDOM_STATE + ) + X_resampled, y_resampled = smotenc.fit_resample(X, y) + + resampled_data = X_resampled.copy() + resampled_data['multi_class'] = y_resampled + + return resampled_data + + +def create_ctgan_objective(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict) -> callable: + """ + Optuna 최적화를 위한 목적 함수 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + + Returns: + Optuna 목적 함수 + """ + class_data = data[data['multi_class'] == class_label] + + def objective(trial): + # 하이퍼파라미터 탐색 범위 설정 + embedding_dim = trial.suggest_int("embedding_dim", *hp_ranges['embedding_dim']) + generator_dim = trial.suggest_categorical("generator_dim", hp_ranges['generator_dim']) + discriminator_dim = trial.suggest_categorical("discriminator_dim", hp_ranges['discriminator_dim']) + pac = trial.suggest_categorical("pac", hp_ranges['pac']) + batch_size = trial.suggest_categorical("batch_size", hp_ranges['batch_size']) + discriminator_steps = trial.suggest_int("discriminator_steps", *hp_ranges['discriminator_steps']) + + # CTGAN 모델 생성 + ctgan = CTGAN( + embedding_dim=embedding_dim, + generator_dim=generator_dim, + discriminator_dim=discriminator_dim, + batch_size=batch_size, + discriminator_steps=discriminator_steps, + pac=pac + ) + ctgan.set_random_state(RANDOM_STATE) + + # 모델 학습 + ctgan.fit(class_data, discrete_columns=categorical_features) + + # 샘플 생성 + generated_data = ctgan.sample(len(class_data) * 2) + + # 평가: 샘플의 연속형 변수 분포 비교 + real_visi = class_data['visi'] + generated_visi = generated_data['visi'] + + # 분포 간 차이(MSE) 계산 + mse = ((real_visi.mean() - generated_visi.mean())**2 + + (real_visi.std() - generated_visi.std())**2) + return -mse + + return objective + + +def optimize_and_generate_samples(data: pd.DataFrame, class_label: int, + categorical_features: list, + hp_ranges: dict, n_trials: int, + target_samples: int) -> tuple: + """ + CTGAN 최적화 및 샘플 생성 + + Args: + data: 학습 데이터 + class_label: 클래스 레이블 (0 또는 1) + categorical_features: 범주형 변수 이름 리스트 + hp_ranges: 하이퍼파라미터 탐색 범위 + n_trials: Optuna 최적화 시도 횟수 + target_samples: 생성할 샘플 수 + + Returns: + (생성된 샘플 데이터프레임, 학습된 CTGAN 모델) + """ + # 목적 함수 생성 + objective = create_ctgan_objective(data, class_label, categorical_features, hp_ranges) + + # Optuna로 최적화 수행 + study = optuna.create_study(direction="maximize") + study.optimize(objective, n_trials=n_trials) + + # 최적 하이퍼파라미터로 CTGAN 학습 및 샘플 생성 + best_params = study.best_params + ctgan = CTGAN( + embedding_dim=best_params["embedding_dim"], + generator_dim=best_params["generator_dim"], + discriminator_dim=best_params["discriminator_dim"], + batch_size=best_params["batch_size"], + discriminator_steps=best_params["discriminator_steps"], + pac=best_params["pac"] + ) + ctgan.set_random_state(RANDOM_STATE) + + # 최종 학습 및 샘플 생성 + class_data = data[data['multi_class'] == class_label] + ctgan.fit(class_data, discrete_columns=categorical_features) + generated_samples = ctgan.sample(target_samples) + + return generated_samples, ctgan + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['binary_class'] = df['multi_class'].apply(lambda x: 0 if x == 2 else 1) + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + + +def process_region(file_path: str, output_path: str, model_save_dir: Path) -> None: + """ + 특정 지역의 데이터에 SMOTENC와 CTGAN을 순차적으로 적용 + + Args: + file_path: 입력 데이터 파일 경로 + output_path: 출력 데이터 파일 경로 + model_save_dir: 모델 저장 디렉토리 경로 + """ + # 지역명 추출 (파일 경로에서) + region_name = Path(file_path).stem.replace('_train', '') + + # 데이터 로드 및 전처리 + original_data, X, y = load_and_preprocess_data(file_path, TRAIN_YEARS) + + # SMOTENC 적용 + categorical_features_indices = get_categorical_feature_indices(X) + sampling_strategy = calculate_sampling_strategy(y) + smotenc_data = apply_smotenc(X, y, categorical_features_indices, sampling_strategy) + + # CTGAN을 위한 범주형 변수 이름 추출 + categorical_features = get_categorical_feature_names(smotenc_data) + + # 클래스별 샘플 수 계산 + count_class_1 = (y == 1).sum() + target_samples_class_1 = TARGET_SAMPLES_CLASS_1_BASE - int(np.ceil(count_class_1 / 100) * 100) + + # 클래스 0에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 0...") + generated_0, ctgan_model_0 = optimize_and_generate_samples( + smotenc_data, 0, categorical_features, + CLASS_0_HP_RANGES, CLASS_0_TRIALS, TARGET_SAMPLES_CLASS_0 + ) + + # 클래스 1에 대한 CTGAN 최적화 및 샘플 생성 + print(f"Processing {file_path}: Optimizing CTGAN for class 1...") + generated_1, ctgan_model_1 = optimize_and_generate_samples( + smotenc_data, 1, categorical_features, + CLASS_1_HP_RANGES, CLASS_1_TRIALS, target_samples_class_1 + ) + + # 모델 저장 디렉토리 생성 + model_save_dir.mkdir(parents=True, exist_ok=True) + + # 클래스 0 모델 저장 + model_path_0 = model_save_dir / f'smotenc_ctgan_7000_3_{region_name}_class0.pkl' + ctgan_model_0.save(str(model_path_0)) + print(f"Saved CTGAN model for class 0: {model_path_0}") + + # 클래스 1 모델 저장 + model_path_1 = model_save_dir / f'smotenc_ctgan_7000_3_{region_name}_class1.pkl' + ctgan_model_1.save(str(model_path_1)) + print(f"Saved CTGAN model for class 1: {model_path_1}") + + # 클래스별 가시도 범위로 필터링 + well_generated_0 = generated_0[ + (generated_0['visi'] >= 0) & (generated_0['visi'] < 100) + ] + well_generated_1 = generated_1[ + (generated_1['visi'] >= 100) & (generated_1['visi'] < 500) + ] + + # 증강된 데이터만 추출 (SMOTENC으로 증강된 부분 + CTGAN으로 생성된 샘플) + # smotenc_data의 처음 len(X)개는 원본 데이터이므로 제외 + original_data_count = len(X) + smotenc_augmented = smotenc_data.iloc[original_data_count:].copy() # SMOTENC으로 증강된 부분만 + + # 증강된 데이터만 병합 (SMOTENC 증강 + CTGAN 증강) + augmented_only = pd.concat([smotenc_augmented, well_generated_0, well_generated_1], axis=0) + augmented_only = add_derived_features(augmented_only) + augmented_only.reset_index(drop=True, inplace=True) + # augmented_only 폴더에 저장 + output_path_obj = Path(output_path) + augmented_dir = output_path_obj.parent.parent / 'augmented_only' + augmented_dir.mkdir(parents=True, exist_ok=True) + augmented_output_path = augmented_dir / output_path_obj.name + augmented_only.to_csv(augmented_output_path, index=False) + + # SMOTENC 데이터와 필터링된 CTGAN 샘플 병합 (최종 결과용) + smote_gan_data = pd.concat([smotenc_data, well_generated_0, well_generated_1], axis=0) + + # 파생 변수 추가 + smote_gan_data = add_derived_features(smote_gan_data) + + # 증강된 데이터만 결과 출력 + aug_count_0 = len(augmented_only[augmented_only['multi_class'] == 0]) + aug_count_1 = len(augmented_only[augmented_only['multi_class'] == 1]) + print(f"Saved augmented data only {augmented_output_path}: Class 0={aug_count_0} | Class 1={aug_count_1}") + + # 클래스 2 제거 후 원본 클래스 2 데이터 추가 + filtered_data = smote_gan_data[smote_gan_data['multi_class'] != 2] + original_class_2 = original_data[original_data['multi_class'] == 2] + final_data = pd.concat([filtered_data, original_class_2], axis=0) + final_data.reset_index(drop=True, inplace=True) + + # 출력 디렉토리 생성 + Path(output_path).parent.mkdir(parents=True, exist_ok=True) + + # 결과 저장 + final_data.to_csv(output_path, index=False) + + # 결과 출력 + count_0 = len(final_data[final_data['multi_class'] == 0]) + count_1 = len(final_data[final_data['multi_class'] == 1]) + count_2 = len(final_data[final_data['multi_class'] == 2]) + print(f"Saved {output_path}: Class 0={count_0} | Class 1={count_1} | Class 2={count_2}") + + +# ==================== 메인 실행 ==================== + +if __name__ == "__main__": + setup_environment() + + file_paths = [f'../../../data/data_for_modeling/{region}_train.csv' for region in REGIONS] + output_paths = [f'../../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_{region}.csv' for region in REGIONS] + model_save_dir = Path('../../save_model/oversampling_models') + + for file_path, output_path in zip(file_paths, output_paths): + process_region(file_path, output_path, model_save_dir) diff --git a/Analysis_code/3.sampled_data_analysis/make_plot.py b/Analysis_code/3.sampled_data_analysis/make_plot.py new file mode 100644 index 0000000000000000000000000000000000000000..a3351c2811041bf8607bc4e5ecc26925e086bef6 --- /dev/null +++ b/Analysis_code/3.sampled_data_analysis/make_plot.py @@ -0,0 +1,659 @@ +""" +데이터 시각화 모듈: Original과 Synthetic 데이터 비교 시각화 + +이 모듈은 원본 데이터와 합성 데이터를 로드하고, 전처리한 후 +UMAP을 사용하여 차원 축소 및 시각화를 수행합니다. +""" + +import os +# TensorFlow 로그 메시지 숨기기 +os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 0=모두, 1=INFO 제외, 2=INFO/WARNING 제외, 3=ERROR만 +os.environ['TF_ENABLE_ONEDNN_OPTS'] = '0' # oneDNN 경고 숨기기 + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +import warnings +from dataclasses import dataclass +from typing import List, Tuple, Optional +from sklearn.preprocessing import StandardScaler +import umap +from pathlib import Path + + +@dataclass +class PlotConfig: + """시각화 설정값을 관리하는 클래스""" + cols_to_drop: List[str] = None + umap_n_neighbors: int = 30 + umap_min_dist: float = 0.1 + umap_random_state: int = 42 + umap_n_jobs: int = 1 # random_state 설정 시 병렬 처리 불가 (경고 방지) + figsize: Tuple[int, int] = (16, 6) + alpha: float = 0.6 # Original과 Synthetic 데이터 모두 동일한 투명도 + visibility_threshold: int = 500 + scale_on_original_only: bool = True # True: 원본 기준 스케일링 (데이터 누설 방지), False: 합쳐서 스케일링 + + def __post_init__(self): + """기본값 설정""" + if self.cols_to_drop is None: + self.cols_to_drop = [ + 'wind_dir', # 문자열 (에러 발생) + 'multi_class', # 타겟 변수 (시각화용 색깔로만 사용) + 'binary_class', # 타겟 변수 + 'year', 'month', 'hour', # sin/cos 변수와 중복 + 'ground_temp - temp_C', # 단순 선형 결합 (정보 중복) + 'visi' + ] + + +def add_time_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 입력 데이터프레임에 시간 관련 파생변수를 추가합니다. + + Args: + df: 입력 데이터프레임 (hour, month 컬럼 필요) + + Returns: + 시간 특성이 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + return df + + +def create_binary_class(visi: pd.Series, threshold: int = 500) -> pd.Series: + """ + 가시도(visi) 값을 기반으로 이진 분류를 생성합니다. + + Args: + visi: 가시도 값 시리즈 + threshold: 이진 분류 임계값 (기본값: 500) + + Returns: + 이진 분류 결과 (1: < threshold, 0: >= threshold) + """ + return visi.apply(lambda x: 1 if x < threshold else (0 if x >= threshold else np.nan)) + + +def load_region_data( + region: str, + data_dir: str = "../../data/data_for_modeling" +) -> pd.DataFrame: + """ + 특정 지역의 원본 데이터를 로드합니다. + + Args: + region: 지역명 ('incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju') + data_dir: 데이터 디렉토리 경로 + + Returns: + 로드된 지역 데이터프레임 + """ + file_path = f"{data_dir}/{region}_train.csv" + df = pd.read_csv(file_path) + + # 필요한 컬럼만 선택 + required_cols = [ + 'temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', 'vap_pressure', + 'dewpoint_C', 'loc_pressure', 'sea_pressure', 'solarRad', 'snow_cm', + 'cloudcover', 'lm_cloudcover', 'low_cloudbase', 'groundtemp', 'O3', + 'NO2', 'PM10', 'PM25', 'year', 'month', 'hour', 'visi', 'multi_class', + 'binary_class', 'hour_sin', 'hour_cos', 'month_sin', 'month_cos', + 'ground_temp - temp_C' + ] + + # 존재하는 컬럼만 선택 + available_cols = [col for col in required_cols if col in df.columns] + df = df.loc[:, available_cols].copy() + + return df + + +def load_and_preprocess_data( + synthetic_path: str, + config: PlotConfig, + region: Optional[str] = None, + fold_idx: Optional[int] = None, + data_dir: str = "../../data/data_for_modeling", + original_path: Optional[str] = None +) -> Tuple[pd.DataFrame, pd.DataFrame]: + """ + 원본 및 합성 데이터를 로드하고 전처리합니다. + + Args: + synthetic_path: 합성 데이터 파일 경로 + config: PlotConfig 객체 + region: 지역명 ('incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju') + original_path가 None일 때 사용 + fold_idx: fold 인덱스 (0, 1, 2 중 하나), None이면 전체 데이터 + original_path가 None일 때 사용 + data_dir: 원본 데이터 디렉토리 경로 (region 사용 시) + original_path: 원본 데이터 파일 경로 (지정하면 region/fold 무시) + + Returns: + (전처리된 원본 데이터, 전처리된 합성 데이터) 튜플 + """ + # 원본 데이터 로드 + if original_path is not None: + # 기존 방식: 파일 경로로 직접 로드 + original_data = pd.read_csv(original_path) + elif region is not None: + # 새로운 방식: 지역과 fold로 로드 + original_data = load_region_data(region, data_dir) + + # fold에 따라 필터링 + if fold_idx is not None: + fold = [[2018, 2019], [2018, 2020], [2019, 2020]] + if 0 <= fold_idx < len(fold): + years = fold[fold_idx] + original_data = original_data.loc[original_data['year'].isin(years), :].copy() + else: + raise ValueError("original_path 또는 region을 지정해야 합니다.") + + # 합성 데이터 로드 + synthetic_data = pd.read_csv(synthetic_path) + + # 이진 분류 생성 + original_data['binary_class'] = create_binary_class( + original_data['visi'], + config.visibility_threshold + ) + synthetic_data['binary_class'] = create_binary_class( + synthetic_data['visi'], + config.visibility_threshold + ) + + # 시간 특성 추가 + original_data = add_time_features(original_data) + synthetic_data = add_time_features(synthetic_data) + + # multi_class 필터링 (Original만) + original_data = original_data.loc[original_data['multi_class'].isin([0, 1]), :] + + # 라벨 추가 + original_data['Label'] = 'Original' + synthetic_data['Label'] = 'Synthetic' + + # 불필요한 컬럼 제거 + original_data = original_data.drop(config.cols_to_drop, axis=1) + synthetic_data = synthetic_data.drop(config.cols_to_drop, axis=1) + + return original_data, synthetic_data + + +def prepare_features_for_visualization( + original_data: pd.DataFrame, + synthetic_data: pd.DataFrame, + config: PlotConfig +) -> Tuple[np.ndarray, pd.Series, StandardScaler]: + """ + 시각화를 위한 피처를 준비하고 스케일링합니다. + + 중요: 데이터 누설을 방지하기 위해 기본적으로 원본 데이터로만 scaler를 fit하고, + 합성 데이터는 transform만 합니다. 이렇게 하면 합성 데이터의 분포가 원본 데이터의 + 스케일링에 영향을 주지 않습니다. + + Args: + original_data: 원본 데이터프레임 + synthetic_data: 합성 데이터프레임 + config: PlotConfig 객체 (scale_on_original_only 설정 포함) + + Returns: + (스케일링된 피처, 라벨, 스케일러) 튜플 + """ + # 피처와 라벨 분리 + original_features = original_data.drop('Label', axis=1) + synthetic_features = synthetic_data.drop('Label', axis=1) + + if config.scale_on_original_only: + # 방법 1: 원본 데이터로만 scaler fit (데이터 누설 방지, 권장) + # 이 방법은 합성 데이터가 원본 데이터의 스케일링에 영향을 주지 않습니다. + scaler = StandardScaler() + scaled_original = scaler.fit_transform(original_features) + scaled_synthetic = scaler.transform(synthetic_features) + + # 스케일링된 데이터 합치기 + scaled_features = np.vstack([scaled_original, scaled_synthetic]) + + # 라벨 합치기 + labels = pd.concat([ + original_data['Label'], + synthetic_data['Label'] + ], ignore_index=True) + else: + # 방법 2: 합쳐서 스케일링 (데이터 누설 있음, 비교 목적일 때만 사용) + # 주의: 이 방법은 합성 데이터의 분포가 원본 스케일링에 영향을 줍니다. + combined_df = pd.concat([original_data, synthetic_data], ignore_index=True) + features = combined_df.drop('Label', axis=1) + labels = combined_df['Label'] + + scaler = StandardScaler() + scaled_features = scaler.fit_transform(features) + + return scaled_features, labels, scaler + + +def plot_umap_comparison( + scaled_features: np.ndarray, + labels: pd.Series, + config: PlotConfig, + region: Optional[str] = None, + fold_idx: Optional[int] = None, + ax: Optional[plt.Axes] = None +) -> plt.Figure: + """ + UMAP을 사용하여 차원 축소 후 Original과 Synthetic 데이터를 비교 시각화합니다. + + 핵심: 원본 데이터가 정의한 공간(Manifold) 위에 합성 데이터를 투영합니다. + - Original 데이터로만 UMAP을 fit하여 공간 구조를 학습 + - Synthetic 데이터는 학습된 공간에 transform만 적용 + - 이렇게 하면 합성 데이터가 원본 데이터의 공간 형성에 영향을 주지 않습니다. + + Args: + scaled_features: 스케일링된 피처 배열 + labels: 데이터 라벨 (Original/Synthetic) + config: PlotConfig 객체 + region: 지역명 (표시용) + fold_idx: fold 인덱스 (표시용) + ax: matplotlib axes 객체 (None이면 새 figure 생성) + + Returns: + matplotlib Figure 객체 + """ + print("UMAP 실행 중... (Original 기준 학습 후 Synthetic 변환)") + + # 1. 데이터 분리 (Labels를 이용해서 다시 나눔) + is_original = labels == 'Original' + original_data = scaled_features[is_original] + synthetic_data = scaled_features[~is_original] + + # 2. UMAP 모델 생성 + umap_model = umap.UMAP( + n_neighbors=config.umap_n_neighbors, + min_dist=config.umap_min_dist, + random_state=config.umap_random_state, + n_jobs=config.umap_n_jobs + ) + + # 3. [핵심] Original 데이터로만 공간 학습 (Fit) + # 원본 데이터의 구조(Manifold)만 학습합니다. + original_embedding = umap_model.fit_transform(original_data) + + # 4. [핵심] 학습된 공간에 Synthetic 데이터 투영 (Transform) + # 합성 데이터는 공간 형성에 관여하지 않고, 이미 만들어진 공간에 위치만 찾습니다. + synthetic_embedding = umap_model.transform(synthetic_data) + + # 5. 결과 합치기 (시각화를 위해) + umap_results = np.vstack([original_embedding, synthetic_embedding]) + + # 순서 보장을 위해 라벨도 다시 정리 (Original이 앞, Synthetic이 뒤) + combined_labels = pd.concat([ + labels[is_original], + labels[~is_original] + ], ignore_index=True) + + # 결과를 데이터프레임으로 변환 + df_umap = pd.DataFrame(umap_results, columns=['UMAP1', 'UMAP2']) + df_umap['Label'] = combined_labels + + # 지역 및 fold 정보 문자열 생성 (title에 사용) + title_parts = ["UMAP: Original vs Synthetic"] + if region is not None: + if fold_idx is not None: + fold = [[2018, 2019], [2018, 2020], [2019, 2020]] + if 0 <= fold_idx < len(fold): + years = fold[fold_idx] + fold_display = fold_idx + 1 # fold를 +1해서 표시 + title_parts.append(f"Region: {region.upper()} | Fold {fold_display}: {years[0]}-{years[1]}") + else: + title_parts.append(f"Region: {region.upper()}") + else: + title_parts.append(f"Region: {region.upper()}") + elif fold_idx is not None: + fold = [[2018, 2019], [2018, 2020], [2019, 2020]] + if 0 <= fold_idx < len(fold): + years = fold[fold_idx] + fold_display = fold_idx + 1 # fold를 +1해서 표시 + title_parts.append(f"Fold {fold_display}: {years[0]}-{years[1]}") + title_str = " - ".join(title_parts) + + # Figure 및 Axes 설정 (단일 플롯) + if ax is None: + fig, ax = plt.subplots(1, 1, figsize=(10, 8)) + else: + fig = ax.figure if hasattr(ax, 'figure') else plt.gcf() + + # 전체 데이터의 UMAP 범위 계산 + x_min = df_umap['UMAP1'].min() - 1 + x_max = df_umap['UMAP1'].max() + 1 + y_min = df_umap['UMAP2'].min() - 1 + y_max = df_umap['UMAP2'].max() + 1 + + # Synthetic 데이터 시각화 (빨간색, 먼저 그려서 뒤에 위치) + sns.scatterplot( + data=df_umap.loc[df_umap['Label'] == 'Synthetic'], + x='UMAP1', y='UMAP2', + color='red', + alpha=config.alpha, + label='Synthetic', + ax=ax, + s=30 + ) + + # Original 데이터 시각화 (파란색, 나중에 그려서 앞에 위치하여 더 잘 보이게) + sns.scatterplot( + data=df_umap.loc[df_umap['Label'] == 'Original'], + x='UMAP1', y='UMAP2', + color='blue', + alpha=config.alpha, + label='Original', + ax=ax, + s=30 + ) + + ax.set_xlim(x_min, x_max) + ax.set_ylim(y_min, y_max) + ax.set_xlabel('UMAP1', fontsize=12) + ax.set_ylabel('UMAP2', fontsize=12) + ax.set_title(title_str, fontsize=14, fontweight='bold') + ax.legend(title='Label', loc='best') + ax.grid(True, alpha=0.3) + + plt.tight_layout() + return fig + + +def generate_synthetic_path( + method: str, + region: str, + sample_size: Optional[int] = None, + fold_idx: Optional[int] = None, + base_dir: str = "../../data/data_oversampled" +) -> str: + """ + 합성 데이터 파일 경로를 생성합니다. + + Args: + method: 증강 방법 ('ctgan', 'smotenc_ctgan', 'smote') + region: 지역명 + sample_size: 샘플 수 (ctgan, smotenc_ctgan인 경우 필수, smote인 경우 무시) + fold_idx: fold 인덱스 (0, 1, 2 중 하나, None이면 0 사용) + base_dir: 기본 디렉토리 경로 + + Returns: + 합성 데이터 파일 경로 + """ + # fold_idx 기본값 설정 (None이면 0, 즉 fold 1) + if fold_idx is None: + fold_idx = 0 + fold_num = fold_idx + 1 # 파일명은 1부터 시작 (fold_idx는 0부터) + + if method == 'ctgan': + if sample_size is None: + raise ValueError("ctgan 방법은 sample_size가 필요합니다 (7000, 10000, 20000 중 선택)") + if sample_size not in [7000, 10000, 20000]: + raise ValueError(f"sample_size는 7000, 10000, 20000 중 하나여야 합니다. 입력값: {sample_size}") + return f"{base_dir}/augmented_only/ctgan{sample_size}_{fold_num}_{region}.csv" + + elif method == 'smotenc_ctgan': + if sample_size is None: + raise ValueError("smotenc_ctgan 방법은 sample_size가 필요합니다 (7000, 10000, 20000 중 선택)") + if sample_size not in [7000, 10000, 20000]: + raise ValueError(f"sample_size는 7000, 10000, 20000 중 하나여야 합니다. 입력값: {sample_size}") + return f"{base_dir}/augmented_only/smotenc_ctgan{sample_size}_{fold_num}_{region}.csv" + + elif method == 'smote': + # smote는 sample_size를 사용하지 않으므로 무시 + # smote 파일도 augmented_only에 있다고 가정 (fold 번호 포함 여부 확인 필요) + return f"{base_dir}/augmented_only/smote_{fold_num}_{region}.csv" + + else: + raise ValueError(f"지원하지 않는 method입니다: {method}. 'ctgan', 'smotenc_ctgan', 'smote' 중 하나를 선택하세요.") + + +def main( + method: str = "ctgan", + sample_size: Optional[int] = 7000, + config: Optional[PlotConfig] = None, + region: Optional[str] = "busan", + fold_idx: Optional[int] = 0, + data_dir: str = "../../data/data_for_modeling", + original_path: Optional[str] = None, + synthetic_path: Optional[str] = None, + base_dir: str = "../../data/data_oversampled" +) -> None: + """ + 전체 파이프라인을 실행하는 메인 함수. + + Args: + method: 증강 방법 ('ctgan', 'smotenc_ctgan', 'smote') + sample_size: 샘플 수 (ctgan, smotenc_ctgan인 경우: 7000, 10000, 20000 중 선택, smote인 경우 무시) + config: PlotConfig 객체 (None이면 기본값 사용) + region: 지역명 ('incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju') + original_path가 None일 때 사용 + fold_idx: fold 인덱스 (0, 1, 2 중 하나), None이면 전체 데이터 + original_path가 None일 때 사용 + data_dir: 원본 데이터 디렉토리 경로 (region 사용 시) + original_path: 원본 데이터 파일 경로 (지정하면 region/fold 무시) + synthetic_path: 합성 데이터 파일 경로 (지정하면 method/sample_size 무시) + base_dir: 합성 데이터 기본 디렉토리 경로 + """ + if config is None: + config = PlotConfig() + + # 합성 데이터 경로 생성 + if synthetic_path is None: + if region is None: + raise ValueError("synthetic_path를 지정하지 않으면 region이 필요합니다.") + synthetic_path = generate_synthetic_path(method, region, sample_size, fold_idx, base_dir) + + # 데이터 로드 및 전처리 + original_data, synthetic_data = load_and_preprocess_data( + synthetic_path=synthetic_path, + config=config, + region=region, + fold_idx=fold_idx, + data_dir=data_dir, + original_path=original_path + ) + + # 피처 준비 및 스케일링 + scaled_features, labels, scaler = prepare_features_for_visualization( + original_data, synthetic_data, config + ) + + # UMAP 시각화 + plot_umap_comparison( + scaled_features, + labels, + config, + region=region, + fold_idx=fold_idx + ) + plt.show() + + +def generate_all_plots( + output_dir: str = "images", + config: Optional[PlotConfig] = None, + data_dir: str = "../../data/data_for_modeling", + base_dir: str = "../../data/data_oversampled" +) -> None: + """ + 논문 게재를 위한 모든 조합의 plot을 생성하고 저장합니다. + + 생성되는 조합: + - 지역: incheon, seoul, busan, daegu, daejeon, gwangju (6개) + - Fold: 0, 1, 2 (3개) + - Method: ctgan, smotenc_ctgan, smote (3개) + - Sample size (ctgan, smotenc_ctgan): 7000, 10000, 20000 (3개) + + 총: (6 지역 × 3 fold × 3 sample_size × 2 methods) + (6 지역 × 3 fold × 1 smote) = 126개 + + Args: + output_dir: 저장할 디렉토리 경로 + config: PlotConfig 객체 (None이면 기본값 사용) + data_dir: 원본 데이터 디렉토리 경로 + base_dir: 합성 데이터 기본 디렉토리 경로 + """ + if config is None: + config = PlotConfig() + + # 출력 디렉토리 생성 + output_path = Path(output_dir) + output_path.mkdir(parents=True, exist_ok=True) + + # 모든 조합 정의 + regions = ['incheon', 'seoul', 'busan', 'daegu', 'daejeon', 'gwangju'] + fold_indices = [0, 1, 2] + methods_with_size = [ + ('ctgan', 7000), + ('ctgan', 10000), + ('ctgan', 20000), + ('smotenc_ctgan', 7000), + ('smotenc_ctgan', 10000), + ('smotenc_ctgan', 20000) + ] + methods_without_size = [('smote', None)] + + total_plots = len(regions) * len(fold_indices) * (len(methods_with_size) + len(methods_without_size)) + current_plot = 0 + + print(f"총 {total_plots}개의 plot을 생성합니다...") + print("=" * 60) + + # Method와 sample_size가 있는 경우 (ctgan, smotenc_ctgan) + for method, sample_size in methods_with_size: + for region in regions: + for fold_idx in fold_indices: + current_plot += 1 + try: + print(f"[{current_plot}/{total_plots}] {method} (size={sample_size}) - {region.upper()} - Fold {fold_idx + 1} 생성 중...") + + # 합성 데이터 경로 생성 + synthetic_path = generate_synthetic_path(method, region, sample_size, fold_idx, base_dir) + + # 데이터 로드 및 전처리 + original_data, synthetic_data = load_and_preprocess_data( + synthetic_path=synthetic_path, + config=config, + region=region, + fold_idx=fold_idx, + data_dir=data_dir, + original_path=None + ) + + # 피처 준비 및 스케일링 + scaled_features, labels, scaler = prepare_features_for_visualization( + original_data, synthetic_data, config + ) + + # UMAP 시각화 + fig = plot_umap_comparison( + scaled_features, + labels, + config, + region=region, + fold_idx=fold_idx + ) + + # 파일명 생성: method_sample_size_region_fold_years.png + fold = [[2018, 2019], [2018, 2020], [2019, 2020]] + years = fold[fold_idx] + filename = f"{method}_{sample_size}_{region}_fold{fold_idx + 1}_{years[0]}-{years[1]}.png" + filepath = output_path / filename + + # 저장 (논문 게재 품질) + fig.savefig( + filepath, + dpi=600, # 해상도 (300dpi는 대부분 저널 요구사항) + bbox_inches='tight', # 여백 자동 제거 + pad_inches=0.1, # tight일 때 약간의 여백 유지 (가독성) + facecolor='white', # 배경색 (흰색) + edgecolor='none', # 테두리 없음 + format='png', # 파일 형식 (pdf로 변경 가능) + transparent= True # 투명 배경 여부 + ) + plt.close(fig) + + print(f" ✓ 저장 완료: {filename}") + + except Exception as e: + print(f" ✗ 오류 발생: {str(e)}") + continue + + # Method만 있고 sample_size가 없는 경우 (smote) + for method, _ in methods_without_size: + for region in regions: + for fold_idx in fold_indices: + current_plot += 1 + try: + print(f"[{current_plot}/{total_plots}] {method} - {region.upper()} - Fold {fold_idx + 1} 생성 중...") + + # 합성 데이터 경로 생성 + synthetic_path = generate_synthetic_path(method, region, None, fold_idx, base_dir) + + # 데이터 로드 및 전처리 + original_data, synthetic_data = load_and_preprocess_data( + synthetic_path=synthetic_path, + config=config, + region=region, + fold_idx=fold_idx, + data_dir=data_dir, + original_path=None + ) + + # 피처 준비 및 스케일링 + scaled_features, labels, scaler = prepare_features_for_visualization( + original_data, synthetic_data, config + ) + + # UMAP 시각화 + fig = plot_umap_comparison( + scaled_features, + labels, + config, + region=region, + fold_idx=fold_idx + ) + + # 파일명 생성: method_region_fold_years.png + fold = [[2018, 2019], [2018, 2020], [2019, 2020]] + years = fold[fold_idx] + filename = f"{method}_{region}_fold{fold_idx + 1}_{years[0]}-{years[1]}.png" + filepath = output_path / filename + + # 저장 (논문 게재 품질) + fig.savefig( + filepath, + dpi=300, # 해상도 (300dpi는 대부분 저널 요구사항) + bbox_inches='tight', # 여백 자동 제거 + pad_inches=0.1, # tight일 때 약간의 여백 유지 (가독성) + facecolor='white', # 배경색 (흰색) + edgecolor='none', # 테두리 없음 + format='png', # 파일 형식 (pdf로 변경 가능) + transparent=False # 투명 배경 여부 + ) + plt.close(fig) + + print(f" ✓ 저장 완료: {filename}") + + except Exception as e: + print(f" ✗ 오류 발생: {str(e)}") + continue + + print("=" * 60) + print(f"모든 plot 생성 완료! 총 {current_plot}개 파일이 {output_dir}에 저장되었습니다.") + + +if __name__ == "__main__": + # 단일 plot 생성 (기본) + # main() + + # 모든 조합의 plot 생성 (논문용) + generate_all_plots(output_dir="images") diff --git a/Analysis_code/3.sampled_data_analysis/oversampling_model_hyperparameter.ipynb b/Analysis_code/3.sampled_data_analysis/oversampling_model_hyperparameter.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..37f85ac78e284fd91e1a1b5930a4c13f8e396a35 --- /dev/null +++ b/Analysis_code/3.sampled_data_analysis/oversampling_model_hyperparameter.ipynb @@ -0,0 +1,574 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "829c34fa", + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"\n", + "CTGAN 모델 하이퍼파라미터 추출 및 정리\n", + "논문 작성용으로 모든 저장된 모델의 하이퍼파라미터를 추출합니다.\n", + "\"\"\"\n", + "\n", + "import pandas as pd\n", + "import numpy as np\n", + "from pathlib import Path\n", + "from ctgan import CTGAN\n", + "import re\n", + "from typing import Dict, Any\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "98679ba3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "총 216개의 모델 파일을 찾았습니다.\n", + "\n", + "처음 5개 파일 예시:\n", + " - ctgan_only_10000_1_busan_class0.pkl\n", + " - ctgan_only_10000_1_busan_class1.pkl\n", + " - ctgan_only_10000_1_daegu_class0.pkl\n", + " - ctgan_only_10000_1_daegu_class1.pkl\n", + " - ctgan_only_10000_1_daejeon_class0.pkl\n" + ] + } + ], + "source": [ + "# 모델 디렉토리 경로 설정\n", + "model_dir = Path(\"../save_model/oversampling_models\")\n", + "\n", + "# 모델 파일 목록 확인\n", + "model_files = sorted(list(model_dir.glob(\"*.pkl\")))\n", + "print(f\"총 {len(model_files)}개의 모델 파일을 찾았습니다.\")\n", + "print(f\"\\n처음 5개 파일 예시:\")\n", + "for f in model_files[:5]:\n", + " print(f\" - {f.name}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "97cde9e3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CTGAN 모델 하이퍼파라미터:\n", + " embedding_dim: 64\n", + " generator_dim: (64, 64)\n", + " discriminator_dim: (128, 128)\n", + " batch_size: 256\n", + " epochs: 300\n", + " pac: 8\n", + " discriminator_steps: 2\n", + " generator_lr: 0.0002\n", + " discriminator_lr: 0.0002\n", + " generator_decay: 1e-06\n", + " discriminator_decay: 1e-06\n", + "\n", + "딕셔너리 형태:\n", + "{'embedding_dim': 64, 'generator_dim': (64, 64), 'discriminator_dim': (128, 128), 'batch_size': 256, 'epochs': 300, 'pac': 8, 'discriminator_steps': 2, 'generator_lr': 0.0002, 'discriminator_lr': 0.0002, 'generator_decay': 1e-06, 'discriminator_decay': 1e-06}\n" + ] + } + ], + "source": [ + "# CTGAN 모델 로드 및 하이퍼파라미터 확인 예제\n", + "model = CTGAN.load(\"../save_model/oversampling_models/ctgan_only_10000_1_busan_class0.pkl\")\n", + "\n", + "# CTGAN 모델의 하이퍼파라미터는 내부 속성(_로 시작)에 저장되어 있습니다\n", + "print(\"CTGAN 모델 하이퍼파라미터:\")\n", + "print(f\" embedding_dim: {model._embedding_dim}\")\n", + "print(f\" generator_dim: {model._generator_dim}\")\n", + "print(f\" discriminator_dim: {model._discriminator_dim}\")\n", + "print(f\" batch_size: {model._batch_size}\")\n", + "print(f\" epochs: {model._epochs}\")\n", + "print(f\" pac: {model.pac}\") # pac는 공개 속성으로도 접근 가능\n", + "print(f\" discriminator_steps: {model._discriminator_steps}\")\n", + "print(f\" generator_lr: {model._generator_lr}\")\n", + "print(f\" discriminator_lr: {model._discriminator_lr}\")\n", + "print(f\" generator_decay: {model._generator_decay}\")\n", + "print(f\" discriminator_decay: {model._discriminator_decay}\")\n", + "\n", + "# 모든 하이퍼파라미터를 딕셔너리로 추출하는 방법\n", + "hyperparams = {\n", + " 'embedding_dim': model._embedding_dim,\n", + " 'generator_dim': model._generator_dim,\n", + " 'discriminator_dim': model._discriminator_dim,\n", + " 'batch_size': model._batch_size,\n", + " 'epochs': model._epochs,\n", + " 'pac': model.pac,\n", + " 'discriminator_steps': model._discriminator_steps,\n", + " 'generator_lr': model._generator_lr,\n", + " 'discriminator_lr': model._discriminator_lr,\n", + " 'generator_decay': model._generator_decay,\n", + " 'discriminator_decay': model._discriminator_decay,\n", + "}\n", + "print(\"\\n딕셔너리 형태:\")\n", + "print(hyperparams)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e3631f3b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "테스트 파일: ctgan_only_10000_1_busan_class0.pkl\n", + "파싱 결과: {'method': 'ctgan', 'sample_size': 10000, 'fold': 1, 'region': 'busan', 'class': 0}\n", + "하이퍼파라미터: {'embedding_dim': 64, 'generator_dim': '(64, 64)', 'discriminator_dim': '(128, 128)', 'pac': 8, 'batch_size': 256, 'discriminator_steps': 2, 'epochs': 300, 'generator_lr': 0.0002, 'discriminator_lr': 0.0002, 'generator_decay': 1e-06, 'discriminator_decay': 1e-06}\n" + ] + } + ], + "source": [ + "def parse_model_filename(filename: str) -> Dict[str, Any]:\n", + " \"\"\"\n", + " 모델 파일명에서 정보를 파싱합니다.\n", + " \n", + " 파일명 패턴:\n", + " - ctgan_only_{sample_size}_{fold}_{region}_class{0|1}.pkl\n", + " - smotenc_ctgan_{sample_size}_{fold}_{region}_class{0|1}.pkl\n", + " \n", + " Returns:\n", + " 파싱된 정보 딕셔너리\n", + " \"\"\"\n", + " # 파일명에서 확장자 제거\n", + " name = filename.replace('.pkl', '')\n", + " \n", + " # 패턴 매칭\n", + " if name.startswith('ctgan_only_'):\n", + " method = 'ctgan'\n", + " parts = name.replace('ctgan_only_', '').split('_')\n", + " elif name.startswith('smotenc_ctgan_'):\n", + " method = 'smotenc_ctgan'\n", + " parts = name.replace('smotenc_ctgan_', '').split('_')\n", + " else:\n", + " return None\n", + " \n", + " # sample_size, fold, region, class 추출\n", + " sample_size = int(parts[0])\n", + " fold = int(parts[1])\n", + " region = parts[2]\n", + " class_label = int(parts[3].replace('class', ''))\n", + " \n", + " return {\n", + " 'method': method,\n", + " 'sample_size': sample_size,\n", + " 'fold': fold,\n", + " 'region': region,\n", + " 'class': class_label\n", + " }\n", + "\n", + "\n", + "def extract_hyperparameters(model_path: Path) -> Dict[str, Any]:\n", + " \"\"\"\n", + " CTGAN 모델에서 하이퍼파라미터를 추출합니다.\n", + " \n", + " CTGAN 모델의 하이퍼파라미터는 내부 속성(_로 시작)에 저장되어 있습니다:\n", + " - _embedding_dim: 임베딩 차원\n", + " - _generator_dim: 생성기 네트워크 차원 (튜플)\n", + " - _discriminator_dim: 판별기 네트워크 차원 (튜플)\n", + " - _batch_size: 배치 크기\n", + " - _epochs: 에포크 수\n", + " - _pac: PAC 파라미터 (또는 pac 속성으로 접근 가능)\n", + " - _generator_lr: 생성기 학습률\n", + " - _discriminator_lr: 판별기 학습률\n", + " - _discriminator_steps: 판별기 업데이트 스텝 수\n", + " \n", + " Args:\n", + " model_path: 모델 파일 경로\n", + " \n", + " Returns:\n", + " 하이퍼파라미터 딕셔너리\n", + " \"\"\"\n", + " try:\n", + " # 모델 로드\n", + " model = CTGAN.load(str(model_path))\n", + " \n", + " # 하이퍼파라미터 추출 (내부 속성 사용)\n", + " hyperparams = {\n", + " 'embedding_dim': getattr(model, '_embedding_dim', None),\n", + " 'generator_dim': str(getattr(model, '_generator_dim', None)), # 튜플을 문자열로 변환\n", + " 'discriminator_dim': str(getattr(model, '_discriminator_dim', None)), # 튜플을 문자열로 변환\n", + " 'pac': getattr(model, 'pac', None) or getattr(model, '_pac', None), # pac 속성 또는 _pac 속성\n", + " 'batch_size': getattr(model, '_batch_size', None),\n", + " 'discriminator_steps': getattr(model, '_discriminator_steps', None),\n", + " 'epochs': getattr(model, '_epochs', None),\n", + " 'generator_lr': getattr(model, '_generator_lr', None),\n", + " 'discriminator_lr': getattr(model, '_discriminator_lr', None),\n", + " 'generator_decay': getattr(model, '_generator_decay', None),\n", + " 'discriminator_decay': getattr(model, '_discriminator_decay', None),\n", + " }\n", + " \n", + " return hyperparams\n", + " except Exception as e:\n", + " print(f\"Error loading {model_path.name}: {str(e)}\")\n", + " import traceback\n", + " print(traceback.format_exc())\n", + " return None\n", + "\n", + "\n", + "# 테스트: 첫 번째 모델 파일로 테스트\n", + "if len(model_files) > 0:\n", + " test_file = model_files[0]\n", + " print(f\"테스트 파일: {test_file.name}\")\n", + " parsed = parse_model_filename(test_file.name)\n", + " print(f\"파싱 결과: {parsed}\")\n", + " hyperparams = extract_hyperparameters(test_file)\n", + " print(f\"하이퍼파라미터: {hyperparams}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "9fc03ebe", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "모든 모델 파일에서 하이퍼파라미터 추출 중...\n", + "================================================================================\n", + "[20/216] 진행 중... (20개 성공)\n", + "[40/216] 진행 중... (40개 성공)\n", + "[60/216] 진행 중... (60개 성공)\n", + "[80/216] 진행 중... (80개 성공)\n", + "[100/216] 진행 중... (100개 성공)\n", + "[120/216] 진행 중... (120개 성공)\n", + "[140/216] 진행 중... (140개 성공)\n", + "[160/216] 진행 중... (160개 성공)\n", + "[180/216] 진행 중... (180개 성공)\n", + "[200/216] 진행 중... (200개 성공)\n", + "================================================================================\n", + "완료! 총 216개의 모델에서 하이퍼파라미터를 추출했습니다.\n" + ] + } + ], + "source": [ + "# 모든 모델 파일에서 하이퍼파라미터 추출\n", + "all_results = []\n", + "\n", + "print(\"모든 모델 파일에서 하이퍼파라미터 추출 중...\")\n", + "print(\"=\" * 80)\n", + "\n", + "for i, model_file in enumerate(model_files, 1):\n", + " # 파일명 파싱\n", + " parsed_info = parse_model_filename(model_file.name)\n", + " if parsed_info is None:\n", + " print(f\"[{i}/{len(model_files)}] 스킵: {model_file.name} (파일명 패턴 불일치)\")\n", + " continue\n", + " \n", + " # 하이퍼파라미터 추출\n", + " hyperparams = extract_hyperparameters(model_file)\n", + " if hyperparams is None:\n", + " print(f\"[{i}/{len(model_files)}] 실패: {model_file.name}\")\n", + " continue\n", + " \n", + " # 정보 합치기\n", + " result = {**parsed_info, **hyperparams}\n", + " result['filename'] = model_file.name\n", + " all_results.append(result)\n", + " \n", + " if i % 20 == 0:\n", + " print(f\"[{i}/{len(model_files)}] 진행 중... ({len(all_results)}개 성공)\")\n", + "\n", + "print(\"=\" * 80)\n", + "print(f\"완료! 총 {len(all_results)}개의 모델에서 하이퍼파라미터를 추출했습니다.\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "223e2b49", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "총 216개의 모델 하이퍼파라미터가 정리되었습니다.\n", + "\n", + "컬럼: ['method', 'sample_size', 'fold', 'region', 'class', 'embedding_dim', 'generator_dim', 'discriminator_dim', 'pac', 'batch_size', 'discriminator_steps', 'epochs', 'generator_lr', 'discriminator_lr', 'filename']\n", + "\n", + "처음 5개 행:\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
methodsample_sizefoldregionclassembedding_dimgenerator_dimdiscriminator_dimpacbatch_sizediscriminator_stepsepochsgenerator_lrdiscriminator_lrfilename
0ctgan70001busan078(128, 128)(128, 128)825633000.00020.0002ctgan_only_7000_1_busan_class0.pkl
1ctgan70001busan1269(256, 256)(128, 128)4102413000.00020.0002ctgan_only_7000_1_busan_class1.pkl
2ctgan70001daegu0121(128, 128)(64, 64)46423000.00020.0002ctgan_only_7000_1_daegu_class0.pkl
3ctgan70001daegu1217(128, 128)(128, 128)425653000.00020.0002ctgan_only_7000_1_daegu_class1.pkl
4ctgan70001daejeon0101(128, 128)(128, 128)412823000.00020.0002ctgan_only_7000_1_daejeon_class0.pkl
\n", + "
" + ], + "text/plain": [ + " method sample_size fold region class embedding_dim generator_dim \\\n", + "0 ctgan 7000 1 busan 0 78 (128, 128) \n", + "1 ctgan 7000 1 busan 1 269 (256, 256) \n", + "2 ctgan 7000 1 daegu 0 121 (128, 128) \n", + "3 ctgan 7000 1 daegu 1 217 (128, 128) \n", + "4 ctgan 7000 1 daejeon 0 101 (128, 128) \n", + "\n", + " discriminator_dim pac batch_size discriminator_steps epochs \\\n", + "0 (128, 128) 8 256 3 300 \n", + "1 (128, 128) 4 1024 1 300 \n", + "2 (64, 64) 4 64 2 300 \n", + "3 (128, 128) 4 256 5 300 \n", + "4 (128, 128) 4 128 2 300 \n", + "\n", + " generator_lr discriminator_lr filename \n", + "0 0.0002 0.0002 ctgan_only_7000_1_busan_class0.pkl \n", + "1 0.0002 0.0002 ctgan_only_7000_1_busan_class1.pkl \n", + "2 0.0002 0.0002 ctgan_only_7000_1_daegu_class0.pkl \n", + "3 0.0002 0.0002 ctgan_only_7000_1_daegu_class1.pkl \n", + "4 0.0002 0.0002 ctgan_only_7000_1_daejeon_class0.pkl " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# DataFrame으로 변환\n", + "df_hyperparams = pd.DataFrame(all_results)\n", + "\n", + "# 컬럼 순서 정리\n", + "column_order = [\n", + " 'method', 'sample_size', 'fold', 'region', 'class',\n", + " 'embedding_dim', 'generator_dim', 'discriminator_dim',\n", + " 'pac', 'batch_size', 'discriminator_steps',\n", + " 'epochs', 'generator_lr', 'discriminator_lr',\n", + " 'filename'\n", + "]\n", + "df_hyperparams = df_hyperparams[column_order]\n", + "\n", + "# 정렬: method -> sample_size -> fold -> region -> class\n", + "df_hyperparams = df_hyperparams.sort_values(\n", + " ['method', 'sample_size', 'fold', 'region', 'class']\n", + ").reset_index(drop=True)\n", + "\n", + "print(f\"총 {len(df_hyperparams)}개의 모델 하이퍼파라미터가 정리되었습니다.\")\n", + "print(f\"\\n컬럼: {list(df_hyperparams.columns)}\")\n", + "print(f\"\\n처음 5개 행:\")\n", + "df_hyperparams.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "9d3a8a65", + "metadata": {}, + "outputs": [], + "source": [ + "df_hyperparams.sort_values(by=['region','method','sample_size','fold','class'], inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "f92f352e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "하이퍼파라미터 데이터가 'oversampling_models_hyperparameters_all.csv'에 저장되었습니다.\n" + ] + } + ], + "source": [ + "# CSV로 저장 (선택사항)\n", + "output_csv = \"oversampling_models_hyperparameters_all.csv\"\n", + "df_hyperparams.to_csv(output_csv, index=False, encoding='utf-8-sig')\n", + "print(f\"하이퍼파라미터 데이터가 '{output_csv}'에 저장되었습니다.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "8ee1c56a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "ctgan 108\n", + "smotenc_ctgan 108\n", + "Name: method, dtype: int64" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_hyperparams['method'].value_counts()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Analysis_code/4.sampling_data_test/analysis.ipynb b/Analysis_code/4.sampling_data_test/analysis.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..06269c0eff9ee514286b56d2e9e2024a7a355806 --- /dev/null +++ b/Analysis_code/4.sampling_data_test/analysis.ipynb @@ -0,0 +1,244 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "70effd7a", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f38ce7d1", + "metadata": {}, + "outputs": [], + "source": [ + "df= pd.read_csv(\"../../data/oversampled_data_test_for_model/combined_sampled_data_test.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "2bae91e4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
regionmodeldata_sampleCSIMCCAccuracyfold_csi
0seoulLightGBMpure0.5050410.6469920.936174[[0.46595932802825235, 0.5771195097037204, 0.4...
1busanLightGBMpure0.4301880.6008010.956971[[0.32824427480911017, 0.4782608695651431, 0.4...
\n", + "
" + ], + "text/plain": [ + " region model data_sample CSI MCC Accuracy \\\n", + "0 seoul LightGBM pure 0.505041 0.646992 0.936174 \n", + "1 busan LightGBM pure 0.430188 0.600801 0.956971 \n", + "\n", + " fold_csi \n", + "0 [[0.46595932802825235, 0.5771195097037204, 0.4... \n", + "1 [[0.32824427480911017, 0.4782608695651431, 0.4... " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "6893a958", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
regionmodeldata_sampleCSI
0busanLightGBMctgan100000.467663
1daeguXGBoostsmote0.454066
2daejeonLightGBMsmote0.521335
3gwangjuLightGBMsmote0.522731
4incheonXGBoostsmote0.589146
5seoulXGBoostsmote0.582266
\n", + "
" + ], + "text/plain": [ + " region model data_sample CSI\n", + "0 busan LightGBM ctgan10000 0.467663\n", + "1 daegu XGBoost smote 0.454066\n", + "2 daejeon LightGBM smote 0.521335\n", + "3 gwangju LightGBM smote 0.522731\n", + "4 incheon XGBoost smote 0.589146\n", + "5 seoul XGBoost smote 0.582266" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 지역별로 CSI가 가장 높은 model과 data_sample 조합 보기\n", + "top_csi_per_region = df.loc[df.groupby('region')['CSI'].idxmax()][['region', 'model', 'data_sample', 'CSI']]\n", + "top_csi_per_region = top_csi_per_region.sort_values('region').reset_index(drop=True)\n", + "top_csi_per_region" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2942ba86", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d55af59c", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Analysis_code/4.sampling_data_test/lgb_sampled_test.ipynb b/Analysis_code/4.sampling_data_test/lgb_sampled_test.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..76cb00fae0bd4bfc71341fce32ab336689d6934d --- /dev/null +++ b/Analysis_code/4.sampling_data_test/lgb_sampled_test.ipynb @@ -0,0 +1,5215 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **lightGBM**" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import accuracy_score, f1_score, recall_score, precision_score\n", + "from collections import Counter\n", + "import sys\n", + "from lightgbm import LGBMClassifier\n", + "\n", + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def add_derived_features(df: pd.DataFrame) -> pd.DataFrame:\n", + " \"\"\"\n", + " 제거했던 파생 변수들을 복구\n", + " \n", + " Args:\n", + " df: 데이터프레임\n", + " \n", + " Returns:\n", + " 파생 변수가 추가된 데이터프레임\n", + " \"\"\"\n", + " df = df.copy()\n", + " df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24)\n", + " df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24)\n", + " df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12)\n", + " df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12)\n", + " df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C']\n", + " return df\n", + "\n", + "\n", + "def preprocessing(df):\n", + " df = df[df.columns].copy()\n", + " df['year'] = df['year'].astype('int')\n", + " df['month'] = df['month'].astype('int')\n", + " df['hour'] = df['hour'].astype('int')\n", + " df= add_derived_features(df).copy()\n", + " df['multi_class'] = df['multi_class'].astype('int')\n", + " df.loc[df['wind_dir']=='정온', 'wind_dir'] = \"0\"\n", + " df['wind_dir'] = df['wind_dir'].astype('int')\n", + " df= df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm',\n", + " 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure',\n", + " 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase',\n", + " 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year',\n", + " 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos',\n", + " 'month_sin', 'month_cos','multi_class']].copy()\n", + " return df\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "df_seoul = pd.read_csv(\"../../data/data_for_modeling/seoul_train.csv\")\n", + "df_busan = pd.read_csv(\"../../data/data_for_modeling/busan_train.csv\")\n", + "df_daegu = pd.read_csv(\"../../data/data_for_modeling/daegu_train.csv\")\n", + "df_daejeon = pd.read_csv(\"../../data/data_for_modeling/daejeon_train.csv\")\n", + "df_incheon = pd.read_csv(\"../../data/data_for_modeling/incheon_train.csv\")\n", + "df_gwangju = pd.read_csv(\"../../data/data_for_modeling/gwangju_train.csv\")\n", + "\n", + "df_seoul = preprocessing(df_seoul).copy()\n", + "df_busan = preprocessing(df_busan).copy()\n", + "df_daegu = preprocessing(df_daegu).copy()\n", + "df_daejeon = preprocessing(df_daejeon).copy()\n", + "df_incheon = preprocessing(df_incheon).copy()\n", + "df_gwangju = preprocessing(df_gwangju).copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "seoul : Counter({2: 23686, 1: 2579, 0: 39})\n", + "\n", + "busan : Counter({2: 24694, 1: 1516, 0: 94})\n", + "\n", + "daegu : Counter({2: 25149, 1: 1107, 0: 48})\n", + "\n", + "gwangju : Counter({2: 23798, 1: 2411, 0: 95})\n", + "\n", + "daejeon : Counter({2: 23471, 1: 2660, 0: 173})\n", + "\n", + "incheon : Counter({2: 21893, 1: 3892, 0: 519})\n" + ] + } + ], + "source": [ + "print(\"seoul : \", Counter(df_seoul['multi_class']))\n", + "print()\n", + "print(\"busan : \", Counter(df_busan['multi_class']))\n", + "print()\n", + "print(\"daegu : \", Counter(df_daegu['multi_class']))\n", + "print()\n", + "print(\"gwangju : \", Counter(df_gwangju['multi_class']))\n", + "print()\n", + "print(\"daejeon : \", Counter(df_daejeon['multi_class']))\n", + "print()\n", + "print(\"incheon : \", Counter(df_incheon['multi_class']))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', 'vap_pressure',\n", + " 'dewpoint_C', 'loc_pressure', 'sea_pressure', 'solarRad', 'snow_cm',\n", + " 'cloudcover', 'lm_cloudcover', 'low_cloudbase', 'groundtemp', 'O3',\n", + " 'NO2', 'PM10', 'PM25', 'year', 'month', 'hour', 'ground_temp - temp_C',\n", + " 'hour_sin', 'hour_cos', 'month_sin', 'month_cos', 'multi_class'],\n", + " dtype='object')" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_gwangju.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import confusion_matrix\n", + "from sklearn.utils.class_weight import compute_class_weight\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "from sklearn.metrics import matthews_corrcoef\n", + "\n", + "def calculate_csi(Y_test, pred):\n", + "\n", + " cm = confusion_matrix(Y_test, pred) # 변수 이름을 cm으로 변경\n", + " # 혼동 행렬에서 H, F, M 추출\n", + " H = (cm[0, 0] + cm[1, 1])\n", + " \n", + " F = (cm[1, 0] + cm[2, 0] +\n", + " cm[0, 1] + cm[2, 1])\n", + " \n", + " M = (cm[0, 2] + cm[1, 2])\n", + " \n", + " # CSI 계산\n", + " CSI = H / (H + F + M + 1e-10)\n", + " return CSI\n", + "\n", + "def eval_metric_csi(y_true, pred_prob):\n", + "\n", + " pred = np.argmax(pred_prob, axis=1)\n", + " y_true = y_true\n", + " y_pred = pred\n", + " csi = calculate_csi(y_true, y_pred)\n", + " return -1*csi\n", + "\n", + "def multiclass_mcc(y_val, y_pred):\n", + " \"\"\"\n", + " 다중 분류에서도 sklearn의 matthews_corrcoef를 그대로 사용할 수 있음.\n", + " \"\"\"\n", + " return matthews_corrcoef(y_val, y_pred)\n", + "\n", + "# 사용자 정의 평가 지표 함수 정의\n", + "def csi_metric(y_true, pred):\n", + " y_pred_binary = np.argmax(pred, axis=1)\n", + " score = calculate_csi(y_true, y_pred_binary)\n", + " return 'CSI', score, True # higher_better=True" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "lgb_model = LGBMClassifier(\n", + " n_estimators=4000, # 약한 학습기 개수\n", + " tree_method='hist', \n", + " device='gpu', # GPU 사용\n", + " objective='multiclassova',\n", + " early_stopping_rounds=400, # 과적합 방지를 위한 조기 종료 설정\n", + " random_state= 42,\n", + " verbose= -1\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "pre_sampled_data= []\n", + "smote_sample_data= []\n", + "gan20000_sample_data= []\n", + "gan10000_sample_data= []\n", + "gan7000_sample_data= []" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "df= pd.DataFrame(columns=['region','model','data_sample','CSI','MCC','Accuracy','fold_csi'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5050411887221465\n", + "mean of accuracy : 0.9361739068958922\n", + "mean of mcc : 0.6469923326874802\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul.loc[df_seoul['year'].isin([2018, 2019]), df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul.loc[df_seoul['year'].isin([2018, 2020]), df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul.loc[df_seoul['year'].isin([2019, 2020]), df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'pure',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4301877051295586\n", + "mean of accuracy : 0.9569711638429356\n", + "mean of mcc : 0.6008010957239577\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')\n", + "\n", + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_busan.loc[df_busan['year'].isin([2018, 2019]), df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_busan.loc[df_busan['year'].isin([2018, 2020]), df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_busan.loc[df_busan['year'].isin([2019, 2020]), df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'pure',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5546627753142914\n", + "mean of accuracy : 0.9119535519125682\n", + "mean of mcc : 0.6879511579878309\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')\n", + "\n", + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon.loc[df_incheon['year'].isin([2018, 2019]), df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon.loc[df_incheon['year'].isin([2018, 2020]), df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon.loc[df_incheon['year'].isin([2019, 2020]), df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'pure',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.29234018565381\n", + "mean of accuracy : 0.956963678252697\n", + "mean of mcc : 0.4819888130358391\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')\n", + "\n", + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu.loc[df_daegu['year'].isin([2018, 2019]), df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu.loc[df_daegu['year'].isin([2018, 2020]), df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu.loc[df_daegu['year'].isin([2019, 2020]), df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'pure',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4784367169072478\n", + "mean of accuracy : 0.9327483136628656\n", + "mean of mcc : 0.6252440470551551\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')\n", + "\n", + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon.loc[df_daejeon['year'].isin([2018, 2019]), df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon.loc[df_daejeon['year'].isin([2018, 2020]), df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon.loc[df_daejeon['year'].isin([2019, 2020]), df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'pure',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4827774547671669\n", + "mean of accuracy : 0.9432361454200664\n", + "mean of mcc : 0.6368148576215991\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')\n", + "\n", + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju.loc[df_gwangju['year'].isin([2018, 2019]), df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju.loc[df_gwangju['year'].isin([2018, 2020]), df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju.loc[df_gwangju['year'].isin([2019, 2020]), df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'pure',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **SMOTE 증강기법을 적용시킨 데이터셋에 대한 성능**" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "df_smote_busan_1 = pd.read_csv(\"../../data/data_oversampled/smote/smote_1_busan.csv\")\n", + "df_smote_busan_2 = pd.read_csv(\"../../data/data_oversampled/smote/smote_2_busan.csv\")\n", + "df_smote_busan_3 = pd.read_csv(\"../../data/data_oversampled/smote/smote_3_busan.csv\")\n", + "\n", + "df_smote_seoul_1 = pd.read_csv(\"../../data/data_oversampled/smote/smote_1_seoul.csv\")\n", + "df_smote_seoul_2 = pd.read_csv(\"../../data/data_oversampled/smote/smote_2_seoul.csv\")\n", + "df_smote_seoul_3 = pd.read_csv(\"../../data/data_oversampled/smote/smote_3_seoul.csv\")\n", + "\n", + "df_smote_daegu_1 = pd.read_csv(\"../../data/data_oversampled/smote/smote_1_daegu.csv\")\n", + "df_smote_daegu_2 = pd.read_csv(\"../../data/data_oversampled/smote/smote_2_daegu.csv\")\n", + "df_smote_daegu_3 = pd.read_csv(\"../../data/data_oversampled/smote/smote_3_daegu.csv\")\n", + "\n", + "df_smote_daejeon_1 = pd.read_csv(\"../../data/data_oversampled/smote/smote_1_daejeon.csv\")\n", + "df_smote_daejeon_2 = pd.read_csv(\"../../data/data_oversampled/smote/smote_2_daejeon.csv\")\n", + "df_smote_daejeon_3 = pd.read_csv(\"../../data/data_oversampled/smote/smote_3_daejeon.csv\")\n", + "\n", + "df_smote_gwangju_1 = pd.read_csv(\"../../data/data_oversampled/smote/smote_1_gwangju.csv\")\n", + "df_smote_gwangju_2 = pd.read_csv(\"../../data/data_oversampled/smote/smote_2_gwangju.csv\")\n", + "df_smote_gwangju_3 = pd.read_csv(\"../../data/data_oversampled/smote/smote_3_gwangju.csv\")\n", + "\n", + "df_smote_incheon_1 = pd.read_csv(\"../../data/data_oversampled/smote/smote_1_incheon.csv\")\n", + "df_smote_incheon_2 = pd.read_csv(\"../../data/data_oversampled/smote/smote_2_incheon.csv\")\n", + "df_smote_incheon_3 = pd.read_csv(\"../../data/data_oversampled/smote/smote_3_incheon.csv\")\n", + "\n", + "df_smote_busan_1 = preprocessing(df_smote_busan_1)\n", + "df_smote_busan_2 = preprocessing(df_smote_busan_2)\n", + "df_smote_busan_3 = preprocessing(df_smote_busan_3)\n", + "\n", + "df_smote_seoul_1 = preprocessing(df_smote_seoul_1)\n", + "df_smote_seoul_2 = preprocessing(df_smote_seoul_2)\n", + "df_smote_seoul_3 = preprocessing(df_smote_seoul_3)\n", + "\n", + "df_smote_daegu_1 = preprocessing(df_smote_daegu_1)\n", + "df_smote_daegu_2 = preprocessing(df_smote_daegu_2)\n", + "df_smote_daegu_3 = preprocessing(df_smote_daegu_3)\n", + "\n", + "df_smote_daejeon_1 = preprocessing(df_smote_daejeon_1)\n", + "df_smote_daejeon_2 = preprocessing(df_smote_daejeon_2)\n", + "df_smote_daejeon_3 = preprocessing(df_smote_daejeon_3)\n", + "\n", + "df_smote_gwangju_1 = preprocessing(df_smote_gwangju_1)\n", + "df_smote_gwangju_2 = preprocessing(df_smote_gwangju_2)\n", + "df_smote_gwangju_3 = preprocessing(df_smote_gwangju_3)\n", + "\n", + "df_smote_incheon_1 = preprocessing(df_smote_incheon_1)\n", + "df_smote_incheon_2 = preprocessing(df_smote_incheon_2)\n", + "df_smote_incheon_3 = preprocessing(df_smote_incheon_3)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "smote_oversample=[] # smote 적용 전 f1 score 저장 리스트" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', 'vap_pressure',\n", + " 'dewpoint_C', 'loc_pressure', 'sea_pressure', 'solarRad', 'snow_cm',\n", + " 'cloudcover', 'lm_cloudcover', 'low_cloudbase', 'groundtemp', 'O3',\n", + " 'NO2', 'PM10', 'PM25', 'year', 'month', 'hour', 'ground_temp - temp_C',\n", + " 'hour_sin', 'hour_cos', 'month_sin', 'month_cos', 'multi_class'],\n", + " dtype='object')" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_smote_seoul_1.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', 'vap_pressure',\n", + " 'dewpoint_C', 'loc_pressure', 'sea_pressure', 'solarRad', 'snow_cm',\n", + " 'cloudcover', 'lm_cloudcover', 'low_cloudbase', 'groundtemp', 'O3',\n", + " 'NO2', 'PM10', 'PM25', 'year', 'month', 'hour', 'ground_temp - temp_C',\n", + " 'hour_sin', 'hour_cos', 'month_sin', 'month_cos', 'multi_class'],\n", + " dtype='object')" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_seoul.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5789392155070722\n", + "mean of accuracy : 0.9399950927797324\n", + "mean of mcc : 0.7084991639282849\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')\n", + "\n", + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_seoul_1.loc[df_smote_seoul_1['year'].isin([2018, 2019]), df_smote_seoul_1.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_smote_seoul_1.loc[df_smote_seoul_1['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_seoul_2.loc[df_smote_seoul_2['year'].isin([2018, 2020]), df_smote_seoul_2.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_smote_seoul_2.loc[df_smote_seoul_2['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_seoul_3.loc[df_smote_seoul_3['year'].isin([2019, 2020]), df_smote_seoul_3.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_smote_seoul_3.loc[df_smote_seoul_3['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smote',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.46602091302575205\n", + "mean of accuracy : 0.9501977443421413\n", + "mean of mcc : 0.6318799598547477\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')\n", + "\n", + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_busan_1.loc[df_smote_busan_1['year'].isin([2018, 2019]), df_smote_busan_1.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_smote_busan_1.loc[df_smote_busan_1['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_busan_2.loc[df_smote_busan_2['year'].isin([2018, 2020]), df_smote_busan_2.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_smote_busan_2.loc[df_smote_busan_2['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_busan_3.loc[df_smote_busan_3['year'].isin([2019, 2020]), df_smote_busan_3.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_smote_busan_3.loc[df_smote_busan_3['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smote',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.583559682649986\n", + "mean of accuracy : 0.9104636075554557\n", + "mean of mcc : 0.7061374111787998\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')\n", + "\n", + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_incheon_1.loc[df_smote_incheon_1['year'].isin([2018, 2019]), df_smote_incheon_1.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_smote_incheon_1.loc[df_smote_incheon_1['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_incheon_2.loc[df_smote_incheon_2['year'].isin([2018, 2020]), df_smote_incheon_2.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_smote_incheon_2.loc[df_smote_incheon_2['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_incheon_3.loc[df_smote_incheon_3['year'].isin([2019, 2020]), df_smote_incheon_3.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_smote_incheon_3.loc[df_smote_incheon_3['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smote',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.44735416496514874\n", + "mean of accuracy : 0.96373033992897\n", + "mean of mcc : 0.6169211806368756\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')\n", + "\n", + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_daegu_1.loc[df_smote_daegu_1['year'].isin([2018, 2019]), df_smote_daegu_1.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_smote_daegu_1.loc[df_smote_daegu_1['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_daegu_2.loc[df_smote_daegu_2['year'].isin([2018, 2020]), df_smote_daegu_2.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_smote_daegu_2.loc[df_smote_daegu_2['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_daegu_3.loc[df_smote_daegu_3['year'].isin([2019, 2020]), df_smote_daegu_3.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_smote_daegu_3.loc[df_smote_daegu_3['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smote',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5213346054616135\n", + "mean of accuracy : 0.9306212624032071\n", + "mean of mcc : 0.6563209583230294\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')\n", + "\n", + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_daejeon_1.loc[df_smote_daejeon_1['year'].isin([2018, 2019]), df_smote_daejeon_1.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_smote_daejeon_1.loc[df_smote_daejeon_1['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_daejeon_2.loc[df_smote_daejeon_2['year'].isin([2018, 2020]), df_smote_daejeon_2.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_smote_daejeon_2.loc[df_smote_daejeon_2['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_daejeon_3.loc[df_smote_daejeon_3['year'].isin([2019, 2020]), df_smote_daejeon_3.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_smote_daejeon_3.loc[df_smote_daejeon_3['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smote',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5227311295096367\n", + "mean of accuracy : 0.9368502091806605\n", + "mean of mcc : 0.6604233380668852\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')\n", + "\n", + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_gwangju_1.loc[df_smote_gwangju_1['year'].isin([2018, 2019]), df_smote_gwangju_1.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_smote_gwangju_1.loc[df_smote_gwangju_1['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_gwangju_2.loc[df_smote_gwangju_2['year'].isin([2018, 2020]), df_smote_gwangju_2.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_smote_gwangju_2.loc[df_smote_gwangju_2['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_gwangju_3.loc[df_smote_gwangju_3['year'].isin([2019, 2020]), df_smote_gwangju_3.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_smote_gwangju_3.loc[df_smote_gwangju_3['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smote',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **CTGAN을 통해 데이터 증강을 진행한 데이터셋에 대한 성능**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **2만개**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "# 1 Fold\n", + "df_busan_gan20000_1= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_1_busan.csv\")\n", + "df_seoul_gan20000_1= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_1_seoul.csv\")\n", + "df_incheon_gan20000_1= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_1_incheon.csv\")\n", + "df_daegu_gan20000_1= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_1_daegu.csv\")\n", + "df_daejeon_gan20000_1= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_1_daejeon.csv\")\n", + "df_gwangju_gan20000_1= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_1_gwangju.csv\")\n", + "\n", + "# 2 Fold\n", + "df_busan_gan20000_2= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_2_busan.csv\")\n", + "df_seoul_gan20000_2= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_2_seoul.csv\")\n", + "df_incheon_gan20000_2= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_2_incheon.csv\")\n", + "df_daegu_gan20000_2= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_2_daegu.csv\")\n", + "df_daejeon_gan20000_2= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_2_daejeon.csv\")\n", + "df_gwangju_gan20000_2= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_2_gwangju.csv\")\n", + "\n", + "# 3 Fold\n", + "df_busan_gan20000_3= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_3_busan.csv\")\n", + "df_seoul_gan20000_3= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_3_seoul.csv\")\n", + "df_incheon_gan20000_3= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_3_incheon.csv\")\n", + "df_daegu_gan20000_3= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_3_daegu.csv\")\n", + "df_daejeon_gan20000_3= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_3_daejeon.csv\")\n", + "df_gwangju_gan20000_3= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_3_gwangju.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "df_busan_gan20000_1= preprocessing(df_busan_gan20000_1).copy()\n", + "df_seoul_gan20000_1= preprocessing(df_seoul_gan20000_1).copy()\n", + "df_incheon_gan20000_1= preprocessing(df_incheon_gan20000_1).copy()\n", + "df_daegu_gan20000_1= preprocessing(df_daegu_gan20000_1).copy()\n", + "df_daejeon_gan20000_1= preprocessing(df_daejeon_gan20000_1).copy()\n", + "df_gwangju_gan20000_1= preprocessing(df_gwangju_gan20000_1).copy()\n", + "\n", + "df_busan_gan20000_2= preprocessing(df_busan_gan20000_2).copy()\n", + "df_seoul_gan20000_2= preprocessing(df_seoul_gan20000_2).copy()\n", + "df_incheon_gan20000_2= preprocessing(df_incheon_gan20000_2).copy()\n", + "df_daegu_gan20000_2= preprocessing(df_daegu_gan20000_2).copy()\n", + "df_daejeon_gan20000_2= preprocessing(df_daejeon_gan20000_2).copy()\n", + "df_gwangju_gan20000_2= preprocessing(df_gwangju_gan20000_2).copy()\n", + "\n", + "df_busan_gan20000_3= preprocessing(df_busan_gan20000_3).copy()\n", + "df_seoul_gan20000_3= preprocessing(df_seoul_gan20000_3).copy()\n", + "df_incheon_gan20000_3= preprocessing(df_incheon_gan20000_3).copy()\n", + "df_daegu_gan20000_3= preprocessing(df_daegu_gan20000_3).copy()\n", + "df_daejeon_gan20000_3= preprocessing(df_daejeon_gan20000_3).copy()\n", + "df_gwangju_gan20000_3= preprocessing(df_gwangju_gan20000_3).copy()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5430102117038431\n", + "mean of accuracy : 0.9409344303881695\n", + "mean of mcc : 0.6780719447285347\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan20000_1.loc[df_seoul_gan20000_1['year'].isin([2018, 2019]), df_seoul_gan20000_1.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul_gan20000_1.loc[df_seoul_gan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan20000_2.loc[df_seoul_gan20000_2['year'].isin([2018, 2020]), df_seoul_gan20000_2.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul_gan20000_2.loc[df_seoul_gan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan20000_3.loc[df_seoul_gan20000_3['year'].isin([2019, 2020]), df_seoul_gan20000_3.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul_gan20000_3.loc[df_seoul_gan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4663461890504854\n", + "mean of accuracy : 0.9575030566160141\n", + "mean of mcc : 0.6265195697208686\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan20000_1.loc[df_busan_gan20000_1['year'].isin([2018, 2019]), df_busan_gan20000_1.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan_gan20000_1.loc[df_busan_gan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan20000_2.loc[df_busan_gan20000_2['year'].isin([2018, 2020]), df_busan_gan20000_2.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan_gan20000_2.loc[df_busan_gan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan20000_3.loc[df_busan_gan20000_3['year'].isin([2019, 2020]), df_busan_gan20000_3.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan_gan20000_3.loc[df_busan_gan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5666805477334921\n", + "mean of accuracy : 0.9076257371227054\n", + "mean of mcc : 0.6889342293705883\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan20000_1.loc[df_incheon_gan20000_1['year'].isin([2018, 2019]), df_incheon_gan20000_1.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon_gan20000_1.loc[df_incheon_gan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan20000_2.loc[df_incheon_gan20000_2['year'].isin([2018, 2020]), df_incheon_gan20000_2.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon_gan20000_2.loc[df_incheon_gan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan20000_3.loc[df_incheon_gan20000_3['year'].isin([2019, 2020]), df_incheon_gan20000_3.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon_gan20000_3.loc[df_incheon_gan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.44041946056823505\n", + "mean of accuracy : 0.9674465196164052\n", + "mean of mcc : 0.6086254895296773\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan20000_1.loc[df_daegu_gan20000_1['year'].isin([2018, 2019]), df_daegu_gan20000_1.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu_gan20000_1.loc[df_daegu_gan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan20000_2.loc[df_daegu_gan20000_2['year'].isin([2018, 2020]), df_daegu_gan20000_2.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu_gan20000_2.loc[df_daegu_gan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan20000_3.loc[df_daegu_gan20000_3['year'].isin([2019, 2020]), df_daegu_gan20000_3.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu_gan20000_3.loc[df_daegu_gan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4808393438710248\n", + "mean of accuracy : 0.9317601117848143\n", + "mean of mcc : 0.6258321334411245\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan20000_1.loc[df_daejeon_gan20000_1['year'].isin([2018, 2019]), df_daejeon_gan20000_1.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon_gan20000_1.loc[df_daejeon_gan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan20000_2.loc[df_daejeon_gan20000_2['year'].isin([2018, 2020]), df_daejeon_gan20000_2.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon_gan20000_2.loc[df_daejeon_gan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan20000_3.loc[df_daejeon_gan20000_3['year'].isin([2019, 2020]), df_daejeon_gan20000_3.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon_gan20000_3.loc[df_daejeon_gan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4937131678363705\n", + "mean of accuracy : 0.9367825269689182\n", + "mean of mcc : 0.6373125823908727\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan20000_1.loc[df_gwangju_gan20000_1['year'].isin([2018, 2019]), df_gwangju_gan20000_1.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju_gan20000_1.loc[df_gwangju_gan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan20000_2.loc[df_gwangju_gan20000_2['year'].isin([2018, 2020]), df_gwangju_gan20000_2.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju_gan20000_2.loc[df_gwangju_gan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan20000_3.loc[df_gwangju_gan20000_3['year'].isin([2019, 2020]), df_gwangju_gan20000_3.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju_gan20000_3.loc[df_gwangju_gan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **1만개**" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "# 1 Fold\n", + "df_busan_gan10000_1= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_1_busan.csv\")\n", + "df_seoul_gan10000_1= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_1_seoul.csv\")\n", + "df_incheon_gan10000_1= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_1_incheon.csv\")\n", + "df_daegu_gan10000_1= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_1_daegu.csv\")\n", + "df_daejeon_gan10000_1= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_1_daejeon.csv\")\n", + "df_gwangju_gan10000_1= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_1_gwangju.csv\")\n", + "\n", + "# 2 Fold\n", + "df_busan_gan10000_2= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_2_busan.csv\")\n", + "df_seoul_gan10000_2= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_2_seoul.csv\")\n", + "df_incheon_gan10000_2= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_2_incheon.csv\")\n", + "df_daegu_gan10000_2= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_2_daegu.csv\")\n", + "df_daejeon_gan10000_2= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_2_daejeon.csv\")\n", + "df_gwangju_gan10000_2= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_2_gwangju.csv\")\n", + "\n", + "# 3 Fold\n", + "df_busan_gan10000_3= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_3_busan.csv\")\n", + "df_seoul_gan10000_3= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_3_seoul.csv\")\n", + "df_incheon_gan10000_3= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_3_incheon.csv\")\n", + "df_daegu_gan10000_3= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_3_daegu.csv\")\n", + "df_daejeon_gan10000_3= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_3_daejeon.csv\")\n", + "df_gwangju_gan10000_3= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_3_gwangju.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "df_busan_gan10000_1= preprocessing(df_busan_gan10000_1).copy()\n", + "df_seoul_gan10000_1= preprocessing(df_seoul_gan10000_1).copy()\n", + "df_incheon_gan10000_1= preprocessing(df_incheon_gan10000_1).copy()\n", + "df_daegu_gan10000_1= preprocessing(df_daegu_gan10000_1).copy()\n", + "df_daejeon_gan10000_1= preprocessing(df_daejeon_gan10000_1).copy()\n", + "df_gwangju_gan10000_1= preprocessing(df_gwangju_gan10000_1).copy()\n", + "\n", + "df_busan_gan10000_2= preprocessing(df_busan_gan10000_2).copy()\n", + "df_seoul_gan10000_2= preprocessing(df_seoul_gan10000_2).copy()\n", + "df_incheon_gan10000_2= preprocessing(df_incheon_gan10000_2).copy()\n", + "df_daegu_gan10000_2= preprocessing(df_daegu_gan10000_2).copy()\n", + "df_daejeon_gan10000_2= preprocessing(df_daejeon_gan10000_2).copy()\n", + "df_gwangju_gan10000_2= preprocessing(df_gwangju_gan10000_2).copy()\n", + "\n", + "df_busan_gan10000_3= preprocessing(df_busan_gan10000_3).copy()\n", + "df_seoul_gan10000_3= preprocessing(df_seoul_gan10000_3).copy()\n", + "df_incheon_gan10000_3= preprocessing(df_incheon_gan10000_3).copy()\n", + "df_daegu_gan10000_3= preprocessing(df_daegu_gan10000_3).copy()\n", + "df_daejeon_gan10000_3= preprocessing(df_daejeon_gan10000_3).copy()\n", + "df_gwangju_gan10000_3= preprocessing(df_gwangju_gan10000_3).copy()\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5489022319719195\n", + "mean of accuracy : 0.9431400803453353\n", + "mean of mcc : 0.6865310613747596\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan10000_1.loc[df_seoul_gan10000_1['year'].isin([2018, 2019]), df_seoul_gan10000_1.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul_gan10000_1.loc[df_seoul_gan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan10000_2.loc[df_seoul_gan10000_2['year'].isin([2018, 2020]), df_seoul_gan10000_2.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul_gan10000_2.loc[df_seoul_gan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan10000_3.loc[df_seoul_gan10000_3['year'].isin([2019, 2020]), df_seoul_gan10000_3.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul_gan10000_3.loc[df_seoul_gan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4676627137741911\n", + "mean of accuracy : 0.959515848658\n", + "mean of mcc : 0.6314347309502454\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan10000_1.loc[df_busan_gan10000_1['year'].isin([2018, 2019]), df_busan_gan10000_1.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan_gan10000_1.loc[df_busan_gan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan10000_2.loc[df_busan_gan10000_2['year'].isin([2018, 2020]), df_busan_gan10000_2.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan_gan10000_2.loc[df_busan_gan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan10000_3.loc[df_busan_gan10000_3['year'].isin([2019, 2020]), df_busan_gan10000_3.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan_gan10000_3.loc[df_busan_gan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5530992219893435\n", + "mean of accuracy : 0.9121080461777744\n", + "mean of mcc : 0.687650733674605\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan10000_1.loc[df_incheon_gan10000_1['year'].isin([2018, 2019]), df_incheon_gan10000_1.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon_gan10000_1.loc[df_incheon_gan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan10000_2.loc[df_incheon_gan10000_2['year'].isin([2018, 2020]), df_incheon_gan10000_2.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon_gan10000_2.loc[df_incheon_gan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan10000_3.loc[df_incheon_gan10000_3['year'].isin([2019, 2020]), df_incheon_gan10000_3.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon_gan10000_3.loc[df_incheon_gan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.406699786423904\n", + "mean of accuracy : 0.9667631476075221\n", + "mean of mcc : 0.5786232842762297\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan10000_1.loc[df_daegu_gan10000_1['year'].isin([2018, 2019]), df_daegu_gan10000_1.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu_gan10000_1.loc[df_daegu_gan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan10000_2.loc[df_daegu_gan10000_2['year'].isin([2018, 2020]), df_daegu_gan10000_2.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu_gan10000_2.loc[df_daegu_gan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan10000_3.loc[df_daegu_gan10000_3['year'].isin([2019, 2020]), df_daegu_gan10000_3.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu_gan10000_3.loc[df_daegu_gan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4782405346339498\n", + "mean of accuracy : 0.9329755844998378\n", + "mean of mcc : 0.6261770938311793\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan10000_1.loc[df_daejeon_gan10000_1['year'].isin([2018, 2019]), df_daejeon_gan10000_1.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon_gan10000_1.loc[df_daejeon_gan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan10000_2.loc[df_daejeon_gan10000_2['year'].isin([2018, 2020]), df_daejeon_gan10000_2.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon_gan10000_2.loc[df_daejeon_gan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan10000_3.loc[df_daejeon_gan10000_3['year'].isin([2019, 2020]), df_daejeon_gan10000_3.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon_gan10000_3.loc[df_daejeon_gan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4814166239972196\n", + "mean of accuracy : 0.9418691934692385\n", + "mean of mcc : 0.6302426323494177\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan10000_1.loc[df_gwangju_gan10000_1['year'].isin([2018, 2019]), df_gwangju_gan10000_1.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju_gan10000_1.loc[df_gwangju_gan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan10000_2.loc[df_gwangju_gan10000_2['year'].isin([2018, 2020]), df_gwangju_gan10000_2.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju_gan10000_2.loc[df_gwangju_gan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan10000_3.loc[df_gwangju_gan10000_3['year'].isin([2019, 2020]), df_gwangju_gan10000_3.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju_gan10000_3.loc[df_gwangju_gan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **7천개**" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "# 1 Fold\n", + "df_busan_gan7000_1= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_1_busan.csv\")\n", + "df_seoul_gan7000_1= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_1_seoul.csv\")\n", + "df_incheon_gan7000_1= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_1_incheon.csv\")\n", + "df_daegu_gan7000_1= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_1_daegu.csv\")\n", + "df_daejeon_gan7000_1= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_1_daejeon.csv\")\n", + "df_gwangju_gan7000_1= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_1_gwangju.csv\")\n", + "\n", + "# 2 Fold\n", + "df_busan_gan7000_2= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_2_busan.csv\")\n", + "df_seoul_gan7000_2= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_2_seoul.csv\")\n", + "df_incheon_gan7000_2= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_2_incheon.csv\")\n", + "df_daegu_gan7000_2= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_2_daegu.csv\")\n", + "df_daejeon_gan7000_2= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_2_daejeon.csv\")\n", + "df_gwangju_gan7000_2= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_2_gwangju.csv\")\n", + "\n", + "# 3 Fold\n", + "df_busan_gan7000_3= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_3_busan.csv\")\n", + "df_seoul_gan7000_3= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_3_seoul.csv\")\n", + "df_incheon_gan7000_3= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_3_incheon.csv\")\n", + "df_daegu_gan7000_3= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_3_daegu.csv\")\n", + "df_daejeon_gan7000_3= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_3_daejeon.csv\")\n", + "df_gwangju_gan7000_3= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_3_gwangju.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "df_busan_gan7000_1= preprocessing(df_busan_gan7000_1).copy()\n", + "df_seoul_gan7000_1= preprocessing(df_seoul_gan7000_1).copy()\n", + "df_incheon_gan7000_1= preprocessing(df_incheon_gan7000_1).copy()\n", + "df_daegu_gan7000_1= preprocessing(df_daegu_gan7000_1).copy()\n", + "df_daejeon_gan7000_1= preprocessing(df_daejeon_gan7000_1).copy()\n", + "df_gwangju_gan7000_1= preprocessing(df_gwangju_gan7000_1).copy()\n", + "\n", + "df_busan_gan7000_2= preprocessing(df_busan_gan7000_2).copy()\n", + "df_seoul_gan7000_2= preprocessing(df_seoul_gan7000_2).copy()\n", + "df_incheon_gan7000_2= preprocessing(df_incheon_gan7000_2).copy()\n", + "df_daegu_gan7000_2= preprocessing(df_daegu_gan7000_2).copy()\n", + "df_daejeon_gan7000_2= preprocessing(df_daejeon_gan7000_2).copy()\n", + "df_gwangju_gan7000_2= preprocessing(df_gwangju_gan7000_2).copy()\n", + "\n", + "df_busan_gan7000_3= preprocessing(df_busan_gan7000_3).copy()\n", + "df_seoul_gan7000_3= preprocessing(df_seoul_gan7000_3).copy()\n", + "df_incheon_gan7000_3= preprocessing(df_incheon_gan7000_3).copy()\n", + "df_daegu_gan7000_3= preprocessing(df_daegu_gan7000_3).copy()\n", + "df_daejeon_gan7000_3= preprocessing(df_daejeon_gan7000_3).copy()\n", + "df_gwangju_gan7000_3= preprocessing(df_gwangju_gan7000_3).copy()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5483176293132692\n", + "mean of accuracy : 0.9431403922449285\n", + "mean of mcc : 0.6873897786091137\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan7000_1.loc[df_seoul_gan7000_1['year'].isin([2018, 2019]), df_seoul_gan7000_1.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul_gan7000_1.loc[df_seoul_gan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan7000_2.loc[df_seoul_gan7000_2['year'].isin([2018, 2020]), df_seoul_gan7000_2.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul_gan7000_2.loc[df_seoul_gan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan7000_3.loc[df_seoul_gan7000_3['year'].isin([2019, 2020]), df_seoul_gan7000_3.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul_gan7000_3.loc[df_seoul_gan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4663740712722189\n", + "mean of accuracy : 0.9600495088621072\n", + "mean of mcc : 0.6344100074206912\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan7000_1.loc[df_busan_gan7000_1['year'].isin([2018, 2019]), df_busan_gan7000_1.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan_gan7000_1.loc[df_busan_gan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan7000_2.loc[df_busan_gan7000_2['year'].isin([2018, 2020]), df_busan_gan7000_2.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan_gan7000_2.loc[df_busan_gan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan7000_3.loc[df_busan_gan7000_3['year'].isin([2019, 2020]), df_busan_gan7000_3.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan_gan7000_3.loc[df_busan_gan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5400648981230686\n", + "mean of accuracy : 0.9097125533348306\n", + "mean of mcc : 0.6776113780254353\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan7000_1.loc[df_incheon_gan7000_1['year'].isin([2018, 2019]), df_incheon_gan7000_1.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon_gan7000_1.loc[df_incheon_gan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan7000_2.loc[df_incheon_gan7000_2['year'].isin([2018, 2020]), df_incheon_gan7000_2.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon_gan7000_2.loc[df_incheon_gan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan7000_3.loc[df_incheon_gan7000_3['year'].isin([2019, 2020]), df_incheon_gan7000_3.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon_gan7000_3.loc[df_incheon_gan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.426127621983083\n", + "mean of accuracy : 0.9688532907486422\n", + "mean of mcc : 0.5995660759623473\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan7000_1.loc[df_daegu_gan7000_1['year'].isin([2018, 2019]), df_daegu_gan7000_1.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu_gan7000_1.loc[df_daegu_gan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan7000_2.loc[df_daegu_gan7000_2['year'].isin([2018, 2020]), df_daegu_gan7000_2.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu_gan7000_2.loc[df_daegu_gan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan7000_3.loc[df_daegu_gan7000_3['year'].isin([2019, 2020]), df_daegu_gan7000_3.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu_gan7000_3.loc[df_daegu_gan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4701451158455507\n", + "mean of accuracy : 0.9314935415990885\n", + "mean of mcc : 0.619110040349657\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan7000_1.loc[df_daejeon_gan7000_1['year'].isin([2018, 2019]), df_daejeon_gan7000_1.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon_gan7000_1.loc[df_daejeon_gan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan7000_2.loc[df_daejeon_gan7000_2['year'].isin([2018, 2020]), df_daejeon_gan7000_2.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon_gan7000_2.loc[df_daejeon_gan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan7000_3.loc[df_daejeon_gan7000_3['year'].isin([2019, 2020]), df_daejeon_gan7000_3.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon_gan7000_3.loc[df_daejeon_gan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4860337424842999\n", + "mean of accuracy : 0.9426673445284495\n", + "mean of mcc : 0.6348033992505139\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan7000_1.loc[df_gwangju_gan7000_1['year'].isin([2018, 2019]), df_gwangju_gan7000_1.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju_gan7000_1.loc[df_gwangju_gan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan7000_2.loc[df_gwangju_gan7000_2['year'].isin([2018, 2020]), df_gwangju_gan7000_2.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju_gan7000_2.loc[df_gwangju_gan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan7000_3.loc[df_gwangju_gan7000_3['year'].isin([2019, 2020]), df_gwangju_gan7000_3.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju_gan7000_3.loc[df_gwangju_gan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **SMOTENC+CTGAN을 통해 데이터 증강을 진행한 데이터셋에 대한 성능**\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **7천개**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [], + "source": [ + "# 1 Fold\n", + "df_busan_smotenc_ctgan7000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_busan.csv\")\n", + "df_seoul_smotenc_ctgan7000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_seoul.csv\")\n", + "df_incheon_smotenc_ctgan7000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_incheon.csv\")\n", + "df_daegu_smotenc_ctgan7000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan7000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan7000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_gwangju.csv\")\n", + "\n", + "# 2 Fold\n", + "df_busan_smotenc_ctgan7000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_busan.csv\")\n", + "df_seoul_smotenc_ctgan7000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_seoul.csv\")\n", + "df_incheon_smotenc_ctgan7000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_incheon.csv\")\n", + "df_daegu_smotenc_ctgan7000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan7000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan7000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_gwangju.csv\")\n", + "\n", + "# 3 Fold\n", + "df_busan_smotenc_ctgan7000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_busan.csv\")\n", + "df_seoul_smotenc_ctgan7000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_seoul.csv\")\n", + "df_incheon_smotenc_ctgan7000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_incheon.csv\")\n", + "df_daegu_smotenc_ctgan7000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan7000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan7000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_gwangju.csv\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "df_busan_smotenc_ctgan7000_1 = preprocessing(df_busan_smotenc_ctgan7000_1).copy()\n", + "df_seoul_smotenc_ctgan7000_1 = preprocessing(df_seoul_smotenc_ctgan7000_1).copy()\n", + "df_incheon_smotenc_ctgan7000_1 = preprocessing(df_incheon_smotenc_ctgan7000_1).copy()\n", + "df_daegu_smotenc_ctgan7000_1 = preprocessing(df_daegu_smotenc_ctgan7000_1).copy()\n", + "df_daejeon_smotenc_ctgan7000_1 = preprocessing(df_daejeon_smotenc_ctgan7000_1).copy()\n", + "df_gwangju_smotenc_ctgan7000_1 = preprocessing(df_gwangju_smotenc_ctgan7000_1).copy()\n", + "\n", + "df_busan_smotenc_ctgan7000_2 = preprocessing(df_busan_smotenc_ctgan7000_2).copy()\n", + "df_seoul_smotenc_ctgan7000_2 = preprocessing(df_seoul_smotenc_ctgan7000_2).copy()\n", + "df_incheon_smotenc_ctgan7000_2 = preprocessing(df_incheon_smotenc_ctgan7000_2).copy()\n", + "df_daegu_smotenc_ctgan7000_2 = preprocessing(df_daegu_smotenc_ctgan7000_2).copy()\n", + "df_daejeon_smotenc_ctgan7000_2 = preprocessing(df_daejeon_smotenc_ctgan7000_2).copy()\n", + "df_gwangju_smotenc_ctgan7000_2 = preprocessing(df_gwangju_smotenc_ctgan7000_2).copy()\n", + "\n", + "df_busan_smotenc_ctgan7000_3 = preprocessing(df_busan_smotenc_ctgan7000_3).copy()\n", + "df_seoul_smotenc_ctgan7000_3 = preprocessing(df_seoul_smotenc_ctgan7000_3).copy()\n", + "df_incheon_smotenc_ctgan7000_3 = preprocessing(df_incheon_smotenc_ctgan7000_3).copy()\n", + "df_daegu_smotenc_ctgan7000_3 = preprocessing(df_daegu_smotenc_ctgan7000_3).copy()\n", + "df_daejeon_smotenc_ctgan7000_3 = preprocessing(df_daejeon_smotenc_ctgan7000_3).copy()\n", + "df_gwangju_smotenc_ctgan7000_3 = preprocessing(df_gwangju_smotenc_ctgan7000_3).copy()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5352598289152354\n", + "mean of accuracy : 0.9412404038891801\n", + "mean of mcc : 0.6782186947210392\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan7000_1.loc[df_seoul_smotenc_ctgan7000_1['year'].isin([2018, 2019]), df_seoul_smotenc_ctgan7000_1.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan7000_1.loc[df_seoul_smotenc_ctgan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan7000_2.loc[df_seoul_smotenc_ctgan7000_2['year'].isin([2018, 2020]), df_seoul_smotenc_ctgan7000_2.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan7000_2.loc[df_seoul_smotenc_ctgan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan7000_3.loc[df_seoul_smotenc_ctgan7000_3['year'].isin([2019, 2020]), df_seoul_smotenc_ctgan7000_3.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan7000_3.loc[df_seoul_smotenc_ctgan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4485402157416473\n", + "mean of accuracy : 0.9570824080312065\n", + "mean of mcc : 0.6170303705969965\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan7000_1.loc[df_busan_smotenc_ctgan7000_1['year'].isin([2018, 2019]), df_busan_smotenc_ctgan7000_1.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan7000_1.loc[df_busan_smotenc_ctgan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan7000_2.loc[df_busan_smotenc_ctgan7000_2['year'].isin([2018, 2020]), df_busan_smotenc_ctgan7000_2.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan7000_2.loc[df_busan_smotenc_ctgan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan7000_3.loc[df_busan_smotenc_ctgan7000_3['year'].isin([2019, 2020]), df_busan_smotenc_ctgan7000_3.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan7000_3.loc[df_busan_smotenc_ctgan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5518512077229454\n", + "mean of accuracy : 0.9110783616538164\n", + "mean of mcc : 0.6864459032542548\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan7000_1.loc[df_incheon_smotenc_ctgan7000_1['year'].isin([2018, 2019]), df_incheon_smotenc_ctgan7000_1.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan7000_1.loc[df_incheon_smotenc_ctgan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan7000_2.loc[df_incheon_smotenc_ctgan7000_2['year'].isin([2018, 2020]), df_incheon_smotenc_ctgan7000_2.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan7000_2.loc[df_incheon_smotenc_ctgan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan7000_3.loc[df_incheon_smotenc_ctgan7000_3['year'].isin([2019, 2020]), df_incheon_smotenc_ctgan7000_3.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan7000_3.loc[df_incheon_smotenc_ctgan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.40224349400243914\n", + "mean of accuracy : 0.9664241127496235\n", + "mean of mcc : 0.5832379476945067\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan7000_1.loc[df_daegu_smotenc_ctgan7000_1['year'].isin([2018, 2019]), df_daegu_smotenc_ctgan7000_1.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan7000_1.loc[df_daegu_smotenc_ctgan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan7000_2.loc[df_daegu_smotenc_ctgan7000_2['year'].isin([2018, 2020]), df_daegu_smotenc_ctgan7000_2.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan7000_2.loc[df_daegu_smotenc_ctgan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan7000_3.loc[df_daegu_smotenc_ctgan7000_3['year'].isin([2019, 2020]), df_daegu_smotenc_ctgan7000_3.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan7000_3.loc[df_daegu_smotenc_ctgan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.476308593039838\n", + "mean of accuracy : 0.9321407332551505\n", + "mean of mcc : 0.625183787216149\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan7000_1.loc[df_daejeon_smotenc_ctgan7000_1['year'].isin([2018, 2019]), df_daejeon_smotenc_ctgan7000_1.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan7000_1.loc[df_daejeon_smotenc_ctgan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan7000_2.loc[df_daejeon_smotenc_ctgan7000_2['year'].isin([2018, 2020]), df_daejeon_smotenc_ctgan7000_2.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan7000_2.loc[df_daejeon_smotenc_ctgan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan7000_3.loc[df_daejeon_smotenc_ctgan7000_3['year'].isin([2019, 2020]), df_daejeon_smotenc_ctgan7000_3.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan7000_3.loc[df_daejeon_smotenc_ctgan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.47155191980971883\n", + "mean of accuracy : 0.9403094875697615\n", + "mean of mcc : 0.6237103634516713\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan7000_1.loc[df_gwangju_smotenc_ctgan7000_1['year'].isin([2018, 2019]), df_gwangju_smotenc_ctgan7000_1.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan7000_1.loc[df_gwangju_smotenc_ctgan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan7000_2.loc[df_gwangju_smotenc_ctgan7000_2['year'].isin([2018, 2020]), df_gwangju_smotenc_ctgan7000_2.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan7000_2.loc[df_gwangju_smotenc_ctgan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan7000_3.loc[df_gwangju_smotenc_ctgan7000_3['year'].isin([2019, 2020]), df_gwangju_smotenc_ctgan7000_3.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan7000_3.loc[df_gwangju_smotenc_ctgan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **1만개**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "# 1 Fold\n", + "df_busan_smotenc_ctgan10000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_busan.csv\")\n", + "df_seoul_smotenc_ctgan10000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_seoul.csv\")\n", + "df_incheon_smotenc_ctgan10000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_incheon.csv\")\n", + "df_daegu_smotenc_ctgan10000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan10000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan10000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_gwangju.csv\")\n", + "\n", + "# 2 Fold\n", + "df_busan_smotenc_ctgan10000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_busan.csv\")\n", + "df_seoul_smotenc_ctgan10000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_seoul.csv\")\n", + "df_incheon_smotenc_ctgan10000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_incheon.csv\")\n", + "df_daegu_smotenc_ctgan10000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan10000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan10000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_gwangju.csv\")\n", + "\n", + "# 3 Fold\n", + "df_busan_smotenc_ctgan10000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_busan.csv\")\n", + "df_seoul_smotenc_ctgan10000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_seoul.csv\")\n", + "df_incheon_smotenc_ctgan10000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_incheon.csv\")\n", + "df_daegu_smotenc_ctgan10000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan10000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan10000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_gwangju.csv\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "df_busan_smotenc_ctgan10000_1 = preprocessing(df_busan_smotenc_ctgan10000_1).copy()\n", + "df_seoul_smotenc_ctgan10000_1 = preprocessing(df_seoul_smotenc_ctgan10000_1).copy()\n", + "df_incheon_smotenc_ctgan10000_1 = preprocessing(df_incheon_smotenc_ctgan10000_1).copy()\n", + "df_daegu_smotenc_ctgan10000_1 = preprocessing(df_daegu_smotenc_ctgan10000_1).copy()\n", + "df_daejeon_smotenc_ctgan10000_1 = preprocessing(df_daejeon_smotenc_ctgan10000_1).copy()\n", + "df_gwangju_smotenc_ctgan10000_1 = preprocessing(df_gwangju_smotenc_ctgan10000_1).copy()\n", + "\n", + "df_busan_smotenc_ctgan10000_2 = preprocessing(df_busan_smotenc_ctgan10000_2).copy()\n", + "df_seoul_smotenc_ctgan10000_2 = preprocessing(df_seoul_smotenc_ctgan10000_2).copy()\n", + "df_incheon_smotenc_ctgan10000_2 = preprocessing(df_incheon_smotenc_ctgan10000_2).copy()\n", + "df_daegu_smotenc_ctgan10000_2 = preprocessing(df_daegu_smotenc_ctgan10000_2).copy()\n", + "df_daejeon_smotenc_ctgan10000_2 = preprocessing(df_daejeon_smotenc_ctgan10000_2).copy()\n", + "df_gwangju_smotenc_ctgan10000_2 = preprocessing(df_gwangju_smotenc_ctgan10000_2).copy()\n", + "\n", + "df_busan_smotenc_ctgan10000_3 = preprocessing(df_busan_smotenc_ctgan10000_3).copy()\n", + "df_seoul_smotenc_ctgan10000_3 = preprocessing(df_seoul_smotenc_ctgan10000_3).copy()\n", + "df_incheon_smotenc_ctgan10000_3 = preprocessing(df_incheon_smotenc_ctgan10000_3).copy()\n", + "df_daegu_smotenc_ctgan10000_3 = preprocessing(df_daegu_smotenc_ctgan10000_3).copy()\n", + "df_daejeon_smotenc_ctgan10000_3 = preprocessing(df_daejeon_smotenc_ctgan10000_3).copy()\n", + "df_gwangju_smotenc_ctgan10000_3 = preprocessing(df_gwangju_smotenc_ctgan10000_3).copy()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5391446462395447\n", + "mean of accuracy : 0.9419634911129409\n", + "mean of mcc : 0.6802382864465635\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan10000_1.loc[df_seoul_smotenc_ctgan10000_1['year'].isin([2018, 2019]), df_seoul_smotenc_ctgan10000_1.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan10000_1.loc[df_seoul_smotenc_ctgan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan10000_2.loc[df_seoul_smotenc_ctgan10000_2['year'].isin([2018, 2020]), df_seoul_smotenc_ctgan10000_2.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan10000_2.loc[df_seoul_smotenc_ctgan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan10000_3.loc[df_seoul_smotenc_ctgan10000_3['year'].isin([2019, 2020]), df_seoul_smotenc_ctgan10000_3.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan10000_3.loc[df_seoul_smotenc_ctgan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.45629913656734233\n", + "mean of accuracy : 0.9579187148073292\n", + "mean of mcc : 0.624299022660101\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan10000_1.loc[df_busan_smotenc_ctgan10000_1['year'].isin([2018, 2019]), df_busan_smotenc_ctgan10000_1.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan10000_1.loc[df_busan_smotenc_ctgan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan10000_2.loc[df_busan_smotenc_ctgan10000_2['year'].isin([2018, 2020]), df_busan_smotenc_ctgan10000_2.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan10000_2.loc[df_busan_smotenc_ctgan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan10000_3.loc[df_busan_smotenc_ctgan10000_3['year'].isin([2019, 2020]), df_busan_smotenc_ctgan10000_3.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan10000_3.loc[df_busan_smotenc_ctgan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5474454733447011\n", + "mean of accuracy : 0.9102821859586961\n", + "mean of mcc : 0.6821514877761338\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan10000_1.loc[df_incheon_smotenc_ctgan10000_1['year'].isin([2018, 2019]), df_incheon_smotenc_ctgan10000_1.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan10000_1.loc[df_incheon_smotenc_ctgan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan10000_2.loc[df_incheon_smotenc_ctgan10000_2['year'].isin([2018, 2020]), df_incheon_smotenc_ctgan10000_2.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan10000_2.loc[df_incheon_smotenc_ctgan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan10000_3.loc[df_incheon_smotenc_ctgan10000_3['year'].isin([2019, 2020]), df_incheon_smotenc_ctgan10000_3.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan10000_3.loc[df_incheon_smotenc_ctgan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4114169416612505\n", + "mean of accuracy : 0.9674109630627709\n", + "mean of mcc : 0.5898029433914993\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan10000_1.loc[df_daegu_smotenc_ctgan10000_1['year'].isin([2018, 2019]), df_daegu_smotenc_ctgan10000_1.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan10000_1.loc[df_daegu_smotenc_ctgan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan10000_2.loc[df_daegu_smotenc_ctgan10000_2['year'].isin([2018, 2020]), df_daegu_smotenc_ctgan10000_2.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan10000_2.loc[df_daegu_smotenc_ctgan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan10000_3.loc[df_daegu_smotenc_ctgan10000_3['year'].isin([2019, 2020]), df_daegu_smotenc_ctgan10000_3.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan10000_3.loc[df_daegu_smotenc_ctgan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.46834204028253223\n", + "mean of accuracy : 0.9317592800525656\n", + "mean of mcc : 0.620788512419694\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan10000_1.loc[df_daejeon_smotenc_ctgan10000_1['year'].isin([2018, 2019]), df_daejeon_smotenc_ctgan10000_1.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan10000_1.loc[df_daejeon_smotenc_ctgan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan10000_2.loc[df_daejeon_smotenc_ctgan10000_2['year'].isin([2018, 2020]), df_daejeon_smotenc_ctgan10000_2.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan10000_2.loc[df_daejeon_smotenc_ctgan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan10000_3.loc[df_daejeon_smotenc_ctgan10000_3['year'].isin([2019, 2020]), df_daejeon_smotenc_ctgan10000_3.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan10000_3.loc[df_daejeon_smotenc_ctgan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4859514070622382\n", + "mean of accuracy : 0.9427799402816245\n", + "mean of mcc : 0.6384358903533097\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan10000_1.loc[df_gwangju_smotenc_ctgan10000_1['year'].isin([2018, 2019]), df_gwangju_smotenc_ctgan10000_1.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan10000_1.loc[df_gwangju_smotenc_ctgan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan10000_2.loc[df_gwangju_smotenc_ctgan10000_2['year'].isin([2018, 2020]), df_gwangju_smotenc_ctgan10000_2.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan10000_2.loc[df_gwangju_smotenc_ctgan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan10000_3.loc[df_gwangju_smotenc_ctgan10000_3['year'].isin([2019, 2020]), df_gwangju_smotenc_ctgan10000_3.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan10000_3.loc[df_gwangju_smotenc_ctgan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **2만개**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [], + "source": [ + "# 1 Fold\n", + "df_busan_smotenc_ctgan20000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_busan.csv\")\n", + "df_seoul_smotenc_ctgan20000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_seoul.csv\")\n", + "df_incheon_smotenc_ctgan20000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_incheon.csv\")\n", + "df_daegu_smotenc_ctgan20000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan20000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan20000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_gwangju.csv\")\n", + "\n", + "# 2 Fold\n", + "df_busan_smotenc_ctgan20000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_busan.csv\")\n", + "df_seoul_smotenc_ctgan20000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_seoul.csv\")\n", + "df_incheon_smotenc_ctgan20000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_incheon.csv\")\n", + "df_daegu_smotenc_ctgan20000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan20000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan20000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_gwangju.csv\")\n", + "\n", + "# 3 Fold\n", + "df_busan_smotenc_ctgan20000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_busan.csv\")\n", + "df_seoul_smotenc_ctgan20000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_seoul.csv\")\n", + "df_incheon_smotenc_ctgan20000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_incheon.csv\")\n", + "df_daegu_smotenc_ctgan20000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan20000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan20000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_gwangju.csv\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [], + "source": [ + "df_busan_smotenc_ctgan20000_1 = preprocessing(df_busan_smotenc_ctgan20000_1).copy()\n", + "df_seoul_smotenc_ctgan20000_1 = preprocessing(df_seoul_smotenc_ctgan20000_1).copy()\n", + "df_incheon_smotenc_ctgan20000_1 = preprocessing(df_incheon_smotenc_ctgan20000_1).copy()\n", + "df_daegu_smotenc_ctgan20000_1 = preprocessing(df_daegu_smotenc_ctgan20000_1).copy()\n", + "df_daejeon_smotenc_ctgan20000_1 = preprocessing(df_daejeon_smotenc_ctgan20000_1).copy()\n", + "df_gwangju_smotenc_ctgan20000_1 = preprocessing(df_gwangju_smotenc_ctgan20000_1).copy()\n", + "\n", + "df_busan_smotenc_ctgan20000_2 = preprocessing(df_busan_smotenc_ctgan20000_2).copy()\n", + "df_seoul_smotenc_ctgan20000_2 = preprocessing(df_seoul_smotenc_ctgan20000_2).copy()\n", + "df_incheon_smotenc_ctgan20000_2 = preprocessing(df_incheon_smotenc_ctgan20000_2).copy()\n", + "df_daegu_smotenc_ctgan20000_2 = preprocessing(df_daegu_smotenc_ctgan20000_2).copy()\n", + "df_daejeon_smotenc_ctgan20000_2 = preprocessing(df_daejeon_smotenc_ctgan20000_2).copy()\n", + "df_gwangju_smotenc_ctgan20000_2 = preprocessing(df_gwangju_smotenc_ctgan20000_2).copy()\n", + "\n", + "df_busan_smotenc_ctgan20000_3 = preprocessing(df_busan_smotenc_ctgan20000_3).copy()\n", + "df_seoul_smotenc_ctgan20000_3 = preprocessing(df_seoul_smotenc_ctgan20000_3).copy()\n", + "df_incheon_smotenc_ctgan20000_3 = preprocessing(df_incheon_smotenc_ctgan20000_3).copy()\n", + "df_daegu_smotenc_ctgan20000_3 = preprocessing(df_daegu_smotenc_ctgan20000_3).copy()\n", + "df_daejeon_smotenc_ctgan20000_3 = preprocessing(df_daejeon_smotenc_ctgan20000_3).copy()\n", + "df_gwangju_smotenc_ctgan20000_3 = preprocessing(df_gwangju_smotenc_ctgan20000_3).copy()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5358813620881883\n", + "mean of accuracy : 0.9413917791584533\n", + "mean of mcc : 0.6789791066414157\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan20000_1.loc[df_seoul_smotenc_ctgan20000_1['year'].isin([2018, 2019]), df_seoul_smotenc_ctgan20000_1.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan20000_1.loc[df_seoul_smotenc_ctgan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan20000_2.loc[df_seoul_smotenc_ctgan20000_2['year'].isin([2018, 2020]), df_seoul_smotenc_ctgan20000_2.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan20000_2.loc[df_seoul_smotenc_ctgan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan20000_3.loc[df_seoul_smotenc_ctgan20000_3['year'].isin([2019, 2020]), df_seoul_smotenc_ctgan20000_3.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan20000_3.loc[df_seoul_smotenc_ctgan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4336268899145388\n", + "mean of accuracy : 0.9563998677545724\n", + "mean of mcc : 0.6080139285870266\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan20000_1.loc[df_busan_smotenc_ctgan20000_1['year'].isin([2018, 2019]), df_busan_smotenc_ctgan20000_1.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan20000_1.loc[df_busan_smotenc_ctgan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan20000_2.loc[df_busan_smotenc_ctgan20000_2['year'].isin([2018, 2020]), df_busan_smotenc_ctgan20000_2.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan20000_2.loc[df_busan_smotenc_ctgan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan20000_3.loc[df_busan_smotenc_ctgan20000_3['year'].isin([2019, 2020]), df_busan_smotenc_ctgan20000_3.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan20000_3.loc[df_busan_smotenc_ctgan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.564798264178871\n", + "mean of accuracy : 0.9092926325157406\n", + "mean of mcc : 0.68899875702518\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan20000_1.loc[df_incheon_smotenc_ctgan20000_1['year'].isin([2018, 2019]), df_incheon_smotenc_ctgan20000_1.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan20000_1.loc[df_incheon_smotenc_ctgan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan20000_2.loc[df_incheon_smotenc_ctgan20000_2['year'].isin([2018, 2020]), df_incheon_smotenc_ctgan20000_2.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan20000_2.loc[df_incheon_smotenc_ctgan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan20000_3.loc[df_incheon_smotenc_ctgan20000_3['year'].isin([2019, 2020]), df_incheon_smotenc_ctgan20000_3.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan20000_3.loc[df_incheon_smotenc_ctgan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.422336525695402\n", + "mean of accuracy : 0.963494335903386\n", + "mean of mcc : 0.5910759394692583\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan20000_1.loc[df_daegu_smotenc_ctgan20000_1['year'].isin([2018, 2019]), df_daegu_smotenc_ctgan20000_1.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan20000_1.loc[df_daegu_smotenc_ctgan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan20000_2.loc[df_daegu_smotenc_ctgan20000_2['year'].isin([2018, 2020]), df_daegu_smotenc_ctgan20000_2.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan20000_2.loc[df_daegu_smotenc_ctgan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan20000_3.loc[df_daegu_smotenc_ctgan20000_3['year'].isin([2019, 2020]), df_daegu_smotenc_ctgan20000_3.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan20000_3.loc[df_daegu_smotenc_ctgan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4827377579875818\n", + "mean of accuracy : 0.9311888156964511\n", + "mean of mcc : 0.6279627682150313\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan20000_1.loc[df_daejeon_smotenc_ctgan20000_1['year'].isin([2018, 2019]), df_daejeon_smotenc_ctgan20000_1.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan20000_1.loc[df_daejeon_smotenc_ctgan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan20000_2.loc[df_daejeon_smotenc_ctgan20000_2['year'].isin([2018, 2020]), df_daejeon_smotenc_ctgan20000_2.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan20000_2.loc[df_daejeon_smotenc_ctgan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan20000_3.loc[df_daejeon_smotenc_ctgan20000_3['year'].isin([2019, 2020]), df_daejeon_smotenc_ctgan20000_3.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan20000_3.loc[df_daejeon_smotenc_ctgan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4753475520930324\n", + "mean of accuracy : 0.9346923838277981\n", + "mean of mcc : 0.6188303813518945\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan20000_1.loc[df_gwangju_smotenc_ctgan20000_1['year'].isin([2018, 2019]), df_gwangju_smotenc_ctgan20000_1.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan20000_1.loc[df_gwangju_smotenc_ctgan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan20000_2.loc[df_gwangju_smotenc_ctgan20000_2['year'].isin([2018, 2020]), df_gwangju_smotenc_ctgan20000_2.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan20000_2.loc[df_gwangju_smotenc_ctgan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan20000_3.loc[df_gwangju_smotenc_ctgan20000_3['year'].isin([2019, 2020]), df_gwangju_smotenc_ctgan20000_3.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan20000_3.loc[df_gwangju_smotenc_ctgan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "lgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], eval_metric=csi_metric)\n", + "csi.append(calculate_csi(Y_val, lgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, lgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, lgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'LightGBM',\n", + " 'data_sample': 'smotenc_ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
regionmodeldata_sampleCSIMCCAccuracyfold_csi
0seoulLightGBMpure0.5050410.6469920.936174[[0.46595932802825235, 0.5771195097037204, 0.4...
1busanLightGBMpure0.4301880.6008010.956971[[0.32824427480911017, 0.4782608695651431, 0.4...
2incheonLightGBMpure0.5546630.6879510.911954[[0.4845292955891715, 0.6037628278220865, 0.57...
3daeguLightGBMpure0.2923400.4819890.956964[[0.28124999999994504, 0.3320537428022395, 0.2...
4daejeonLightGBMpure0.4784370.6252440.932748[[0.43333333333329205, 0.4547920433995972, 0.5...
5gwangjuLightGBMpure0.4827770.6368150.943236[[0.3928095872169916, 0.5461624026695722, 0.50...
6seoulLightGBMsmote0.5789390.7084990.939995[[0.4550682961897588, 0.6503831417623898, 0.63...
7busanLightGBMsmote0.4660210.6318800.950198[[0.4690909090908522, 0.47058823529405874, 0.4...
8incheonLightGBMsmote0.5835600.7061370.910464[[0.5613293051359177, 0.6213080168776044, 0.56...
9daeguLightGBMsmote0.4473540.6169210.963730[[0.3632567849686089, 0.49122807017536024, 0.4...
10daejeonLightGBMsmote0.5213350.6563210.930621[[0.4589041095890018, 0.5326514555467716, 0.57...
11gwangjuLightGBMsmote0.5227310.6604230.936850[[0.47532729103721294, 0.5410958904109059, 0.5...
12seoulLightGBMctgan200000.5430100.6780720.940934[[0.47165160230070075, 0.5903500473036338, 0.5...
13busanLightGBMctgan200000.4663460.6265200.957503[[0.4154262516914187, 0.49489051094883285, 0.4...
14incheonLightGBMctgan200000.5666810.6889340.907626[[0.5311667554608135, 0.6098117512834792, 0.55...
15daeguLightGBMctgan200000.4404190.6086250.967447[[0.46130952380938656, 0.4414784394249607, 0.4...
16daejeonLightGBMctgan200000.4808390.6258320.931760[[0.42667928098387636, 0.48797250859102337, 0....
17gwangjuLightGBMctgan200000.4937130.6373130.936783[[0.42775665399235474, 0.5447427293064268, 0.5...
18seoulLightGBMctgan100000.5489020.6865310.943140[[0.482333607230856, 0.5810397553516227, 0.583...
19busanLightGBMctgan100000.4676630.6314350.959516[[0.4084084084083471, 0.5208955223879819, 0.47...
20incheonLightGBMctgan100000.5530990.6876510.912108[[0.4707429322813629, 0.6094198736358064, 0.57...
21daeguLightGBMctgan100000.4067000.5786230.966763[[0.44943820224706477, 0.45661157024783955, 0....
22daejeonLightGBMctgan100000.4782410.6261770.932976[[0.43804034582128354, 0.4569356300996866, 0.5...
23gwangjuLightGBMctgan100000.4814170.6302430.941869[[0.38888888888883977, 0.53999999999994, 0.515...
24seoulLightGBMctgan70000.5483180.6873900.943140[[0.4815724815724421, 0.5754132231404364, 0.58...
25busanLightGBMctgan70000.4663740.6344100.960050[[0.3847328244274221, 0.5324074074073252, 0.48...
26incheonLightGBMctgan70000.5400650.6776110.909713[[0.45490716180368335, 0.6001144164759382, 0.5...
27daeguLightGBMctgan70000.4261280.5995660.968853[[0.4832826747718896, 0.4640657084187959, 0.33...
28daejeonLightGBMctgan70000.4701450.6191100.931494[[0.4214559386972776, 0.4623753399818257, 0.52...
29gwangjuLightGBMctgan70000.4860340.6348030.942667[[0.3902439024389743, 0.543429844097935, 0.524...
30seoulLightGBMsmotenc_ctgan70000.5352600.6782190.941240[[0.46849757673663417, 0.5743801652891969, 0.5...
31busanLightGBMsmotenc_ctgan70000.4485400.6170300.957082[[0.38415545590427735, 0.4850640113797318, 0.4...
32incheonLightGBMsmotenc_ctgan70000.5518510.6864460.911078[[0.4885695623774991, 0.6043577981651029, 0.56...
33daeguLightGBMsmotenc_ctgan70000.4022430.5832380.966424[[0.41432225063928024, 0.4475806451612001, 0.3...
34daejeonLightGBMsmotenc_ctgan70000.4763090.6251840.932141[[0.4230038022813286, 0.47079964061091906, 0.5...
35gwangjuLightGBMsmotenc_ctgan70000.4715520.6237100.940309[[0.37113402061850886, 0.5363735070574879, 0.5...
36seoulLightGBMsmotenc_ctgan100000.5391450.6802380.941963[[0.4607201309328592, 0.5864583333332722, 0.57...
37busanLightGBMsmotenc_ctgan100000.4562990.6242990.957919[[0.40412979351026485, 0.4999999999999277, 0.4...
38incheonLightGBMsmotenc_ctgan100000.5474450.6821510.910282[[0.4681967213114447, 0.6035067873302826, 0.57...
39daeguLightGBMsmotenc_ctgan100000.4114170.5898030.967411[[0.4368131868130668, 0.45213849287159835, 0.3...
40daejeonLightGBMsmotenc_ctgan100000.4683420.6207890.931759[[0.42665388302968105, 0.4723481414324141, 0.5...
41gwangjuLightGBMsmotenc_ctgan100000.4859510.6384360.942780[[0.3915343915343397, 0.5499451152578979, 0.51...
42seoulLightGBMsmotenc_ctgan200000.5358810.6789790.941392[[0.4706840390879095, 0.5655314757481357, 0.57...
43busanLightGBMsmotenc_ctgan200000.4336270.6080140.956400[[0.3399089529589772, 0.5086956521738393, 0.45...
44incheonLightGBMsmotenc_ctgan200000.5647980.6889990.909293[[0.5387685290763661, 0.5963821368004185, 0.55...
45daeguLightGBMsmotenc_ctgan200000.4223370.5910760.963494[[0.42962962962952356, 0.43951612903216947, 0....
46daejeonLightGBMsmotenc_ctgan200000.4827380.6279630.931189[[0.4281636536631372, 0.4917627677100089, 0.52...
47gwangjuLightGBMsmotenc_ctgan200000.4753480.6188300.934692[[0.3949903660885939, 0.5378704720087225, 0.49...
\n", + "
" + ], + "text/plain": [ + " region model data_sample CSI MCC Accuracy \\\n", + "0 seoul LightGBM pure 0.505041 0.646992 0.936174 \n", + "1 busan LightGBM pure 0.430188 0.600801 0.956971 \n", + "2 incheon LightGBM pure 0.554663 0.687951 0.911954 \n", + "3 daegu LightGBM pure 0.292340 0.481989 0.956964 \n", + "4 daejeon LightGBM pure 0.478437 0.625244 0.932748 \n", + "5 gwangju LightGBM pure 0.482777 0.636815 0.943236 \n", + "6 seoul LightGBM smote 0.578939 0.708499 0.939995 \n", + "7 busan LightGBM smote 0.466021 0.631880 0.950198 \n", + "8 incheon LightGBM smote 0.583560 0.706137 0.910464 \n", + "9 daegu LightGBM smote 0.447354 0.616921 0.963730 \n", + "10 daejeon LightGBM smote 0.521335 0.656321 0.930621 \n", + "11 gwangju LightGBM smote 0.522731 0.660423 0.936850 \n", + "12 seoul LightGBM ctgan20000 0.543010 0.678072 0.940934 \n", + "13 busan LightGBM ctgan20000 0.466346 0.626520 0.957503 \n", + "14 incheon LightGBM ctgan20000 0.566681 0.688934 0.907626 \n", + "15 daegu LightGBM ctgan20000 0.440419 0.608625 0.967447 \n", + "16 daejeon LightGBM ctgan20000 0.480839 0.625832 0.931760 \n", + "17 gwangju LightGBM ctgan20000 0.493713 0.637313 0.936783 \n", + "18 seoul LightGBM ctgan10000 0.548902 0.686531 0.943140 \n", + "19 busan LightGBM ctgan10000 0.467663 0.631435 0.959516 \n", + "20 incheon LightGBM ctgan10000 0.553099 0.687651 0.912108 \n", + "21 daegu LightGBM ctgan10000 0.406700 0.578623 0.966763 \n", + "22 daejeon LightGBM ctgan10000 0.478241 0.626177 0.932976 \n", + "23 gwangju LightGBM ctgan10000 0.481417 0.630243 0.941869 \n", + "24 seoul LightGBM ctgan7000 0.548318 0.687390 0.943140 \n", + "25 busan LightGBM ctgan7000 0.466374 0.634410 0.960050 \n", + "26 incheon LightGBM ctgan7000 0.540065 0.677611 0.909713 \n", + "27 daegu LightGBM ctgan7000 0.426128 0.599566 0.968853 \n", + "28 daejeon LightGBM ctgan7000 0.470145 0.619110 0.931494 \n", + "29 gwangju LightGBM ctgan7000 0.486034 0.634803 0.942667 \n", + "30 seoul LightGBM smotenc_ctgan7000 0.535260 0.678219 0.941240 \n", + "31 busan LightGBM smotenc_ctgan7000 0.448540 0.617030 0.957082 \n", + "32 incheon LightGBM smotenc_ctgan7000 0.551851 0.686446 0.911078 \n", + "33 daegu LightGBM smotenc_ctgan7000 0.402243 0.583238 0.966424 \n", + "34 daejeon LightGBM smotenc_ctgan7000 0.476309 0.625184 0.932141 \n", + "35 gwangju LightGBM smotenc_ctgan7000 0.471552 0.623710 0.940309 \n", + "36 seoul LightGBM smotenc_ctgan10000 0.539145 0.680238 0.941963 \n", + "37 busan LightGBM smotenc_ctgan10000 0.456299 0.624299 0.957919 \n", + "38 incheon LightGBM smotenc_ctgan10000 0.547445 0.682151 0.910282 \n", + "39 daegu LightGBM smotenc_ctgan10000 0.411417 0.589803 0.967411 \n", + "40 daejeon LightGBM smotenc_ctgan10000 0.468342 0.620789 0.931759 \n", + "41 gwangju LightGBM smotenc_ctgan10000 0.485951 0.638436 0.942780 \n", + "42 seoul LightGBM smotenc_ctgan20000 0.535881 0.678979 0.941392 \n", + "43 busan LightGBM smotenc_ctgan20000 0.433627 0.608014 0.956400 \n", + "44 incheon LightGBM smotenc_ctgan20000 0.564798 0.688999 0.909293 \n", + "45 daegu LightGBM smotenc_ctgan20000 0.422337 0.591076 0.963494 \n", + "46 daejeon LightGBM smotenc_ctgan20000 0.482738 0.627963 0.931189 \n", + "47 gwangju LightGBM smotenc_ctgan20000 0.475348 0.618830 0.934692 \n", + "\n", + " fold_csi \n", + "0 [[0.46595932802825235, 0.5771195097037204, 0.4... \n", + "1 [[0.32824427480911017, 0.4782608695651431, 0.4... \n", + "2 [[0.4845292955891715, 0.6037628278220865, 0.57... \n", + "3 [[0.28124999999994504, 0.3320537428022395, 0.2... \n", + "4 [[0.43333333333329205, 0.4547920433995972, 0.5... \n", + "5 [[0.3928095872169916, 0.5461624026695722, 0.50... \n", + "6 [[0.4550682961897588, 0.6503831417623898, 0.63... \n", + "7 [[0.4690909090908522, 0.47058823529405874, 0.4... \n", + "8 [[0.5613293051359177, 0.6213080168776044, 0.56... \n", + "9 [[0.3632567849686089, 0.49122807017536024, 0.4... \n", + "10 [[0.4589041095890018, 0.5326514555467716, 0.57... \n", + "11 [[0.47532729103721294, 0.5410958904109059, 0.5... \n", + "12 [[0.47165160230070075, 0.5903500473036338, 0.5... \n", + "13 [[0.4154262516914187, 0.49489051094883285, 0.4... \n", + "14 [[0.5311667554608135, 0.6098117512834792, 0.55... \n", + "15 [[0.46130952380938656, 0.4414784394249607, 0.4... \n", + "16 [[0.42667928098387636, 0.48797250859102337, 0.... \n", + "17 [[0.42775665399235474, 0.5447427293064268, 0.5... \n", + "18 [[0.482333607230856, 0.5810397553516227, 0.583... \n", + "19 [[0.4084084084083471, 0.5208955223879819, 0.47... \n", + "20 [[0.4707429322813629, 0.6094198736358064, 0.57... \n", + "21 [[0.44943820224706477, 0.45661157024783955, 0.... \n", + "22 [[0.43804034582128354, 0.4569356300996866, 0.5... \n", + "23 [[0.38888888888883977, 0.53999999999994, 0.515... \n", + "24 [[0.4815724815724421, 0.5754132231404364, 0.58... \n", + "25 [[0.3847328244274221, 0.5324074074073252, 0.48... \n", + "26 [[0.45490716180368335, 0.6001144164759382, 0.5... \n", + "27 [[0.4832826747718896, 0.4640657084187959, 0.33... \n", + "28 [[0.4214559386972776, 0.4623753399818257, 0.52... \n", + "29 [[0.3902439024389743, 0.543429844097935, 0.524... \n", + "30 [[0.46849757673663417, 0.5743801652891969, 0.5... \n", + "31 [[0.38415545590427735, 0.4850640113797318, 0.4... \n", + "32 [[0.4885695623774991, 0.6043577981651029, 0.56... \n", + "33 [[0.41432225063928024, 0.4475806451612001, 0.3... \n", + "34 [[0.4230038022813286, 0.47079964061091906, 0.5... \n", + "35 [[0.37113402061850886, 0.5363735070574879, 0.5... \n", + "36 [[0.4607201309328592, 0.5864583333332722, 0.57... \n", + "37 [[0.40412979351026485, 0.4999999999999277, 0.4... \n", + "38 [[0.4681967213114447, 0.6035067873302826, 0.57... \n", + "39 [[0.4368131868130668, 0.45213849287159835, 0.3... \n", + "40 [[0.42665388302968105, 0.4723481414324141, 0.5... \n", + "41 [[0.3915343915343397, 0.5499451152578979, 0.51... \n", + "42 [[0.4706840390879095, 0.5655314757481357, 0.57... \n", + "43 [[0.3399089529589772, 0.5086956521738393, 0.45... \n", + "44 [[0.5387685290763661, 0.5963821368004185, 0.55... \n", + "45 [[0.42962962962952356, 0.43951612903216947, 0.... \n", + "46 [[0.4281636536631372, 0.4917627677100089, 0.52... \n", + "47 [[0.3949903660885939, 0.5378704720087225, 0.49... " + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 개별 모델 결과 저장\n", + "df.to_csv(\"../../data/oversampled_data_test_for_model/lightgbm_sampled_data_test.csv\", index=False)\n", + "\n", + "df.to_csv(\"../../data/oversampled_data_test_for_model/combined_sampled_data_test.csv\", index=False)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Analysis_code/4.sampling_data_test/xgb_sampled_test.ipynb b/Analysis_code/4.sampling_data_test/xgb_sampled_test.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..786bc097732153e02f530f7899a5a29c942dbd04 --- /dev/null +++ b/Analysis_code/4.sampling_data_test/xgb_sampled_test.ipynb @@ -0,0 +1,4547 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **XGBoost**" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.model_selection import train_test_split\n", + "from xgboost import XGBClassifier\n", + "from sklearn.metrics import accuracy_score, f1_score, recall_score, precision_score\n", + "from collections import Counter" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def add_derived_features(df: pd.DataFrame) -> pd.DataFrame:\n", + " \"\"\"\n", + " 제거했던 파생 변수들을 복구\n", + " \n", + " Args:\n", + " df: 데이터프레임\n", + " \n", + " Returns:\n", + " 파생 변수가 추가된 데이터프레임\n", + " \"\"\"\n", + " df = df.copy()\n", + " df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24)\n", + " df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24)\n", + " df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12)\n", + " df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12)\n", + " df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C']\n", + " return df\n", + "\n", + "\n", + "def preprocessing(df):\n", + " df = df[df.columns].copy()\n", + " df['year'] = df['year'].astype('int')\n", + " df['month'] = df['month'].astype('int')\n", + " df['hour'] = df['hour'].astype('int')\n", + " df= add_derived_features(df).copy()\n", + " df['multi_class'] = df['multi_class'].astype('int')\n", + "\n", + " df.loc[df['wind_dir']=='정온', 'wind_dir'] = \"0\"\n", + " df['wind_dir'] = df['wind_dir'].astype('int')\n", + " df= df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm',\n", + " 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure',\n", + " 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase',\n", + " 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year',\n", + " 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos',\n", + " 'month_sin', 'month_cos','multi_class']].copy()\n", + " return df\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "df_seoul = pd.read_csv(\"../../data/data_for_modeling/seoul_train.csv\")\n", + "df_busan = pd.read_csv(\"../../data/data_for_modeling/busan_train.csv\")\n", + "df_daegu = pd.read_csv(\"../../data/data_for_modeling/daegu_train.csv\")\n", + "df_daejeon = pd.read_csv(\"../../data/data_for_modeling/daejeon_train.csv\")\n", + "df_incheon = pd.read_csv(\"../../data/data_for_modeling/incheon_train.csv\")\n", + "df_gwangju = pd.read_csv(\"../../data/data_for_modeling/gwangju_train.csv\")\n", + "\n", + "df_seoul = preprocessing(df_seoul).copy()\n", + "df_busan = preprocessing(df_busan).copy()\n", + "df_daegu = preprocessing(df_daegu).copy()\n", + "df_daejeon = preprocessing(df_daejeon).copy()\n", + "df_incheon = preprocessing(df_incheon).copy()\n", + "df_gwangju = preprocessing(df_gwangju).copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "seoul : Counter({2: 23686, 1: 2579, 0: 39})\n", + "\n", + "busan : Counter({2: 24694, 1: 1516, 0: 94})\n", + "\n", + "daegu : Counter({2: 25149, 1: 1107, 0: 48})\n", + "\n", + "gwangju : Counter({2: 23798, 1: 2411, 0: 95})\n", + "\n", + "daejeon : Counter({2: 23471, 1: 2660, 0: 173})\n", + "\n", + "incheon : Counter({2: 21893, 1: 3892, 0: 519})\n" + ] + } + ], + "source": [ + "print(\"seoul : \", Counter(df_seoul['multi_class']))\n", + "print()\n", + "print(\"busan : \", Counter(df_busan['multi_class']))\n", + "print()\n", + "print(\"daegu : \", Counter(df_daegu['multi_class']))\n", + "print()\n", + "print(\"gwangju : \", Counter(df_gwangju['multi_class']))\n", + "print()\n", + "print(\"daejeon : \", Counter(df_daejeon['multi_class']))\n", + "print()\n", + "print(\"incheon : \", Counter(df_incheon['multi_class']))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 1, 2])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.unique(df_seoul['multi_class'])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import confusion_matrix\n", + "from sklearn.utils.class_weight import compute_class_weight\n", + "\n", + "def calculate_csi(Y_test, pred):\n", + "\n", + " cm = confusion_matrix(Y_test, pred) # 변수 이름을 cm으로 변경\n", + " # 혼동 행렬에서 H, F, M 추출\n", + " H = (cm[0, 0] + cm[1, 1])\n", + " \n", + " F = (cm[1, 0] + cm[2, 0] +\n", + " cm[0, 1] + cm[2, 1])\n", + " \n", + " M = (cm[0, 2] + cm[1, 2])\n", + " \n", + " # CSI 계산\n", + " CSI = H / (H + F + M + 1e-10)\n", + " return CSI\n", + "\n", + "def eval_metric_csi(y_true, pred_prob):\n", + "\n", + " pred = np.argmax(pred_prob, axis=1)\n", + " y_true = y_true\n", + " y_pred = pred\n", + " csi = calculate_csi(y_true, y_pred)\n", + " return -1*csi\n", + "\n", + "def sample_weight(y_train):\n", + " class_weights = compute_class_weight(\n", + " class_weight='balanced',\n", + " classes=np.unique(y_train), # 고유 클래스\n", + " y=y_train # 학습 데이터 레이블\n", + " )\n", + " sample_weights = np.array([class_weights[label] for label in y_train])\n", + "\n", + " return sample_weights\n", + "\n", + "\n", + "\n", + "from sklearn.metrics import matthews_corrcoef\n", + "\n", + "def multiclass_mcc(y_val, y_pred):\n", + " \"\"\"\n", + " 다중 분류에서도 sklearn의 matthews_corrcoef를 그대로 사용할 수 있음.\n", + " \"\"\"\n", + " return matthews_corrcoef(y_val, y_pred)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# 사용자 정의 평가 지표 함수 정의\n", + "def f1_metric(y_true, pred):\n", + " y_pred_binary = (pred >= 0.5).astype(int) # 확률 값을 이진 값으로 변환\n", + " score = f1_score(y_true, y_pred_binary)\n", + " return 'f1', score, True # higher_better=True\n", + "\n", + "# 사용자 정의 평가 지표 함수 정의\n", + "def custom_metric(Y_true, preds): \n", + " pred = (preds >= 0.5).astype(int)\n", + " score = f1_score(Y_true, pred)\n", + " return -score" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "pre_sampled_data= []\n", + "smote_sample_data= []\n", + "gan20000_sample_data= []\n", + "gan10000_sample_data= []\n", + "gan7000_sample_data= []" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')\n", + "\n", + "# XGBoost 분류기 초기화\n", + "xgb_model = XGBClassifier(\n", + " n_estimators=4000, # 약한 학습기 개수\n", + " tree_method='hist', \n", + " device='cuda', # GPU 사용\n", + " enable_categorical=True, # 범주형 변수 지정\n", + " objective='multi:softprob', \n", + " early_stopping_rounds=400, # 과적합 방지를 위한 조기 종료 설정\n", + " random_state= 42,\n", + " num_class=3,\n", + " eval_metric = eval_metric_csi\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "df= pd.DataFrame(columns=['region','model','data_sample','CSI','MCC','Accuracy','fold_csi'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.565011886957529\n", + "mean of accuracy : 0.9455723773402865\n", + "mean of mcc : 0.7004827765196581\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul.loc[df_seoul['year'].isin([2018, 2019]), df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul.loc[df_seoul['year'].isin([2018, 2020]), df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul.loc[df_seoul['year'].isin([2019, 2020]), df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'pure',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4602444563246328\n", + "mean of accuracy : 0.9597446789929386\n", + "mean of mcc : 0.6260853753404706\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_busan.loc[df_busan['year'].isin([2018, 2019]), df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_busan.loc[df_busan['year'].isin([2018, 2020]), df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_busan.loc[df_busan['year'].isin([2019, 2020]), df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'pure',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5581443524210103\n", + "mean of accuracy : 0.9130578844058522\n", + "mean of mcc : 0.6892177198119791\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon.loc[df_incheon['year'].isin([2018, 2019]), df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon.loc[df_incheon['year'].isin([2018, 2020]), df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon.loc[df_incheon['year'].isin([2019, 2020]), df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'pure',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4166514505499186\n", + "mean of accuracy : 0.9683242050719033\n", + "mean of mcc : 0.600956509945712\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu.loc[df_daegu['year'].isin([2018, 2019]), df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu.loc[df_daegu['year'].isin([2018, 2020]), df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu.loc[df_daegu['year'].isin([2019, 2020]), df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'pure',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5044504047922097\n", + "mean of accuracy : 0.9357524265788357\n", + "mean of mcc : 0.6471930212882061\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon.loc[df_daejeon['year'].isin([2018, 2019]), df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon.loc[df_daejeon['year'].isin([2018, 2020]), df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon.loc[df_daejeon['year'].isin([2019, 2020]), df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'pure',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.49003643817143744\n", + "mean of accuracy : 0.943428795402184\n", + "mean of mcc : 0.6379812479286601\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju.loc[df_gwangju['year'].isin([2018, 2019]), df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju.loc[df_gwangju['year'].isin([2018, 2020]), df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju.loc[df_gwangju['year'].isin([2019, 2020]), df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'pure',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **SMOTE 증강기법을 적용시킨 데이터셋에 대한 성능**" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "df_smote_busan_1 = pd.read_csv(\"../../data/data_oversampled/smote/smote_1_busan.csv\")\n", + "df_smote_busan_2 = pd.read_csv(\"../../data/data_oversampled/smote/smote_2_busan.csv\")\n", + "df_smote_busan_3 = pd.read_csv(\"../../data/data_oversampled/smote/smote_3_busan.csv\")\n", + "\n", + "df_smote_seoul_1 = pd.read_csv(\"../../data/data_oversampled/smote/smote_1_seoul.csv\")\n", + "df_smote_seoul_2 = pd.read_csv(\"../../data/data_oversampled/smote/smote_2_seoul.csv\")\n", + "df_smote_seoul_3 = pd.read_csv(\"../../data/data_oversampled/smote/smote_3_seoul.csv\")\n", + "\n", + "df_smote_daegu_1 = pd.read_csv(\"../../data/data_oversampled/smote/smote_1_daegu.csv\")\n", + "df_smote_daegu_2 = pd.read_csv(\"../../data/data_oversampled/smote/smote_2_daegu.csv\")\n", + "df_smote_daegu_3 = pd.read_csv(\"../../data/data_oversampled/smote/smote_3_daegu.csv\")\n", + "\n", + "df_smote_daejeon_1 = pd.read_csv(\"../../data/data_oversampled/smote/smote_1_daejeon.csv\")\n", + "df_smote_daejeon_2 = pd.read_csv(\"../../data/data_oversampled/smote/smote_2_daejeon.csv\")\n", + "df_smote_daejeon_3 = pd.read_csv(\"../../data/data_oversampled/smote/smote_3_daejeon.csv\")\n", + "\n", + "df_smote_gwangju_1 = pd.read_csv(\"../../data/data_oversampled/smote/smote_1_gwangju.csv\")\n", + "df_smote_gwangju_2 = pd.read_csv(\"../../data/data_oversampled/smote/smote_2_gwangju.csv\")\n", + "df_smote_gwangju_3 = pd.read_csv(\"../../data/data_oversampled/smote/smote_3_gwangju.csv\")\n", + "\n", + "df_smote_incheon_1 = pd.read_csv(\"../../data/data_oversampled/smote/smote_1_incheon.csv\")\n", + "df_smote_incheon_2 = pd.read_csv(\"../../data/data_oversampled/smote/smote_2_incheon.csv\")\n", + "df_smote_incheon_3 = pd.read_csv(\"../../data/data_oversampled/smote/smote_3_incheon.csv\")\n", + "\n", + "\n", + "df_smote_busan_1 = preprocessing(df_smote_busan_1)\n", + "df_smote_busan_2 = preprocessing(df_smote_busan_2)\n", + "df_smote_busan_3 = preprocessing(df_smote_busan_3)\n", + "\n", + "df_smote_seoul_1 = preprocessing(df_smote_seoul_1)\n", + "df_smote_seoul_2 = preprocessing(df_smote_seoul_2)\n", + "df_smote_seoul_3 = preprocessing(df_smote_seoul_3)\n", + "\n", + "df_smote_daegu_1 = preprocessing(df_smote_daegu_1)\n", + "df_smote_daegu_2 = preprocessing(df_smote_daegu_2)\n", + "df_smote_daegu_3 = preprocessing(df_smote_daegu_3)\n", + "\n", + "df_smote_daejeon_1 = preprocessing(df_smote_daejeon_1)\n", + "df_smote_daejeon_2 = preprocessing(df_smote_daejeon_2)\n", + "df_smote_daejeon_3 = preprocessing(df_smote_daejeon_3)\n", + "\n", + "df_smote_gwangju_1 = preprocessing(df_smote_gwangju_1)\n", + "df_smote_gwangju_2 = preprocessing(df_smote_gwangju_2)\n", + "df_smote_gwangju_3 = preprocessing(df_smote_gwangju_3)\n", + "\n", + "df_smote_incheon_1 = preprocessing(df_smote_incheon_1)\n", + "df_smote_incheon_2 = preprocessing(df_smote_incheon_2)\n", + "df_smote_incheon_3 = preprocessing(df_smote_incheon_3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5822658808056899\n", + "mean of accuracy : 0.9420404263459506\n", + "mean of mcc : 0.7105015517582441\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_seoul_1.loc[df_smote_seoul_1['year'].isin([2018, 2019]), df_smote_seoul_1.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_smote_seoul_1.loc[df_smote_seoul_1['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_seoul_2.loc[df_smote_seoul_2['year'].isin([2018, 2020]), df_smote_seoul_2.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_smote_seoul_2.loc[df_smote_seoul_2['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_seoul_3.loc[df_smote_seoul_3['year'].isin([2019, 2020]), df_smote_seoul_3.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_smote_seoul_3.loc[df_smote_seoul_3['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smote',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.46696555439565635\n", + "mean of accuracy : 0.9524436293468407\n", + "mean of mcc : 0.6292568508681569\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_busan_1.loc[df_smote_busan_1['year'].isin([2018, 2019]), df_smote_busan_1.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_smote_busan_1.loc[df_smote_busan_1['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_busan_2.loc[df_smote_busan_2['year'].isin([2018, 2020]), df_smote_busan_2.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_smote_busan_2.loc[df_smote_busan_2['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_busan_3.loc[df_smote_busan_3['year'].isin([2019, 2020]), df_smote_busan_3.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_smote_busan_3.loc[df_smote_busan_3['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smote',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.589146277616683\n", + "mean of accuracy : 0.9121357012750456\n", + "mean of mcc : 0.7091428152788728\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_incheon_1.loc[df_smote_incheon_1['year'].isin([2018, 2019]), df_smote_incheon_1.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_smote_incheon_1.loc[df_smote_incheon_1['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_incheon_2.loc[df_smote_incheon_2['year'].isin([2018, 2020]), df_smote_incheon_2.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_smote_incheon_2.loc[df_smote_incheon_2['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_incheon_3.loc[df_smote_incheon_3['year'].isin([2019, 2020]), df_smote_incheon_3.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_smote_incheon_3.loc[df_smote_incheon_3['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smote',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4540663399321314\n", + "mean of accuracy : 0.9649076569270821\n", + "mean of mcc : 0.6209477801158471\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_daegu_1.loc[df_smote_daegu_1['year'].isin([2018, 2019]), df_smote_daegu_1.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_smote_daegu_1.loc[df_smote_daegu_1['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_daegu_2.loc[df_smote_daegu_2['year'].isin([2018, 2020]), df_smote_daegu_2.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_smote_daegu_2.loc[df_smote_daegu_2['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_daegu_3.loc[df_smote_daegu_3['year'].isin([2019, 2020]), df_smote_daegu_3.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_smote_daegu_3.loc[df_smote_daegu_3['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smote',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5164940408638485\n", + "mean of accuracy : 0.9314560096813634\n", + "mean of mcc : 0.651202614107659\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_daejeon_1.loc[df_smote_daejeon_1['year'].isin([2018, 2019]), df_smote_daejeon_1.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_smote_daejeon_1.loc[df_smote_daejeon_1['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_daejeon_2.loc[df_smote_daejeon_2['year'].isin([2018, 2020]), df_smote_daejeon_2.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_smote_daejeon_2.loc[df_smote_daejeon_2['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_daejeon_3.loc[df_smote_daejeon_3['year'].isin([2019, 2020]), df_smote_daejeon_3.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_smote_daejeon_3.loc[df_smote_daejeon_3['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smote',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5121121813474988\n", + "mean of accuracy : 0.9352206377722885\n", + "mean of mcc : 0.6522384095048649\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "# Fold 1\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_gwangju_1.loc[df_smote_gwangju_1['year'].isin([2018, 2019]), df_smote_gwangju_1.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_smote_gwangju_1.loc[df_smote_gwangju_1['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_gwangju_2.loc[df_smote_gwangju_2['year'].isin([2018, 2020]), df_smote_gwangju_2.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_smote_gwangju_2.loc[df_smote_gwangju_2['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_smote_gwangju_3.loc[df_smote_gwangju_3['year'].isin([2019, 2020]), df_smote_gwangju_3.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_smote_gwangju_3.loc[df_smote_gwangju_3['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smote',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **CTGAN을 통해 데이터 증강을 진행한 데이터셋에 대한 성능**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **2만개**" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "# 1 Fold\n", + "df_busan_gan20000_1= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_1_busan.csv\")\n", + "df_seoul_gan20000_1= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_1_seoul.csv\")\n", + "df_incheon_gan20000_1= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_1_incheon.csv\")\n", + "df_daegu_gan20000_1= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_1_daegu.csv\")\n", + "df_daejeon_gan20000_1= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_1_daejeon.csv\")\n", + "df_gwangju_gan20000_1= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_1_gwangju.csv\")\n", + "\n", + "# 2 Fold\n", + "df_busan_gan20000_2= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_2_busan.csv\")\n", + "df_seoul_gan20000_2= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_2_seoul.csv\")\n", + "df_incheon_gan20000_2= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_2_incheon.csv\")\n", + "df_daegu_gan20000_2= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_2_daegu.csv\")\n", + "df_daejeon_gan20000_2= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_2_daejeon.csv\")\n", + "df_gwangju_gan20000_2= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_2_gwangju.csv\")\n", + "\n", + "# 3 Fold\n", + "df_busan_gan20000_3= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_3_busan.csv\")\n", + "df_seoul_gan20000_3= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_3_seoul.csv\")\n", + "df_incheon_gan20000_3= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_3_incheon.csv\")\n", + "df_daegu_gan20000_3= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_3_daegu.csv\")\n", + "df_daejeon_gan20000_3= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_3_daejeon.csv\")\n", + "df_gwangju_gan20000_3= pd.read_csv(\"../../data/data_oversampled/ctgan20000/ctgan20000_3_gwangju.csv\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "df_busan_gan20000_1= preprocessing(df_busan_gan20000_1).copy()\n", + "df_seoul_gan20000_1= preprocessing(df_seoul_gan20000_1).copy()\n", + "df_incheon_gan20000_1= preprocessing(df_incheon_gan20000_1).copy()\n", + "df_daegu_gan20000_1= preprocessing(df_daegu_gan20000_1).copy()\n", + "df_daejeon_gan20000_1= preprocessing(df_daejeon_gan20000_1).copy()\n", + "df_gwangju_gan20000_1= preprocessing(df_gwangju_gan20000_1).copy()\n", + "\n", + "df_busan_gan20000_2= preprocessing(df_busan_gan20000_2).copy()\n", + "df_seoul_gan20000_2= preprocessing(df_seoul_gan20000_2).copy()\n", + "df_incheon_gan20000_2= preprocessing(df_incheon_gan20000_2).copy()\n", + "df_daegu_gan20000_2= preprocessing(df_daegu_gan20000_2).copy()\n", + "df_daejeon_gan20000_2= preprocessing(df_daejeon_gan20000_2).copy()\n", + "df_gwangju_gan20000_2= preprocessing(df_gwangju_gan20000_2).copy()\n", + "\n", + "df_busan_gan20000_3= preprocessing(df_busan_gan20000_3).copy()\n", + "df_seoul_gan20000_3= preprocessing(df_seoul_gan20000_3).copy()\n", + "df_incheon_gan20000_3= preprocessing(df_incheon_gan20000_3).copy()\n", + "df_daegu_gan20000_3= preprocessing(df_daegu_gan20000_3).copy()\n", + "df_daejeon_gan20000_3= preprocessing(df_daejeon_gan20000_3).copy()\n", + "df_gwangju_gan20000_3= preprocessing(df_gwangju_gan20000_3).copy()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5612905206753843\n", + "mean of accuracy : 0.9447758897455731\n", + "mean of mcc : 0.6967744639852204\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan20000_1.loc[df_seoul_gan20000_1['year'].isin([2018, 2019]), df_seoul_gan20000_1.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul_gan20000_1.loc[df_seoul_gan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan20000_2.loc[df_seoul_gan20000_2['year'].isin([2018, 2020]), df_seoul_gan20000_2.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul_gan20000_2.loc[df_seoul_gan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan20000_3.loc[df_seoul_gan20000_3['year'].isin([2019, 2020]), df_seoul_gan20000_3.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul_gan20000_3.loc[df_seoul_gan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4637131316761601\n", + "mean of accuracy : 0.958679126015753\n", + "mean of mcc : 0.6292212200611739\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan20000_1.loc[df_busan_gan20000_1['year'].isin([2018, 2019]), df_busan_gan20000_1.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan_gan20000_1.loc[df_busan_gan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan20000_2.loc[df_busan_gan20000_2['year'].isin([2018, 2020]), df_busan_gan20000_2.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan_gan20000_2.loc[df_busan_gan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan20000_3.loc[df_busan_gan20000_3['year'].isin([2019, 2020]), df_busan_gan20000_3.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan_gan20000_3.loc[df_busan_gan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5532678910387965\n", + "mean of accuracy : 0.9112315043541184\n", + "mean of mcc : 0.685576203077003\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan20000_1.loc[df_incheon_gan20000_1['year'].isin([2018, 2019]), df_incheon_gan20000_1.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon_gan20000_1.loc[df_incheon_gan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan20000_2.loc[df_incheon_gan20000_2['year'].isin([2018, 2020]), df_incheon_gan20000_2.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon_gan20000_2.loc[df_incheon_gan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan20000_3.loc[df_incheon_gan20000_3['year'].isin([2019, 2020]), df_incheon_gan20000_3.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon_gan20000_3.loc[df_incheon_gan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.42241695688681397\n", + "mean of accuracy : 0.9666134358027464\n", + "mean of mcc : 0.5955993347276635\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan20000_1.loc[df_daegu_gan20000_1['year'].isin([2018, 2019]), df_daegu_gan20000_1.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu_gan20000_1.loc[df_daegu_gan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan20000_2.loc[df_daegu_gan20000_2['year'].isin([2018, 2020]), df_daegu_gan20000_2.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu_gan20000_2.loc[df_daegu_gan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan20000_3.loc[df_daegu_gan20000_3['year'].isin([2019, 2020]), df_daegu_gan20000_3.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu_gan20000_3.loc[df_daegu_gan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.48679908438561315\n", + "mean of accuracy : 0.9327868852459016\n", + "mean of mcc : 0.6323632523449321\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan20000_1.loc[df_daejeon_gan20000_1['year'].isin([2018, 2019]), df_daejeon_gan20000_1.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon_gan20000_1.loc[df_daejeon_gan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan20000_2.loc[df_daejeon_gan20000_2['year'].isin([2018, 2020]), df_daejeon_gan20000_2.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon_gan20000_2.loc[df_daejeon_gan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan20000_3.loc[df_daejeon_gan20000_3['year'].isin([2019, 2020]), df_daejeon_gan20000_3.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon_gan20000_3.loc[df_daejeon_gan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.48353837097976565\n", + "mean of accuracy : 0.9410715622426827\n", + "mean of mcc : 0.6300846989412464\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan20000_1.loc[df_gwangju_gan20000_1['year'].isin([2018, 2019]), df_gwangju_gan20000_1.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju_gan20000_1.loc[df_gwangju_gan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan20000_2.loc[df_gwangju_gan20000_2['year'].isin([2018, 2020]), df_gwangju_gan20000_2.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju_gan20000_2.loc[df_gwangju_gan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan20000_3.loc[df_gwangju_gan20000_3['year'].isin([2019, 2020]), df_gwangju_gan20000_3.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju_gan20000_3.loc[df_gwangju_gan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **1만개**" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "# 1 Fold\n", + "df_busan_gan10000_1= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_1_busan.csv\")\n", + "df_seoul_gan10000_1= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_1_seoul.csv\")\n", + "df_incheon_gan10000_1= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_1_incheon.csv\")\n", + "df_daegu_gan10000_1= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_1_daegu.csv\")\n", + "df_daejeon_gan10000_1= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_1_daejeon.csv\")\n", + "df_gwangju_gan10000_1= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_1_gwangju.csv\")\n", + "\n", + "# 2 Fold\n", + "df_busan_gan10000_2= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_2_busan.csv\")\n", + "df_seoul_gan10000_2= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_2_seoul.csv\")\n", + "df_incheon_gan10000_2= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_2_incheon.csv\")\n", + "df_daegu_gan10000_2= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_2_daegu.csv\")\n", + "df_daejeon_gan10000_2= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_2_daejeon.csv\")\n", + "df_gwangju_gan10000_2= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_2_gwangju.csv\")\n", + "\n", + "# 3 Fold\n", + "df_busan_gan10000_3= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_3_busan.csv\")\n", + "df_seoul_gan10000_3= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_3_seoul.csv\")\n", + "df_incheon_gan10000_3= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_3_incheon.csv\")\n", + "df_daegu_gan10000_3= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_3_daegu.csv\")\n", + "df_daejeon_gan10000_3= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_3_daejeon.csv\")\n", + "df_gwangju_gan10000_3= pd.read_csv(\"../../data/data_oversampled/ctgan10000/ctgan10000_3_gwangju.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "df_busan_gan10000_1= preprocessing(df_busan_gan10000_1).copy()\n", + "df_seoul_gan10000_1= preprocessing(df_seoul_gan10000_1).copy()\n", + "df_incheon_gan10000_1= preprocessing(df_incheon_gan10000_1).copy()\n", + "df_daegu_gan10000_1= preprocessing(df_daegu_gan10000_1).copy()\n", + "df_daejeon_gan10000_1= preprocessing(df_daejeon_gan10000_1).copy()\n", + "df_gwangju_gan10000_1= preprocessing(df_gwangju_gan10000_1).copy()\n", + "\n", + "df_busan_gan10000_2= preprocessing(df_busan_gan10000_2).copy()\n", + "df_seoul_gan10000_2= preprocessing(df_seoul_gan10000_2).copy()\n", + "df_incheon_gan10000_2= preprocessing(df_incheon_gan10000_2).copy()\n", + "df_daegu_gan10000_2= preprocessing(df_daegu_gan10000_2).copy()\n", + "df_daejeon_gan10000_2= preprocessing(df_daejeon_gan10000_2).copy()\n", + "df_gwangju_gan10000_2= preprocessing(df_gwangju_gan10000_2).copy()\n", + "\n", + "df_busan_gan10000_3= preprocessing(df_busan_gan10000_3).copy()\n", + "df_seoul_gan10000_3= preprocessing(df_seoul_gan10000_3).copy()\n", + "df_incheon_gan10000_3= preprocessing(df_incheon_gan10000_3).copy()\n", + "df_daegu_gan10000_3= preprocessing(df_daegu_gan10000_3).copy()\n", + "df_daejeon_gan10000_3= preprocessing(df_daejeon_gan10000_3).copy()\n", + "df_gwangju_gan10000_3= preprocessing(df_gwangju_gan10000_3).copy()\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5726452857277949\n", + "mean of accuracy : 0.9459915703936588\n", + "mean of mcc : 0.7050455795057567\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan10000_1.loc[df_seoul_gan10000_1['year'].isin([2018, 2019]), df_seoul_gan10000_1.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul_gan10000_1.loc[df_seoul_gan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan10000_2.loc[df_seoul_gan10000_2['year'].isin([2018, 2020]), df_seoul_gan10000_2.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul_gan10000_2.loc[df_seoul_gan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan10000_3.loc[df_seoul_gan10000_3['year'].isin([2019, 2020]), df_seoul_gan10000_3.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul_gan10000_3.loc[df_seoul_gan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.46215668360603956\n", + "mean of accuracy : 0.957996793672181\n", + "mean of mcc : 0.6232604815328809\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan10000_1.loc[df_busan_gan10000_1['year'].isin([2018, 2019]), df_busan_gan10000_1.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan_gan10000_1.loc[df_busan_gan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan10000_2.loc[df_busan_gan10000_2['year'].isin([2018, 2020]), df_busan_gan10000_2.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan_gan10000_2.loc[df_busan_gan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan10000_3.loc[df_busan_gan10000_3['year'].isin([2019, 2020]), df_busan_gan10000_3.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan_gan10000_3.loc[df_busan_gan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5588257624146101\n", + "mean of accuracy : 0.9126001197694439\n", + "mean of mcc : 0.6900542521034104\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan10000_1.loc[df_incheon_gan10000_1['year'].isin([2018, 2019]), df_incheon_gan10000_1.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon_gan10000_1.loc[df_incheon_gan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan10000_2.loc[df_incheon_gan10000_2['year'].isin([2018, 2020]), df_incheon_gan10000_2.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon_gan10000_2.loc[df_incheon_gan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan10000_3.loc[df_incheon_gan10000_3['year'].isin([2019, 2020]), df_incheon_gan10000_3.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon_gan10000_3.loc[df_incheon_gan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.42209289106237763\n", + "mean of accuracy : 0.9674885220949672\n", + "mean of mcc : 0.598275696961497\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan10000_1.loc[df_daegu_gan10000_1['year'].isin([2018, 2019]), df_daegu_gan10000_1.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu_gan10000_1.loc[df_daegu_gan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan10000_2.loc[df_daegu_gan10000_2['year'].isin([2018, 2020]), df_daegu_gan10000_2.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu_gan10000_2.loc[df_daegu_gan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan10000_3.loc[df_daegu_gan10000_3['year'].isin([2019, 2020]), df_daegu_gan10000_3.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu_gan10000_3.loc[df_daegu_gan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4992083791607569\n", + "mean of accuracy : 0.9357514908800559\n", + "mean of mcc : 0.6446946657921234\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan10000_1.loc[df_daejeon_gan10000_1['year'].isin([2018, 2019]), df_daejeon_gan10000_1.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon_gan10000_1.loc[df_daejeon_gan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan10000_2.loc[df_daejeon_gan10000_2['year'].isin([2018, 2020]), df_daejeon_gan10000_2.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon_gan10000_2.loc[df_daejeon_gan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan10000_3.loc[df_daejeon_gan10000_3['year'].isin([2019, 2020]), df_daejeon_gan10000_3.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon_gan10000_3.loc[df_daejeon_gan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4948663541817706\n", + "mean of accuracy : 0.9419830368207868\n", + "mean of mcc : 0.6398305973894735\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan10000_1.loc[df_gwangju_gan10000_1['year'].isin([2018, 2019]), df_gwangju_gan10000_1.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju_gan10000_1.loc[df_gwangju_gan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan10000_2.loc[df_gwangju_gan10000_2['year'].isin([2018, 2020]), df_gwangju_gan10000_2.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju_gan10000_2.loc[df_gwangju_gan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan10000_3.loc[df_gwangju_gan10000_3['year'].isin([2019, 2020]), df_gwangju_gan10000_3.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju_gan10000_3.loc[df_gwangju_gan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **7천개**" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "# 1 Fold\n", + "df_busan_gan7000_1= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_1_busan.csv\")\n", + "df_seoul_gan7000_1= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_1_seoul.csv\")\n", + "df_incheon_gan7000_1= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_1_incheon.csv\")\n", + "df_daegu_gan7000_1= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_1_daegu.csv\")\n", + "df_daejeon_gan7000_1= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_1_daejeon.csv\")\n", + "df_gwangju_gan7000_1= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_1_gwangju.csv\")\n", + "\n", + "# 2 Fold\n", + "df_busan_gan7000_2= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_2_busan.csv\")\n", + "df_seoul_gan7000_2= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_2_seoul.csv\")\n", + "df_incheon_gan7000_2= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_2_incheon.csv\")\n", + "df_daegu_gan7000_2= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_2_daegu.csv\")\n", + "df_daejeon_gan7000_2= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_2_daejeon.csv\")\n", + "df_gwangju_gan7000_2= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_2_gwangju.csv\")\n", + "\n", + "# 3 Fold\n", + "df_busan_gan7000_3= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_3_busan.csv\")\n", + "df_seoul_gan7000_3= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_3_seoul.csv\")\n", + "df_incheon_gan7000_3= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_3_incheon.csv\")\n", + "df_daegu_gan7000_3= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_3_daegu.csv\")\n", + "df_daejeon_gan7000_3= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_3_daejeon.csv\")\n", + "df_gwangju_gan7000_3= pd.read_csv(\"../../data/data_oversampled/ctgan7000/ctgan7000_3_gwangju.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "df_busan_gan7000_1= preprocessing(df_busan_gan7000_1).copy()\n", + "df_seoul_gan7000_1= preprocessing(df_seoul_gan7000_1).copy()\n", + "df_incheon_gan7000_1= preprocessing(df_incheon_gan7000_1).copy()\n", + "df_daegu_gan7000_1= preprocessing(df_daegu_gan7000_1).copy()\n", + "df_daejeon_gan7000_1= preprocessing(df_daejeon_gan7000_1).copy()\n", + "df_gwangju_gan7000_1= preprocessing(df_gwangju_gan7000_1).copy()\n", + "\n", + "df_busan_gan7000_2= preprocessing(df_busan_gan7000_2).copy()\n", + "df_seoul_gan7000_2= preprocessing(df_seoul_gan7000_2).copy()\n", + "df_incheon_gan7000_2= preprocessing(df_incheon_gan7000_2).copy()\n", + "df_daegu_gan7000_2= preprocessing(df_daegu_gan7000_2).copy()\n", + "df_daejeon_gan7000_2= preprocessing(df_daejeon_gan7000_2).copy()\n", + "df_gwangju_gan7000_2= preprocessing(df_gwangju_gan7000_2).copy()\n", + "\n", + "df_busan_gan7000_3= preprocessing(df_busan_gan7000_3).copy()\n", + "df_seoul_gan7000_3= preprocessing(df_seoul_gan7000_3).copy()\n", + "df_incheon_gan7000_3= preprocessing(df_incheon_gan7000_3).copy()\n", + "df_daegu_gan7000_3= preprocessing(df_daegu_gan7000_3).copy()\n", + "df_daejeon_gan7000_3= preprocessing(df_daejeon_gan7000_3).copy()\n", + "df_gwangju_gan7000_3= preprocessing(df_gwangju_gan7000_3).copy()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5606594873679361\n", + "mean of accuracy : 0.9448886934318104\n", + "mean of mcc : 0.6970239928104922\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan7000_1.loc[df_seoul_gan7000_1['year'].isin([2018, 2019]), df_seoul_gan7000_1.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul_gan7000_1.loc[df_seoul_gan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan7000_2.loc[df_seoul_gan7000_2['year'].isin([2018, 2020]), df_seoul_gan7000_2.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul_gan7000_2.loc[df_seoul_gan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_gan7000_3.loc[df_seoul_gan7000_3['year'].isin([2019, 2020]), df_seoul_gan7000_3.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul_gan7000_3.loc[df_seoul_gan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.46498805766493717\n", + "mean of accuracy : 0.959059435586496\n", + "mean of mcc : 0.6331340983154944\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan7000_1.loc[df_busan_gan7000_1['year'].isin([2018, 2019]), df_busan_gan7000_1.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan_gan7000_1.loc[df_busan_gan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan7000_2.loc[df_busan_gan7000_2['year'].isin([2018, 2020]), df_busan_gan7000_2.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan_gan7000_2.loc[df_busan_gan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_gan7000_3.loc[df_busan_gan7000_3['year'].isin([2019, 2020]), df_busan_gan7000_3.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan_gan7000_3.loc[df_busan_gan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5617695510575865\n", + "mean of accuracy : 0.9131326363417088\n", + "mean of mcc : 0.6926108566907646\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan7000_1.loc[df_incheon_gan7000_1['year'].isin([2018, 2019]), df_incheon_gan7000_1.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon_gan7000_1.loc[df_incheon_gan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan7000_2.loc[df_incheon_gan7000_2['year'].isin([2018, 2020]), df_incheon_gan7000_2.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon_gan7000_2.loc[df_incheon_gan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_gan7000_3.loc[df_incheon_gan7000_3['year'].isin([2019, 2020]), df_incheon_gan7000_3.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon_gan7000_3.loc[df_incheon_gan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4371777220246276\n", + "mean of accuracy : 0.9704867089186648\n", + "mean of mcc : 0.6091415637717575\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan7000_1.loc[df_daegu_gan7000_1['year'].isin([2018, 2019]), df_daegu_gan7000_1.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu_gan7000_1.loc[df_daegu_gan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan7000_2.loc[df_daegu_gan7000_2['year'].isin([2018, 2020]), df_daegu_gan7000_2.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu_gan7000_2.loc[df_daegu_gan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_gan7000_3.loc[df_daegu_gan7000_3['year'].isin([2019, 2020]), df_daegu_gan7000_3.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu_gan7000_3.loc[df_daegu_gan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.49032336332073895\n", + "mean of accuracy : 0.9335084129716962\n", + "mean of mcc : 0.6358762844808045\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan7000_1.loc[df_daejeon_gan7000_1['year'].isin([2018, 2019]), df_daejeon_gan7000_1.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon_gan7000_1.loc[df_daejeon_gan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan7000_2.loc[df_daejeon_gan7000_2['year'].isin([2018, 2020]), df_daejeon_gan7000_2.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon_gan7000_2.loc[df_daejeon_gan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_gan7000_3.loc[df_daejeon_gan7000_3['year'].isin([2019, 2020]), df_daejeon_gan7000_3.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon_gan7000_3.loc[df_daejeon_gan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4977293677719481\n", + "mean of accuracy : 0.942971238698838\n", + "mean of mcc : 0.6427810028391122\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan7000_1.loc[df_gwangju_gan7000_1['year'].isin([2018, 2019]), df_gwangju_gan7000_1.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju_gan7000_1.loc[df_gwangju_gan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan7000_2.loc[df_gwangju_gan7000_2['year'].isin([2018, 2020]), df_gwangju_gan7000_2.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju_gan7000_2.loc[df_gwangju_gan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_gan7000_3.loc[df_gwangju_gan7000_3['year'].isin([2019, 2020]), df_gwangju_gan7000_3.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju_gan7000_3.loc[df_gwangju_gan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **SMOTENC+CTGAN을 통해 데이터 증강을 진행한 데이터셋에 대한 성능**\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **7천개**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "# 1 Fold\n", + "df_busan_smotenc_ctgan7000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_busan.csv\")\n", + "df_seoul_smotenc_ctgan7000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_seoul.csv\")\n", + "df_incheon_smotenc_ctgan7000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_incheon.csv\")\n", + "df_daegu_smotenc_ctgan7000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan7000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan7000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_1_gwangju.csv\")\n", + "\n", + "# 2 Fold\n", + "df_busan_smotenc_ctgan7000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_busan.csv\")\n", + "df_seoul_smotenc_ctgan7000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_seoul.csv\")\n", + "df_incheon_smotenc_ctgan7000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_incheon.csv\")\n", + "df_daegu_smotenc_ctgan7000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan7000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan7000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_2_gwangju.csv\")\n", + "\n", + "# 3 Fold\n", + "df_busan_smotenc_ctgan7000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_busan.csv\")\n", + "df_seoul_smotenc_ctgan7000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_seoul.csv\")\n", + "df_incheon_smotenc_ctgan7000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_incheon.csv\")\n", + "df_daegu_smotenc_ctgan7000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan7000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan7000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan7000/smotenc_ctgan7000_3_gwangju.csv\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "df_busan_smotenc_ctgan7000_1 = preprocessing(df_busan_smotenc_ctgan7000_1).copy()\n", + "df_seoul_smotenc_ctgan7000_1 = preprocessing(df_seoul_smotenc_ctgan7000_1).copy()\n", + "df_incheon_smotenc_ctgan7000_1 = preprocessing(df_incheon_smotenc_ctgan7000_1).copy()\n", + "df_daegu_smotenc_ctgan7000_1 = preprocessing(df_daegu_smotenc_ctgan7000_1).copy()\n", + "df_daejeon_smotenc_ctgan7000_1 = preprocessing(df_daejeon_smotenc_ctgan7000_1).copy()\n", + "df_gwangju_smotenc_ctgan7000_1 = preprocessing(df_gwangju_smotenc_ctgan7000_1).copy()\n", + "\n", + "df_busan_smotenc_ctgan7000_2 = preprocessing(df_busan_smotenc_ctgan7000_2).copy()\n", + "df_seoul_smotenc_ctgan7000_2 = preprocessing(df_seoul_smotenc_ctgan7000_2).copy()\n", + "df_incheon_smotenc_ctgan7000_2 = preprocessing(df_incheon_smotenc_ctgan7000_2).copy()\n", + "df_daegu_smotenc_ctgan7000_2 = preprocessing(df_daegu_smotenc_ctgan7000_2).copy()\n", + "df_daejeon_smotenc_ctgan7000_2 = preprocessing(df_daejeon_smotenc_ctgan7000_2).copy()\n", + "df_gwangju_smotenc_ctgan7000_2 = preprocessing(df_gwangju_smotenc_ctgan7000_2).copy()\n", + "\n", + "df_busan_smotenc_ctgan7000_3 = preprocessing(df_busan_smotenc_ctgan7000_3).copy()\n", + "df_seoul_smotenc_ctgan7000_3 = preprocessing(df_seoul_smotenc_ctgan7000_3).copy()\n", + "df_incheon_smotenc_ctgan7000_3 = preprocessing(df_incheon_smotenc_ctgan7000_3).copy()\n", + "df_daegu_smotenc_ctgan7000_3 = preprocessing(df_daegu_smotenc_ctgan7000_3).copy()\n", + "df_daejeon_smotenc_ctgan7000_3 = preprocessing(df_daejeon_smotenc_ctgan7000_3).copy()\n", + "df_gwangju_smotenc_ctgan7000_3 = preprocessing(df_gwangju_smotenc_ctgan7000_3).copy()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5566046896452139\n", + "mean of accuracy : 0.9440149587044938\n", + "mean of mcc : 0.6956293176165902\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan7000_1.loc[df_seoul_smotenc_ctgan7000_1['year'].isin([2018, 2019]), df_seoul_smotenc_ctgan7000_1.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan7000_1.loc[df_seoul_smotenc_ctgan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan7000_2.loc[df_seoul_smotenc_ctgan7000_2['year'].isin([2018, 2020]), df_seoul_smotenc_ctgan7000_2.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan7000_2.loc[df_seoul_smotenc_ctgan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan7000_3.loc[df_seoul_smotenc_ctgan7000_3['year'].isin([2019, 2020]), df_seoul_smotenc_ctgan7000_3.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan7000_3.loc[df_seoul_smotenc_ctgan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4596744180737112\n", + "mean of accuracy : 0.9579584300222073\n", + "mean of mcc : 0.6249928154033518\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan7000_1.loc[df_busan_smotenc_ctgan7000_1['year'].isin([2018, 2019]), df_busan_smotenc_ctgan7000_1.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan7000_1.loc[df_busan_smotenc_ctgan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan7000_2.loc[df_busan_smotenc_ctgan7000_2['year'].isin([2018, 2020]), df_busan_smotenc_ctgan7000_2.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan7000_2.loc[df_busan_smotenc_ctgan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan7000_3.loc[df_busan_smotenc_ctgan7000_3['year'].isin([2019, 2020]), df_busan_smotenc_ctgan7000_3.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan7000_3.loc[df_busan_smotenc_ctgan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.561186125284916\n", + "mean of accuracy : 0.9126745598057072\n", + "mean of mcc : 0.692361701378235\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan7000_1.loc[df_incheon_smotenc_ctgan7000_1['year'].isin([2018, 2019]), df_incheon_smotenc_ctgan7000_1.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan7000_1.loc[df_incheon_smotenc_ctgan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan7000_2.loc[df_incheon_smotenc_ctgan7000_2['year'].isin([2018, 2020]), df_incheon_smotenc_ctgan7000_2.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan7000_2.loc[df_incheon_smotenc_ctgan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan7000_3.loc[df_incheon_smotenc_ctgan7000_3['year'].isin([2019, 2020]), df_incheon_smotenc_ctgan7000_3.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan7000_3.loc[df_incheon_smotenc_ctgan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.41098147807826974\n", + "mean of accuracy : 0.9657802480225565\n", + "mean of mcc : 0.5914350093053913\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan7000_1.loc[df_daegu_smotenc_ctgan7000_1['year'].isin([2018, 2019]), df_daegu_smotenc_ctgan7000_1.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan7000_1.loc[df_daegu_smotenc_ctgan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan7000_2.loc[df_daegu_smotenc_ctgan7000_2['year'].isin([2018, 2020]), df_daegu_smotenc_ctgan7000_2.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan7000_2.loc[df_daegu_smotenc_ctgan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan7000_3.loc[df_daegu_smotenc_ctgan7000_3['year'].isin([2019, 2020]), df_daegu_smotenc_ctgan7000_3.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan7000_3.loc[df_daegu_smotenc_ctgan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4978467120830509\n", + "mean of accuracy : 0.9340802288927149\n", + "mean of mcc : 0.6418086424001179\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan7000_1.loc[df_daejeon_smotenc_ctgan7000_1['year'].isin([2018, 2019]), df_daejeon_smotenc_ctgan7000_1.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan7000_1.loc[df_daejeon_smotenc_ctgan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan7000_2.loc[df_daejeon_smotenc_ctgan7000_2['year'].isin([2018, 2020]), df_daejeon_smotenc_ctgan7000_2.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan7000_2.loc[df_daejeon_smotenc_ctgan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan7000_3.loc[df_daejeon_smotenc_ctgan7000_3['year'].isin([2019, 2020]), df_daejeon_smotenc_ctgan7000_3.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan7000_3.loc[df_daejeon_smotenc_ctgan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.48499027571193204\n", + "mean of accuracy : 0.9404240586870275\n", + "mean of mcc : 0.6315570899217192\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan7000_1.loc[df_gwangju_smotenc_ctgan7000_1['year'].isin([2018, 2019]), df_gwangju_smotenc_ctgan7000_1.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan7000_1.loc[df_gwangju_smotenc_ctgan7000_1['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan7000_2.loc[df_gwangju_smotenc_ctgan7000_2['year'].isin([2018, 2020]), df_gwangju_smotenc_ctgan7000_2.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan7000_2.loc[df_gwangju_smotenc_ctgan7000_2['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan7000_3.loc[df_gwangju_smotenc_ctgan7000_3['year'].isin([2019, 2020]), df_gwangju_smotenc_ctgan7000_3.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan7000_3.loc[df_gwangju_smotenc_ctgan7000_3['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan7000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **1만개**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "# 1 Fold\n", + "df_busan_smotenc_ctgan10000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_busan.csv\")\n", + "df_seoul_smotenc_ctgan10000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_seoul.csv\")\n", + "df_incheon_smotenc_ctgan10000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_incheon.csv\")\n", + "df_daegu_smotenc_ctgan10000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan10000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan10000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_1_gwangju.csv\")\n", + "\n", + "# 2 Fold\n", + "df_busan_smotenc_ctgan10000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_busan.csv\")\n", + "df_seoul_smotenc_ctgan10000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_seoul.csv\")\n", + "df_incheon_smotenc_ctgan10000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_incheon.csv\")\n", + "df_daegu_smotenc_ctgan10000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan10000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan10000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_2_gwangju.csv\")\n", + "\n", + "# 3 Fold\n", + "df_busan_smotenc_ctgan10000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_busan.csv\")\n", + "df_seoul_smotenc_ctgan10000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_seoul.csv\")\n", + "df_incheon_smotenc_ctgan10000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_incheon.csv\")\n", + "df_daegu_smotenc_ctgan10000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan10000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan10000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan10000/smotenc_ctgan10000_3_gwangju.csv\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "df_busan_smotenc_ctgan10000_1 = preprocessing(df_busan_smotenc_ctgan10000_1).copy()\n", + "df_seoul_smotenc_ctgan10000_1 = preprocessing(df_seoul_smotenc_ctgan10000_1).copy()\n", + "df_incheon_smotenc_ctgan10000_1 = preprocessing(df_incheon_smotenc_ctgan10000_1).copy()\n", + "df_daegu_smotenc_ctgan10000_1 = preprocessing(df_daegu_smotenc_ctgan10000_1).copy()\n", + "df_daejeon_smotenc_ctgan10000_1 = preprocessing(df_daejeon_smotenc_ctgan10000_1).copy()\n", + "df_gwangju_smotenc_ctgan10000_1 = preprocessing(df_gwangju_smotenc_ctgan10000_1).copy()\n", + "\n", + "df_busan_smotenc_ctgan10000_2 = preprocessing(df_busan_smotenc_ctgan10000_2).copy()\n", + "df_seoul_smotenc_ctgan10000_2 = preprocessing(df_seoul_smotenc_ctgan10000_2).copy()\n", + "df_incheon_smotenc_ctgan10000_2 = preprocessing(df_incheon_smotenc_ctgan10000_2).copy()\n", + "df_daegu_smotenc_ctgan10000_2 = preprocessing(df_daegu_smotenc_ctgan10000_2).copy()\n", + "df_daejeon_smotenc_ctgan10000_2 = preprocessing(df_daejeon_smotenc_ctgan10000_2).copy()\n", + "df_gwangju_smotenc_ctgan10000_2 = preprocessing(df_gwangju_smotenc_ctgan10000_2).copy()\n", + "\n", + "df_busan_smotenc_ctgan10000_3 = preprocessing(df_busan_smotenc_ctgan10000_3).copy()\n", + "df_seoul_smotenc_ctgan10000_3 = preprocessing(df_seoul_smotenc_ctgan10000_3).copy()\n", + "df_incheon_smotenc_ctgan10000_3 = preprocessing(df_incheon_smotenc_ctgan10000_3).copy()\n", + "df_daegu_smotenc_ctgan10000_3 = preprocessing(df_daegu_smotenc_ctgan10000_3).copy()\n", + "df_daejeon_smotenc_ctgan10000_3 = preprocessing(df_daejeon_smotenc_ctgan10000_3).copy()\n", + "df_gwangju_smotenc_ctgan10000_3 = preprocessing(df_gwangju_smotenc_ctgan10000_3).copy()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5584588498586123\n", + "mean of accuracy : 0.9448134216632981\n", + "mean of mcc : 0.6964135324563553\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan10000_1.loc[df_seoul_smotenc_ctgan10000_1['year'].isin([2018, 2019]), df_seoul_smotenc_ctgan10000_1.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan10000_1.loc[df_seoul_smotenc_ctgan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan10000_2.loc[df_seoul_smotenc_ctgan10000_2['year'].isin([2018, 2020]), df_seoul_smotenc_ctgan10000_2.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan10000_2.loc[df_seoul_smotenc_ctgan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan10000_3.loc[df_seoul_smotenc_ctgan10000_3['year'].isin([2019, 2020]), df_seoul_smotenc_ctgan10000_3.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan10000_3.loc[df_seoul_smotenc_ctgan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4598598851057194\n", + "mean of accuracy : 0.9579939865758414\n", + "mean of mcc : 0.6250673436769149\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan10000_1.loc[df_busan_smotenc_ctgan10000_1['year'].isin([2018, 2019]), df_busan_smotenc_ctgan10000_1.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan10000_1.loc[df_busan_smotenc_ctgan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan10000_2.loc[df_busan_smotenc_ctgan10000_2['year'].isin([2018, 2020]), df_busan_smotenc_ctgan10000_2.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan10000_2.loc[df_busan_smotenc_ctgan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan10000_3.loc[df_busan_smotenc_ctgan10000_3['year'].isin([2019, 2020]), df_busan_smotenc_ctgan10000_3.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan10000_3.loc[df_busan_smotenc_ctgan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5635605041048001\n", + "mean of accuracy : 0.9126383794528866\n", + "mean of mcc : 0.6931491104960332\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan10000_1.loc[df_incheon_smotenc_ctgan10000_1['year'].isin([2018, 2019]), df_incheon_smotenc_ctgan10000_1.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan10000_1.loc[df_incheon_smotenc_ctgan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan10000_2.loc[df_incheon_smotenc_ctgan10000_2['year'].isin([2018, 2020]), df_incheon_smotenc_ctgan10000_2.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan10000_2.loc[df_incheon_smotenc_ctgan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan10000_3.loc[df_incheon_smotenc_ctgan10000_3['year'].isin([2019, 2020]), df_incheon_smotenc_ctgan10000_3.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan10000_3.loc[df_incheon_smotenc_ctgan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.41696614125706577\n", + "mean of accuracy : 0.9666141635684641\n", + "mean of mcc : 0.592889371098272\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan10000_1.loc[df_daegu_smotenc_ctgan10000_1['year'].isin([2018, 2019]), df_daegu_smotenc_ctgan10000_1.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan10000_1.loc[df_daegu_smotenc_ctgan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan10000_2.loc[df_daegu_smotenc_ctgan10000_2['year'].isin([2018, 2020]), df_daegu_smotenc_ctgan10000_2.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan10000_2.loc[df_daegu_smotenc_ctgan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan10000_3.loc[df_daegu_smotenc_ctgan10000_3['year'].isin([2019, 2020]), df_daegu_smotenc_ctgan10000_3.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan10000_3.loc[df_daegu_smotenc_ctgan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4867345078568066\n", + "mean of accuracy : 0.9333559980371119\n", + "mean of mcc : 0.6340727122032903\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan10000_1.loc[df_daejeon_smotenc_ctgan10000_1['year'].isin([2018, 2019]), df_daejeon_smotenc_ctgan10000_1.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan10000_1.loc[df_daejeon_smotenc_ctgan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan10000_2.loc[df_daejeon_smotenc_ctgan10000_2['year'].isin([2018, 2020]), df_daejeon_smotenc_ctgan10000_2.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan10000_2.loc[df_daejeon_smotenc_ctgan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan10000_3.loc[df_daejeon_smotenc_ctgan10000_3['year'].isin([2019, 2020]), df_daejeon_smotenc_ctgan10000_3.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan10000_3.loc[df_daejeon_smotenc_ctgan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.492041646532344\n", + "mean of accuracy : 0.9422477356089528\n", + "mean of mcc : 0.6400420804072541\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan10000_1.loc[df_gwangju_smotenc_ctgan10000_1['year'].isin([2018, 2019]), df_gwangju_smotenc_ctgan10000_1.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan10000_1.loc[df_gwangju_smotenc_ctgan10000_1['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan10000_2.loc[df_gwangju_smotenc_ctgan10000_2['year'].isin([2018, 2020]), df_gwangju_smotenc_ctgan10000_2.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan10000_2.loc[df_gwangju_smotenc_ctgan10000_2['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan10000_3.loc[df_gwangju_smotenc_ctgan10000_3['year'].isin([2019, 2020]), df_gwangju_smotenc_ctgan10000_3.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan10000_3.loc[df_gwangju_smotenc_ctgan10000_3['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan10000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **2만개**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "# 1 Fold\n", + "df_busan_smotenc_ctgan20000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_busan.csv\")\n", + "df_seoul_smotenc_ctgan20000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_seoul.csv\")\n", + "df_incheon_smotenc_ctgan20000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_incheon.csv\")\n", + "df_daegu_smotenc_ctgan20000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan20000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan20000_1 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_gwangju.csv\")\n", + "\n", + "# 2 Fold\n", + "df_busan_smotenc_ctgan20000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_busan.csv\")\n", + "df_seoul_smotenc_ctgan20000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_seoul.csv\")\n", + "df_incheon_smotenc_ctgan20000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_incheon.csv\")\n", + "df_daegu_smotenc_ctgan20000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan20000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan20000_2 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_gwangju.csv\")\n", + "\n", + "# 3 Fold\n", + "df_busan_smotenc_ctgan20000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_busan.csv\")\n", + "df_seoul_smotenc_ctgan20000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_seoul.csv\")\n", + "df_incheon_smotenc_ctgan20000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_incheon.csv\")\n", + "df_daegu_smotenc_ctgan20000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_daegu.csv\")\n", + "df_daejeon_smotenc_ctgan20000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_daejeon.csv\")\n", + "df_gwangju_smotenc_ctgan20000_3 = pd.read_csv(\"../../data/data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_gwangju.csv\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [], + "source": [ + "df_busan_smotenc_ctgan20000_1 = preprocessing(df_busan_smotenc_ctgan20000_1).copy()\n", + "df_seoul_smotenc_ctgan20000_1 = preprocessing(df_seoul_smotenc_ctgan20000_1).copy()\n", + "df_incheon_smotenc_ctgan20000_1 = preprocessing(df_incheon_smotenc_ctgan20000_1).copy()\n", + "df_daegu_smotenc_ctgan20000_1 = preprocessing(df_daegu_smotenc_ctgan20000_1).copy()\n", + "df_daejeon_smotenc_ctgan20000_1 = preprocessing(df_daejeon_smotenc_ctgan20000_1).copy()\n", + "df_gwangju_smotenc_ctgan20000_1 = preprocessing(df_gwangju_smotenc_ctgan20000_1).copy()\n", + "\n", + "df_busan_smotenc_ctgan20000_2 = preprocessing(df_busan_smotenc_ctgan20000_2).copy()\n", + "df_seoul_smotenc_ctgan20000_2 = preprocessing(df_seoul_smotenc_ctgan20000_2).copy()\n", + "df_incheon_smotenc_ctgan20000_2 = preprocessing(df_incheon_smotenc_ctgan20000_2).copy()\n", + "df_daegu_smotenc_ctgan20000_2 = preprocessing(df_daegu_smotenc_ctgan20000_2).copy()\n", + "df_daejeon_smotenc_ctgan20000_2 = preprocessing(df_daejeon_smotenc_ctgan20000_2).copy()\n", + "df_gwangju_smotenc_ctgan20000_2 = preprocessing(df_gwangju_smotenc_ctgan20000_2).copy()\n", + "\n", + "df_busan_smotenc_ctgan20000_3 = preprocessing(df_busan_smotenc_ctgan20000_3).copy()\n", + "df_seoul_smotenc_ctgan20000_3 = preprocessing(df_seoul_smotenc_ctgan20000_3).copy()\n", + "df_incheon_smotenc_ctgan20000_3 = preprocessing(df_incheon_smotenc_ctgan20000_3).copy()\n", + "df_daegu_smotenc_ctgan20000_3 = preprocessing(df_daegu_smotenc_ctgan20000_3).copy()\n", + "df_daejeon_smotenc_ctgan20000_3 = preprocessing(df_daejeon_smotenc_ctgan20000_3).copy()\n", + "df_gwangju_smotenc_ctgan20000_3 = preprocessing(df_gwangju_smotenc_ctgan20000_3).copy()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5574439981294055\n", + "mean of accuracy : 0.9442437890394325\n", + "mean of mcc : 0.6953786483591325\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan20000_1.loc[df_seoul_smotenc_ctgan20000_1['year'].isin([2018, 2019]), df_seoul_smotenc_ctgan20000_1.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan20000_1.loc[df_seoul_smotenc_ctgan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan20000_2.loc[df_seoul_smotenc_ctgan20000_2['year'].isin([2018, 2020]), df_seoul_smotenc_ctgan20000_2.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan20000_2.loc[df_seoul_smotenc_ctgan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul_smotenc_ctgan20000_3.loc[df_seoul_smotenc_ctgan20000_3['year'].isin([2019, 2020]), df_seoul_smotenc_ctgan20000_3.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul_smotenc_ctgan20000_3.loc[df_seoul_smotenc_ctgan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'seoul',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4671277823825058\n", + "mean of accuracy : 0.958033077991533\n", + "mean of mcc : 0.6300988436353677\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan20000_1.loc[df_busan_smotenc_ctgan20000_1['year'].isin([2018, 2019]), df_busan_smotenc_ctgan20000_1.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan20000_1.loc[df_busan_smotenc_ctgan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan20000_2.loc[df_busan_smotenc_ctgan20000_2['year'].isin([2018, 2020]), df_busan_smotenc_ctgan20000_2.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan20000_2.loc[df_busan_smotenc_ctgan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_busan_smotenc_ctgan20000_3.loc[df_busan_smotenc_ctgan20000_3['year'].isin([2019, 2020]), df_busan_smotenc_ctgan20000_3.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan_smotenc_ctgan20000_3.loc[df_busan_smotenc_ctgan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'busan',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.5572409410571025\n", + "mean of accuracy : 0.9114212432733654\n", + "mean of mcc : 0.6879675745560497\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan20000_1.loc[df_incheon_smotenc_ctgan20000_1['year'].isin([2018, 2019]), df_incheon_smotenc_ctgan20000_1.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan20000_1.loc[df_incheon_smotenc_ctgan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan20000_2.loc[df_incheon_smotenc_ctgan20000_2['year'].isin([2018, 2020]), df_incheon_smotenc_ctgan20000_2.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan20000_2.loc[df_incheon_smotenc_ctgan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon_smotenc_ctgan20000_3.loc[df_incheon_smotenc_ctgan20000_3['year'].isin([2019, 2020]), df_incheon_smotenc_ctgan20000_3.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon_smotenc_ctgan20000_3.loc[df_incheon_smotenc_ctgan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'incheon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.40847028864132034\n", + "mean of accuracy : 0.9655496502565893\n", + "mean of mcc : 0.5839149359742953\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan20000_1.loc[df_daegu_smotenc_ctgan20000_1['year'].isin([2018, 2019]), df_daegu_smotenc_ctgan20000_1.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan20000_1.loc[df_daegu_smotenc_ctgan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan20000_2.loc[df_daegu_smotenc_ctgan20000_2['year'].isin([2018, 2020]), df_daegu_smotenc_ctgan20000_2.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan20000_2.loc[df_daegu_smotenc_ctgan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu_smotenc_ctgan20000_3.loc[df_daegu_smotenc_ctgan20000_3['year'].isin([2019, 2020]), df_daegu_smotenc_ctgan20000_3.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu_smotenc_ctgan20000_3.loc[df_daegu_smotenc_ctgan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daegu',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4895872216295751\n", + "mean of accuracy : 0.9336976320582878\n", + "mean of mcc : 0.6360989053768741\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan20000_1.loc[df_daejeon_smotenc_ctgan20000_1['year'].isin([2018, 2019]), df_daejeon_smotenc_ctgan20000_1.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan20000_1.loc[df_daejeon_smotenc_ctgan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan20000_2.loc[df_daejeon_smotenc_ctgan20000_2['year'].isin([2018, 2020]), df_daejeon_smotenc_ctgan20000_2.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan20000_2.loc[df_daejeon_smotenc_ctgan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon_smotenc_ctgan20000_3.loc[df_daejeon_smotenc_ctgan20000_3['year'].isin([2019, 2020]), df_daejeon_smotenc_ctgan20000_3.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon_smotenc_ctgan20000_3.loc[df_daejeon_smotenc_ctgan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'daejeon',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean of csi : 0.4877911320588812\n", + "mean of accuracy : 0.9413747286473538\n", + "mean of mcc : 0.6352378678603517\n" + ] + } + ], + "source": [ + "csi = []\n", + "accuracy = []\n", + "mcc = []\n", + "\n", + "# Fold 1\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan20000_1.loc[df_gwangju_smotenc_ctgan20000_1['year'].isin([2018, 2019]), df_gwangju_smotenc_ctgan20000_1.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan20000_1.loc[df_gwangju_smotenc_ctgan20000_1['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 2\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan20000_2.loc[df_gwangju_smotenc_ctgan20000_2['year'].isin([2018, 2020]), df_gwangju_smotenc_ctgan20000_2.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan20000_2.loc[df_gwangju_smotenc_ctgan20000_2['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "# Fold 3\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju_smotenc_ctgan20000_3.loc[df_gwangju_smotenc_ctgan20000_3['year'].isin([2019, 2020]), df_gwangju_smotenc_ctgan20000_3.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju_smotenc_ctgan20000_3.loc[df_gwangju_smotenc_ctgan20000_3['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "xgb_model.fit(X_tr, Y_tr, eval_set=[(X_val, Y_val)], verbose=False)\n", + "csi.append(calculate_csi(Y_val, xgb_model.predict(X_val)))\n", + "accuracy.append(accuracy_score(Y_val, xgb_model.predict(X_val)))\n", + "mcc.append(multiclass_mcc(Y_val, xgb_model.predict(X_val)))\n", + "\n", + "\n", + "print(\"mean of csi : \", np.mean(csi))\n", + "print(\"mean of accuracy : \", np.mean(accuracy))\n", + "print(\"mean of mcc : \", np.mean(mcc))\n", + "\n", + "new_row = pd.DataFrame([{\n", + " 'region': 'gwangju',\n", + " 'model': 'XGBoost',\n", + " 'data_sample': 'smotenc_ctgan20000',\n", + " 'CSI': np.mean(csi),\n", + " 'MCC': np.mean(mcc),\n", + " 'Accuracy': np.mean(accuracy),\n", + " 'fold_csi': [csi]\n", + "\n", + "}])\n", + "\n", + "df = pd.concat([df, new_row], ignore_index=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "통합 CSV 저장 완료: 총 96개 결과 (LGB: 48개, XGB: 48개)\n" + ] + } + ], + "source": [ + "# 개별 모델 결과 저장\n", + "df.to_csv(\"../../data/oversampled_data_test_for_model/xgboost_sampled_data_test.csv\", index=False)\n", + "\n", + "# 통합 CSV 생성: LGB 결과와 XGB 결과 합치기\n", + "import os\n", + "\n", + "# LGB 결과 CSV 파일 경로\n", + "lgb_csv_path = \"../../data/oversampled_data_test_for_model/\"\n", + "\n", + "# LGB 결과가 있으면 읽어서 합치기, 없으면 XGB 결과만 사용\n", + "if os.path.exists(lgb_csv_path):\n", + " df_lgb = pd.read_csv(lgb_csv_path)\n", + " # 두 DataFrame 합치기\n", + " df_combined = pd.concat([df_lgb, df], ignore_index=True)\n", + " lgb_count = len(df_lgb)\n", + "else:\n", + " # LGB 결과가 없으면 XGB 결과만 사용\n", + " df_combined = df.copy()\n", + " lgb_count = 0\n", + "\n", + "# 통합 CSV 저장 (현재 디렉토리에 저장)\n", + "df_combined.to_csv(\"../../data/oversampled_data_test_for_model/combined_sampled_data_test.csv\", index=False)\n", + "print(f\"통합 CSV 저장 완료: 총 {len(df_combined)}개 결과 (LGB: {lgb_count}개, XGB: {len(df)}개)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "LightGBM 48\n", + "XGBoost 48\n", + "Name: model, dtype: int64" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_combined['model'].value_counts()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_busan.py b/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..286ee0105659d8941c4ed7ea29d196d5803de771 --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_busan.py @@ -0,0 +1,98 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="busan"), + n_trials=100, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_pure_busan_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="busan", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_daegu.py b/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..7c28e81040da22168ab264755cc3dafe24656ec4 --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_daegu.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="daegu"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_pure_daegu_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="daegu", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_daejeon.py b/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..bbfe5d75baff1e318e3afb8fb8613cd280fcfe94 --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_daejeon.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="daejeon"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_pure_daejeon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="daejeon", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_gwangju.py b/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..76ab3bca8dad3ec4b257eebb61ffdd8f6eea40af --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_gwangju.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="gwangju"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_pure_gwangju_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="gwangju", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_incheon.py b/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..bd64cfd1dce00a569689b4f76e5449d233496591 --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_incheon.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="incheon"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_pure_incheon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="incheon", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_seoul.py b/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..fca07269f52d8adf691a7027ceff07b22901688f --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_pure/deepgbm_pure_seoul.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="seoul"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_pure_seoul_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="seoul", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_pure/utils.py b/Analysis_code/5.optima/deepgbm_pure/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..43d496ecda4c82ad96e7ed6c5a87409fd31b53cb --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_pure/utils.py @@ -0,0 +1,720 @@ +import torch +import torch.nn as nn +import torch.optim as optim +import numpy as np +import random +import os +import copy +from sklearn.preprocessing import QuantileTransformer, LabelEncoder +from torch.utils.data import DataLoader, TensorDataset +from sklearn.metrics import confusion_matrix +from sklearn.utils.class_weight import compute_class_weight +import pandas as pd +import optuna +from sklearn.metrics import accuracy_score, f1_score +import joblib + + +import sys +# 파일 위치 기반으로 models 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +models_path = os.path.abspath(os.path.join(current_file_dir, '../../models')) +sys.path.insert(0, models_path) +from ft_transformer import FTTransformer +from resnet_like import ResNetLike +from deepgbm import DeepGBM +import warnings +warnings.filterwarnings('ignore') + + +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + +# PyTorch 시드 고정 +torch.manual_seed(seed) +torch.cuda.manual_seed(seed) +torch.cuda.manual_seed_all(seed) # Multi-GPU 환경에서 동일한 시드 적용 + +# PyTorch 연산의 결정적 모드 설정 +torch.backends.cudnn.deterministic = True # 실행마다 동일한 결과를 보장 +torch.backends.cudnn.benchmark = True # 성능 최적화를 활성화 (가능한 한 빠른 연산 수행) + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +# 데이터셋 준비 함수 +def prepare_dataset(region, data_sample='pure', target='multi', fold=3): + + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + return X_train, X_val, X_test, y_train, y_val, y_test, categorical_cols, numerical_cols + + + +# 데이터 변환 및 dataloader 생성 함수 +def prepare_dataloader(region, data_sample='pure', target='multi', fold=3, random_state=None): + + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=64, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader + +# 데이터 변환 및 dataloader 생성 함수 (batch_size 파라미터 추가 버전) +def prepare_dataloader_with_batchsize(region, data_sample='pure', target='multi', fold=3, random_state=None, batch_size=64): + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 (batch_size 파라미터 사용) + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader, y_train, scaler + + +def calculate_csi(y_true, pred): + + cm = confusion_matrix(y_true, pred) # 변수 이름을 cm으로 변경 + # 혼동 행렬에서 H, F, M 추출 + H = (cm[0, 0] + cm[1, 1]) + + F = (cm[1, 0] + cm[2, 0] + + cm[0, 1] + cm[2, 1]) + + M = (cm[0, 2] + cm[1, 2]) + + # CSI 계산 + CSI = H / (H + F + M + 1e-10) + return CSI + +def sample_weight(y_train): + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), # 고유 클래스 + y=y_train # 학습 데이터 레이블 + ) + sample_weights = np.array([class_weights[label] for label in y_train]) + + return sample_weights + +# 하이퍼파라미터 최적화 함수 정의 +def objective(trial, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + val_scores = [] + + # --- 1. 하이퍼파라미터 탐색 범위 정의 (수정됨) --- + if model_choose == "ft_transformer": + d_token = trial.suggest_int("d_token", 64, 256, step=32) + n_blocks = trial.suggest_int("n_blocks", 2, 6) # 깊이 축소로 과적합 방지 + n_heads = trial.suggest_categorical("n_heads", [4, 8]) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + attention_dropout = trial.suggest_float("attention_dropout", 0.1, 0.4) + ffn_dropout = trial.suggest_float("ffn_dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) # 범위 확대 + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'resnet_like': + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 512, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 5) # 너무 깊지 않게 조절 + dropout_first = trial.suggest_float("dropout_first", 0.1, 0.4) + dropout_second = trial.suggest_float("dropout_second", 0.0, 0.2) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'deepgbm': + # DeepGBM의 경우 모델 특성에 맞춰 ResNet 블록 및 임베딩 차원 조절 + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 256, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 6) + dropout = trial.suggest_float("dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + # --- 2. Fold별 학습 및 교차 검증 --- + for fold in range(1, n_folds + 1): + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, _ = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=n_blocks, + n_heads=n_heads, + attention_dropout=attention_dropout, + ffn_dropout=ffn_dropout, + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout_first=dropout_first, + dropout_second=dropout_second, + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout=dropout, + num_classes=3 + ).to(device) + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + # 클래스별 가중치 로그 출력 + unique_classes = np.unique(y_train) + class_counts = {cls: np.sum(y_train == cls) for cls in unique_classes} + print(f" Fold {fold} - 클래스별 가중치: {dict(zip(unique_classes, class_weights))} (클래스별 샘플 수: {class_counts})") + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=lr, weight_decay=weight_decay) + + # 학습률 스케줄러 추가: 성능 정체 시 LR을 0.5배 감소 (검증 CSI 기준) + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 (에폭 및 페이션스 상향) + epochs = 200 + patience = 12 # 딥러닝의 정체 구간을 고려하여 소폭 상향 + best_fold_csi = 0 + counter = 0 + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Optuna Pruning 적용 (첫 번째 Fold에서 조기 종료 판단 강화) + trial.report(val_csi, epoch) + if trial.should_prune(): + raise optuna.exceptions.TrialPruned() + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + else: + counter += 1 + + if counter >= patience: + break + + val_scores.append(best_fold_csi) + + # 모든 fold의 평균 성능 반환 + return np.mean(val_scores) + + +# 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 함수 +def train_final_model(best_params, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + """ + 최적화된 하이퍼파라미터로 최종 모델을 학습하고 저장합니다. + + Args: + best_params: 최적화된 하이퍼파라미터 딕셔너리 + model_choose: 모델 선택 ('ft_transformer', 'resnet_like', 'deepgbm') + region: 지역명 + data_sample: 데이터 샘플 타입 ('pure', 'smote', etc.) + target: 타겟 타입 ('multi', 'binary') + n_folds: 교차 검증 fold 수 + random_state: 랜덤 시드 + + Returns: + 저장된 모델 경로 리스트 + """ + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + + models = [] + scalers = [] # scaler 리스트 추가 + + print("최종 모델 학습 시작...") + + for fold in range(1, n_folds + 1): + print(f"Fold {fold} 학습 중...") + + # 최적화된 batch_size 사용 + batch_size = best_params.get("batch_size", 64) + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, scaler = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + d_token = best_params["d_token"] + n_heads = best_params.get("n_heads", 8) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=best_params["n_blocks"], + n_heads=n_heads, + attention_dropout=best_params["attention_dropout"], + ffn_dropout=best_params["ffn_dropout"], + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout_first=best_params["dropout_first"], + dropout_second=best_params["dropout_second"], + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout=best_params["dropout"], + num_classes=3 + ).to(device) + else: + raise ValueError(f"Unknown model_choose: {model_choose}") + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=best_params["lr"], weight_decay=best_params["weight_decay"]) + + # 학습률 스케줄러 + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 + epochs = 200 + patience = 12 + best_fold_csi = 0 + counter = 0 + best_model = None + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + best_model = copy.deepcopy(model) + else: + counter += 1 + + if counter >= patience: + print(f" Early stopping at epoch {epoch+1}, Best CSI: {best_fold_csi:.4f}") + break + + if best_model is None: + best_model = model + + scalers.append(scaler) # scaler 저장 (fold 순서대로) + models.append(best_model) + print(f" Fold {fold} 학습 완료 (검증 CSI: {best_fold_csi:.4f})") + + # 모델 저장 경로 설정 + save_dir = f'../save_model/{model_choose}_optima' + os.makedirs(save_dir, exist_ok=True) + + # 파일명 생성 + if data_sample == 'pure': + model_filename = f'{model_choose}_pure_{region}.pkl' + else: + model_filename = f'{model_choose}_{data_sample}_{region}.pkl' + + model_path = f'{save_dir}/{model_filename}' + + # 리스트에 담아 한 번에 저장 + joblib.dump(models, model_path) + print(f"\n모든 모델 저장 완료: {model_path} (총 {len(models)}개 fold)") + + # Scaler 별도 저장 + scaler_save_dir = f'../save_model/{model_choose}_optima/scaler' + os.makedirs(scaler_save_dir, exist_ok=True) + + # 파일명 생성 (모델과 동일한 패턴) + if data_sample == 'pure': + scaler_filename = f'{model_choose}_pure_{region}_scaler.pkl' + else: + scaler_filename = f'{model_choose}_{data_sample}_{region}_scaler.pkl' + + scaler_path = f'{scaler_save_dir}/{scaler_filename}' + joblib.dump(scalers, scaler_path) + print(f"Scaler 저장 완료: {scaler_path} (총 {len(scalers)}개 fold)") + + return model_path diff --git a/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_busan.py b/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..549f966e3b41fe1d98fb3cbf5c044d5a2f15dc5b --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_busan.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="busan", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_smote_busan_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="busan", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_daegu.py b/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..e94405ef5415c679867039729d094aa00c9ff04e --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_daegu.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="daegu", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_smote_daegu_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="daegu", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_daejeon.py b/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..e654c3428ae9ee57f9525e8541728fcf4c95da6e --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_daejeon.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="daejeon", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_smote_daejeon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="daejeon", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_gwangju.py b/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..c884fe0ff568632ff39b58879f25d5d0971e1cff --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_gwangju.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="gwangju", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_smote_gwangju_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="gwangju", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_incheon.py b/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..9994f02c6d9cce4096a0164e66f33a9304128df1 --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_incheon.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="incheon", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_smote_incheon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="incheon", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_seoul.py b/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..0e382a87f007fac0d3e67d2ee398afe94a002ab1 --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_smote/deepgbm_smote_seoul.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="seoul", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_smote_seoul_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="seoul", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_smote/utils.py b/Analysis_code/5.optima/deepgbm_smote/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..43d496ecda4c82ad96e7ed6c5a87409fd31b53cb --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_smote/utils.py @@ -0,0 +1,720 @@ +import torch +import torch.nn as nn +import torch.optim as optim +import numpy as np +import random +import os +import copy +from sklearn.preprocessing import QuantileTransformer, LabelEncoder +from torch.utils.data import DataLoader, TensorDataset +from sklearn.metrics import confusion_matrix +from sklearn.utils.class_weight import compute_class_weight +import pandas as pd +import optuna +from sklearn.metrics import accuracy_score, f1_score +import joblib + + +import sys +# 파일 위치 기반으로 models 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +models_path = os.path.abspath(os.path.join(current_file_dir, '../../models')) +sys.path.insert(0, models_path) +from ft_transformer import FTTransformer +from resnet_like import ResNetLike +from deepgbm import DeepGBM +import warnings +warnings.filterwarnings('ignore') + + +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + +# PyTorch 시드 고정 +torch.manual_seed(seed) +torch.cuda.manual_seed(seed) +torch.cuda.manual_seed_all(seed) # Multi-GPU 환경에서 동일한 시드 적용 + +# PyTorch 연산의 결정적 모드 설정 +torch.backends.cudnn.deterministic = True # 실행마다 동일한 결과를 보장 +torch.backends.cudnn.benchmark = True # 성능 최적화를 활성화 (가능한 한 빠른 연산 수행) + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +# 데이터셋 준비 함수 +def prepare_dataset(region, data_sample='pure', target='multi', fold=3): + + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + return X_train, X_val, X_test, y_train, y_val, y_test, categorical_cols, numerical_cols + + + +# 데이터 변환 및 dataloader 생성 함수 +def prepare_dataloader(region, data_sample='pure', target='multi', fold=3, random_state=None): + + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=64, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader + +# 데이터 변환 및 dataloader 생성 함수 (batch_size 파라미터 추가 버전) +def prepare_dataloader_with_batchsize(region, data_sample='pure', target='multi', fold=3, random_state=None, batch_size=64): + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 (batch_size 파라미터 사용) + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader, y_train, scaler + + +def calculate_csi(y_true, pred): + + cm = confusion_matrix(y_true, pred) # 변수 이름을 cm으로 변경 + # 혼동 행렬에서 H, F, M 추출 + H = (cm[0, 0] + cm[1, 1]) + + F = (cm[1, 0] + cm[2, 0] + + cm[0, 1] + cm[2, 1]) + + M = (cm[0, 2] + cm[1, 2]) + + # CSI 계산 + CSI = H / (H + F + M + 1e-10) + return CSI + +def sample_weight(y_train): + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), # 고유 클래스 + y=y_train # 학습 데이터 레이블 + ) + sample_weights = np.array([class_weights[label] for label in y_train]) + + return sample_weights + +# 하이퍼파라미터 최적화 함수 정의 +def objective(trial, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + val_scores = [] + + # --- 1. 하이퍼파라미터 탐색 범위 정의 (수정됨) --- + if model_choose == "ft_transformer": + d_token = trial.suggest_int("d_token", 64, 256, step=32) + n_blocks = trial.suggest_int("n_blocks", 2, 6) # 깊이 축소로 과적합 방지 + n_heads = trial.suggest_categorical("n_heads", [4, 8]) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + attention_dropout = trial.suggest_float("attention_dropout", 0.1, 0.4) + ffn_dropout = trial.suggest_float("ffn_dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) # 범위 확대 + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'resnet_like': + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 512, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 5) # 너무 깊지 않게 조절 + dropout_first = trial.suggest_float("dropout_first", 0.1, 0.4) + dropout_second = trial.suggest_float("dropout_second", 0.0, 0.2) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'deepgbm': + # DeepGBM의 경우 모델 특성에 맞춰 ResNet 블록 및 임베딩 차원 조절 + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 256, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 6) + dropout = trial.suggest_float("dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + # --- 2. Fold별 학습 및 교차 검증 --- + for fold in range(1, n_folds + 1): + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, _ = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=n_blocks, + n_heads=n_heads, + attention_dropout=attention_dropout, + ffn_dropout=ffn_dropout, + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout_first=dropout_first, + dropout_second=dropout_second, + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout=dropout, + num_classes=3 + ).to(device) + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + # 클래스별 가중치 로그 출력 + unique_classes = np.unique(y_train) + class_counts = {cls: np.sum(y_train == cls) for cls in unique_classes} + print(f" Fold {fold} - 클래스별 가중치: {dict(zip(unique_classes, class_weights))} (클래스별 샘플 수: {class_counts})") + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=lr, weight_decay=weight_decay) + + # 학습률 스케줄러 추가: 성능 정체 시 LR을 0.5배 감소 (검증 CSI 기준) + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 (에폭 및 페이션스 상향) + epochs = 200 + patience = 12 # 딥러닝의 정체 구간을 고려하여 소폭 상향 + best_fold_csi = 0 + counter = 0 + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Optuna Pruning 적용 (첫 번째 Fold에서 조기 종료 판단 강화) + trial.report(val_csi, epoch) + if trial.should_prune(): + raise optuna.exceptions.TrialPruned() + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + else: + counter += 1 + + if counter >= patience: + break + + val_scores.append(best_fold_csi) + + # 모든 fold의 평균 성능 반환 + return np.mean(val_scores) + + +# 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 함수 +def train_final_model(best_params, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + """ + 최적화된 하이퍼파라미터로 최종 모델을 학습하고 저장합니다. + + Args: + best_params: 최적화된 하이퍼파라미터 딕셔너리 + model_choose: 모델 선택 ('ft_transformer', 'resnet_like', 'deepgbm') + region: 지역명 + data_sample: 데이터 샘플 타입 ('pure', 'smote', etc.) + target: 타겟 타입 ('multi', 'binary') + n_folds: 교차 검증 fold 수 + random_state: 랜덤 시드 + + Returns: + 저장된 모델 경로 리스트 + """ + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + + models = [] + scalers = [] # scaler 리스트 추가 + + print("최종 모델 학습 시작...") + + for fold in range(1, n_folds + 1): + print(f"Fold {fold} 학습 중...") + + # 최적화된 batch_size 사용 + batch_size = best_params.get("batch_size", 64) + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, scaler = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + d_token = best_params["d_token"] + n_heads = best_params.get("n_heads", 8) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=best_params["n_blocks"], + n_heads=n_heads, + attention_dropout=best_params["attention_dropout"], + ffn_dropout=best_params["ffn_dropout"], + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout_first=best_params["dropout_first"], + dropout_second=best_params["dropout_second"], + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout=best_params["dropout"], + num_classes=3 + ).to(device) + else: + raise ValueError(f"Unknown model_choose: {model_choose}") + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=best_params["lr"], weight_decay=best_params["weight_decay"]) + + # 학습률 스케줄러 + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 + epochs = 200 + patience = 12 + best_fold_csi = 0 + counter = 0 + best_model = None + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + best_model = copy.deepcopy(model) + else: + counter += 1 + + if counter >= patience: + print(f" Early stopping at epoch {epoch+1}, Best CSI: {best_fold_csi:.4f}") + break + + if best_model is None: + best_model = model + + scalers.append(scaler) # scaler 저장 (fold 순서대로) + models.append(best_model) + print(f" Fold {fold} 학습 완료 (검증 CSI: {best_fold_csi:.4f})") + + # 모델 저장 경로 설정 + save_dir = f'../save_model/{model_choose}_optima' + os.makedirs(save_dir, exist_ok=True) + + # 파일명 생성 + if data_sample == 'pure': + model_filename = f'{model_choose}_pure_{region}.pkl' + else: + model_filename = f'{model_choose}_{data_sample}_{region}.pkl' + + model_path = f'{save_dir}/{model_filename}' + + # 리스트에 담아 한 번에 저장 + joblib.dump(models, model_path) + print(f"\n모든 모델 저장 완료: {model_path} (총 {len(models)}개 fold)") + + # Scaler 별도 저장 + scaler_save_dir = f'../save_model/{model_choose}_optima/scaler' + os.makedirs(scaler_save_dir, exist_ok=True) + + # 파일명 생성 (모델과 동일한 패턴) + if data_sample == 'pure': + scaler_filename = f'{model_choose}_pure_{region}_scaler.pkl' + else: + scaler_filename = f'{model_choose}_{data_sample}_{region}_scaler.pkl' + + scaler_path = f'{scaler_save_dir}/{scaler_filename}' + joblib.dump(scalers, scaler_path) + print(f"Scaler 저장 완료: {scaler_path} (총 {len(scalers)}개 fold)") + + return model_path diff --git a/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_busan.py b/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..640aafcdf78119b9c04799ae3a4c6563b6bb4b33 --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_busan.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="busan", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_smotenc_ctgan20000_busan_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="busan", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_daegu.py b/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..00d24e71bb4c05bc40998662507b952a1d631265 --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_daegu.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="daegu", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_smotenc_ctgan20000_daegu_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="daegu", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_daejeon.py b/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..4bea203a84e23a05c4f275ac19f0e79c1ec9c96c --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_daejeon.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="daejeon", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_smotenc_ctgan20000_daejeon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="daejeon", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_gwangju.py b/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..59aaa9cb7025eb9f1b040690681c1fb9d99938bf --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_gwangju.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="gwangju", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_smotenc_ctgan20000_gwangju_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="gwangju", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_incheon.py b/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..4c2025c32e6449675b41c491a4dc273c65f3e404 --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_incheon.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="incheon", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_smotenc_ctgan20000_incheon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="incheon", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_seoul.py b/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..2d44d9b510bf96604ea636cf2321d9c184eeb570 --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/deepgbm_smotenc_ctgan20000_seoul.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="deepgbm", region="seoul", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/deepgbm_smotenc_ctgan20000_seoul_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="deepgbm", + region="seoul", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/utils.py b/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..43d496ecda4c82ad96e7ed6c5a87409fd31b53cb --- /dev/null +++ b/Analysis_code/5.optima/deepgbm_smotenc_ctgan20000/utils.py @@ -0,0 +1,720 @@ +import torch +import torch.nn as nn +import torch.optim as optim +import numpy as np +import random +import os +import copy +from sklearn.preprocessing import QuantileTransformer, LabelEncoder +from torch.utils.data import DataLoader, TensorDataset +from sklearn.metrics import confusion_matrix +from sklearn.utils.class_weight import compute_class_weight +import pandas as pd +import optuna +from sklearn.metrics import accuracy_score, f1_score +import joblib + + +import sys +# 파일 위치 기반으로 models 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +models_path = os.path.abspath(os.path.join(current_file_dir, '../../models')) +sys.path.insert(0, models_path) +from ft_transformer import FTTransformer +from resnet_like import ResNetLike +from deepgbm import DeepGBM +import warnings +warnings.filterwarnings('ignore') + + +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + +# PyTorch 시드 고정 +torch.manual_seed(seed) +torch.cuda.manual_seed(seed) +torch.cuda.manual_seed_all(seed) # Multi-GPU 환경에서 동일한 시드 적용 + +# PyTorch 연산의 결정적 모드 설정 +torch.backends.cudnn.deterministic = True # 실행마다 동일한 결과를 보장 +torch.backends.cudnn.benchmark = True # 성능 최적화를 활성화 (가능한 한 빠른 연산 수행) + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +# 데이터셋 준비 함수 +def prepare_dataset(region, data_sample='pure', target='multi', fold=3): + + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + return X_train, X_val, X_test, y_train, y_val, y_test, categorical_cols, numerical_cols + + + +# 데이터 변환 및 dataloader 생성 함수 +def prepare_dataloader(region, data_sample='pure', target='multi', fold=3, random_state=None): + + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=64, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader + +# 데이터 변환 및 dataloader 생성 함수 (batch_size 파라미터 추가 버전) +def prepare_dataloader_with_batchsize(region, data_sample='pure', target='multi', fold=3, random_state=None, batch_size=64): + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 (batch_size 파라미터 사용) + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader, y_train, scaler + + +def calculate_csi(y_true, pred): + + cm = confusion_matrix(y_true, pred) # 변수 이름을 cm으로 변경 + # 혼동 행렬에서 H, F, M 추출 + H = (cm[0, 0] + cm[1, 1]) + + F = (cm[1, 0] + cm[2, 0] + + cm[0, 1] + cm[2, 1]) + + M = (cm[0, 2] + cm[1, 2]) + + # CSI 계산 + CSI = H / (H + F + M + 1e-10) + return CSI + +def sample_weight(y_train): + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), # 고유 클래스 + y=y_train # 학습 데이터 레이블 + ) + sample_weights = np.array([class_weights[label] for label in y_train]) + + return sample_weights + +# 하이퍼파라미터 최적화 함수 정의 +def objective(trial, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + val_scores = [] + + # --- 1. 하이퍼파라미터 탐색 범위 정의 (수정됨) --- + if model_choose == "ft_transformer": + d_token = trial.suggest_int("d_token", 64, 256, step=32) + n_blocks = trial.suggest_int("n_blocks", 2, 6) # 깊이 축소로 과적합 방지 + n_heads = trial.suggest_categorical("n_heads", [4, 8]) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + attention_dropout = trial.suggest_float("attention_dropout", 0.1, 0.4) + ffn_dropout = trial.suggest_float("ffn_dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) # 범위 확대 + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'resnet_like': + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 512, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 5) # 너무 깊지 않게 조절 + dropout_first = trial.suggest_float("dropout_first", 0.1, 0.4) + dropout_second = trial.suggest_float("dropout_second", 0.0, 0.2) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'deepgbm': + # DeepGBM의 경우 모델 특성에 맞춰 ResNet 블록 및 임베딩 차원 조절 + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 256, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 6) + dropout = trial.suggest_float("dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + # --- 2. Fold별 학습 및 교차 검증 --- + for fold in range(1, n_folds + 1): + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, _ = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=n_blocks, + n_heads=n_heads, + attention_dropout=attention_dropout, + ffn_dropout=ffn_dropout, + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout_first=dropout_first, + dropout_second=dropout_second, + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout=dropout, + num_classes=3 + ).to(device) + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + # 클래스별 가중치 로그 출력 + unique_classes = np.unique(y_train) + class_counts = {cls: np.sum(y_train == cls) for cls in unique_classes} + print(f" Fold {fold} - 클래스별 가중치: {dict(zip(unique_classes, class_weights))} (클래스별 샘플 수: {class_counts})") + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=lr, weight_decay=weight_decay) + + # 학습률 스케줄러 추가: 성능 정체 시 LR을 0.5배 감소 (검증 CSI 기준) + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 (에폭 및 페이션스 상향) + epochs = 200 + patience = 12 # 딥러닝의 정체 구간을 고려하여 소폭 상향 + best_fold_csi = 0 + counter = 0 + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Optuna Pruning 적용 (첫 번째 Fold에서 조기 종료 판단 강화) + trial.report(val_csi, epoch) + if trial.should_prune(): + raise optuna.exceptions.TrialPruned() + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + else: + counter += 1 + + if counter >= patience: + break + + val_scores.append(best_fold_csi) + + # 모든 fold의 평균 성능 반환 + return np.mean(val_scores) + + +# 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 함수 +def train_final_model(best_params, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + """ + 최적화된 하이퍼파라미터로 최종 모델을 학습하고 저장합니다. + + Args: + best_params: 최적화된 하이퍼파라미터 딕셔너리 + model_choose: 모델 선택 ('ft_transformer', 'resnet_like', 'deepgbm') + region: 지역명 + data_sample: 데이터 샘플 타입 ('pure', 'smote', etc.) + target: 타겟 타입 ('multi', 'binary') + n_folds: 교차 검증 fold 수 + random_state: 랜덤 시드 + + Returns: + 저장된 모델 경로 리스트 + """ + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + + models = [] + scalers = [] # scaler 리스트 추가 + + print("최종 모델 학습 시작...") + + for fold in range(1, n_folds + 1): + print(f"Fold {fold} 학습 중...") + + # 최적화된 batch_size 사용 + batch_size = best_params.get("batch_size", 64) + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, scaler = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + d_token = best_params["d_token"] + n_heads = best_params.get("n_heads", 8) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=best_params["n_blocks"], + n_heads=n_heads, + attention_dropout=best_params["attention_dropout"], + ffn_dropout=best_params["ffn_dropout"], + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout_first=best_params["dropout_first"], + dropout_second=best_params["dropout_second"], + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout=best_params["dropout"], + num_classes=3 + ).to(device) + else: + raise ValueError(f"Unknown model_choose: {model_choose}") + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=best_params["lr"], weight_decay=best_params["weight_decay"]) + + # 학습률 스케줄러 + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 + epochs = 200 + patience = 12 + best_fold_csi = 0 + counter = 0 + best_model = None + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + best_model = copy.deepcopy(model) + else: + counter += 1 + + if counter >= patience: + print(f" Early stopping at epoch {epoch+1}, Best CSI: {best_fold_csi:.4f}") + break + + if best_model is None: + best_model = model + + scalers.append(scaler) # scaler 저장 (fold 순서대로) + models.append(best_model) + print(f" Fold {fold} 학습 완료 (검증 CSI: {best_fold_csi:.4f})") + + # 모델 저장 경로 설정 + save_dir = f'../save_model/{model_choose}_optima' + os.makedirs(save_dir, exist_ok=True) + + # 파일명 생성 + if data_sample == 'pure': + model_filename = f'{model_choose}_pure_{region}.pkl' + else: + model_filename = f'{model_choose}_{data_sample}_{region}.pkl' + + model_path = f'{save_dir}/{model_filename}' + + # 리스트에 담아 한 번에 저장 + joblib.dump(models, model_path) + print(f"\n모든 모델 저장 완료: {model_path} (총 {len(models)}개 fold)") + + # Scaler 별도 저장 + scaler_save_dir = f'../save_model/{model_choose}_optima/scaler' + os.makedirs(scaler_save_dir, exist_ok=True) + + # 파일명 생성 (모델과 동일한 패턴) + if data_sample == 'pure': + scaler_filename = f'{model_choose}_pure_{region}_scaler.pkl' + else: + scaler_filename = f'{model_choose}_{data_sample}_{region}_scaler.pkl' + + scaler_path = f'{scaler_save_dir}/{scaler_filename}' + joblib.dump(scalers, scaler_path) + print(f"Scaler 저장 완료: {scaler_path} (총 {len(scalers)}개 fold)") + + return model_path diff --git a/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_busan.py b/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..4553ed82192d3d57fec55b5875dd506b9710d12c --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_busan.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="busan"), + n_trials=100, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_pure_busan_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="busan", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) \ No newline at end of file diff --git a/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_daegu.py b/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..414e2d3073cb96f541452f71c6f3fb747e2dc8c8 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_daegu.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="daegu"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_pure_daegu_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="daegu", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_daejeon.py b/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..e3aef1c3fe9b16de324b798ff54e15116dcc84b8 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_daejeon.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="daejeon"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_pure_daejeon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="daejeon", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_gwangju.py b/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..5da9a6af927bebfb5ff5ae85830e04adabbf20f3 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_gwangju.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="gwangju"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_pure_gwangju_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="gwangju", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_incheon.py b/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..7137c1d413d0ae851eb9a7f7756a224d6571ed71 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_incheon.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="incheon"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_pure_incheon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="incheon", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_seoul.py b/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..7ae0e86fcd579dfb52dbc963cdb35bf901c92396 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_pure/ft_transforemer_pure_seoul.py @@ -0,0 +1,98 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="seoul"), + n_trials=100, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_pure_seoul_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="seoul", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_pure/utils.py b/Analysis_code/5.optima/ft_transformer_pure/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..43d496ecda4c82ad96e7ed6c5a87409fd31b53cb --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_pure/utils.py @@ -0,0 +1,720 @@ +import torch +import torch.nn as nn +import torch.optim as optim +import numpy as np +import random +import os +import copy +from sklearn.preprocessing import QuantileTransformer, LabelEncoder +from torch.utils.data import DataLoader, TensorDataset +from sklearn.metrics import confusion_matrix +from sklearn.utils.class_weight import compute_class_weight +import pandas as pd +import optuna +from sklearn.metrics import accuracy_score, f1_score +import joblib + + +import sys +# 파일 위치 기반으로 models 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +models_path = os.path.abspath(os.path.join(current_file_dir, '../../models')) +sys.path.insert(0, models_path) +from ft_transformer import FTTransformer +from resnet_like import ResNetLike +from deepgbm import DeepGBM +import warnings +warnings.filterwarnings('ignore') + + +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + +# PyTorch 시드 고정 +torch.manual_seed(seed) +torch.cuda.manual_seed(seed) +torch.cuda.manual_seed_all(seed) # Multi-GPU 환경에서 동일한 시드 적용 + +# PyTorch 연산의 결정적 모드 설정 +torch.backends.cudnn.deterministic = True # 실행마다 동일한 결과를 보장 +torch.backends.cudnn.benchmark = True # 성능 최적화를 활성화 (가능한 한 빠른 연산 수행) + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +# 데이터셋 준비 함수 +def prepare_dataset(region, data_sample='pure', target='multi', fold=3): + + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + return X_train, X_val, X_test, y_train, y_val, y_test, categorical_cols, numerical_cols + + + +# 데이터 변환 및 dataloader 생성 함수 +def prepare_dataloader(region, data_sample='pure', target='multi', fold=3, random_state=None): + + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=64, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader + +# 데이터 변환 및 dataloader 생성 함수 (batch_size 파라미터 추가 버전) +def prepare_dataloader_with_batchsize(region, data_sample='pure', target='multi', fold=3, random_state=None, batch_size=64): + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 (batch_size 파라미터 사용) + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader, y_train, scaler + + +def calculate_csi(y_true, pred): + + cm = confusion_matrix(y_true, pred) # 변수 이름을 cm으로 변경 + # 혼동 행렬에서 H, F, M 추출 + H = (cm[0, 0] + cm[1, 1]) + + F = (cm[1, 0] + cm[2, 0] + + cm[0, 1] + cm[2, 1]) + + M = (cm[0, 2] + cm[1, 2]) + + # CSI 계산 + CSI = H / (H + F + M + 1e-10) + return CSI + +def sample_weight(y_train): + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), # 고유 클래스 + y=y_train # 학습 데이터 레이블 + ) + sample_weights = np.array([class_weights[label] for label in y_train]) + + return sample_weights + +# 하이퍼파라미터 최적화 함수 정의 +def objective(trial, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + val_scores = [] + + # --- 1. 하이퍼파라미터 탐색 범위 정의 (수정됨) --- + if model_choose == "ft_transformer": + d_token = trial.suggest_int("d_token", 64, 256, step=32) + n_blocks = trial.suggest_int("n_blocks", 2, 6) # 깊이 축소로 과적합 방지 + n_heads = trial.suggest_categorical("n_heads", [4, 8]) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + attention_dropout = trial.suggest_float("attention_dropout", 0.1, 0.4) + ffn_dropout = trial.suggest_float("ffn_dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) # 범위 확대 + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'resnet_like': + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 512, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 5) # 너무 깊지 않게 조절 + dropout_first = trial.suggest_float("dropout_first", 0.1, 0.4) + dropout_second = trial.suggest_float("dropout_second", 0.0, 0.2) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'deepgbm': + # DeepGBM의 경우 모델 특성에 맞춰 ResNet 블록 및 임베딩 차원 조절 + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 256, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 6) + dropout = trial.suggest_float("dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + # --- 2. Fold별 학습 및 교차 검증 --- + for fold in range(1, n_folds + 1): + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, _ = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=n_blocks, + n_heads=n_heads, + attention_dropout=attention_dropout, + ffn_dropout=ffn_dropout, + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout_first=dropout_first, + dropout_second=dropout_second, + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout=dropout, + num_classes=3 + ).to(device) + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + # 클래스별 가중치 로그 출력 + unique_classes = np.unique(y_train) + class_counts = {cls: np.sum(y_train == cls) for cls in unique_classes} + print(f" Fold {fold} - 클래스별 가중치: {dict(zip(unique_classes, class_weights))} (클래스별 샘플 수: {class_counts})") + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=lr, weight_decay=weight_decay) + + # 학습률 스케줄러 추가: 성능 정체 시 LR을 0.5배 감소 (검증 CSI 기준) + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 (에폭 및 페이션스 상향) + epochs = 200 + patience = 12 # 딥러닝의 정체 구간을 고려하여 소폭 상향 + best_fold_csi = 0 + counter = 0 + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Optuna Pruning 적용 (첫 번째 Fold에서 조기 종료 판단 강화) + trial.report(val_csi, epoch) + if trial.should_prune(): + raise optuna.exceptions.TrialPruned() + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + else: + counter += 1 + + if counter >= patience: + break + + val_scores.append(best_fold_csi) + + # 모든 fold의 평균 성능 반환 + return np.mean(val_scores) + + +# 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 함수 +def train_final_model(best_params, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + """ + 최적화된 하이퍼파라미터로 최종 모델을 학습하고 저장합니다. + + Args: + best_params: 최적화된 하이퍼파라미터 딕셔너리 + model_choose: 모델 선택 ('ft_transformer', 'resnet_like', 'deepgbm') + region: 지역명 + data_sample: 데이터 샘플 타입 ('pure', 'smote', etc.) + target: 타겟 타입 ('multi', 'binary') + n_folds: 교차 검증 fold 수 + random_state: 랜덤 시드 + + Returns: + 저장된 모델 경로 리스트 + """ + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + + models = [] + scalers = [] # scaler 리스트 추가 + + print("최종 모델 학습 시작...") + + for fold in range(1, n_folds + 1): + print(f"Fold {fold} 학습 중...") + + # 최적화된 batch_size 사용 + batch_size = best_params.get("batch_size", 64) + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, scaler = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + d_token = best_params["d_token"] + n_heads = best_params.get("n_heads", 8) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=best_params["n_blocks"], + n_heads=n_heads, + attention_dropout=best_params["attention_dropout"], + ffn_dropout=best_params["ffn_dropout"], + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout_first=best_params["dropout_first"], + dropout_second=best_params["dropout_second"], + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout=best_params["dropout"], + num_classes=3 + ).to(device) + else: + raise ValueError(f"Unknown model_choose: {model_choose}") + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=best_params["lr"], weight_decay=best_params["weight_decay"]) + + # 학습률 스케줄러 + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 + epochs = 200 + patience = 12 + best_fold_csi = 0 + counter = 0 + best_model = None + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + best_model = copy.deepcopy(model) + else: + counter += 1 + + if counter >= patience: + print(f" Early stopping at epoch {epoch+1}, Best CSI: {best_fold_csi:.4f}") + break + + if best_model is None: + best_model = model + + scalers.append(scaler) # scaler 저장 (fold 순서대로) + models.append(best_model) + print(f" Fold {fold} 학습 완료 (검증 CSI: {best_fold_csi:.4f})") + + # 모델 저장 경로 설정 + save_dir = f'../save_model/{model_choose}_optima' + os.makedirs(save_dir, exist_ok=True) + + # 파일명 생성 + if data_sample == 'pure': + model_filename = f'{model_choose}_pure_{region}.pkl' + else: + model_filename = f'{model_choose}_{data_sample}_{region}.pkl' + + model_path = f'{save_dir}/{model_filename}' + + # 리스트에 담아 한 번에 저장 + joblib.dump(models, model_path) + print(f"\n모든 모델 저장 완료: {model_path} (총 {len(models)}개 fold)") + + # Scaler 별도 저장 + scaler_save_dir = f'../save_model/{model_choose}_optima/scaler' + os.makedirs(scaler_save_dir, exist_ok=True) + + # 파일명 생성 (모델과 동일한 패턴) + if data_sample == 'pure': + scaler_filename = f'{model_choose}_pure_{region}_scaler.pkl' + else: + scaler_filename = f'{model_choose}_{data_sample}_{region}_scaler.pkl' + + scaler_path = f'{scaler_save_dir}/{scaler_filename}' + joblib.dump(scalers, scaler_path) + print(f"Scaler 저장 완료: {scaler_path} (총 {len(scalers)}개 fold)") + + return model_path diff --git a/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_busan.py b/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..f26b4feb5e029a551a8acb39c54e1d458816f3e6 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_busan.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="busan", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_smote_busan_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="busan", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_daegu.py b/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..808de3e542291050e32240703a84a3be867ff475 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_daegu.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="daegu", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_smote_daegu_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="daegu", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_daejeon.py b/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..90b547efe981778dfd3293401bbf5d2253ab01b3 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_daejeon.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="daejeon", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_smote_daejeon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="daejeon", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_gwangju.py b/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..cc894d8ba961502c120c42ff404b27925901b3b3 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_gwangju.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="gwangju", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_smote_gwangju_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="gwangju", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_incheon.py b/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..839b1aa6ff7b2eca606bf7719e1f795e3e4d2151 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_incheon.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="incheon", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_smote_incheon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="incheon", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_seoul.py b/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..29075b44a948ec3916438d2e3b9621bfb3911494 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_smote/ft_transformer_smote_seoul.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="seoul", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_smote_seoul_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="seoul", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_smote/utils.py b/Analysis_code/5.optima/ft_transformer_smote/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..3f4f4d793d54387f8f7ea639fbad36de0622fb51 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_smote/utils.py @@ -0,0 +1,719 @@ +import torch +import torch.nn as nn +import torch.optim as optim +import numpy as np +import random +import os +import copy +from sklearn.preprocessing import QuantileTransformer, LabelEncoder +from torch.utils.data import DataLoader, TensorDataset +from sklearn.metrics import confusion_matrix +from sklearn.utils.class_weight import compute_class_weight +import pandas as pd +import optuna +from sklearn.metrics import accuracy_score, f1_score +import joblib + + +import sys +# 파일 위치 기반으로 models 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +models_path = os.path.abspath(os.path.join(current_file_dir, '../../models')) +sys.path.insert(0, models_path) +from ft_transformer import FTTransformer +from resnet_like import ResNetLike +from deepgbm import DeepGBM +import warnings +warnings.filterwarnings('ignore') + +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + +# PyTorch 시드 고정 +torch.manual_seed(seed) +torch.cuda.manual_seed(seed) +torch.cuda.manual_seed_all(seed) # Multi-GPU 환경에서 동일한 시드 적용 + +# PyTorch 연산의 결정적 모드 설정 +torch.backends.cudnn.deterministic = True # 실행마다 동일한 결과를 보장 +torch.backends.cudnn.benchmark = True # 성능 최적화를 활성화 (가능한 한 빠른 연산 수행) + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +# 데이터셋 준비 함수 +def prepare_dataset(region, data_sample='pure', target='multi', fold=3): + + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + return X_train, X_val, X_test, y_train, y_val, y_test, categorical_cols, numerical_cols + + + +# 데이터 변환 및 dataloader 생성 함수 +def prepare_dataloader(region, data_sample='pure', target='multi', fold=3, random_state=None): + + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=64, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader + +# 데이터 변환 및 dataloader 생성 함수 (batch_size 파라미터 추가 버전) +def prepare_dataloader_with_batchsize(region, data_sample='pure', target='multi', fold=3, random_state=None, batch_size=64): + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 (batch_size 파라미터 사용) + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader, y_train, scaler + + +def calculate_csi(y_true, pred): + + cm = confusion_matrix(y_true, pred) # 변수 이름을 cm으로 변경 + # 혼동 행렬에서 H, F, M 추출 + H = (cm[0, 0] + cm[1, 1]) + + F = (cm[1, 0] + cm[2, 0] + + cm[0, 1] + cm[2, 1]) + + M = (cm[0, 2] + cm[1, 2]) + + # CSI 계산 + CSI = H / (H + F + M + 1e-10) + return CSI + +def sample_weight(y_train): + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), # 고유 클래스 + y=y_train # 학습 데이터 레이블 + ) + sample_weights = np.array([class_weights[label] for label in y_train]) + + return sample_weights + +# 하이퍼파라미터 최적화 함수 정의 +def objective(trial, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + val_scores = [] + + # --- 1. 하이퍼파라미터 탐색 범위 정의 (수정됨) --- + if model_choose == "ft_transformer": + d_token = trial.suggest_int("d_token", 64, 256, step=32) + n_blocks = trial.suggest_int("n_blocks", 2, 6) # 깊이 축소로 과적합 방지 + n_heads = trial.suggest_categorical("n_heads", [4, 8]) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + attention_dropout = trial.suggest_float("attention_dropout", 0.1, 0.4) + ffn_dropout = trial.suggest_float("ffn_dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) # 범위 확대 + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'resnet_like': + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 512, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 5) # 너무 깊지 않게 조절 + dropout_first = trial.suggest_float("dropout_first", 0.1, 0.4) + dropout_second = trial.suggest_float("dropout_second", 0.0, 0.2) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'deepgbm': + # DeepGBM의 경우 모델 특성에 맞춰 ResNet 블록 및 임베딩 차원 조절 + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 256, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 6) + dropout = trial.suggest_float("dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + # --- 2. Fold별 학습 및 교차 검증 --- + for fold in range(1, n_folds + 1): + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, _ = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=n_blocks, + n_heads=n_heads, + attention_dropout=attention_dropout, + ffn_dropout=ffn_dropout, + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout_first=dropout_first, + dropout_second=dropout_second, + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout=dropout, + num_classes=3 + ).to(device) + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + # 클래스별 가중치 로그 출력 + unique_classes = np.unique(y_train) + class_counts = {cls: np.sum(y_train == cls) for cls in unique_classes} + print(f" Fold {fold} - 클래스별 가중치: {dict(zip(unique_classes, class_weights))} (클래스별 샘플 수: {class_counts})") + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=lr, weight_decay=weight_decay) + + # 학습률 스케줄러 추가: 성능 정체 시 LR을 0.5배 감소 (검증 CSI 기준) + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 (에폭 및 페이션스 상향) + epochs = 200 + patience = 12 # 딥러닝의 정체 구간을 고려하여 소폭 상향 + best_fold_csi = 0 + counter = 0 + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Optuna Pruning 적용 (첫 번째 Fold에서 조기 종료 판단 강화) + trial.report(val_csi, epoch) + if trial.should_prune(): + raise optuna.exceptions.TrialPruned() + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + else: + counter += 1 + + if counter >= patience: + break + + val_scores.append(best_fold_csi) + + # 모든 fold의 평균 성능 반환 + return np.mean(val_scores) + + +# 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 함수 +def train_final_model(best_params, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + """ + 최적화된 하이퍼파라미터로 최종 모델을 학습하고 저장합니다. + + Args: + best_params: 최적화된 하이퍼파라미터 딕셔너리 + model_choose: 모델 선택 ('ft_transformer', 'resnet_like', 'deepgbm') + region: 지역명 + data_sample: 데이터 샘플 타입 ('pure', 'smote', etc.) + target: 타겟 타입 ('multi', 'binary') + n_folds: 교차 검증 fold 수 + random_state: 랜덤 시드 + + Returns: + 저장된 모델 경로 리스트 + """ + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + + models = [] + scalers = [] # scaler 리스트 추가 + + print("최종 모델 학습 시작...") + + for fold in range(1, n_folds + 1): + print(f"Fold {fold} 학습 중...") + + # 최적화된 batch_size 사용 + batch_size = best_params.get("batch_size", 64) + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, scaler = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + d_token = best_params["d_token"] + n_heads = best_params.get("n_heads", 8) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=best_params["n_blocks"], + n_heads=n_heads, + attention_dropout=best_params["attention_dropout"], + ffn_dropout=best_params["ffn_dropout"], + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout_first=best_params["dropout_first"], + dropout_second=best_params["dropout_second"], + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout=best_params["dropout"], + num_classes=3 + ).to(device) + else: + raise ValueError(f"Unknown model_choose: {model_choose}") + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=best_params["lr"], weight_decay=best_params["weight_decay"]) + + # 학습률 스케줄러 + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 + epochs = 200 + patience = 12 + best_fold_csi = 0 + counter = 0 + best_model = None + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + best_model = copy.deepcopy(model) + else: + counter += 1 + + if counter >= patience: + print(f" Early stopping at epoch {epoch+1}, Best CSI: {best_fold_csi:.4f}") + break + + if best_model is None: + best_model = model + + scalers.append(scaler) # scaler 저장 (fold 순서대로) + models.append(best_model) + print(f" Fold {fold} 학습 완료 (검증 CSI: {best_fold_csi:.4f})") + + # 모델 저장 경로 설정 + save_dir = f'../save_model/{model_choose}_optima' + os.makedirs(save_dir, exist_ok=True) + + # 파일명 생성 + if data_sample == 'pure': + model_filename = f'{model_choose}_pure_{region}.pkl' + else: + model_filename = f'{model_choose}_{data_sample}_{region}.pkl' + + model_path = f'{save_dir}/{model_filename}' + + # 리스트에 담아 한 번에 저장 + joblib.dump(models, model_path) + print(f"\n모든 모델 저장 완료: {model_path} (총 {len(models)}개 fold)") + + # Scaler 별도 저장 + scaler_save_dir = f'../save_model/{model_choose}_optima/scaler' + os.makedirs(scaler_save_dir, exist_ok=True) + + # 파일명 생성 (모델과 동일한 패턴) + if data_sample == 'pure': + scaler_filename = f'{model_choose}_pure_{region}_scaler.pkl' + else: + scaler_filename = f'{model_choose}_{data_sample}_{region}_scaler.pkl' + + scaler_path = f'{scaler_save_dir}/{scaler_filename}' + joblib.dump(scalers, scaler_path) + print(f"Scaler 저장 완료: {scaler_path} (총 {len(scalers)}개 fold)") + + return model_path diff --git a/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_busan.py b/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..313029939803c0ca4ade0e8a6cdfb4a148d3f532 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_busan.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="busan", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_smotenc_ctgan20000_busan_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="busan", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_daegu.py b/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..0cf613aa2d2a210467fc6aeeca6cb1d09bf96304 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_daegu.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="daegu", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_smotenc_ctgan20000_daegu_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="daegu", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_daejeon.py b/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..79a542533ff136265031773eb8f83fc015361f50 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_daejeon.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="daejeon", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_smotenc_ctgan20000_daejeon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="daejeon", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_gwangju.py b/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..44836964afa35e1c9781bca01fd9dd0a34ed2ac9 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_gwangju.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="gwangju", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_smotenc_ctgan20000_gwangju_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="gwangju", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_incheon.py b/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..ba7183d189aee81011734f08615983b0f47de953 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_incheon.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="incheon", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_smotenc_ctgan20000_incheon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="incheon", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_seoul.py b/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..c07bf7922bb0f2fe701cb2ecd0fd8007f23a6350 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/ft_transformer_smotenc_ctgan20000_seoul.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="ft_transformer", region="seoul", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/ft_transformer_smotenc_ctgan20000_seoul_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="ft_transformer", + region="seoul", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/utils.py b/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..3f4f4d793d54387f8f7ea639fbad36de0622fb51 --- /dev/null +++ b/Analysis_code/5.optima/ft_transformer_smotenc_ctgan20000/utils.py @@ -0,0 +1,719 @@ +import torch +import torch.nn as nn +import torch.optim as optim +import numpy as np +import random +import os +import copy +from sklearn.preprocessing import QuantileTransformer, LabelEncoder +from torch.utils.data import DataLoader, TensorDataset +from sklearn.metrics import confusion_matrix +from sklearn.utils.class_weight import compute_class_weight +import pandas as pd +import optuna +from sklearn.metrics import accuracy_score, f1_score +import joblib + + +import sys +# 파일 위치 기반으로 models 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +models_path = os.path.abspath(os.path.join(current_file_dir, '../../models')) +sys.path.insert(0, models_path) +from ft_transformer import FTTransformer +from resnet_like import ResNetLike +from deepgbm import DeepGBM +import warnings +warnings.filterwarnings('ignore') + +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + +# PyTorch 시드 고정 +torch.manual_seed(seed) +torch.cuda.manual_seed(seed) +torch.cuda.manual_seed_all(seed) # Multi-GPU 환경에서 동일한 시드 적용 + +# PyTorch 연산의 결정적 모드 설정 +torch.backends.cudnn.deterministic = True # 실행마다 동일한 결과를 보장 +torch.backends.cudnn.benchmark = True # 성능 최적화를 활성화 (가능한 한 빠른 연산 수행) + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +# 데이터셋 준비 함수 +def prepare_dataset(region, data_sample='pure', target='multi', fold=3): + + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + return X_train, X_val, X_test, y_train, y_val, y_test, categorical_cols, numerical_cols + + + +# 데이터 변환 및 dataloader 생성 함수 +def prepare_dataloader(region, data_sample='pure', target='multi', fold=3, random_state=None): + + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=64, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader + +# 데이터 변환 및 dataloader 생성 함수 (batch_size 파라미터 추가 버전) +def prepare_dataloader_with_batchsize(region, data_sample='pure', target='multi', fold=3, random_state=None, batch_size=64): + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 (batch_size 파라미터 사용) + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader, y_train, scaler + + +def calculate_csi(y_true, pred): + + cm = confusion_matrix(y_true, pred) # 변수 이름을 cm으로 변경 + # 혼동 행렬에서 H, F, M 추출 + H = (cm[0, 0] + cm[1, 1]) + + F = (cm[1, 0] + cm[2, 0] + + cm[0, 1] + cm[2, 1]) + + M = (cm[0, 2] + cm[1, 2]) + + # CSI 계산 + CSI = H / (H + F + M + 1e-10) + return CSI + +def sample_weight(y_train): + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), # 고유 클래스 + y=y_train # 학습 데이터 레이블 + ) + sample_weights = np.array([class_weights[label] for label in y_train]) + + return sample_weights + +# 하이퍼파라미터 최적화 함수 정의 +def objective(trial, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + val_scores = [] + + # --- 1. 하이퍼파라미터 탐색 범위 정의 (수정됨) --- + if model_choose == "ft_transformer": + d_token = trial.suggest_int("d_token", 64, 256, step=32) + n_blocks = trial.suggest_int("n_blocks", 2, 6) # 깊이 축소로 과적합 방지 + n_heads = trial.suggest_categorical("n_heads", [4, 8]) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + attention_dropout = trial.suggest_float("attention_dropout", 0.1, 0.4) + ffn_dropout = trial.suggest_float("ffn_dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) # 범위 확대 + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'resnet_like': + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 512, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 5) # 너무 깊지 않게 조절 + dropout_first = trial.suggest_float("dropout_first", 0.1, 0.4) + dropout_second = trial.suggest_float("dropout_second", 0.0, 0.2) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'deepgbm': + # DeepGBM의 경우 모델 특성에 맞춰 ResNet 블록 및 임베딩 차원 조절 + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 256, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 6) + dropout = trial.suggest_float("dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + # --- 2. Fold별 학습 및 교차 검증 --- + for fold in range(1, n_folds + 1): + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, _ = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=n_blocks, + n_heads=n_heads, + attention_dropout=attention_dropout, + ffn_dropout=ffn_dropout, + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout_first=dropout_first, + dropout_second=dropout_second, + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout=dropout, + num_classes=3 + ).to(device) + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + # 클래스별 가중치 로그 출력 + unique_classes = np.unique(y_train) + class_counts = {cls: np.sum(y_train == cls) for cls in unique_classes} + print(f" Fold {fold} - 클래스별 가중치: {dict(zip(unique_classes, class_weights))} (클래스별 샘플 수: {class_counts})") + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=lr, weight_decay=weight_decay) + + # 학습률 스케줄러 추가: 성능 정체 시 LR을 0.5배 감소 (검증 CSI 기준) + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 (에폭 및 페이션스 상향) + epochs = 200 + patience = 12 # 딥러닝의 정체 구간을 고려하여 소폭 상향 + best_fold_csi = 0 + counter = 0 + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Optuna Pruning 적용 (첫 번째 Fold에서 조기 종료 판단 강화) + trial.report(val_csi, epoch) + if trial.should_prune(): + raise optuna.exceptions.TrialPruned() + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + else: + counter += 1 + + if counter >= patience: + break + + val_scores.append(best_fold_csi) + + # 모든 fold의 평균 성능 반환 + return np.mean(val_scores) + + +# 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 함수 +def train_final_model(best_params, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + """ + 최적화된 하이퍼파라미터로 최종 모델을 학습하고 저장합니다. + + Args: + best_params: 최적화된 하이퍼파라미터 딕셔너리 + model_choose: 모델 선택 ('ft_transformer', 'resnet_like', 'deepgbm') + region: 지역명 + data_sample: 데이터 샘플 타입 ('pure', 'smote', etc.) + target: 타겟 타입 ('multi', 'binary') + n_folds: 교차 검증 fold 수 + random_state: 랜덤 시드 + + Returns: + 저장된 모델 경로 리스트 + """ + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + + models = [] + scalers = [] # scaler 리스트 추가 + + print("최종 모델 학습 시작...") + + for fold in range(1, n_folds + 1): + print(f"Fold {fold} 학습 중...") + + # 최적화된 batch_size 사용 + batch_size = best_params.get("batch_size", 64) + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, scaler = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + d_token = best_params["d_token"] + n_heads = best_params.get("n_heads", 8) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=best_params["n_blocks"], + n_heads=n_heads, + attention_dropout=best_params["attention_dropout"], + ffn_dropout=best_params["ffn_dropout"], + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout_first=best_params["dropout_first"], + dropout_second=best_params["dropout_second"], + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout=best_params["dropout"], + num_classes=3 + ).to(device) + else: + raise ValueError(f"Unknown model_choose: {model_choose}") + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=best_params["lr"], weight_decay=best_params["weight_decay"]) + + # 학습률 스케줄러 + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 + epochs = 200 + patience = 12 + best_fold_csi = 0 + counter = 0 + best_model = None + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + best_model = copy.deepcopy(model) + else: + counter += 1 + + if counter >= patience: + print(f" Early stopping at epoch {epoch+1}, Best CSI: {best_fold_csi:.4f}") + break + + if best_model is None: + best_model = model + + scalers.append(scaler) # scaler 저장 (fold 순서대로) + models.append(best_model) + print(f" Fold {fold} 학습 완료 (검증 CSI: {best_fold_csi:.4f})") + + # 모델 저장 경로 설정 + save_dir = f'../save_model/{model_choose}_optima' + os.makedirs(save_dir, exist_ok=True) + + # 파일명 생성 + if data_sample == 'pure': + model_filename = f'{model_choose}_pure_{region}.pkl' + else: + model_filename = f'{model_choose}_{data_sample}_{region}.pkl' + + model_path = f'{save_dir}/{model_filename}' + + # 리스트에 담아 한 번에 저장 + joblib.dump(models, model_path) + print(f"\n모든 모델 저장 완료: {model_path} (총 {len(models)}개 fold)") + + # Scaler 별도 저장 + scaler_save_dir = f'../save_model/{model_choose}_optima/scaler' + os.makedirs(scaler_save_dir, exist_ok=True) + + # 파일명 생성 (모델과 동일한 패턴) + if data_sample == 'pure': + scaler_filename = f'{model_choose}_pure_{region}_scaler.pkl' + else: + scaler_filename = f'{model_choose}_{data_sample}_{region}_scaler.pkl' + + scaler_path = f'{scaler_save_dir}/{scaler_filename}' + joblib.dump(scalers, scaler_path) + print(f"Scaler 저장 완료: {scaler_path} (총 {len(scalers)}개 fold)") + + return model_path diff --git a/Analysis_code/5.optima/lgb_ctgan10000/LGB_ctgan10000_busan.py b/Analysis_code/5.optima/lgb_ctgan10000/LGB_ctgan10000_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..47acd0a69908453923c69724197875a9f8ddd16c --- /dev/null +++ b/Analysis_code/5.optima/lgb_ctgan10000/LGB_ctgan10000_busan.py @@ -0,0 +1,316 @@ +import pandas as pd +import numpy as np +import joblib +import os +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_busan = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/busan_train.csv")) +df_ctgan_busan_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/ctgan10000/ctgan10000_1_busan.csv")) +df_ctgan_busan_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/ctgan10000/ctgan10000_2_busan.csv")) +df_ctgan_busan_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/ctgan10000/ctgan10000_3_busan.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_ctgan_busan_1 = preprocessing(df_ctgan_busan_1) +df_ctgan_busan_2 = preprocessing(df_ctgan_busan_2) +df_ctgan_busan_3 = preprocessing(df_ctgan_busan_3) +df_busan = preprocessing(df_busan) + +# CTGAN 데이터 리스트 (fold 순서와 일치) +df_ctgan_list = [df_ctgan_busan_1, df_ctgan_busan_2, df_ctgan_busan_3] + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_ctgan, (train_years, val_year) in zip(df_ctgan_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_ctgan, df_busan, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {lgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +import os +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/lgb_ctgan10000_busan_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_ctgan, (train_years, val_year)) in enumerate( + zip(df_ctgan_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_ctgan, df_busan, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_ctgan10000_busan.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + diff --git a/Analysis_code/5.optima/lgb_pure/LGB_pure_busan.py b/Analysis_code/5.optima/lgb_pure/LGB_pure_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..0867072990c60cfc605569f0840f5f4a35f70a59 --- /dev/null +++ b/Analysis_code/5.optima/lgb_pure/LGB_pure_busan.py @@ -0,0 +1,359 @@ + +import pandas as pd +import numpy as np +import joblib +import os +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# GPU 사용 가능 여부 캐시 (한 번만 확인) +_GPU_AVAILABLE = None + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data_pure(df_original, train_years, val_year): + """Pure 데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 원본 데이터에서 train_years에 해당하는 데이터 + train_mask = df_original['year'].isin(train_years) + X_train = df_original.loc[train_mask, df_original.columns != 'multi_class'].copy() + y_train = df_original.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def check_gpu_available(): + """OpenCL GPU 디바이스가 사용 가능한지 확인합니다 (캐시된 결과 사용). + + Returns: + bool: GPU 사용 가능 여부 + """ + global _GPU_AVAILABLE + + # 캐시된 결과가 있으면 재사용 + if _GPU_AVAILABLE is not None: + return _GPU_AVAILABLE + + if DEVICE != 'gpu': + _GPU_AVAILABLE = False + return False + + # LightGBM이 GPU를 사용할 수 있는지 테스트 + try: + import lightgbm as lgb + import numpy as np + # 작은 테스트 데이터셋으로 GPU 사용 가능 여부 확인 + test_X = np.random.rand(10, 5) + test_y = np.random.randint(0, 3, 10) + test_model = lgb.LGBMClassifier(device='gpu', n_estimators=1, verbose=-1) + test_model.fit(test_X, test_y) + _GPU_AVAILABLE = True + return True + except Exception as e: + _GPU_AVAILABLE = False + return False + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + # GPU 사용 가능 여부 확인 및 자동 폴백 + actual_device = DEVICE + if DEVICE == 'gpu': + if not check_gpu_available(): + actual_device = 'cpu' + print(f"⚠️ GPU 디바이스를 찾을 수 없습니다. CPU 모드로 전환합니다.") + + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': actual_device, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + model = LGBMClassifier(**params) + return model + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_busan = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/busan_train.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_busan = preprocessing(df_busan) + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for fold_idx, (train_years, val_year) in enumerate(FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data_pure( + df_busan, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + result = -1 * round(np.mean(csi_scores), 4) + return result + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {lgb_best}") + +try: + # Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) + best_loss = trials.best_trial['result']['loss'] + best_csi = -best_loss + print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + + # 모든 trial의 loss 값 추출 + losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] + csi_scores = [-loss for loss in losses] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(trials.trials)}") + print(f" - 성공한 시도: {len(losses)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Trials 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + trials_path = os.path.join(base_dir, "optimization_history/lgb_pure_busan_trials.pkl") + joblib.dump(trials, trials_path) + print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (train_years, val_year) in enumerate(FOLD_CONFIGS, start=1): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data_pure( + df_busan, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_pure_busan.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/lgb_pure/LGB_pure_daegu.py b/Analysis_code/5.optima/lgb_pure/LGB_pure_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..f483b231a1b2d89ed49d7c16fa60ea4581bbf120 --- /dev/null +++ b/Analysis_code/5.optima/lgb_pure/LGB_pure_daegu.py @@ -0,0 +1,306 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data_pure(df_original, train_years, val_year): + """Pure 데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 원본 데이터에서 train_years에 해당하는 데이터 + train_mask = df_original['year'].isin(train_years) + X_train = df_original.loc[train_mask, df_original.columns != 'multi_class'].copy() + y_train = df_original.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_daegu = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/daegu_train.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_daegu = preprocessing(df_daegu) + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for train_years, val_year in FOLD_CONFIGS: + X_train, X_val, y_train, y_val = split_data_pure( + df_daegu, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {lgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/lgb_pure_daegu_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (train_years, val_year) in enumerate(FOLD_CONFIGS, start=1): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data_pure( + df_daegu, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_pure_daegu.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + +import sys +sys.exit(0) diff --git a/Analysis_code/5.optima/lgb_pure/LGB_pure_daejeon.py b/Analysis_code/5.optima/lgb_pure/LGB_pure_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..bab9bb892a48fd6590253b8eeec4350749dda2ea --- /dev/null +++ b/Analysis_code/5.optima/lgb_pure/LGB_pure_daejeon.py @@ -0,0 +1,306 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data_pure(df_original, train_years, val_year): + """Pure 데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 원본 데이터에서 train_years에 해당하는 데이터 + train_mask = df_original['year'].isin(train_years) + X_train = df_original.loc[train_mask, df_original.columns != 'multi_class'].copy() + y_train = df_original.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_daejeon = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/daejeon_train.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_daejeon = preprocessing(df_daejeon) + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for train_years, val_year in FOLD_CONFIGS: + X_train, X_val, y_train, y_val = split_data_pure( + df_daejeon, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {lgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/lgb_pure_daejeon_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (train_years, val_year) in enumerate(FOLD_CONFIGS, start=1): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data_pure( + df_daejeon, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_pure_daejeon.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + +import sys +sys.exit(0) diff --git a/Analysis_code/5.optima/lgb_pure/LGB_pure_gwangju.py b/Analysis_code/5.optima/lgb_pure/LGB_pure_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..719ff56681d4b15bd55535b468f5bb023df33bd9 --- /dev/null +++ b/Analysis_code/5.optima/lgb_pure/LGB_pure_gwangju.py @@ -0,0 +1,306 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data_pure(df_original, train_years, val_year): + """Pure 데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 원본 데이터에서 train_years에 해당하는 데이터 + train_mask = df_original['year'].isin(train_years) + X_train = df_original.loc[train_mask, df_original.columns != 'multi_class'].copy() + y_train = df_original.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_gwangju = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/gwangju_train.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_gwangju = preprocessing(df_gwangju) + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for train_years, val_year in FOLD_CONFIGS: + X_train, X_val, y_train, y_val = split_data_pure( + df_gwangju, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {lgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/lgb_pure_gwangju_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (train_years, val_year) in enumerate(FOLD_CONFIGS, start=1): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data_pure( + df_gwangju, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_pure_gwangju.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + +import sys +sys.exit(0) diff --git a/Analysis_code/5.optima/lgb_pure/LGB_pure_incheon.py b/Analysis_code/5.optima/lgb_pure/LGB_pure_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..153b134824d846bcde39e8f69d07237e54272863 --- /dev/null +++ b/Analysis_code/5.optima/lgb_pure/LGB_pure_incheon.py @@ -0,0 +1,306 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data_pure(df_original, train_years, val_year): + """Pure 데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 원본 데이터에서 train_years에 해당하는 데이터 + train_mask = df_original['year'].isin(train_years) + X_train = df_original.loc[train_mask, df_original.columns != 'multi_class'].copy() + y_train = df_original.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_incheon = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/incheon_train.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_incheon = preprocessing(df_incheon) + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for train_years, val_year in FOLD_CONFIGS: + X_train, X_val, y_train, y_val = split_data_pure( + df_incheon, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {lgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/lgb_pure_incheon_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (train_years, val_year) in enumerate(FOLD_CONFIGS, start=1): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data_pure( + df_incheon, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_pure_incheon.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + +import sys +sys.exit(0) diff --git a/Analysis_code/5.optima/lgb_pure/LGB_pure_seoul.py b/Analysis_code/5.optima/lgb_pure/LGB_pure_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..658801664267e3d0a1ea6523a3e3be403e36845c --- /dev/null +++ b/Analysis_code/5.optima/lgb_pure/LGB_pure_seoul.py @@ -0,0 +1,306 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data_pure(df_original, train_years, val_year): + """Pure 데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 원본 데이터에서 train_years에 해당하는 데이터 + train_mask = df_original['year'].isin(train_years) + X_train = df_original.loc[train_mask, df_original.columns != 'multi_class'].copy() + y_train = df_original.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_seoul = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/seoul_train.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_seoul = preprocessing(df_seoul) + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for train_years, val_year in FOLD_CONFIGS: + X_train, X_val, y_train, y_val = split_data_pure( + df_seoul, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {lgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/lgb_pure_seoul_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (train_years, val_year) in enumerate(FOLD_CONFIGS, start=1): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data_pure( + df_seoul, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_pure_seoul.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + +import sys +sys.exit(0) diff --git a/Analysis_code/5.optima/lgb_smote/LGB_smote_busan.py b/Analysis_code/5.optima/lgb_smote/LGB_smote_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..5dc4befc188d6f0338ebca270ca5fffe9bd35fc3 --- /dev/null +++ b/Analysis_code/5.optima/lgb_smote/LGB_smote_busan.py @@ -0,0 +1,288 @@ +import joblib +import pandas as pd +import os +import numpy as np +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data(df_smote, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_smote: SMOTE로 오버샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: SMOTE 데이터에서 train_years에 해당하는 데이터 + train_mask = df_smote['year'].isin(train_years) + X_train = df_smote.loc[train_mask, df_smote.columns != 'multi_class'].copy() + y_train = df_smote.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_busan = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/busan_train.csv")) +df_smote_busan_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_1_busan.csv")) +df_smote_busan_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_2_busan.csv")) +df_smote_busan_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_3_busan.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_smote_busan_1 = preprocessing(df_smote_busan_1) +df_smote_busan_2 = preprocessing(df_smote_busan_2) +df_smote_busan_3 = preprocessing(df_smote_busan_3) +df_busan = preprocessing(df_busan) + +# SMOTE 데이터 리스트 (fold 순서와 일치) +df_smote_list = [df_smote_busan_1, df_smote_busan_2, df_smote_busan_3] + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_smote, (train_years, val_year) in zip(df_smote_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_smote, df_busan, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) +print(f"최적화 완료. 최적 파라미터: {lgb_best}") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_smote, (train_years, val_year)) in enumerate( + zip(df_smote_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_smote, df_busan, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_smote_busan.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") \ No newline at end of file diff --git a/Analysis_code/5.optima/lgb_smote/LGB_smote_daegu.py b/Analysis_code/5.optima/lgb_smote/LGB_smote_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..b5e338f425c4c97e638beb9c3e4f7c2170636422 --- /dev/null +++ b/Analysis_code/5.optima/lgb_smote/LGB_smote_daegu.py @@ -0,0 +1,290 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data(df_smote, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_smote: SMOTE로 오버샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: SMOTE 데이터에서 train_years에 해당하는 데이터 + train_mask = df_smote['year'].isin(train_years) + X_train = df_smote.loc[train_mask, df_smote.columns != 'multi_class'].copy() + y_train = df_smote.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_daegu = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/daegu_train.csv")) +df_smote_daegu_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_1_daegu.csv")) +df_smote_daegu_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_2_daegu.csv")) +df_smote_daegu_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_3_daegu.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_smote_daegu_1 = preprocessing(df_smote_daegu_1) +df_smote_daegu_2 = preprocessing(df_smote_daegu_2) +df_smote_daegu_3 = preprocessing(df_smote_daegu_3) +df_daegu = preprocessing(df_daegu) + +# SMOTE 데이터 리스트 (fold 순서와 일치) +df_smote_list = [df_smote_daegu_1, df_smote_daegu_2, df_smote_daegu_3] + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_smote, (train_years, val_year) in zip(df_smote_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_smote, df_daegu, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) +print(f"최적화 완료. 최적 파라미터: {lgb_best}") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_smote, (train_years, val_year)) in enumerate( + zip(df_smote_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_smote, df_daegu, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_smote_daegu.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + diff --git a/Analysis_code/5.optima/lgb_smote/LGB_smote_daejeon.py b/Analysis_code/5.optima/lgb_smote/LGB_smote_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..c413f2c4806625fc554d0aa63106a80a4dbcd224 --- /dev/null +++ b/Analysis_code/5.optima/lgb_smote/LGB_smote_daejeon.py @@ -0,0 +1,290 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data(df_smote, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_smote: SMOTE로 오버샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: SMOTE 데이터에서 train_years에 해당하는 데이터 + train_mask = df_smote['year'].isin(train_years) + X_train = df_smote.loc[train_mask, df_smote.columns != 'multi_class'].copy() + y_train = df_smote.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_daejeon = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/daejeon_train.csv")) +df_smote_daejeon_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_1_daejeon.csv")) +df_smote_daejeon_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_2_daejeon.csv")) +df_smote_daejeon_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_3_daejeon.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_smote_daejeon_1 = preprocessing(df_smote_daejeon_1) +df_smote_daejeon_2 = preprocessing(df_smote_daejeon_2) +df_smote_daejeon_3 = preprocessing(df_smote_daejeon_3) +df_daejeon = preprocessing(df_daejeon) + +# SMOTE 데이터 리스트 (fold 순서와 일치) +df_smote_list = [df_smote_daejeon_1, df_smote_daejeon_2, df_smote_daejeon_3] + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_smote, (train_years, val_year) in zip(df_smote_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_smote, df_daejeon, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) +print(f"최적화 완료. 최적 파라미터: {lgb_best}") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_smote, (train_years, val_year)) in enumerate( + zip(df_smote_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_smote, df_daejeon, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_smote_daejeon.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + diff --git a/Analysis_code/5.optima/lgb_smote/LGB_smote_gwangju.py b/Analysis_code/5.optima/lgb_smote/LGB_smote_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..315e49d2a3ffb6bafb194accf52c6577d4ce9984 --- /dev/null +++ b/Analysis_code/5.optima/lgb_smote/LGB_smote_gwangju.py @@ -0,0 +1,290 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data(df_smote, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_smote: SMOTE로 오버샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: SMOTE 데이터에서 train_years에 해당하는 데이터 + train_mask = df_smote['year'].isin(train_years) + X_train = df_smote.loc[train_mask, df_smote.columns != 'multi_class'].copy() + y_train = df_smote.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_gwangju = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/gwangju_train.csv")) +df_smote_gwangju_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_1_gwangju.csv")) +df_smote_gwangju_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_2_gwangju.csv")) +df_smote_gwangju_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_3_gwangju.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_smote_gwangju_1 = preprocessing(df_smote_gwangju_1) +df_smote_gwangju_2 = preprocessing(df_smote_gwangju_2) +df_smote_gwangju_3 = preprocessing(df_smote_gwangju_3) +df_gwangju = preprocessing(df_gwangju) + +# SMOTE 데이터 리스트 (fold 순서와 일치) +df_smote_list = [df_smote_gwangju_1, df_smote_gwangju_2, df_smote_gwangju_3] + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_smote, (train_years, val_year) in zip(df_smote_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_smote, df_gwangju, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) +print(f"최적화 완료. 최적 파라미터: {lgb_best}") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_smote, (train_years, val_year)) in enumerate( + zip(df_smote_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_smote, df_gwangju, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_smote_gwangju.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + diff --git a/Analysis_code/5.optima/lgb_smote/LGB_smote_incheon.py b/Analysis_code/5.optima/lgb_smote/LGB_smote_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..3e9e562c7e792c0f8c0f25c29f2c2809ff143f78 --- /dev/null +++ b/Analysis_code/5.optima/lgb_smote/LGB_smote_incheon.py @@ -0,0 +1,290 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data(df_smote, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_smote: SMOTE로 오버샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: SMOTE 데이터에서 train_years에 해당하는 데이터 + train_mask = df_smote['year'].isin(train_years) + X_train = df_smote.loc[train_mask, df_smote.columns != 'multi_class'].copy() + y_train = df_smote.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_incheon = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/incheon_train.csv")) +df_smote_incheon_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_1_incheon.csv")) +df_smote_incheon_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_2_incheon.csv")) +df_smote_incheon_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_3_incheon.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_smote_incheon_1 = preprocessing(df_smote_incheon_1) +df_smote_incheon_2 = preprocessing(df_smote_incheon_2) +df_smote_incheon_3 = preprocessing(df_smote_incheon_3) +df_incheon = preprocessing(df_incheon) + +# SMOTE 데이터 리스트 (fold 순서와 일치) +df_smote_list = [df_smote_incheon_1, df_smote_incheon_2, df_smote_incheon_3] + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_smote, (train_years, val_year) in zip(df_smote_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_smote, df_incheon, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) +print(f"최적화 완료. 최적 파라미터: {lgb_best}") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_smote, (train_years, val_year)) in enumerate( + zip(df_smote_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_smote, df_incheon, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_smote_incheon.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + diff --git a/Analysis_code/5.optima/lgb_smote/LGB_smote_seoul.py b/Analysis_code/5.optima/lgb_smote/LGB_smote_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..84fde035b37e31db7a8cf69c73394359f7218753 --- /dev/null +++ b/Analysis_code/5.optima/lgb_smote/LGB_smote_seoul.py @@ -0,0 +1,290 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data(df_smote, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_smote: SMOTE로 오버샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: SMOTE 데이터에서 train_years에 해당하는 데이터 + train_mask = df_smote['year'].isin(train_years) + X_train = df_smote.loc[train_mask, df_smote.columns != 'multi_class'].copy() + y_train = df_smote.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_seoul = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/seoul_train.csv")) +df_smote_seoul_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_1_seoul.csv")) +df_smote_seoul_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_2_seoul.csv")) +df_smote_seoul_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_3_seoul.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_smote_seoul_1 = preprocessing(df_smote_seoul_1) +df_smote_seoul_2 = preprocessing(df_smote_seoul_2) +df_smote_seoul_3 = preprocessing(df_smote_seoul_3) +df_seoul = preprocessing(df_seoul) + +# SMOTE 데이터 리스트 (fold 순서와 일치) +df_smote_list = [df_smote_seoul_1, df_smote_seoul_2, df_smote_seoul_3] + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_smote, (train_years, val_year) in zip(df_smote_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_smote, df_seoul, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) +print(f"최적화 완료. 최적 파라미터: {lgb_best}") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_smote, (train_years, val_year)) in enumerate( + zip(df_smote_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_smote, df_seoul, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_smote_seoul.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + diff --git a/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_busan.py b/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..c3dff8ce53fecb1ec8ee85469dac2537e735198e --- /dev/null +++ b/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_busan.py @@ -0,0 +1,294 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_busan = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/busan_train.csv")) +df_smotenc_ctgan_busan_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_busan.csv")) +df_smotenc_ctgan_busan_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_busan.csv")) +df_smotenc_ctgan_busan_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_busan.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_smotenc_ctgan_busan_1 = preprocessing(df_smotenc_ctgan_busan_1) +df_smotenc_ctgan_busan_2 = preprocessing(df_smotenc_ctgan_busan_2) +df_smotenc_ctgan_busan_3 = preprocessing(df_smotenc_ctgan_busan_3) +df_busan = preprocessing(df_busan) + +# SMOTENC+CTGAN 데이터 리스트 (fold 순서와 일치) +df_smotenc_ctgan_list = [df_smotenc_ctgan_busan_1, df_smotenc_ctgan_busan_2, df_smotenc_ctgan_busan_3] + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_smotenc_ctgan, (train_years, val_year) in zip(df_smotenc_ctgan_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_smotenc_ctgan, df_busan, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) +print(f"최적화 완료. 최적 파라미터: {lgb_best}") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_smotenc_ctgan, (train_years, val_year)) in enumerate( + zip(df_smotenc_ctgan_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_smotenc_ctgan, df_busan, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +# 파일 위치 기반으로 base 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 +os.makedirs(os.path.join(base_dir, "save_model/lgb_optima"), exist_ok=True) +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_smotenc_ctgan20000_busan.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + diff --git a/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_daegu.py b/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..065cd754427517eb7144ea92f04cdedd673aebae --- /dev/null +++ b/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_daegu.py @@ -0,0 +1,294 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_daegu = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/daegu_train.csv")) +df_smotenc_ctgan_daegu_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_daegu.csv")) +df_smotenc_ctgan_daegu_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_daegu.csv")) +df_smotenc_ctgan_daegu_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_daegu.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_smotenc_ctgan_daegu_1 = preprocessing(df_smotenc_ctgan_daegu_1) +df_smotenc_ctgan_daegu_2 = preprocessing(df_smotenc_ctgan_daegu_2) +df_smotenc_ctgan_daegu_3 = preprocessing(df_smotenc_ctgan_daegu_3) +df_daegu = preprocessing(df_daegu) + +# SMOTENC+CTGAN 데이터 리스트 (fold 순서와 일치) +df_smotenc_ctgan_list = [df_smotenc_ctgan_daegu_1, df_smotenc_ctgan_daegu_2, df_smotenc_ctgan_daegu_3] + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_smotenc_ctgan, (train_years, val_year) in zip(df_smotenc_ctgan_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_smotenc_ctgan, df_daegu, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) +print(f"최적화 완료. 최적 파라미터: {lgb_best}") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_smotenc_ctgan, (train_years, val_year)) in enumerate( + zip(df_smotenc_ctgan_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_smotenc_ctgan, df_daegu, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +# 파일 위치 기반으로 base 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 +os.makedirs(os.path.join(base_dir, "save_model/lgb_optima"), exist_ok=True) +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_smotenc_ctgan20000_daegu.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + diff --git a/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_daejeon.py b/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..d001409dd4139649416437472ff73fd97a24c0f6 --- /dev/null +++ b/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_daejeon.py @@ -0,0 +1,294 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_daejeon = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/daejeon_train.csv")) +df_smotenc_ctgan_daejeon_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_daejeon.csv")) +df_smotenc_ctgan_daejeon_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_daejeon.csv")) +df_smotenc_ctgan_daejeon_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_daejeon.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_smotenc_ctgan_daejeon_1 = preprocessing(df_smotenc_ctgan_daejeon_1) +df_smotenc_ctgan_daejeon_2 = preprocessing(df_smotenc_ctgan_daejeon_2) +df_smotenc_ctgan_daejeon_3 = preprocessing(df_smotenc_ctgan_daejeon_3) +df_daejeon = preprocessing(df_daejeon) + +# SMOTENC+CTGAN 데이터 리스트 (fold 순서와 일치) +df_smotenc_ctgan_list = [df_smotenc_ctgan_daejeon_1, df_smotenc_ctgan_daejeon_2, df_smotenc_ctgan_daejeon_3] + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_smotenc_ctgan, (train_years, val_year) in zip(df_smotenc_ctgan_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_smotenc_ctgan, df_daejeon, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) +print(f"최적화 완료. 최적 파라미터: {lgb_best}") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_smotenc_ctgan, (train_years, val_year)) in enumerate( + zip(df_smotenc_ctgan_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_smotenc_ctgan, df_daejeon, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +# 파일 위치 기반으로 base 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 +os.makedirs(os.path.join(base_dir, "save_model/lgb_optima"), exist_ok=True) +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_smotenc_ctgan20000_daejeon.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + diff --git a/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_gwangju.py b/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..9b3090388614343cea9ee188dc1feb2504c63b17 --- /dev/null +++ b/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_gwangju.py @@ -0,0 +1,294 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_gwangju = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/gwangju_train.csv")) +df_smotenc_ctgan_gwangju_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_gwangju.csv")) +df_smotenc_ctgan_gwangju_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_gwangju.csv")) +df_smotenc_ctgan_gwangju_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_gwangju.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_smotenc_ctgan_gwangju_1 = preprocessing(df_smotenc_ctgan_gwangju_1) +df_smotenc_ctgan_gwangju_2 = preprocessing(df_smotenc_ctgan_gwangju_2) +df_smotenc_ctgan_gwangju_3 = preprocessing(df_smotenc_ctgan_gwangju_3) +df_gwangju = preprocessing(df_gwangju) + +# SMOTENC+CTGAN 데이터 리스트 (fold 순서와 일치) +df_smotenc_ctgan_list = [df_smotenc_ctgan_gwangju_1, df_smotenc_ctgan_gwangju_2, df_smotenc_ctgan_gwangju_3] + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_smotenc_ctgan, (train_years, val_year) in zip(df_smotenc_ctgan_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_smotenc_ctgan, df_gwangju, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) +print(f"최적화 완료. 최적 파라미터: {lgb_best}") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_smotenc_ctgan, (train_years, val_year)) in enumerate( + zip(df_smotenc_ctgan_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_smotenc_ctgan, df_gwangju, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +# 파일 위치 기반으로 base 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 +os.makedirs(os.path.join(base_dir, "save_model/lgb_optima"), exist_ok=True) +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_smotenc_ctgan20000_gwangju.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + diff --git a/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_incheon.py b/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..0d8c2942ca46c2a233939857074c7ae38647d0a9 --- /dev/null +++ b/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_incheon.py @@ -0,0 +1,294 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_incheon = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/incheon_train.csv")) +df_smotenc_ctgan_incheon_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_incheon.csv")) +df_smotenc_ctgan_incheon_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_incheon.csv")) +df_smotenc_ctgan_incheon_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_incheon.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_smotenc_ctgan_incheon_1 = preprocessing(df_smotenc_ctgan_incheon_1) +df_smotenc_ctgan_incheon_2 = preprocessing(df_smotenc_ctgan_incheon_2) +df_smotenc_ctgan_incheon_3 = preprocessing(df_smotenc_ctgan_incheon_3) +df_incheon = preprocessing(df_incheon) + +# SMOTENC+CTGAN 데이터 리스트 (fold 순서와 일치) +df_smotenc_ctgan_list = [df_smotenc_ctgan_incheon_1, df_smotenc_ctgan_incheon_2, df_smotenc_ctgan_incheon_3] + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_smotenc_ctgan, (train_years, val_year) in zip(df_smotenc_ctgan_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_smotenc_ctgan, df_incheon, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) +print(f"최적화 완료. 최적 파라미터: {lgb_best}") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_smotenc_ctgan, (train_years, val_year)) in enumerate( + zip(df_smotenc_ctgan_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_smotenc_ctgan, df_incheon, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +# 파일 위치 기반으로 base 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 +os.makedirs(os.path.join(base_dir, "save_model/lgb_optima"), exist_ok=True) +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_smotenc_ctgan20000_incheon.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + diff --git a/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_seoul.py b/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..c432b6ffde78f5f7b80b3b82efa30cbbaf344e94 --- /dev/null +++ b/Analysis_code/5.optima/lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_seoul.py @@ -0,0 +1,294 @@ + +import pandas as pd +import os +import numpy as np +import joblib +from warnings import filterwarnings +from sklearn.metrics import confusion_matrix +from lightgbm import LGBMClassifier +from hyperopt import fmin, tpe, Trials, hp + +filterwarnings('ignore') + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 +DEVICE = 'gpu' +OBJECTIVE = 'multiclassova' + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(y_true, y_pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + y_true: 실제 레이블 + y_pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(y_true, y_pred) + + # 혼동 행렬에서 H(Hit), F(False alarm), M(Miss) 추출 + H = cm[0, 0] + cm[1, 1] + F = cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1] + M = cm[0, 2] + cm[1, 2] + + # CSI 계산 + csi = H / (H + F + M + 1e-10) + return csi + + +def csi_metric(y_true, pred_prob): + """LightGBM용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 (shape: [n_samples, n_classes]) + + Returns: + ('CSI', score, higher_better) 튜플 + """ + y_pred_binary = np.argmax(pred_prob, axis=1) + score = calculate_csi(y_true, y_pred_binary) + return 'CSI', score, True + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + # 'year' 컬럼 제거 + X_train = X_train.drop(columns=['year']) + X_val = X_val.drop(columns=['year']) + + return X_train, X_val, y_train, y_val + + +def create_lgb_model(search_space=None, best_params=None): + """LightGBM 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + LGBMClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'device': DEVICE, + 'objective': OBJECTIVE, + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + 'verbose': -1, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'num_leaves': int(search_space['num_leaves']), + 'min_child_weight': int(search_space['min_child_weight']), + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'num_leaves': int(best_params['num_leaves']), + 'min_child_weight': int(best_params['min_child_weight']), + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return LGBMClassifier(**params) + +# 데이터 로딩 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_seoul = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/seoul_train.csv")) +df_smotenc_ctgan_seoul_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_seoul.csv")) +df_smotenc_ctgan_seoul_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_seoul.csv")) +df_smotenc_ctgan_seoul_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_seoul.csv")) + +# 데이터 전처리 +print("데이터 전처리 중...") +df_smotenc_ctgan_seoul_1 = preprocessing(df_smotenc_ctgan_seoul_1) +df_smotenc_ctgan_seoul_2 = preprocessing(df_smotenc_ctgan_seoul_2) +df_smotenc_ctgan_seoul_3 = preprocessing(df_smotenc_ctgan_seoul_3) +df_seoul = preprocessing(df_seoul) + +# SMOTENC+CTGAN 데이터 리스트 (fold 순서와 일치) +df_smotenc_ctgan_list = [df_smotenc_ctgan_seoul_1, df_smotenc_ctgan_seoul_2, df_smotenc_ctgan_seoul_3] + +# 하이퍼파라미터 검색 공간 정의 +lgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 15, 1), + 'num_leaves': hp.quniform('num_leaves', 20, 150, 1), # 2^max_depth 보다는 작게 + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + lgb_model = create_lgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_smotenc_ctgan, (train_years, val_year) in zip(df_smotenc_ctgan_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_smotenc_ctgan, df_seoul, train_years, val_year + ) + + lgb_model.fit( + X_train, y_train, + eval_set=[(X_val, y_val)], + eval_metric=csi_metric + ) + + csi = calculate_csi(y_val, lgb_model.predict(X_val)) + csi_scores.append(csi) + + # 평균 CSI의 음수값 반환 (hyperopt는 최소화를 수행) + return -1 * round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +lgb_best = fmin( + fn=objective_func, + space=lgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) +print(f"최적화 완료. 최적 파라미터: {lgb_best}") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_smotenc_ctgan, (train_years, val_year)) in enumerate( + zip(df_smotenc_ctgan_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_smotenc_ctgan, df_seoul, train_years, val_year + ) + + lgb_model = create_lgb_model(best_params=lgb_best) + lgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)]) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, lgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(lgb_model) + +# 모델 저장 +print("모델 저장 중...") +# 파일 위치 기반으로 base 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 +os.makedirs(os.path.join(base_dir, "save_model/lgb_optima"), exist_ok=True) +model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_smotenc_ctgan20000_seoul.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") + diff --git a/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_busan.py b/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..481cd02910a2487202a5e034819023ed6995051e --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_busan.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="busan"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_pure_busan_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="busan", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_daegu.py b/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..ea88a6edce2f7118f6ebc8de786dc0bfdcbc87c0 --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_daegu.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="daegu"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_pure_daegu_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="daegu", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_daejeon.py b/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..a15ec6db142f103e39058f412aa0dfcb371e2a54 --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_daejeon.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="daejeon"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_pure_daejeon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="daejeon", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_gwangju.py b/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..0e93a405a945521ae156acbe93a334c88b81519f --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_gwangju.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="gwangju"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_pure_gwangju_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="gwangju", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_incheon.py b/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..2c7f6d961bc5221ebc6fb65cb3bd6970f3709f91 --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_incheon.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="incheon"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_pure_incheon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="incheon", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_seoul.py b/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..c376a97254699475da5c0fd52ed3df9fe5916ded --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_pure/resnet_like_pure_seoul.py @@ -0,0 +1,99 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="seoul"), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_pure_seoul_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_paths = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="seoul", + data_sample='pure', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로:") + for path in model_paths: + print(f" - {path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_pure/utils.py b/Analysis_code/5.optima/resnet_like_pure/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..269c884ba87b91694f8a425070862e038f59125e --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_pure/utils.py @@ -0,0 +1,790 @@ +import torch +import torch.nn as nn +import torch.optim as optim +import numpy as np +import random +import os +import copy +from sklearn.preprocessing import QuantileTransformer, LabelEncoder, OneHotEncoder +from torch.utils.data import DataLoader, TensorDataset +from sklearn.metrics import confusion_matrix +from sklearn.utils.class_weight import compute_class_weight +import pandas as pd +import optuna +from sklearn.metrics import accuracy_score, f1_score +import joblib + + +import sys +# 파일 위치 기반으로 models 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +models_path = os.path.abspath(os.path.join(current_file_dir, '../../models')) +sys.path.insert(0, models_path) +from ft_transformer import FTTransformer +from resnet_like import ResNetLike +from deepgbm import DeepGBM +import warnings +warnings.filterwarnings('ignore') + + +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + +# PyTorch 시드 고정 +torch.manual_seed(seed) +torch.cuda.manual_seed(seed) +torch.cuda.manual_seed_all(seed) # Multi-GPU 환경에서 동일한 시드 적용 + +# PyTorch 연산의 결정적 모드 설정 +torch.backends.cudnn.deterministic = True # 실행마다 동일한 결과를 보장 +torch.backends.cudnn.benchmark = True # 성능 최적화를 활성화 (가능한 한 빠른 연산 수행) + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +# 데이터셋 준비 함수 +def prepare_dataset(region, data_sample='pure', target='multi', fold=3): + + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + original_categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 One-Hot Encoding (ResNetLike는 임베딩 레이어가 없으므로) + if len(original_categorical_cols) > 0: + ohe = OneHotEncoder(sparse_output=False, handle_unknown='ignore', drop=None) + ohe.fit(X_train[original_categorical_cols]) + + # One-Hot 인코딩 적용 + X_train_cat_encoded = pd.DataFrame( + ohe.transform(X_train[original_categorical_cols]), + columns=ohe.get_feature_names_out(original_categorical_cols), + index=X_train.index + ) + X_val_cat_encoded = pd.DataFrame( + ohe.transform(X_val[original_categorical_cols]), + columns=ohe.get_feature_names_out(original_categorical_cols), + index=X_val.index + ) + X_test_cat_encoded = pd.DataFrame( + ohe.transform(X_test[original_categorical_cols]), + columns=ohe.get_feature_names_out(original_categorical_cols), + index=X_test.index + ) + + # 원래 범주형 컬럼 제거 후 One-Hot 인코딩된 컬럼 추가 + X_train = X_train.drop(columns=original_categorical_cols) + X_val = X_val.drop(columns=original_categorical_cols) + X_test = X_test.drop(columns=original_categorical_cols) + + X_train = pd.concat([X_train, X_train_cat_encoded], axis=1) + X_val = pd.concat([X_val, X_val_cat_encoded], axis=1) + X_test = pd.concat([X_test, X_test_cat_encoded], axis=1) + + # One-Hot 인코딩된 컬럼명으로 업데이트 + categorical_cols = ohe.get_feature_names_out(original_categorical_cols) + else: + categorical_cols = [] + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + return X_train, X_val, X_test, y_train, y_val, y_test, categorical_cols, numerical_cols + + + +# 데이터 변환 및 dataloader 생성 함수 +def prepare_dataloader(region, data_sample='pure', target='multi', fold=3, random_state=None): + + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + original_categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 One-Hot Encoding (ResNetLike는 임베딩 레이어가 없으므로) + if len(original_categorical_cols) > 0: + ohe = OneHotEncoder(sparse_output=False, handle_unknown='ignore', drop=None) + ohe.fit(X_train[original_categorical_cols]) + + # One-Hot 인코딩 적용 + X_train_cat_encoded = pd.DataFrame( + ohe.transform(X_train[original_categorical_cols]), + columns=ohe.get_feature_names_out(original_categorical_cols), + index=X_train.index + ) + X_val_cat_encoded = pd.DataFrame( + ohe.transform(X_val[original_categorical_cols]), + columns=ohe.get_feature_names_out(original_categorical_cols), + index=X_val.index + ) + X_test_cat_encoded = pd.DataFrame( + ohe.transform(X_test[original_categorical_cols]), + columns=ohe.get_feature_names_out(original_categorical_cols), + index=X_test.index + ) + + # 원래 범주형 컬럼 제거 후 One-Hot 인코딩된 컬럼 추가 + X_train = X_train.drop(columns=original_categorical_cols) + X_val = X_val.drop(columns=original_categorical_cols) + X_test = X_test.drop(columns=original_categorical_cols) + + X_train = pd.concat([X_train, X_train_cat_encoded], axis=1) + X_val = pd.concat([X_val, X_val_cat_encoded], axis=1) + X_test = pd.concat([X_test, X_test_cat_encoded], axis=1) + + # One-Hot 인코딩된 컬럼명으로 업데이트 + categorical_cols = ohe.get_feature_names_out(original_categorical_cols) + else: + categorical_cols = [] + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.float32) # One-Hot은 float32 + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.float32) # One-Hot은 float32 + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.float32) # One-Hot은 float32 + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 + # batch_size는 함수 파라미터로 받아서 사용 + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=64, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader, y_train, scaler + +# 데이터 변환 및 dataloader 생성 함수 (batch_size 파라미터 추가 버전) +def prepare_dataloader_with_batchsize(region, data_sample='pure', target='multi', fold=3, random_state=None, batch_size=64): + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + original_categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 One-Hot Encoding (ResNetLike는 임베딩 레이어가 없으므로) + if len(original_categorical_cols) > 0: + ohe = OneHotEncoder(sparse_output=False, handle_unknown='ignore', drop=None) + ohe.fit(X_train[original_categorical_cols]) + + # One-Hot 인코딩 적용 + X_train_cat_encoded = pd.DataFrame( + ohe.transform(X_train[original_categorical_cols]), + columns=ohe.get_feature_names_out(original_categorical_cols), + index=X_train.index + ) + X_val_cat_encoded = pd.DataFrame( + ohe.transform(X_val[original_categorical_cols]), + columns=ohe.get_feature_names_out(original_categorical_cols), + index=X_val.index + ) + X_test_cat_encoded = pd.DataFrame( + ohe.transform(X_test[original_categorical_cols]), + columns=ohe.get_feature_names_out(original_categorical_cols), + index=X_test.index + ) + + # 원래 범주형 컬럼 제거 후 One-Hot 인코딩된 컬럼 추가 + X_train = X_train.drop(columns=original_categorical_cols) + X_val = X_val.drop(columns=original_categorical_cols) + X_test = X_test.drop(columns=original_categorical_cols) + + X_train = pd.concat([X_train, X_train_cat_encoded], axis=1) + X_val = pd.concat([X_val, X_val_cat_encoded], axis=1) + X_test = pd.concat([X_test, X_test_cat_encoded], axis=1) + + # One-Hot 인코딩된 컬럼명으로 업데이트 + categorical_cols = ohe.get_feature_names_out(original_categorical_cols) + else: + categorical_cols = [] + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.float32) # One-Hot은 float32 + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.float32) # One-Hot은 float32 + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.float32) # One-Hot은 float32 + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 (batch_size 파라미터 사용) + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader, y_train, scaler + + +def calculate_csi(y_true, pred): + + cm = confusion_matrix(y_true, pred) # 변수 이름을 cm으로 변경 + # 혼동 행렬에서 H, F, M 추출 + H = (cm[0, 0] + cm[1, 1]) + + F = (cm[1, 0] + cm[2, 0] + + cm[0, 1] + cm[2, 1]) + + M = (cm[0, 2] + cm[1, 2]) + + # CSI 계산 + CSI = H / (H + F + M + 1e-10) + return CSI + +def sample_weight(y_train): + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), # 고유 클래스 + y=y_train # 학습 데이터 레이블 + ) + sample_weights = np.array([class_weights[label] for label in y_train]) + + return sample_weights + +# 하이퍼파라미터 최적화 함수 정의 +def objective(trial, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + val_scores = [] + + # --- 1. 하이퍼파라미터 탐색 범위 정의 (수정됨) --- + if model_choose == "ft_transformer": + d_token = trial.suggest_int("d_token", 64, 256, step=32) + n_blocks = trial.suggest_int("n_blocks", 2, 6) # 깊이 축소로 과적합 방지 + n_heads = trial.suggest_categorical("n_heads", [4, 8]) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + attention_dropout = trial.suggest_float("attention_dropout", 0.1, 0.4) + ffn_dropout = trial.suggest_float("ffn_dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) # 범위 확대 + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'resnet_like': + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 512, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 5) # 너무 깊지 않게 조절 + dropout_first = trial.suggest_float("dropout_first", 0.1, 0.4) + dropout_second = trial.suggest_float("dropout_second", 0.0, 0.2) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'deepgbm': + # DeepGBM의 경우 모델 특성에 맞춰 ResNet 블록 및 임베딩 차원 조절 + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 256, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 6) + dropout = trial.suggest_float("dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + # --- 2. Fold별 학습 및 교차 검증 --- + for fold in range(1, n_folds + 1): + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, _ = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=n_blocks, + n_heads=n_heads, + attention_dropout=attention_dropout, + ffn_dropout=ffn_dropout, + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout_first=dropout_first, + dropout_second=dropout_second, + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout=dropout, + num_classes=3 + ).to(device) + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + # 클래스별 가중치 로그 출력 + unique_classes = np.unique(y_train) + class_counts = {cls: np.sum(y_train == cls) for cls in unique_classes} + print(f" Fold {fold} - 클래스별 가중치: {dict(zip(unique_classes, class_weights))} (클래스별 샘플 수: {class_counts})") + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=lr, weight_decay=weight_decay) + + # 학습률 스케줄러 추가: 성능 정체 시 LR을 0.5배 감소 (검증 CSI 기준) + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 (에폭 및 페이션스 상향) + epochs = 200 + patience = 12 # 딥러닝의 정체 구간을 고려하여 소폭 상향 + best_fold_csi = 0 + counter = 0 + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Optuna Pruning 적용 (첫 번째 Fold에서 조기 종료 판단 강화) + trial.report(val_csi, epoch) + if trial.should_prune(): + raise optuna.exceptions.TrialPruned() + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + else: + counter += 1 + + if counter >= patience: + break + + val_scores.append(best_fold_csi) + + # 모든 fold의 평균 성능 반환 + return np.mean(val_scores) + + +# 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 함수 +def train_final_model(best_params, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + """ + 최적화된 하이퍼파라미터로 최종 모델을 학습하고 저장합니다. + + Args: + best_params: 최적화된 하이퍼파라미터 딕셔너리 + model_choose: 모델 선택 ('ft_transformer', 'resnet_like', 'deepgbm') + region: 지역명 + data_sample: 데이터 샘플 타입 ('pure', 'smote', etc.) + target: 타겟 타입 ('multi', 'binary') + n_folds: 교차 검증 fold 수 + random_state: 랜덤 시드 + + Returns: + 저장된 모델 경로 리스트 + """ + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + + models = [] + scalers = [] # scaler 리스트 추가 + + print("최종 모델 학습 시작...") + + for fold in range(1, n_folds + 1): + print(f"Fold {fold} 학습 중...") + + # 최적화된 batch_size 사용 + batch_size = best_params.get("batch_size", 64) + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, scaler = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + d_token = best_params["d_token"] + n_heads = best_params.get("n_heads", 8) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=best_params["n_blocks"], + n_heads=n_heads, + attention_dropout=best_params["attention_dropout"], + ffn_dropout=best_params["ffn_dropout"], + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout_first=best_params["dropout_first"], + dropout_second=best_params["dropout_second"], + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout=best_params["dropout"], + num_classes=3 + ).to(device) + else: + raise ValueError(f"Unknown model_choose: {model_choose}") + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=best_params["lr"], weight_decay=best_params["weight_decay"]) + + # 학습률 스케줄러 + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 + epochs = 200 + patience = 12 + best_fold_csi = 0 + counter = 0 + best_model = None + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + best_model = copy.deepcopy(model) + else: + counter += 1 + + if counter >= patience: + print(f" Early stopping at epoch {epoch+1}, Best CSI: {best_fold_csi:.4f}") + break + + if best_model is None: + best_model = model + + scalers.append(scaler) # scaler 저장 (fold 순서대로) + models.append(best_model) + print(f" Fold {fold} 학습 완료 (검증 CSI: {best_fold_csi:.4f})") + + # 모델 저장 경로 설정 + save_dir = f'../save_model/{model_choose}_optima' + os.makedirs(save_dir, exist_ok=True) + + # 파일명 생성 + if data_sample == 'pure': + model_filename = f'{model_choose}_pure_{region}.pkl' + else: + model_filename = f'{model_choose}_{data_sample}_{region}.pkl' + + model_path = f'{save_dir}/{model_filename}' + + # 리스트에 담아 한 번에 저장 + joblib.dump(models, model_path) + print(f"\n모든 모델 저장 완료: {model_path} (총 {len(models)}개 fold)") + + # Scaler 별도 저장 + scaler_save_dir = f'../save_model/{model_choose}_optima/scaler' + os.makedirs(scaler_save_dir, exist_ok=True) + + # 파일명 생성 (모델과 동일한 패턴) + if data_sample == 'pure': + scaler_filename = f'{model_choose}_pure_{region}_scaler.pkl' + else: + scaler_filename = f'{model_choose}_{data_sample}_{region}_scaler.pkl' + + scaler_path = f'{scaler_save_dir}/{scaler_filename}' + joblib.dump(scalers, scaler_path) + print(f"Scaler 저장 완료: {scaler_path} (총 {len(scalers)}개 fold)") + + return model_path diff --git a/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_busan.py b/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..298c2426fb78657af8e7ce4f93b3ed76c14b9f8e --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_busan.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="busan", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_smote_busan_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="busan", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_daegu.py b/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..22fd4665849aaaa26b298336e5209874f2f4155c --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_daegu.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="daegu", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_smote_daegu_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="daegu", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_daejeon.py b/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..871a94bd7e3b02b2a3d4787dd4787d8f18c72b74 --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_daejeon.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="daejeon", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_smote_daejeon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="daejeon", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_gwangju.py b/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..f8031fb03128876a496b524c07b559da0ff42dc1 --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_gwangju.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="gwangju", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_smote_gwangju_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="gwangju", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_incheon.py b/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..280efff110198ef0e6169366a654ecdbafe97ed0 --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_incheon.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="incheon", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_smote_incheon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="incheon", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_seoul.py b/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..48146fee7c12fe60c0f57396f5406fa5dedc408e --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_smote/resnet_like_smote_seoul.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="seoul", data_sample='smote'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_smote_seoul_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="seoul", + data_sample='smote', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_smote/utils.py b/Analysis_code/5.optima/resnet_like_smote/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..2cebe5700041635baab0fec01daa0ea1b11f7c4e --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_smote/utils.py @@ -0,0 +1,718 @@ +import torch +import torch.nn as nn +import torch.optim as optim +import numpy as np +import random +import os +import copy +from sklearn.preprocessing import QuantileTransformer, LabelEncoder +from torch.utils.data import DataLoader, TensorDataset +from sklearn.metrics import confusion_matrix +from sklearn.utils.class_weight import compute_class_weight +import pandas as pd +import optuna +from sklearn.metrics import accuracy_score, f1_score +import joblib + + +import sys +# 파일 위치 기반으로 models 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +models_path = os.path.abspath(os.path.join(current_file_dir, '../../models')) +sys.path.insert(0, models_path) +from ft_transformer import FTTransformer +from resnet_like import ResNetLike +from deepgbm import DeepGBM +import warnings +warnings.filterwarnings('ignore') + + +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + +# PyTorch 시드 고정 +torch.manual_seed(seed) +torch.cuda.manual_seed(seed) +torch.cuda.manual_seed_all(seed) # Multi-GPU 환경에서 동일한 시드 적용 + +# PyTorch 연산의 결정적 모드 설정 +torch.backends.cudnn.deterministic = True # 실행마다 동일한 결과를 보장 +torch.backends.cudnn.benchmark = True # 성능 최적화를 활성화 (가능한 한 빠른 연산 수행) + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +# 데이터셋 준비 함수 +def prepare_dataset(region, data_sample='pure', target='multi', fold=3): + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + return X_train, X_val, X_test, y_train, y_val, y_test, categorical_cols, numerical_cols + + + +# 데이터 변환 및 dataloader 생성 함수 +def prepare_dataloader(region, data_sample='pure', target='multi', fold=3, random_state=None): + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=64, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader + +# 데이터 변환 및 dataloader 생성 함수 (batch_size 파라미터 추가 버전) +def prepare_dataloader_with_batchsize(region, data_sample='pure', target='multi', fold=3, random_state=None, batch_size=64): + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 (batch_size 파라미터 사용) + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader, y_train, scaler + + +def calculate_csi(y_true, pred): + + cm = confusion_matrix(y_true, pred) # 변수 이름을 cm으로 변경 + # 혼동 행렬에서 H, F, M 추출 + H = (cm[0, 0] + cm[1, 1]) + + F = (cm[1, 0] + cm[2, 0] + + cm[0, 1] + cm[2, 1]) + + M = (cm[0, 2] + cm[1, 2]) + + # CSI 계산 + CSI = H / (H + F + M + 1e-10) + return CSI + +def sample_weight(y_train): + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), # 고유 클래스 + y=y_train # 학습 데이터 레이블 + ) + sample_weights = np.array([class_weights[label] for label in y_train]) + + return sample_weights + +# 하이퍼파라미터 최적화 함수 정의 +def objective(trial, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + val_scores = [] + + # --- 1. 하이퍼파라미터 탐색 범위 정의 (수정됨) --- + if model_choose == "ft_transformer": + d_token = trial.suggest_int("d_token", 64, 256, step=32) + n_blocks = trial.suggest_int("n_blocks", 2, 6) # 깊이 축소로 과적합 방지 + n_heads = trial.suggest_categorical("n_heads", [4, 8]) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + attention_dropout = trial.suggest_float("attention_dropout", 0.1, 0.4) + ffn_dropout = trial.suggest_float("ffn_dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) # 범위 확대 + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'resnet_like': + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 512, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 5) # 너무 깊지 않게 조절 + dropout_first = trial.suggest_float("dropout_first", 0.1, 0.4) + dropout_second = trial.suggest_float("dropout_second", 0.0, 0.2) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'deepgbm': + # DeepGBM의 경우 모델 특성에 맞춰 ResNet 블록 및 임베딩 차원 조절 + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 256, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 6) + dropout = trial.suggest_float("dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + # --- 2. Fold별 학습 및 교차 검증 --- + for fold in range(1, n_folds + 1): + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, _ = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=n_blocks, + n_heads=n_heads, + attention_dropout=attention_dropout, + ffn_dropout=ffn_dropout, + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout_first=dropout_first, + dropout_second=dropout_second, + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout=dropout, + num_classes=3 + ).to(device) + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + # 클래스별 가중치 로그 출력 + unique_classes = np.unique(y_train) + class_counts = {cls: np.sum(y_train == cls) for cls in unique_classes} + print(f" Fold {fold} - 클래스별 가중치: {dict(zip(unique_classes, class_weights))} (클래스별 샘플 수: {class_counts})") + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=lr, weight_decay=weight_decay) + + # 학습률 스케줄러 추가: 성능 정체 시 LR을 0.5배 감소 (검증 CSI 기준) + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 (에폭 및 페이션스 상향) + epochs = 200 + patience = 12 # 딥러닝의 정체 구간을 고려하여 소폭 상향 + best_fold_csi = 0 + counter = 0 + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Optuna Pruning 적용 (첫 번째 Fold에서 조기 종료 판단 강화) + trial.report(val_csi, epoch) + if trial.should_prune(): + raise optuna.exceptions.TrialPruned() + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + else: + counter += 1 + + if counter >= patience: + break + + val_scores.append(best_fold_csi) + + # 모든 fold의 평균 성능 반환 + return np.mean(val_scores) + + +# 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 함수 +def train_final_model(best_params, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + """ + 최적화된 하이퍼파라미터로 최종 모델을 학습하고 저장합니다. + + Args: + best_params: 최적화된 하이퍼파라미터 딕셔너리 + model_choose: 모델 선택 ('ft_transformer', 'resnet_like', 'deepgbm') + region: 지역명 + data_sample: 데이터 샘플 타입 ('pure', 'smote', etc.) + target: 타겟 타입 ('multi', 'binary') + n_folds: 교차 검증 fold 수 + random_state: 랜덤 시드 + + Returns: + 저장된 모델 경로 리스트 + """ + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + + models = [] + scalers = [] # scaler 리스트 추가 + + print("최종 모델 학습 시작...") + + for fold in range(1, n_folds + 1): + print(f"Fold {fold} 학습 중...") + + # 최적화된 batch_size 사용 + batch_size = best_params.get("batch_size", 64) + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, scaler = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + d_token = best_params["d_token"] + n_heads = best_params.get("n_heads", 8) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=best_params["n_blocks"], + n_heads=n_heads, + attention_dropout=best_params["attention_dropout"], + ffn_dropout=best_params["ffn_dropout"], + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout_first=best_params["dropout_first"], + dropout_second=best_params["dropout_second"], + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout=best_params["dropout"], + num_classes=3 + ).to(device) + else: + raise ValueError(f"Unknown model_choose: {model_choose}") + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=best_params["lr"], weight_decay=best_params["weight_decay"]) + + # 학습률 스케줄러 + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 + epochs = 200 + patience = 12 + best_fold_csi = 0 + counter = 0 + best_model = None + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + best_model = copy.deepcopy(model) + else: + counter += 1 + + if counter >= patience: + print(f" Early stopping at epoch {epoch+1}, Best CSI: {best_fold_csi:.4f}") + break + + if best_model is None: + best_model = model + + scalers.append(scaler) # scaler 저장 (fold 순서대로) + models.append(best_model) + print(f" Fold {fold} 학습 완료 (검증 CSI: {best_fold_csi:.4f})") + + # 모델 저장 경로 설정 + save_dir = f'../save_model/{model_choose}_optima' + os.makedirs(save_dir, exist_ok=True) + + # 파일명 생성 + if data_sample == 'pure': + model_filename = f'{model_choose}_pure_{region}.pkl' + else: + model_filename = f'{model_choose}_{data_sample}_{region}.pkl' + + model_path = f'{save_dir}/{model_filename}' + + # 리스트에 담아 한 번에 저장 + joblib.dump(models, model_path) + print(f"\n모든 모델 저장 완료: {model_path} (총 {len(models)}개 fold)") + + # Scaler 별도 저장 + scaler_save_dir = f'../save_model/{model_choose}_optima/scaler' + os.makedirs(scaler_save_dir, exist_ok=True) + + # 파일명 생성 (모델과 동일한 패턴) + if data_sample == 'pure': + scaler_filename = f'{model_choose}_pure_{region}_scaler.pkl' + else: + scaler_filename = f'{model_choose}_{data_sample}_{region}_scaler.pkl' + + scaler_path = f'{scaler_save_dir}/{scaler_filename}' + joblib.dump(scalers, scaler_path) + print(f"Scaler 저장 완료: {scaler_path} (총 {len(scalers)}개 fold)") + + return model_path diff --git a/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_busan.py b/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..ebe1bae0ff8eeea57e2fae84a0ebe1267f16700d --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_busan.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="busan", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_smotenc_ctgan20000_busan_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="busan", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_daegu.py b/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..afb176df65c04f16638e5bf3d55425fffeb9e64f --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_daegu.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="daegu", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_smotenc_ctgan20000_daegu_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="daegu", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_daejeon.py b/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..3816d409bc5e68a1dc0d9e9885f5aa14b8a871bd --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_daejeon.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="daejeon", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_smotenc_ctgan20000_daejeon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="daejeon", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_gwangju.py b/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..09cbc4feb214eb3fe7badc308cf7a04ca5f4bb3b --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_gwangju.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="gwangju", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_smotenc_ctgan20000_gwangju_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="gwangju", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_incheon.py b/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..ddf03cee7171c8676f057d941ed14734e4fe0fba --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_incheon.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="incheon", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_smotenc_ctgan20000_incheon_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="incheon", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_seoul.py b/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..c704b8edeb06fd82e11346565bb3c35eef9c359c --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/resnet_like_smotenc_ctgan20000_seoul.py @@ -0,0 +1,97 @@ +import optuna +import numpy as np +import random +import pandas as pd +import joblib +import os +import torch +from utils import * +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + + +# 1. Study 생성 시 'maximize'로 설정 +study = optuna.create_study( + direction="maximize", # CSI 점수가 높을수록 좋으므로 maximize + pruner=optuna.pruners.MedianPruner(n_warmup_steps=10) # 초반 10에폭은 지켜보고 이후 가지치기 +) +# Trial 완료 시 상세 정보 출력하는 callback 함수 +def print_trial_callback(study, trial): + """각 trial 완료 시 best value를 포함한 상세 정보 출력""" + print(f"\n{'='*80}") + print(f"Trial {trial.number} 완료") + print(f" Value (CSI): {trial.value:.6f}" if trial.value is not None else f" Value: {trial.value}") + print(f" Parameters: {trial.params}") + print(f" Best Value (CSI): {study.best_value:.6f}" if study.best_value is not None else f" Best Value: {study.best_value}") + print(f" Best Trial: {study.best_trial.number}") + print(f" Best Parameters: {study.best_params}") + print(f"{'='*80}\n") + + + +# 2. 최적화 실행 +study.optimize( + lambda trial: objective(trial, model_choose="resnet_like", region="seoul", data_sample='smotenc_ctgan20000'), + n_trials=100 +, + callbacks=[print_trial_callback] +) + +# 3. 결과 확인 및 요약 +print(f"\n최적화 완료.") +print(f"Best CSI Score: {study.best_value:.4f}") +print(f"Best Hyperparameters: {study.best_params}") + +try: + # 모든 trial의 CSI 점수 추출 + csi_scores = [trial.value for trial in study.trials if trial.value is not None] + + if len(csi_scores) > 0: + print(f"\n최적화 과정 요약:") + print(f" - 총 시도 횟수: {len(study.trials)}") + print(f" - 성공한 시도: {len(csi_scores)}") + print(f" - 최초 CSI: {csi_scores[0]:.4f}") + print(f" - 최종 CSI: {csi_scores[-1]:.4f}") + print(f" - 최고 CSI: {max(csi_scores):.4f}") + print(f" - 최저 CSI: {min(csi_scores):.4f}") + print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + + # Study 객체 저장 + # 파일 위치 기반으로 base 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 + os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) + study_path = os.path.join(base_dir, "optimization_history/resnet_like_smotenc_ctgan20000_seoul_trials.pkl") + joblib.dump(study, study_path) + print(f"\n최적화 Study 객체가 {study_path}에 저장되었습니다.") + + # 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 + print("\n" + "="*50) + print("최적화된 하이퍼파라미터로 최종 모델 학습 시작") + print("="*50) + + best_params = study.best_params + model_path = train_final_model( + best_params=best_params, + model_choose="resnet_like", + region="seoul", + data_sample='smotenc_ctgan20000', + target='multi', + n_folds=3, + random_state=seed + ) + + print(f"\n최종 모델 학습 및 저장 완료!") + print(f"저장된 모델 경로: {model_path}") + +except Exception as e: + print(f"\n⚠️ 최적화 결과 분석 중 오류 발생: {e}") + import traceback + traceback.print_exc() + +# 정상 종료 +import sys +sys.exit(0) + diff --git a/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/utils.py b/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..2cebe5700041635baab0fec01daa0ea1b11f7c4e --- /dev/null +++ b/Analysis_code/5.optima/resnet_like_smotenc_ctgan20000/utils.py @@ -0,0 +1,718 @@ +import torch +import torch.nn as nn +import torch.optim as optim +import numpy as np +import random +import os +import copy +from sklearn.preprocessing import QuantileTransformer, LabelEncoder +from torch.utils.data import DataLoader, TensorDataset +from sklearn.metrics import confusion_matrix +from sklearn.utils.class_weight import compute_class_weight +import pandas as pd +import optuna +from sklearn.metrics import accuracy_score, f1_score +import joblib + + +import sys +# 파일 위치 기반으로 models 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +models_path = os.path.abspath(os.path.join(current_file_dir, '../../models')) +sys.path.insert(0, models_path) +from ft_transformer import FTTransformer +from resnet_like import ResNetLike +from deepgbm import DeepGBM +import warnings +warnings.filterwarnings('ignore') + + +# Python 및 Numpy 시드 고정 +seed = 42 +random.seed(seed) +np.random.seed(seed) + +# PyTorch 시드 고정 +torch.manual_seed(seed) +torch.cuda.manual_seed(seed) +torch.cuda.manual_seed_all(seed) # Multi-GPU 환경에서 동일한 시드 적용 + +# PyTorch 연산의 결정적 모드 설정 +torch.backends.cudnn.deterministic = True # 실행마다 동일한 결과를 보장 +torch.backends.cudnn.benchmark = True # 성능 최적화를 활성화 (가능한 한 빠른 연산 수행) + + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + + +# 데이터셋 준비 함수 +def prepare_dataset(region, data_sample='pure', target='multi', fold=3): + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + return X_train, X_val, X_test, y_train, y_val, y_test, categorical_cols, numerical_cols + + + +# 데이터 변환 및 dataloader 생성 함수 +def prepare_dataloader(region, data_sample='pure', target='multi', fold=3, random_state=None): + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=64, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader + +# 데이터 변환 및 dataloader 생성 함수 (batch_size 파라미터 추가 버전) +def prepare_dataloader_with_batchsize(region, data_sample='pure', target='multi', fold=3, random_state=None, batch_size=64): + # 파일 위치 기반으로 데이터 디렉토리 경로 설정 + current_file_dir = os.path.dirname(os.path.abspath(__file__)) + data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) + + # 데이터 경로 지정 + dat_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_train.csv") + if data_sample == 'pure': + train_path = dat_path + else: + train_path = os.path.join(data_base_dir, f'data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv') + test_path = os.path.join(data_base_dir, f"data_for_modeling/{region}_test.csv") + drop_col = ['multi_class','year'] + target_col = f'{target}_class' + + # 데이터 로드 + region_dat = preprocessing(pd.read_csv(dat_path, index_col=0)) + if data_sample == 'pure': + region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :] + else: + region_train = preprocessing(pd.read_csv(train_path)) + region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :] + region_test = preprocessing(pd.read_csv(test_path)) + + # 컬럼 정렬 (일관성 유지) + common_columns = region_train.columns.to_list() + train_data = region_train[common_columns] + val_data = region_val[common_columns] + test_data = region_test[common_columns] + + # 설명변수 & 타겟 분리 + X_train = train_data.drop(columns=drop_col) + y_train = train_data[target_col] + X_val = val_data.drop(columns=drop_col) + y_val = val_data[target_col] + X_test = test_data.drop(columns=drop_col) + y_test = test_data[target_col] + + # 범주형 & 연속형 변수 분리 + categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns + numerical_cols = X_train.select_dtypes(include=['float64']).columns + + # 범주형 변수 Label Encoding + label_encoders = {} + for col in categorical_cols: + le = LabelEncoder() + le.fit(X_train[col]) # Train 데이터 기준으로 학습 + label_encoders[col] = le + + # 변환 적용 + for col in categorical_cols: + X_train[col] = label_encoders[col].transform(X_train[col]) + X_val[col] = label_encoders[col].transform(X_val[col]) + X_test[col] = label_encoders[col].transform(X_test[col]) + + # 연속형 변수 Quantile Transformation + scaler = QuantileTransformer(output_distribution='normal') + scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습 + + # 변환 적용 + X_train[numerical_cols] = scaler.transform(X_train[numerical_cols]) + X_val[numerical_cols] = scaler.transform(X_val[numerical_cols]) + X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) + + # 연속형 변수와 범주형 변수 분리 + X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32) + X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long) + + X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32) + X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long) + + X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32) + X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long) + + # 레이블 변환 + if target == "binary": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32 + y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32) + elif target == "multi": + y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long + y_val_tensor = torch.tensor(y_val.values, dtype=torch.long) + y_test_tensor = torch.tensor(y_test.values, dtype=torch.long) + else: + raise ValueError("target must be 'binary' or 'multi'") + + # TensorDataset 생성 + train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor) + val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor) + test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor) + + # DataLoader 생성 (batch_size 파라미터 사용) + if random_state == None: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) + else: + train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True, generator=torch.Generator().manual_seed(random_state)) + val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) + test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False) + + return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader, y_train, scaler + + +def calculate_csi(y_true, pred): + + cm = confusion_matrix(y_true, pred) # 변수 이름을 cm으로 변경 + # 혼동 행렬에서 H, F, M 추출 + H = (cm[0, 0] + cm[1, 1]) + + F = (cm[1, 0] + cm[2, 0] + + cm[0, 1] + cm[2, 1]) + + M = (cm[0, 2] + cm[1, 2]) + + # CSI 계산 + CSI = H / (H + F + M + 1e-10) + return CSI + +def sample_weight(y_train): + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), # 고유 클래스 + y=y_train # 학습 데이터 레이블 + ) + sample_weights = np.array([class_weights[label] for label in y_train]) + + return sample_weights + +# 하이퍼파라미터 최적화 함수 정의 +def objective(trial, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + val_scores = [] + + # --- 1. 하이퍼파라미터 탐색 범위 정의 (수정됨) --- + if model_choose == "ft_transformer": + d_token = trial.suggest_int("d_token", 64, 256, step=32) + n_blocks = trial.suggest_int("n_blocks", 2, 6) # 깊이 축소로 과적합 방지 + n_heads = trial.suggest_categorical("n_heads", [4, 8]) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + attention_dropout = trial.suggest_float("attention_dropout", 0.1, 0.4) + ffn_dropout = trial.suggest_float("ffn_dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) # 범위 확대 + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'resnet_like': + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 512, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 5) # 너무 깊지 않게 조절 + dropout_first = trial.suggest_float("dropout_first", 0.1, 0.4) + dropout_second = trial.suggest_float("dropout_second", 0.0, 0.2) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + elif model_choose == 'deepgbm': + # DeepGBM의 경우 모델 특성에 맞춰 ResNet 블록 및 임베딩 차원 조절 + d_main = trial.suggest_int("d_main", 64, 256, step=32) + d_hidden = trial.suggest_int("d_hidden", 64, 256, step=64) + n_blocks = trial.suggest_int("n_blocks", 2, 6) + dropout = trial.suggest_float("dropout", 0.1, 0.4) + lr = trial.suggest_float("lr", 1e-5, 1e-2, log=True) + weight_decay = trial.suggest_float("weight_decay", 1e-4, 1e-1, log=True) # 더 공격적인 범위로 확장 + batch_size = trial.suggest_categorical("batch_size", [32, 64, 128, 256]) # Batch Size 추가 + + # --- 2. Fold별 학습 및 교차 검증 --- + for fold in range(1, n_folds + 1): + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, _ = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=n_blocks, + n_heads=n_heads, + attention_dropout=attention_dropout, + ffn_dropout=ffn_dropout, + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout_first=dropout_first, + dropout_second=dropout_second, + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=d_main, + d_hidden=d_hidden, + n_blocks=n_blocks, + dropout=dropout, + num_classes=3 + ).to(device) + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + # 클래스별 가중치 로그 출력 + unique_classes = np.unique(y_train) + class_counts = {cls: np.sum(y_train == cls) for cls in unique_classes} + print(f" Fold {fold} - 클래스별 가중치: {dict(zip(unique_classes, class_weights))} (클래스별 샘플 수: {class_counts})") + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=lr, weight_decay=weight_decay) + + # 학습률 스케줄러 추가: 성능 정체 시 LR을 0.5배 감소 (검증 CSI 기준) + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 (에폭 및 페이션스 상향) + epochs = 200 + patience = 12 # 딥러닝의 정체 구간을 고려하여 소폭 상향 + best_fold_csi = 0 + counter = 0 + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Optuna Pruning 적용 (첫 번째 Fold에서 조기 종료 판단 강화) + trial.report(val_csi, epoch) + if trial.should_prune(): + raise optuna.exceptions.TrialPruned() + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + else: + counter += 1 + + if counter >= patience: + break + + val_scores.append(best_fold_csi) + + # 모든 fold의 평균 성능 반환 + return np.mean(val_scores) + + +# 최적화된 하이퍼파라미터로 최종 모델 학습 및 저장 함수 +def train_final_model(best_params, model_choose, region, data_sample='pure', target='multi', n_folds=3, random_state=42): + """ + 최적화된 하이퍼파라미터로 최종 모델을 학습하고 저장합니다. + + Args: + best_params: 최적화된 하이퍼파라미터 딕셔너리 + model_choose: 모델 선택 ('ft_transformer', 'resnet_like', 'deepgbm') + region: 지역명 + data_sample: 데이터 샘플 타입 ('pure', 'smote', etc.) + target: 타겟 타입 ('multi', 'binary') + n_folds: 교차 검증 fold 수 + random_state: 랜덤 시드 + + Returns: + 저장된 모델 경로 리스트 + """ + # GPU 사용 가능 여부 확인 및 device 설정 + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + + models = [] + scalers = [] # scaler 리스트 추가 + + print("최종 모델 학습 시작...") + + for fold in range(1, n_folds + 1): + print(f"Fold {fold} 학습 중...") + + # 최적화된 batch_size 사용 + batch_size = best_params.get("batch_size", 64) + X_train_df, categorical_cols, numerical_cols, train_loader, val_loader, _, y_train, scaler = prepare_dataloader_with_batchsize( + region, data_sample=data_sample, target=target, fold=fold, random_state=random_state, batch_size=batch_size + ) + + # 모델 초기화 + if model_choose == "ft_transformer": + d_token = best_params["d_token"] + n_heads = best_params.get("n_heads", 8) + # d_token은 n_heads의 배수여야 함 (FT-Transformer의 구조적 제약 대응) + if d_token % n_heads != 0: + d_token = (d_token // n_heads) * n_heads + + model = FTTransformer( + num_features=len(numerical_cols), + cat_cardinalities=[len(X_train_df[col].unique()) for col in categorical_cols], + d_token=d_token, + n_blocks=best_params["n_blocks"], + n_heads=n_heads, + attention_dropout=best_params["attention_dropout"], + ffn_dropout=best_params["ffn_dropout"], + num_classes=3 + ).to(device) + elif model_choose == 'resnet_like': + input_dim = len(numerical_cols) + len(categorical_cols) + model = ResNetLike( + input_dim=input_dim, + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout_first=best_params["dropout_first"], + dropout_second=best_params["dropout_second"], + num_classes=3 + ).to(device) + elif model_choose == 'deepgbm': + model = DeepGBM( + num_features=len(numerical_cols), + cat_features=[len(X_train_df[col].unique()) for col in categorical_cols], + d_main=best_params["d_main"], + d_hidden=best_params["d_hidden"], + n_blocks=best_params["n_blocks"], + dropout=best_params["dropout"], + num_classes=3 + ).to(device) + else: + raise ValueError(f"Unknown model_choose: {model_choose}") + + # 클래스 가중치 계산 및 손실 함수 설정 (Label Smoothing 적용) + if target == 'multi': + class_weights = compute_class_weight( + class_weight='balanced', + classes=np.unique(y_train), + y=y_train + ) + class_weights_tensor = torch.tensor(class_weights, dtype=torch.float32).to(device) + criterion = nn.CrossEntropyLoss(weight=class_weights_tensor, label_smoothing=0.0) # Label Smoothing 추가 + else: + criterion = nn.BCEWithLogitsLoss() + optimizer = optim.AdamW(model.parameters(), lr=best_params["lr"], weight_decay=best_params["weight_decay"]) + + # 학습률 스케줄러 + scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='max', factor=0.5, patience=3) + + # 학습 설정 + epochs = 200 + patience = 12 + best_fold_csi = 0 + counter = 0 + best_model = None + + for epoch in range(epochs): + model.train() + for x_num_batch, x_cat_batch, y_batch in train_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + + optimizer.zero_grad() + y_pred = model(x_num_batch, x_cat_batch) + loss = criterion(y_pred, y_batch if target == 'multi' else y_batch.float()) + loss.backward() + optimizer.step() + + # Validation 평가 + model.eval() + y_pred_val, y_true_val = [], [] + with torch.no_grad(): + for x_num_batch, x_cat_batch, y_batch in val_loader: + x_num_batch, x_cat_batch, y_batch = x_num_batch.to(device), x_cat_batch.to(device), y_batch.to(device) + output = model(x_num_batch, x_cat_batch) + pred = output.argmax(dim=1) if target == 'multi' else (torch.sigmoid(output) >= 0.5).long() + + y_pred_val.extend(pred.cpu().numpy()) + y_true_val.extend(y_batch.cpu().numpy()) + + # CSI 계산 및 스케줄러 업데이트 + val_csi = calculate_csi(y_true_val, y_pred_val) + scheduler.step(val_csi) + + # Early Stopping 체크 + if val_csi > best_fold_csi: + best_fold_csi = val_csi + counter = 0 + best_model = copy.deepcopy(model) + else: + counter += 1 + + if counter >= patience: + print(f" Early stopping at epoch {epoch+1}, Best CSI: {best_fold_csi:.4f}") + break + + if best_model is None: + best_model = model + + scalers.append(scaler) # scaler 저장 (fold 순서대로) + models.append(best_model) + print(f" Fold {fold} 학습 완료 (검증 CSI: {best_fold_csi:.4f})") + + # 모델 저장 경로 설정 + save_dir = f'../save_model/{model_choose}_optima' + os.makedirs(save_dir, exist_ok=True) + + # 파일명 생성 + if data_sample == 'pure': + model_filename = f'{model_choose}_pure_{region}.pkl' + else: + model_filename = f'{model_choose}_{data_sample}_{region}.pkl' + + model_path = f'{save_dir}/{model_filename}' + + # 리스트에 담아 한 번에 저장 + joblib.dump(models, model_path) + print(f"\n모든 모델 저장 완료: {model_path} (총 {len(models)}개 fold)") + + # Scaler 별도 저장 + scaler_save_dir = f'../save_model/{model_choose}_optima/scaler' + os.makedirs(scaler_save_dir, exist_ok=True) + + # 파일명 생성 (모델과 동일한 패턴) + if data_sample == 'pure': + scaler_filename = f'{model_choose}_pure_{region}_scaler.pkl' + else: + scaler_filename = f'{model_choose}_{data_sample}_{region}_scaler.pkl' + + scaler_path = f'{scaler_save_dir}/{scaler_filename}' + joblib.dump(scalers, scaler_path) + print(f"Scaler 저장 완료: {scaler_path} (총 {len(scalers)}개 fold)") + + return model_path diff --git a/Analysis_code/5.optima/run_bash/deepgbm/run_deepgbm_pure.sh b/Analysis_code/5.optima/run_bash/deepgbm/run_deepgbm_pure.sh new file mode 100755 index 0000000000000000000000000000000000000000..fbac73997af29a744266b77c4b3c4737b5463c3f --- /dev/null +++ b/Analysis_code/5.optima/run_bash/deepgbm/run_deepgbm_pure.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "DeepGBM Pure 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 1번 (CUDA_VISIBLE_DEVICES=1)" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + "deepgbm_pure_busan.py" + "deepgbm_pure_daegu.py" + "deepgbm_pure_daejeon.py" + "deepgbm_pure_gwangju.py" + "deepgbm_pure_incheon.py" + "deepgbm_pure_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="deepgbm_pure/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (GPU 1번 설정) + if CUDA_VISIBLE_DEVICES=1 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "DeepGBM Pure 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + diff --git a/Analysis_code/5.optima/run_bash/deepgbm/run_deepgbm_smote.sh b/Analysis_code/5.optima/run_bash/deepgbm/run_deepgbm_smote.sh new file mode 100755 index 0000000000000000000000000000000000000000..dbcdcb43690f5ce5e92452d792e6ea51db71be33 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/deepgbm/run_deepgbm_smote.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "DeepGBM SMOTE 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 1번 (CUDA_VISIBLE_DEVICES=1)" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + "deepgbm_smote_busan.py" + "deepgbm_smote_daegu.py" + "deepgbm_smote_daejeon.py" + "deepgbm_smote_gwangju.py" + "deepgbm_smote_incheon.py" + "deepgbm_smote_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="deepgbm_smote/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (GPU 1번 설정) + if CUDA_VISIBLE_DEVICES=1 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "DeepGBM SMOTE 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + diff --git a/Analysis_code/5.optima/run_bash/deepgbm/run_deepgbm_smotenc_ctgan20000.sh b/Analysis_code/5.optima/run_bash/deepgbm/run_deepgbm_smotenc_ctgan20000.sh new file mode 100755 index 0000000000000000000000000000000000000000..a262284800e3832d905170d9a2bc4c568556bdd3 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/deepgbm/run_deepgbm_smotenc_ctgan20000.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "DeepGBM SMOTENC CTGAN20000 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 1번 (CUDA_VISIBLE_DEVICES=1)" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + "deepgbm_smotenc_ctgan20000_busan.py" + "deepgbm_smotenc_ctgan20000_daegu.py" + "deepgbm_smotenc_ctgan20000_daejeon.py" + "deepgbm_smotenc_ctgan20000_gwangju.py" + "deepgbm_smotenc_ctgan20000_incheon.py" + "deepgbm_smotenc_ctgan20000_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="deepgbm_smotenc_ctgan20000/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (GPU 1번 설정) + if CUDA_VISIBLE_DEVICES=1 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "DeepGBM SMOTENC CTGAN20000 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + diff --git a/Analysis_code/5.optima/run_bash/ft_transformer/ft_transformer_pure.log b/Analysis_code/5.optima/run_bash/ft_transformer/ft_transformer_pure.log new file mode 100644 index 0000000000000000000000000000000000000000..f3d8771ca90056dfe8fc3a617f25d62e25956f4e --- /dev/null +++ b/Analysis_code/5.optima/run_bash/ft_transformer/ft_transformer_pure.log @@ -0,0 +1,246 @@ +nohup: ignoring input +/bin/bash: /opt/conda/lib/libtinfo.so.6: no version information available (required by /bin/bash) +========================================== +FT-Transformer Pure 파일 실행 시작 +시작 시간: 2025-12-24 21:05:51 +GPU: 0번 (CUDA_VISIBLE_DEVICES=0) +========================================== + +---------------------------------------- +실행 중: ft_transformer_pure/ft_transforemer_pure_busan.py +시작 시간: 2025-12-24 21:05:51 +---------------------------------------- +[I 2025-12-24 21:05:52,186] A new study created in memory with name: no-name-cbbdd308-9187-4fe4-981c-c22eafca869e + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:07:15,828] Trial 0 finished with value: 0.2716562081953138 and parameters: {'d_token': 192, 'n_blocks': 6, 'n_heads': 8, 'attention_dropout': 0.11161146376561665, 'ffn_dropout': 0.16539029606255945, 'lr': 0.0005298408753759566, 'weight_decay': 0.017614939068221567, 'batch_size': 64}. Best is trial 0 with value: 0.2716562081953138. + +================================================================================ +Trial 0 완료 + Value (CSI): 0.271656 + Parameters: {'d_token': 192, 'n_blocks': 6, 'n_heads': 8, 'attention_dropout': 0.11161146376561665, 'ffn_dropout': 0.16539029606255945, 'lr': 0.0005298408753759566, 'weight_decay': 0.017614939068221567, 'batch_size': 64} + Best Value (CSI): 0.271656 + Best Trial: 0 + Best Parameters: {'d_token': 192, 'n_blocks': 6, 'n_heads': 8, 'attention_dropout': 0.11161146376561665, 'ffn_dropout': 0.16539029606255945, 'lr': 0.0005298408753759566, 'weight_decay': 0.017614939068221567, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:08:29,449] Trial 1 finished with value: 0.40681736446514954 and parameters: {'d_token': 96, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.15540270176323806, 'ffn_dropout': 0.27253625623596467, 'lr': 0.00044929186520826483, 'weight_decay': 0.003390384966471146, 'batch_size': 128}. Best is trial 1 with value: 0.40681736446514954. + +================================================================================ +Trial 1 완료 + Value (CSI): 0.406817 + Parameters: {'d_token': 96, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.15540270176323806, 'ffn_dropout': 0.27253625623596467, 'lr': 0.00044929186520826483, 'weight_decay': 0.003390384966471146, 'batch_size': 128} + Best Value (CSI): 0.406817 + Best Trial: 1 + Best Parameters: {'d_token': 96, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.15540270176323806, 'ffn_dropout': 0.27253625623596467, 'lr': 0.00044929186520826483, 'weight_decay': 0.003390384966471146, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:11:06,686] Trial 2 finished with value: 0.3573276604690426 and parameters: {'d_token': 160, 'n_blocks': 3, 'n_heads': 4, 'attention_dropout': 0.3601098829646031, 'ffn_dropout': 0.3490416201648363, 'lr': 6.163844995114048e-05, 'weight_decay': 0.00019208795174567497, 'batch_size': 64}. Best is trial 1 with value: 0.40681736446514954. + +================================================================================ +Trial 2 완료 + Value (CSI): 0.357328 + Parameters: {'d_token': 160, 'n_blocks': 3, 'n_heads': 4, 'attention_dropout': 0.3601098829646031, 'ffn_dropout': 0.3490416201648363, 'lr': 6.163844995114048e-05, 'weight_decay': 0.00019208795174567497, 'batch_size': 64} + Best Value (CSI): 0.406817 + Best Trial: 1 + Best Parameters: {'d_token': 96, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.15540270176323806, 'ffn_dropout': 0.27253625623596467, 'lr': 0.00044929186520826483, 'weight_decay': 0.003390384966471146, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:12:26,059] Trial 3 finished with value: 0.40546390841173974 and parameters: {'d_token': 160, 'n_blocks': 3, 'n_heads': 8, 'attention_dropout': 0.35874568857982514, 'ffn_dropout': 0.12393618693450768, 'lr': 0.00025016844156483965, 'weight_decay': 0.004002829955614525, 'batch_size': 128}. Best is trial 1 with value: 0.40681736446514954. + +================================================================================ +Trial 3 완료 + Value (CSI): 0.405464 + Parameters: {'d_token': 160, 'n_blocks': 3, 'n_heads': 8, 'attention_dropout': 0.35874568857982514, 'ffn_dropout': 0.12393618693450768, 'lr': 0.00025016844156483965, 'weight_decay': 0.004002829955614525, 'batch_size': 128} + Best Value (CSI): 0.406817 + Best Trial: 1 + Best Parameters: {'d_token': 96, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.15540270176323806, 'ffn_dropout': 0.27253625623596467, 'lr': 0.00044929186520826483, 'weight_decay': 0.003390384966471146, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:14:11,922] Trial 4 finished with value: 0.05763020768354185 and parameters: {'d_token': 192, 'n_blocks': 6, 'n_heads': 8, 'attention_dropout': 0.22163904998551381, 'ffn_dropout': 0.3470697330323391, 'lr': 0.008230613887251468, 'weight_decay': 0.0003203157082813393, 'batch_size': 128}. Best is trial 1 with value: 0.40681736446514954. + +================================================================================ +Trial 4 완료 + Value (CSI): 0.057630 + Parameters: {'d_token': 192, 'n_blocks': 6, 'n_heads': 8, 'attention_dropout': 0.22163904998551381, 'ffn_dropout': 0.3470697330323391, 'lr': 0.008230613887251468, 'weight_decay': 0.0003203157082813393, 'batch_size': 128} + Best Value (CSI): 0.406817 + Best Trial: 1 + Best Parameters: {'d_token': 96, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.15540270176323806, 'ffn_dropout': 0.27253625623596467, 'lr': 0.00044929186520826483, 'weight_decay': 0.003390384966471146, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:19:34,052] Trial 5 finished with value: 0.4206899061123088 and parameters: {'d_token': 96, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.1352387756644564, 'ffn_dropout': 0.14472440440380052, 'lr': 9.340289562157445e-05, 'weight_decay': 0.0002938915951634303, 'batch_size': 32}. Best is trial 5 with value: 0.4206899061123088. + +================================================================================ +Trial 5 완료 + Value (CSI): 0.420690 + Parameters: {'d_token': 96, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.1352387756644564, 'ffn_dropout': 0.14472440440380052, 'lr': 9.340289562157445e-05, 'weight_decay': 0.0002938915951634303, 'batch_size': 32} + Best Value (CSI): 0.420690 + Best Trial: 5 + Best Parameters: {'d_token': 96, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.1352387756644564, 'ffn_dropout': 0.14472440440380052, 'lr': 9.340289562157445e-05, 'weight_decay': 0.0002938915951634303, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:19:42,321] Trial 6 pruned. + +================================================================================ +Trial 6 완료 + Value (CSI): 0.353480 + Parameters: {'d_token': 96, 'n_blocks': 6, 'n_heads': 4, 'attention_dropout': 0.39594917797466855, 'ffn_dropout': 0.3203346716186153, 'lr': 0.000781676547670931, 'weight_decay': 0.008307922629229626, 'batch_size': 256} + Best Value (CSI): 0.420690 + Best Trial: 5 + Best Parameters: {'d_token': 96, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.1352387756644564, 'ffn_dropout': 0.14472440440380052, 'lr': 9.340289562157445e-05, 'weight_decay': 0.0002938915951634303, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) +[I 2025-12-24 21:20:32,465] Trial 7 pruned. + +================================================================================ +Trial 7 완료 + Value (CSI): 0.401852 + Parameters: {'d_token': 160, 'n_blocks': 3, 'n_heads': 4, 'attention_dropout': 0.3668265618216233, 'ffn_dropout': 0.3925083503096971, 'lr': 0.00037367521501284066, 'weight_decay': 0.011598232677155231, 'batch_size': 128} + Best Value (CSI): 0.420690 + Best Trial: 5 + Best Parameters: {'d_token': 96, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.1352387756644564, 'ffn_dropout': 0.14472440440380052, 'lr': 9.340289562157445e-05, 'weight_decay': 0.0002938915951634303, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:28:18,884] Trial 8 finished with value: 0.41158589732941925 and parameters: {'d_token': 192, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.37209712351706214, 'ffn_dropout': 0.20731899678017, 'lr': 0.000218138503538878, 'weight_decay': 0.0001184931303641176, 'batch_size': 32}. Best is trial 5 with value: 0.4206899061123088. + +================================================================================ +Trial 8 완료 + Value (CSI): 0.411586 + Parameters: {'d_token': 192, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.37209712351706214, 'ffn_dropout': 0.20731899678017, 'lr': 0.000218138503538878, 'weight_decay': 0.0001184931303641176, 'batch_size': 32} + Best Value (CSI): 0.420690 + Best Trial: 5 + Best Parameters: {'d_token': 96, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.1352387756644564, 'ffn_dropout': 0.14472440440380052, 'lr': 9.340289562157445e-05, 'weight_decay': 0.0002938915951634303, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:28:29,737] Trial 9 pruned. + +================================================================================ +Trial 9 완료 + Value (CSI): 0.369433 + Parameters: {'d_token': 96, 'n_blocks': 4, 'n_heads': 4, 'attention_dropout': 0.2803024777911396, 'ffn_dropout': 0.12857578173351294, 'lr': 0.0007189895940006559, 'weight_decay': 0.00019844456080760276, 'batch_size': 256} + Best Value (CSI): 0.420690 + Best Trial: 5 + Best Parameters: {'d_token': 96, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.1352387756644564, 'ffn_dropout': 0.14472440440380052, 'lr': 9.340289562157445e-05, 'weight_decay': 0.0002938915951634303, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:29:17,323] Trial 10 pruned. + +================================================================================ +Trial 10 완료 + Value (CSI): 0.361136 + Parameters: {'d_token': 64, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.10226527035464761, 'ffn_dropout': 0.21168172867208787, 'lr': 1.0382931622997178e-05, 'weight_decay': 0.0008351894612281936, 'batch_size': 32} + Best Value (CSI): 0.420690 + Best Trial: 5 + Best Parameters: {'d_token': 96, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.1352387756644564, 'ffn_dropout': 0.14472440440380052, 'lr': 9.340289562157445e-05, 'weight_decay': 0.0002938915951634303, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:38:12,793] Trial 11 finished with value: 0.4099823120630448 and parameters: {'d_token': 256, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.2854965392430121, 'ffn_dropout': 0.19524179027271088, 'lr': 7.023186682543279e-05, 'weight_decay': 0.0001024857249200319, 'batch_size': 32}. Best is trial 5 with value: 0.4206899061123088. + +================================================================================ +Trial 11 완료 + Value (CSI): 0.409982 + Parameters: {'d_token': 256, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.2854965392430121, 'ffn_dropout': 0.19524179027271088, 'lr': 7.023186682543279e-05, 'weight_decay': 0.0001024857249200319, 'batch_size': 32} + Best Value (CSI): 0.420690 + Best Trial: 5 + Best Parameters: {'d_token': 96, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.1352387756644564, 'ffn_dropout': 0.14472440440380052, 'lr': 9.340289562157445e-05, 'weight_decay': 0.0002938915951634303, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:43:17,311] Trial 12 finished with value: 0.43285145179010937 and parameters: {'d_token': 256, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.19629762465883627, 'ffn_dropout': 0.10602886629880709, 'lr': 0.00010096393518563076, 'weight_decay': 0.0008082976530795957, 'batch_size': 32}. Best is trial 12 with value: 0.43285145179010937. + +================================================================================ +Trial 12 완료 + Value (CSI): 0.432851 + Parameters: {'d_token': 256, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.19629762465883627, 'ffn_dropout': 0.10602886629880709, 'lr': 0.00010096393518563076, 'weight_decay': 0.0008082976530795957, 'batch_size': 32} + Best Value (CSI): 0.432851 + Best Trial: 12 + Best Parameters: {'d_token': 256, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.19629762465883627, 'ffn_dropout': 0.10602886629880709, 'lr': 0.00010096393518563076, 'weight_decay': 0.0008082976530795957, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:49:12,072] Trial 13 finished with value: 0.42530117027192066 and parameters: {'d_token': 256, 'n_blocks': 4, 'n_heads': 8, 'attention_dropout': 0.18041728686941927, 'ffn_dropout': 0.11264108754126853, 'lr': 4.962079194793984e-05, 'weight_decay': 0.0008626335334910986, 'batch_size': 32}. Best is trial 12 with value: 0.43285145179010937. + +================================================================================ +Trial 13 완료 + Value (CSI): 0.425301 + Parameters: {'d_token': 256, 'n_blocks': 4, 'n_heads': 8, 'attention_dropout': 0.18041728686941927, 'ffn_dropout': 0.11264108754126853, 'lr': 4.962079194793984e-05, 'weight_decay': 0.0008626335334910986, 'batch_size': 32} + Best Value (CSI): 0.432851 + Best Trial: 12 + Best Parameters: {'d_token': 256, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.19629762465883627, 'ffn_dropout': 0.10602886629880709, 'lr': 0.00010096393518563076, 'weight_decay': 0.0008082976530795957, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:54:46,722] Trial 14 finished with value: 0.3972831331277789 and parameters: {'d_token': 256, 'n_blocks': 4, 'n_heads': 8, 'attention_dropout': 0.19067532756157915, 'ffn_dropout': 0.10979003854169951, 'lr': 1.8114802502367554e-05, 'weight_decay': 0.001204940422568156, 'batch_size': 32}. Best is trial 12 with value: 0.43285145179010937. + +================================================================================ +Trial 14 완료 + Value (CSI): 0.397283 + Parameters: {'d_token': 256, 'n_blocks': 4, 'n_heads': 8, 'attention_dropout': 0.19067532756157915, 'ffn_dropout': 0.10979003854169951, 'lr': 1.8114802502367554e-05, 'weight_decay': 0.001204940422568156, 'batch_size': 32} + Best Value (CSI): 0.432851 + Best Trial: 12 + Best Parameters: {'d_token': 256, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.19629762465883627, 'ffn_dropout': 0.10602886629880709, 'lr': 0.00010096393518563076, 'weight_decay': 0.0008082976530795957, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:57:49,444] Trial 15 finished with value: 0.3794355947774739 and parameters: {'d_token': 224, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.18548075704642356, 'ffn_dropout': 0.1693140844425441, 'lr': 2.9510008201866402e-05, 'weight_decay': 0.07698800691804498, 'batch_size': 32}. Best is trial 12 with value: 0.43285145179010937. + +================================================================================ +Trial 15 완료 + Value (CSI): 0.379436 + Parameters: {'d_token': 224, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.18548075704642356, 'ffn_dropout': 0.1693140844425441, 'lr': 2.9510008201866402e-05, 'weight_decay': 0.07698800691804498, 'batch_size': 32} + Best Value (CSI): 0.432851 + Best Trial: 12 + Best Parameters: {'d_token': 256, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.19629762465883627, 'ffn_dropout': 0.10602886629880709, 'lr': 0.00010096393518563076, 'weight_decay': 0.0008082976530795957, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 22:01:24,558] Trial 16 finished with value: 0.3727053563934914 and parameters: {'d_token': 224, 'n_blocks': 3, 'n_heads': 8, 'attention_dropout': 0.2290667457024898, 'ffn_dropout': 0.10549807703167577, 'lr': 3.326386548838545e-05, 'weight_decay': 0.000903196427161907, 'batch_size': 32}. Best is trial 12 with value: 0.43285145179010937. + +================================================================================ +Trial 16 완료 + Value (CSI): 0.372705 + Parameters: {'d_token': 224, 'n_blocks': 3, 'n_heads': 8, 'attention_dropout': 0.2290667457024898, 'ffn_dropout': 0.10549807703167577, 'lr': 3.326386548838545e-05, 'weight_decay': 0.000903196427161907, 'batch_size': 32} + Best Value (CSI): 0.432851 + Best Trial: 12 + Best Parameters: {'d_token': 256, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.19629762465883627, 'ffn_dropout': 0.10602886629880709, 'lr': 0.00010096393518563076, 'weight_decay': 0.0008082976530795957, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) diff --git a/Analysis_code/5.optima/run_bash/ft_transformer/ft_transformer_smote.log b/Analysis_code/5.optima/run_bash/ft_transformer/ft_transformer_smote.log new file mode 100644 index 0000000000000000000000000000000000000000..40b99fd55b829e168bf8d0212892ab29c41eb9d1 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/ft_transformer/ft_transformer_smote.log @@ -0,0 +1,373 @@ +nohup: ignoring input +/bin/bash: /opt/conda/lib/libtinfo.so.6: no version information available (required by /bin/bash) +========================================== +FT-Transformer SMOTE 파일 실행 시작 +시작 시간: 2025-12-24 21:05:54 +GPU: 0번 (CUDA_VISIBLE_DEVICES=0) +========================================== + +---------------------------------------- +실행 중: ft_transformer_smote/ft_transformer_smote_busan.py +시작 시간: 2025-12-24 21:05:54 +---------------------------------------- +[I 2025-12-24 21:05:55,889] A new study created in memory with name: no-name-47815f99-cf7c-435c-bccc-b9cfbfadae6a + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:12:28,543] Trial 0 finished with value: 0.41965141552801977 and parameters: {'d_token': 128, 'n_blocks': 3, 'n_heads': 4, 'attention_dropout': 0.1574935976731961, 'ffn_dropout': 0.30988558670860916, 'lr': 0.0009464150023590392, 'weight_decay': 0.0025483001332046312, 'batch_size': 32}. Best is trial 0 with value: 0.41965141552801977. + +================================================================================ +Trial 0 완료 + Value (CSI): 0.419651 + Parameters: {'d_token': 128, 'n_blocks': 3, 'n_heads': 4, 'attention_dropout': 0.1574935976731961, 'ffn_dropout': 0.30988558670860916, 'lr': 0.0009464150023590392, 'weight_decay': 0.0025483001332046312, 'batch_size': 32} + Best Value (CSI): 0.419651 + Best Trial: 0 + Best Parameters: {'d_token': 128, 'n_blocks': 3, 'n_heads': 4, 'attention_dropout': 0.1574935976731961, 'ffn_dropout': 0.30988558670860916, 'lr': 0.0009464150023590392, 'weight_decay': 0.0025483001332046312, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:15:25,215] Trial 1 finished with value: 0.4334669922507663 and parameters: {'d_token': 96, 'n_blocks': 6, 'n_heads': 8, 'attention_dropout': 0.20913135186001872, 'ffn_dropout': 0.19083318435575872, 'lr': 0.001389560850445599, 'weight_decay': 0.005112284813526378, 'batch_size': 256}. Best is trial 1 with value: 0.4334669922507663. + +================================================================================ +Trial 1 완료 + Value (CSI): 0.433467 + Parameters: {'d_token': 96, 'n_blocks': 6, 'n_heads': 8, 'attention_dropout': 0.20913135186001872, 'ffn_dropout': 0.19083318435575872, 'lr': 0.001389560850445599, 'weight_decay': 0.005112284813526378, 'batch_size': 256} + Best Value (CSI): 0.433467 + Best Trial: 1 + Best Parameters: {'d_token': 96, 'n_blocks': 6, 'n_heads': 8, 'attention_dropout': 0.20913135186001872, 'ffn_dropout': 0.19083318435575872, 'lr': 0.001389560850445599, 'weight_decay': 0.005112284813526378, 'batch_size': 256} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:16:47,955] Trial 2 finished with value: 0.32463801945895776 and parameters: {'d_token': 160, 'n_blocks': 3, 'n_heads': 4, 'attention_dropout': 0.3236019678279256, 'ffn_dropout': 0.16654956503815277, 'lr': 0.003736625649918855, 'weight_decay': 0.0006263372812843186, 'batch_size': 256}. Best is trial 1 with value: 0.4334669922507663. + +================================================================================ +Trial 2 완료 + Value (CSI): 0.324638 + Parameters: {'d_token': 160, 'n_blocks': 3, 'n_heads': 4, 'attention_dropout': 0.3236019678279256, 'ffn_dropout': 0.16654956503815277, 'lr': 0.003736625649918855, 'weight_decay': 0.0006263372812843186, 'batch_size': 256} + Best Value (CSI): 0.433467 + Best Trial: 1 + Best Parameters: {'d_token': 96, 'n_blocks': 6, 'n_heads': 8, 'attention_dropout': 0.20913135186001872, 'ffn_dropout': 0.19083318435575872, 'lr': 0.001389560850445599, 'weight_decay': 0.005112284813526378, 'batch_size': 256} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:20:58,831] Trial 3 finished with value: 0.39680243410364485 and parameters: {'d_token': 96, 'n_blocks': 4, 'n_heads': 4, 'attention_dropout': 0.2695097297697054, 'ffn_dropout': 0.2928213639887195, 'lr': 2.440676516352321e-05, 'weight_decay': 0.0016235810946773038, 'batch_size': 64}. Best is trial 1 with value: 0.4334669922507663. + +================================================================================ +Trial 3 완료 + Value (CSI): 0.396802 + Parameters: {'d_token': 96, 'n_blocks': 4, 'n_heads': 4, 'attention_dropout': 0.2695097297697054, 'ffn_dropout': 0.2928213639887195, 'lr': 2.440676516352321e-05, 'weight_decay': 0.0016235810946773038, 'batch_size': 64} + Best Value (CSI): 0.433467 + Best Trial: 1 + Best Parameters: {'d_token': 96, 'n_blocks': 6, 'n_heads': 8, 'attention_dropout': 0.20913135186001872, 'ffn_dropout': 0.19083318435575872, 'lr': 0.001389560850445599, 'weight_decay': 0.005112284813526378, 'batch_size': 256} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:22:46,047] Trial 4 finished with value: 0.40399158382571887 and parameters: {'d_token': 96, 'n_blocks': 5, 'n_heads': 4, 'attention_dropout': 0.1598591149682682, 'ffn_dropout': 0.22447400715104449, 'lr': 0.00035943399423804084, 'weight_decay': 0.09174534108052207, 'batch_size': 256}. Best is trial 1 with value: 0.4334669922507663. + +================================================================================ +Trial 4 완료 + Value (CSI): 0.403992 + Parameters: {'d_token': 96, 'n_blocks': 5, 'n_heads': 4, 'attention_dropout': 0.1598591149682682, 'ffn_dropout': 0.22447400715104449, 'lr': 0.00035943399423804084, 'weight_decay': 0.09174534108052207, 'batch_size': 256} + Best Value (CSI): 0.433467 + Best Trial: 1 + Best Parameters: {'d_token': 96, 'n_blocks': 6, 'n_heads': 8, 'attention_dropout': 0.20913135186001872, 'ffn_dropout': 0.19083318435575872, 'lr': 0.001389560850445599, 'weight_decay': 0.005112284813526378, 'batch_size': 256} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:24:29,964] Trial 5 finished with value: 0.4375110175056123 and parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128}. Best is trial 5 with value: 0.4375110175056123. + +================================================================================ +Trial 5 완료 + Value (CSI): 0.437511 + Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:24:52,617] Trial 6 pruned. + +================================================================================ +Trial 6 완료 + Value (CSI): 0.427095 + Parameters: {'d_token': 160, 'n_blocks': 4, 'n_heads': 4, 'attention_dropout': 0.2655596423760539, 'ffn_dropout': 0.22190839625702635, 'lr': 2.0013738329828316e-05, 'weight_decay': 0.03413801401669146, 'batch_size': 128} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:25:06,730] Trial 7 pruned. + +================================================================================ +Trial 7 완료 + Value (CSI): 0.055556 + Parameters: {'d_token': 256, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.2194144511212589, 'ffn_dropout': 0.38382670675094377, 'lr': 0.0031539957812792307, 'weight_decay': 0.00014795822138527736, 'batch_size': 128} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:28:57,175] Trial 8 finished with value: 0.4166224751181035 and parameters: {'d_token': 224, 'n_blocks': 6, 'n_heads': 4, 'attention_dropout': 0.2332383594859541, 'ffn_dropout': 0.36305168512300656, 'lr': 0.00013001003991295996, 'weight_decay': 0.0027087254518589994, 'batch_size': 128}. Best is trial 5 with value: 0.4375110175056123. + +================================================================================ +Trial 8 완료 + Value (CSI): 0.416622 + Parameters: {'d_token': 224, 'n_blocks': 6, 'n_heads': 4, 'attention_dropout': 0.2332383594859541, 'ffn_dropout': 0.36305168512300656, 'lr': 0.00013001003991295996, 'weight_decay': 0.0027087254518589994, 'batch_size': 128} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:29:35,198] Trial 9 pruned. + +================================================================================ +Trial 9 완료 + Value (CSI): 0.404588 + Parameters: {'d_token': 64, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.10751956210401374, 'ffn_dropout': 0.16464681918192303, 'lr': 0.00012662986306850234, 'weight_decay': 0.02342516728093419, 'batch_size': 32} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:30:09,945] Trial 10 pruned. + +================================================================================ +Trial 10 완료 + Value (CSI): 0.004668 + Parameters: {'d_token': 192, 'n_blocks': 3, 'n_heads': 8, 'attention_dropout': 0.3898439442423115, 'ffn_dropout': 0.10681319536078082, 'lr': 0.008658219863750703, 'weight_decay': 0.00010555729964301237, 'batch_size': 64} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:30:36,905] Trial 11 pruned. + +================================================================================ +Trial 11 완료 + Value (CSI): 0.414716 + Parameters: {'d_token': 64, 'n_blocks': 6, 'n_heads': 8, 'attention_dropout': 0.3638651295874337, 'ffn_dropout': 0.2642494382623264, 'lr': 0.0011905783073190076, 'weight_decay': 0.008088603232781398, 'batch_size': 256} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:32:45,785] Trial 12 finished with value: 0.42300968712454384 and parameters: {'d_token': 128, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.33704343113081175, 'ffn_dropout': 0.3235601855526829, 'lr': 0.0011604191302588547, 'weight_decay': 0.0006686151814379874, 'batch_size': 128}. Best is trial 5 with value: 0.4375110175056123. + +================================================================================ +Trial 12 완료 + Value (CSI): 0.423010 + Parameters: {'d_token': 128, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.33704343113081175, 'ffn_dropout': 0.3235601855526829, 'lr': 0.0011604191302588547, 'weight_decay': 0.0006686151814379874, 'batch_size': 128} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:33:05,197] Trial 13 pruned. + +================================================================================ +Trial 13 완료 + Value (CSI): 0.004668 + Parameters: {'d_token': 128, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.30623679320906483, 'ffn_dropout': 0.25280745574750896, 'lr': 0.009708106028279226, 'weight_decay': 0.007280780572685686, 'batch_size': 256} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:34:49,662] Trial 14 finished with value: 0.423669310426247 and parameters: {'d_token': 96, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.38776500456448787, 'ffn_dropout': 0.34521481112445573, 'lr': 0.0029765086830707706, 'weight_decay': 0.00045247618273238293, 'batch_size': 128}. Best is trial 5 with value: 0.4375110175056123. + +================================================================================ +Trial 14 완료 + Value (CSI): 0.423669 + Parameters: {'d_token': 96, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.38776500456448787, 'ffn_dropout': 0.34521481112445573, 'lr': 0.0029765086830707706, 'weight_decay': 0.00045247618273238293, 'batch_size': 128} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:38:51,619] Trial 15 finished with value: 0.4365318008837689 and parameters: {'d_token': 192, 'n_blocks': 6, 'n_heads': 8, 'attention_dropout': 0.2999068452257059, 'ffn_dropout': 0.2656001055016814, 'lr': 0.0007119719336366016, 'weight_decay': 0.006173782177895953, 'batch_size': 256}. Best is trial 5 with value: 0.4375110175056123. + +================================================================================ +Trial 15 완료 + Value (CSI): 0.436532 + Parameters: {'d_token': 192, 'n_blocks': 6, 'n_heads': 8, 'attention_dropout': 0.2999068452257059, 'ffn_dropout': 0.2656001055016814, 'lr': 0.0007119719336366016, 'weight_decay': 0.006173782177895953, 'batch_size': 256} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:45:03,484] Trial 16 finished with value: 0.43280990739996156 and parameters: {'d_token': 192, 'n_blocks': 4, 'n_heads': 8, 'attention_dropout': 0.2971442062381562, 'ffn_dropout': 0.29015538747493885, 'lr': 0.0003538573033897117, 'weight_decay': 0.0011816252898125496, 'batch_size': 32}. Best is trial 5 with value: 0.4375110175056123. + +================================================================================ +Trial 16 완료 + Value (CSI): 0.432810 + Parameters: {'d_token': 192, 'n_blocks': 4, 'n_heads': 8, 'attention_dropout': 0.2971442062381562, 'ffn_dropout': 0.29015538747493885, 'lr': 0.0003538573033897117, 'weight_decay': 0.0011816252898125496, 'batch_size': 32} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:48:11,069] Trial 17 finished with value: 0.4372625602497062 and parameters: {'d_token': 192, 'n_blocks': 3, 'n_heads': 8, 'attention_dropout': 0.32878153873614646, 'ffn_dropout': 0.3281289651580391, 'lr': 0.0005719163604844605, 'weight_decay': 0.0002543813823444051, 'batch_size': 64}. Best is trial 5 with value: 0.4375110175056123. + +================================================================================ +Trial 17 완료 + Value (CSI): 0.437263 + Parameters: {'d_token': 192, 'n_blocks': 3, 'n_heads': 8, 'attention_dropout': 0.32878153873614646, 'ffn_dropout': 0.3281289651580391, 'lr': 0.0005719163604844605, 'weight_decay': 0.0002543813823444051, 'batch_size': 64} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:48:46,653] Trial 18 pruned. + +================================================================================ +Trial 18 완료 + Value (CSI): 0.418902 + Parameters: {'d_token': 256, 'n_blocks': 3, 'n_heads': 8, 'attention_dropout': 0.34980121968769395, 'ffn_dropout': 0.3987179566593859, 'lr': 0.00016241238377965098, 'weight_decay': 0.00024399990341743757, 'batch_size': 64} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:51:11,629] Trial 19 finished with value: 0.4359863113211031 and parameters: {'d_token': 224, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.3644873901170365, 'ffn_dropout': 0.3336321391123297, 'lr': 0.0005355930716015892, 'weight_decay': 0.0003022826262774228, 'batch_size': 64}. Best is trial 5 with value: 0.4375110175056123. + +================================================================================ +Trial 19 완료 + Value (CSI): 0.435986 + Parameters: {'d_token': 224, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.3644873901170365, 'ffn_dropout': 0.3336321391123297, 'lr': 0.0005355930716015892, 'weight_decay': 0.0003022826262774228, 'batch_size': 64} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:51:42,808] Trial 20 pruned. + +================================================================================ +Trial 20 완료 + Value (CSI): 0.050238 + Parameters: {'d_token': 160, 'n_blocks': 3, 'n_heads': 8, 'attention_dropout': 0.3294070952189383, 'ffn_dropout': 0.3584180402593875, 'lr': 0.002201007483093833, 'weight_decay': 0.00023566347793866209, 'batch_size': 64} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:53:13,410] Trial 21 finished with value: 0.41660778074477284 and parameters: {'d_token': 192, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.2996503080720502, 'ffn_dropout': 0.2850671156681769, 'lr': 0.000613877242535718, 'weight_decay': 0.0009973432087874302, 'batch_size': 256}. Best is trial 5 with value: 0.4375110175056123. + +================================================================================ +Trial 21 완료 + Value (CSI): 0.416608 + Parameters: {'d_token': 192, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.2996503080720502, 'ffn_dropout': 0.2850671156681769, 'lr': 0.000613877242535718, 'weight_decay': 0.0009973432087874302, 'batch_size': 256} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:54:50,973] Trial 22 finished with value: 0.410518360427276 and parameters: {'d_token': 224, 'n_blocks': 3, 'n_heads': 8, 'attention_dropout': 0.3608237164642354, 'ffn_dropout': 0.3195409223897255, 'lr': 0.0007151084409601565, 'weight_decay': 0.0004212352907288091, 'batch_size': 128}. Best is trial 5 with value: 0.4375110175056123. + +================================================================================ +Trial 22 완료 + Value (CSI): 0.410518 + Parameters: {'d_token': 224, 'n_blocks': 3, 'n_heads': 8, 'attention_dropout': 0.3608237164642354, 'ffn_dropout': 0.3195409223897255, 'lr': 0.0007151084409601565, 'weight_decay': 0.0004212352907288091, 'batch_size': 128} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:55:21,870] Trial 23 pruned. + +================================================================================ +Trial 23 완료 + Value (CSI): 0.004668 + Parameters: {'d_token': 192, 'n_blocks': 4, 'n_heads': 8, 'attention_dropout': 0.2867797909315473, 'ffn_dropout': 0.2752686726720989, 'lr': 0.0017117696447767838, 'weight_decay': 0.0001333568973646567, 'batch_size': 64} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:58:28,381] Trial 24 finished with value: 0.4301591461595642 and parameters: {'d_token': 160, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.32598949654607123, 'ffn_dropout': 0.2949630817646046, 'lr': 0.00023496751147774778, 'weight_decay': 0.0015427648762640848, 'batch_size': 64}. Best is trial 5 with value: 0.4375110175056123. + +================================================================================ +Trial 24 완료 + Value (CSI): 0.430159 + Parameters: {'d_token': 160, 'n_blocks': 2, 'n_heads': 8, 'attention_dropout': 0.32598949654607123, 'ffn_dropout': 0.2949630817646046, 'lr': 0.00023496751147774778, 'weight_decay': 0.0015427648762640848, 'batch_size': 64} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:58:48,514] Trial 25 pruned. + +================================================================================ +Trial 25 완료 + Value (CSI): 0.004668 + Parameters: {'d_token': 128, 'n_blocks': 5, 'n_heads': 8, 'attention_dropout': 0.39733584541613337, 'ffn_dropout': 0.3104955960832677, 'lr': 0.004490491441231848, 'weight_decay': 0.000741514778599734, 'batch_size': 128} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 22:00:37,601] Trial 26 finished with value: 0.2722354443181987 and parameters: {'d_token': 224, 'n_blocks': 4, 'n_heads': 4, 'attention_dropout': 0.3125321665444423, 'ffn_dropout': 0.2651471331189512, 'lr': 0.0018756512814265501, 'weight_decay': 0.00017414858345101038, 'batch_size': 256}. Best is trial 5 with value: 0.4375110175056123. + +================================================================================ +Trial 26 완료 + Value (CSI): 0.272235 + Parameters: {'d_token': 224, 'n_blocks': 4, 'n_heads': 4, 'attention_dropout': 0.3125321665444423, 'ffn_dropout': 0.2651471331189512, 'lr': 0.0018756512814265501, 'weight_decay': 0.00017414858345101038, 'batch_size': 256} + Best Value (CSI): 0.437511 + Best Trial: 5 + Best Parameters: {'d_token': 128, 'n_blocks': 2, 'n_heads': 4, 'attention_dropout': 0.36388758910043406, 'ffn_dropout': 0.29740853665511835, 'lr': 0.0024044174573707097, 'weight_decay': 0.000343846266426076, 'batch_size': 128} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) diff --git a/Analysis_code/5.optima/run_bash/ft_transformer/run_ft_transformer_pure.sh b/Analysis_code/5.optima/run_bash/ft_transformer/run_ft_transformer_pure.sh new file mode 100755 index 0000000000000000000000000000000000000000..af42bee2a5e629906cc8aa40071baad4200410c5 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/ft_transformer/run_ft_transformer_pure.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "FT-Transformer Pure 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 0번 (CUDA_VISIBLE_DEVICES=0)" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + "ft_transforemer_pure_busan.py" + "ft_transforemer_pure_daegu.py" + "ft_transforemer_pure_daejeon.py" + "ft_transforemer_pure_gwangju.py" + "ft_transforemer_pure_incheon.py" + "ft_transforemer_pure_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="ft_transformer_pure/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (GPU 0번 설정) + if CUDA_VISIBLE_DEVICES=1 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "FT-Transformer Pure 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + diff --git a/Analysis_code/5.optima/run_bash/ft_transformer/run_ft_transformer_smote.sh b/Analysis_code/5.optima/run_bash/ft_transformer/run_ft_transformer_smote.sh new file mode 100755 index 0000000000000000000000000000000000000000..523f89a21b5398ba40051cd5b0ca23a61fea0a36 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/ft_transformer/run_ft_transformer_smote.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "FT-Transformer SMOTE 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 0번 (CUDA_VISIBLE_DEVICES=0)" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + "ft_transformer_smote_busan.py" + "ft_transformer_smote_daegu.py" + "ft_transformer_smote_daejeon.py" + "ft_transformer_smote_gwangju.py" + "ft_transformer_smote_incheon.py" + "ft_transformer_smote_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="ft_transformer_smote/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (GPU 0번 설정) + if CUDA_VISIBLE_DEVICES=1 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "FT-Transformer SMOTE 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + diff --git a/Analysis_code/5.optima/run_bash/ft_transformer/run_ft_transformer_smotenc_ctgan20000.sh b/Analysis_code/5.optima/run_bash/ft_transformer/run_ft_transformer_smotenc_ctgan20000.sh new file mode 100755 index 0000000000000000000000000000000000000000..a2ebf791d0b9b09e1e5b1f2491144726259a4715 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/ft_transformer/run_ft_transformer_smotenc_ctgan20000.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "FT-Transformer SMOTENC CTGAN20000 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 0번 (CUDA_VISIBLE_DEVICES=0)" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + "ft_transformer_smotenc_ctgan20000_busan.py" + "ft_transformer_smotenc_ctgan20000_daegu.py" + "ft_transformer_smotenc_ctgan20000_daejeon.py" + "ft_transformer_smotenc_ctgan20000_gwangju.py" + "ft_transformer_smotenc_ctgan20000_incheon.py" + "ft_transformer_smotenc_ctgan20000_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="ft_transformer_smotenc_ctgan20000/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (GPU 0번 설정) + if CUDA_VISIBLE_DEVICES=1 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "FT-Transformer SMOTENC CTGAN20000 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + diff --git a/Analysis_code/5.optima/run_bash/lgb/lgb_pure.log b/Analysis_code/5.optima/run_bash/lgb/lgb_pure.log new file mode 100644 index 0000000000000000000000000000000000000000..da4c97d5904e3f1d1cdcddd44b73895869c6a7a5 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/lgb/lgb_pure.log @@ -0,0 +1,335 @@ +nohup: ignoring input +/bin/bash: /opt/conda/lib/libtinfo.so.6: no version information available (required by /bin/bash) +========================================== +LGB Pure 파일 실행 시작 +시작 시간: 2025-12-23 14:35:46 +GPU: 1번 (os.environ['CUDA_VISIBLE_DEVICES'] = '1') +========================================== + +---------------------------------------- +실행 중: lgb_pure/LGB_pure_daegu.py +시작 시간: 2025-12-23 14:35:46 +---------------------------------------- +데이터 로딩 중... +데이터 전처리 중... +하이퍼파라미터 최적화 시작... + + 0%| | 0/100 [00:00 + df_gwangju = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/gwangju_train.csv")) + File "/opt/conda/envs/py39/lib/python3.9/site-packages/pandas/util/_decorators.py", line 211, in wrapper + return func(*args, **kwargs) + File "/opt/conda/envs/py39/lib/python3.9/site-packages/pandas/util/_decorators.py", line 331, in wrapper + return func(*args, **kwargs) + File "/opt/conda/envs/py39/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 950, in read_csv + return _read(filepath_or_buffer, kwds) + File "/opt/conda/envs/py39/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 605, in _read + parser = TextFileReader(filepath_or_buffer, **kwds) + File "/opt/conda/envs/py39/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 1442, in __init__ + self._engine = self._make_engine(f, self.engine) + File "/opt/conda/envs/py39/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 1735, in _make_engine + self.handles = get_handle( + File "/opt/conda/envs/py39/lib/python3.9/site-packages/pandas/io/common.py", line 856, in get_handle + handle = open( +FileNotFoundError: [Errno 2] No such file or directory: '/workspace/visibility_prediction/Analysis_code/data/data_for_modeling/gwangju_train.csv' + +✗ 실패: lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_gwangju.py (소요 시간: 1초) +에러 발생으로 인해 스크립트를 중단합니다. diff --git a/Analysis_code/5.optima/run_bash/lgb/lgb_smotenc_ctgan20000_2.log b/Analysis_code/5.optima/run_bash/lgb/lgb_smotenc_ctgan20000_2.log new file mode 100644 index 0000000000000000000000000000000000000000..4b2f05156696286a31235d145f54646ba7e82f04 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/lgb/lgb_smotenc_ctgan20000_2.log @@ -0,0 +1,32 @@ +nohup: ignoring input +/bin/bash: /opt/conda/lib/libtinfo.so.6: no version information available (required by /bin/bash) +========================================== +LGB SMOTENC CTGAN20000 파일 실행 시작 +시작 시간: 2025-12-24 05:28:28 +GPU: 1번 (CUDA_VISIBLE_DEVICES=1) +========================================== + +---------------------------------------- +실행 중: lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_gwangju.py +시작 시간: 2025-12-24 05:28:28 +---------------------------------------- +데이터 로딩 중... +데이터 전처리 중... +하이퍼파라미터 최적화 시작... + 0%| | 0/100 [00:00 + model_save_path = os.path.join(base_dir, "save_model/lgb_optima/lgb_smotenc_ctgan20000_gwangju.pkl") +NameError: name 'base_dir' is not defined + +✗ 실패: lgb_smotenc_ctgan20000/LGB_smotenc_ctgan20000_gwangju.py (소요 시간: 4113초) +에러 발생으로 인해 스크립트를 중단합니다. diff --git a/Analysis_code/5.optima/run_bash/lgb/run_lgb_ctgan10000.sh b/Analysis_code/5.optima/run_bash/lgb/run_lgb_ctgan10000.sh new file mode 100755 index 0000000000000000000000000000000000000000..8f166e4a69ad4805c16d362b50d4754b81875f25 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/lgb/run_lgb_ctgan10000.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "LGB CTGAN10000 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 1번 (CUDA_VISIBLE_DEVICES=1)" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + "LGB_ctgan10000_busan.py" + "LGB_ctgan10000_daegu.py" + "LGB_ctgan10000_daejeon.py" + "LGB_ctgan10000_gwangju.py" + "LGB_ctgan10000_incheon.py" + "LGB_ctgan10000_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="lgb_ctgan10000/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (GPU 1번 설정) + if CUDA_VISIBLE_DEVICES=1 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "LGB CTGAN10000 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + + diff --git a/Analysis_code/5.optima/run_bash/lgb/run_lgb_pure.sh b/Analysis_code/5.optima/run_bash/lgb/run_lgb_pure.sh new file mode 100755 index 0000000000000000000000000000000000000000..efc54abc0149e1c760a232d95c37631e5cb4a4d5 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/lgb/run_lgb_pure.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "LGB Pure 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 1번 (os.environ['CUDA_VISIBLE_DEVICES'] = '1')" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + "LGB_pure_busan.py" + "LGB_pure_daegu.py" + "LGB_pure_daejeon.py" + "LGB_pure_gwangju.py" + "LGB_pure_incheon.py" + "LGB_pure_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="lgb_pure/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (os.environ으로 GPU 1번 설정) + if CUDA_VISIBLE_DEVICES=1 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "LGB Pure 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + diff --git a/Analysis_code/5.optima/run_bash/lgb/run_lgb_smote.sh b/Analysis_code/5.optima/run_bash/lgb/run_lgb_smote.sh new file mode 100755 index 0000000000000000000000000000000000000000..832bcb6a276d467df98f560dd25b321acbb37e3f --- /dev/null +++ b/Analysis_code/5.optima/run_bash/lgb/run_lgb_smote.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "LGB SMOTE 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 1번 (os.environ['CUDA_VISIBLE_DEVICES'] = '1')" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + "LGB_smote_busan.py" + "LGB_smote_daegu.py" + "LGB_smote_daejeon.py" + "LGB_smote_gwangju.py" + "LGB_smote_incheon.py" + "LGB_smote_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="lgb_smote/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (os.environ으로 GPU 1번 설정) + if CUDA_VISIBLE_DEVICES=1 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "LGB SMOTE 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + diff --git a/Analysis_code/5.optima/run_bash/lgb/run_lgb_smotenc_ctgan20000.sh b/Analysis_code/5.optima/run_bash/lgb/run_lgb_smotenc_ctgan20000.sh new file mode 100755 index 0000000000000000000000000000000000000000..e4b46e6205446ecdd169b38db1e2ca1aae8205de --- /dev/null +++ b/Analysis_code/5.optima/run_bash/lgb/run_lgb_smotenc_ctgan20000.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "LGB SMOTENC CTGAN20000 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 1번 (CUDA_VISIBLE_DEVICES=1)" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + # "LGB_smotenc_ctgan20000_busan.py" + # "LGB_smotenc_ctgan20000_daegu.py" + # "LGB_smotenc_ctgan20000_daejeon.py" + "LGB_smotenc_ctgan20000_gwangju.py" + "LGB_smotenc_ctgan20000_incheon.py" + "LGB_smotenc_ctgan20000_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="lgb_smotenc_ctgan20000/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (GPU 1번 설정) + if CUDA_VISIBLE_DEVICES=1 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "LGB SMOTENC CTGAN20000 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + + diff --git a/Analysis_code/5.optima/run_bash/resnet_like/resnet_like_pure.log b/Analysis_code/5.optima/run_bash/resnet_like/resnet_like_pure.log new file mode 100644 index 0000000000000000000000000000000000000000..31c0daf95c8c5ccec7e90cef311bbc8670f9567f --- /dev/null +++ b/Analysis_code/5.optima/run_bash/resnet_like/resnet_like_pure.log @@ -0,0 +1,1284 @@ +nohup: ignoring input +/bin/bash: /opt/conda/lib/libtinfo.so.6: no version information available (required by /bin/bash) +========================================== +ResNet-Like Pure 파일 실행 시작 +시작 시간: 2025-12-24 21:05:15 +GPU: 0번 (CUDA_VISIBLE_DEVICES=0) +========================================== + +---------------------------------------- +실행 중: resnet_like_pure/resnet_like_pure_busan.py +시작 시간: 2025-12-24 21:05:15 +---------------------------------------- +[I 2025-12-24 21:05:16,457] A new study created in memory with name: no-name-428872cf-9f32-42b4-9683-1e13036f8a8b + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:06:30,822] Trial 0 finished with value: 0.43430733610544525 and parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 3, 'dropout_first': 0.2535840632113069, 'dropout_second': 0.11357197282722674, 'lr': 0.0005140192138833643, 'weight_decay': 0.00527779656036157, 'batch_size': 32}. Best is trial 0 with value: 0.43430733610544525. + +================================================================================ +Trial 0 완료 + Value (CSI): 0.434307 + Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 3, 'dropout_first': 0.2535840632113069, 'dropout_second': 0.11357197282722674, 'lr': 0.0005140192138833643, 'weight_decay': 0.00527779656036157, 'batch_size': 32} + Best Value (CSI): 0.434307 + Best Trial: 0 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 3, 'dropout_first': 0.2535840632113069, 'dropout_second': 0.11357197282722674, 'lr': 0.0005140192138833643, 'weight_decay': 0.00527779656036157, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:07:33,130] Trial 1 finished with value: 0.3893446447399454 and parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 3, 'dropout_first': 0.15164009234733422, 'dropout_second': 0.03761784993743647, 'lr': 4.143122135633412e-05, 'weight_decay': 0.000269081454026531, 'batch_size': 64}. Best is trial 0 with value: 0.43430733610544525. + +================================================================================ +Trial 1 완료 + Value (CSI): 0.389345 + Parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 3, 'dropout_first': 0.15164009234733422, 'dropout_second': 0.03761784993743647, 'lr': 4.143122135633412e-05, 'weight_decay': 0.000269081454026531, 'batch_size': 64} + Best Value (CSI): 0.434307 + Best Trial: 0 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 3, 'dropout_first': 0.2535840632113069, 'dropout_second': 0.11357197282722674, 'lr': 0.0005140192138833643, 'weight_decay': 0.00527779656036157, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:08:44,805] Trial 2 finished with value: 0.4394702374734458 and parameters: {'d_main': 224, 'd_hidden': 192, 'n_blocks': 4, 'dropout_first': 0.22281540232787456, 'dropout_second': 0.19364571816455722, 'lr': 0.00016423719909575347, 'weight_decay': 0.0012299299964866313, 'batch_size': 32}. Best is trial 2 with value: 0.4394702374734458. + +================================================================================ +Trial 2 완료 + Value (CSI): 0.439470 + Parameters: {'d_main': 224, 'd_hidden': 192, 'n_blocks': 4, 'dropout_first': 0.22281540232787456, 'dropout_second': 0.19364571816455722, 'lr': 0.00016423719909575347, 'weight_decay': 0.0012299299964866313, 'batch_size': 32} + Best Value (CSI): 0.439470 + Best Trial: 2 + Best Parameters: {'d_main': 224, 'd_hidden': 192, 'n_blocks': 4, 'dropout_first': 0.22281540232787456, 'dropout_second': 0.19364571816455722, 'lr': 0.00016423719909575347, 'weight_decay': 0.0012299299964866313, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:09:22,599] Trial 3 finished with value: 0.41653376732007447 and parameters: {'d_main': 128, 'd_hidden': 192, 'n_blocks': 5, 'dropout_first': 0.14097838872773075, 'dropout_second': 0.19090372388960347, 'lr': 0.00014221106987795309, 'weight_decay': 0.03382198708820855, 'batch_size': 128}. Best is trial 2 with value: 0.4394702374734458. + +================================================================================ +Trial 3 완료 + Value (CSI): 0.416534 + Parameters: {'d_main': 128, 'd_hidden': 192, 'n_blocks': 5, 'dropout_first': 0.14097838872773075, 'dropout_second': 0.19090372388960347, 'lr': 0.00014221106987795309, 'weight_decay': 0.03382198708820855, 'batch_size': 128} + Best Value (CSI): 0.439470 + Best Trial: 2 + Best Parameters: {'d_main': 224, 'd_hidden': 192, 'n_blocks': 4, 'dropout_first': 0.22281540232787456, 'dropout_second': 0.19364571816455722, 'lr': 0.00016423719909575347, 'weight_decay': 0.0012299299964866313, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:11:01,647] Trial 4 finished with value: 0.43259216287232266 and parameters: {'d_main': 224, 'd_hidden': 128, 'n_blocks': 5, 'dropout_first': 0.2502806365496897, 'dropout_second': 0.09889509134809865, 'lr': 0.0011723535304879672, 'weight_decay': 0.0001839094617561579, 'batch_size': 32}. Best is trial 2 with value: 0.4394702374734458. + +================================================================================ +Trial 4 완료 + Value (CSI): 0.432592 + Parameters: {'d_main': 224, 'd_hidden': 128, 'n_blocks': 5, 'dropout_first': 0.2502806365496897, 'dropout_second': 0.09889509134809865, 'lr': 0.0011723535304879672, 'weight_decay': 0.0001839094617561579, 'batch_size': 32} + Best Value (CSI): 0.439470 + Best Trial: 2 + Best Parameters: {'d_main': 224, 'd_hidden': 192, 'n_blocks': 4, 'dropout_first': 0.22281540232787456, 'dropout_second': 0.19364571816455722, 'lr': 0.00016423719909575347, 'weight_decay': 0.0012299299964866313, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:12:24,683] Trial 5 finished with value: 0.43294264276948197 and parameters: {'d_main': 256, 'd_hidden': 256, 'n_blocks': 2, 'dropout_first': 0.29101792414967675, 'dropout_second': 0.01853106064130323, 'lr': 7.698534927969082e-05, 'weight_decay': 0.0040595185865053285, 'batch_size': 32}. Best is trial 2 with value: 0.4394702374734458. + +================================================================================ +Trial 5 완료 + Value (CSI): 0.432943 + Parameters: {'d_main': 256, 'd_hidden': 256, 'n_blocks': 2, 'dropout_first': 0.29101792414967675, 'dropout_second': 0.01853106064130323, 'lr': 7.698534927969082e-05, 'weight_decay': 0.0040595185865053285, 'batch_size': 32} + Best Value (CSI): 0.439470 + Best Trial: 2 + Best Parameters: {'d_main': 224, 'd_hidden': 192, 'n_blocks': 4, 'dropout_first': 0.22281540232787456, 'dropout_second': 0.19364571816455722, 'lr': 0.00016423719909575347, 'weight_decay': 0.0012299299964866313, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:13:45,857] Trial 6 finished with value: 0.4416401593197721 and parameters: {'d_main': 256, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3400465734679156, 'dropout_second': 0.13148669934645404, 'lr': 0.001865981722114345, 'weight_decay': 0.0550832378209883, 'batch_size': 32}. Best is trial 6 with value: 0.4416401593197721. + +================================================================================ +Trial 6 완료 + Value (CSI): 0.441640 + Parameters: {'d_main': 256, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3400465734679156, 'dropout_second': 0.13148669934645404, 'lr': 0.001865981722114345, 'weight_decay': 0.0550832378209883, 'batch_size': 32} + Best Value (CSI): 0.441640 + Best Trial: 6 + Best Parameters: {'d_main': 256, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3400465734679156, 'dropout_second': 0.13148669934645404, 'lr': 0.001865981722114345, 'weight_decay': 0.0550832378209883, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:15:03,503] Trial 7 pruned. + +================================================================================ +Trial 7 완료 + Value (CSI): 0.400000 + Parameters: {'d_main': 224, 'd_hidden': 256, 'n_blocks': 2, 'dropout_first': 0.14426681246913334, 'dropout_second': 0.08684442603391923, 'lr': 4.610878241735926e-05, 'weight_decay': 0.00020263228266273126, 'batch_size': 32} + Best Value (CSI): 0.441640 + Best Trial: 6 + Best Parameters: {'d_main': 256, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3400465734679156, 'dropout_second': 0.13148669934645404, 'lr': 0.001865981722114345, 'weight_decay': 0.0550832378209883, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:15:06,976] Trial 8 pruned. + +================================================================================ +Trial 8 완료 + Value (CSI): 0.361662 + Parameters: {'d_main': 96, 'd_hidden': 384, 'n_blocks': 3, 'dropout_first': 0.24584104532905704, 'dropout_second': 0.05199023846104234, 'lr': 2.0667843052853314e-05, 'weight_decay': 0.003297869760800945, 'batch_size': 128} + Best Value (CSI): 0.441640 + Best Trial: 6 + Best Parameters: {'d_main': 256, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3400465734679156, 'dropout_second': 0.13148669934645404, 'lr': 0.001865981722114345, 'weight_decay': 0.0550832378209883, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:15:10,926] Trial 9 pruned. + +================================================================================ +Trial 9 완료 + Value (CSI): 0.346606 + Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.28998162089293167, 'dropout_second': 0.11760374907640246, 'lr': 0.007206041306554355, 'weight_decay': 0.014954892558287858, 'batch_size': 128} + Best Value (CSI): 0.441640 + Best Trial: 6 + Best Parameters: {'d_main': 256, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3400465734679156, 'dropout_second': 0.13148669934645404, 'lr': 0.001865981722114345, 'weight_decay': 0.0550832378209883, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:15:13,546] Trial 10 pruned. + +================================================================================ +Trial 10 완료 + Value (CSI): 0.371282 + Parameters: {'d_main': 192, 'd_hidden': 512, 'n_blocks': 4, 'dropout_first': 0.39583341363701285, 'dropout_second': 0.15010982154315616, 'lr': 0.0025177213348694764, 'weight_decay': 0.0601352123433608, 'batch_size': 256} + Best Value (CSI): 0.441640 + Best Trial: 6 + Best Parameters: {'d_main': 256, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3400465734679156, 'dropout_second': 0.13148669934645404, 'lr': 0.001865981722114345, 'weight_decay': 0.0550832378209883, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:16:53,517] Trial 11 finished with value: 0.4378316694405448 and parameters: {'d_main': 192, 'd_hidden': 128, 'n_blocks': 4, 'dropout_first': 0.379421365527963, 'dropout_second': 0.19991258658130895, 'lr': 0.0003020726982160484, 'weight_decay': 0.09264522761615047, 'batch_size': 32}. Best is trial 6 with value: 0.4416401593197721. + +================================================================================ +Trial 11 완료 + Value (CSI): 0.437832 + Parameters: {'d_main': 192, 'd_hidden': 128, 'n_blocks': 4, 'dropout_first': 0.379421365527963, 'dropout_second': 0.19991258658130895, 'lr': 0.0003020726982160484, 'weight_decay': 0.09264522761615047, 'batch_size': 32} + Best Value (CSI): 0.441640 + Best Trial: 6 + Best Parameters: {'d_main': 256, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3400465734679156, 'dropout_second': 0.13148669934645404, 'lr': 0.001865981722114345, 'weight_decay': 0.0550832378209883, 'batch_size': 32} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:18:05,517] Trial 12 finished with value: 0.44534302804851 and parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.34362695116070263, 'dropout_second': 0.16136508042604183, 'lr': 0.0002907828165855807, 'weight_decay': 0.0012280404577094336, 'batch_size': 64}. Best is trial 12 with value: 0.44534302804851. + +================================================================================ +Trial 12 완료 + Value (CSI): 0.445343 + Parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.34362695116070263, 'dropout_second': 0.16136508042604183, 'lr': 0.0002907828165855807, 'weight_decay': 0.0012280404577094336, 'batch_size': 64} + Best Value (CSI): 0.445343 + Best Trial: 12 + Best Parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.34362695116070263, 'dropout_second': 0.16136508042604183, 'lr': 0.0002907828165855807, 'weight_decay': 0.0012280404577094336, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:18:55,329] Trial 13 finished with value: 0.42891073658247447 and parameters: {'d_main': 64, 'd_hidden': 64, 'n_blocks': 3, 'dropout_first': 0.34746878572256895, 'dropout_second': 0.1521259313712533, 'lr': 0.00087570465269081, 'weight_decay': 0.0008632731054847852, 'batch_size': 64}. Best is trial 12 with value: 0.44534302804851. + +================================================================================ +Trial 13 완료 + Value (CSI): 0.428911 + Parameters: {'d_main': 64, 'd_hidden': 64, 'n_blocks': 3, 'dropout_first': 0.34746878572256895, 'dropout_second': 0.1521259313712533, 'lr': 0.00087570465269081, 'weight_decay': 0.0008632731054847852, 'batch_size': 64} + Best Value (CSI): 0.445343 + Best Trial: 12 + Best Parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.34362695116070263, 'dropout_second': 0.16136508042604183, 'lr': 0.0002907828165855807, 'weight_decay': 0.0012280404577094336, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:20:01,216] Trial 14 finished with value: 0.43907088650446696 and parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.33463223925251573, 'dropout_second': 0.14949794930661997, 'lr': 0.0025994660733780423, 'weight_decay': 0.014264035489933862, 'batch_size': 64}. Best is trial 12 with value: 0.44534302804851. + +================================================================================ +Trial 14 완료 + Value (CSI): 0.439071 + Parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.33463223925251573, 'dropout_second': 0.14949794930661997, 'lr': 0.0025994660733780423, 'weight_decay': 0.014264035489933862, 'batch_size': 64} + Best Value (CSI): 0.445343 + Best Trial: 12 + Best Parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.34362695116070263, 'dropout_second': 0.16136508042604183, 'lr': 0.0002907828165855807, 'weight_decay': 0.0012280404577094336, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:20:03,606] Trial 15 pruned. + +================================================================================ +Trial 15 완료 + Value (CSI): 0.365005 + Parameters: {'d_main': 192, 'd_hidden': 384, 'n_blocks': 2, 'dropout_first': 0.34873726430036034, 'dropout_second': 0.16856838121461953, 'lr': 0.00036508290052503873, 'weight_decay': 0.0010142429726448605, 'batch_size': 256} + Best Value (CSI): 0.445343 + Best Trial: 12 + Best Parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.34362695116070263, 'dropout_second': 0.16136508042604183, 'lr': 0.0002907828165855807, 'weight_decay': 0.0012280404577094336, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:21:00,497] Trial 16 finished with value: 0.4542970487265281 and parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 16 완료 + Value (CSI): 0.454297 + Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:21:06,622] Trial 17 pruned. + +================================================================================ +Trial 17 완료 + Value (CSI): 0.390313 + Parameters: {'d_main': 160, 'd_hidden': 384, 'n_blocks': 4, 'dropout_first': 0.39894960634316234, 'dropout_second': 0.07860911188792814, 'lr': 0.007267286867139762, 'weight_decay': 0.006779199761774185, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:21:12,709] Trial 18 pruned. + +================================================================================ +Trial 18 완료 + Value (CSI): 0.403030 + Parameters: {'d_main': 160, 'd_hidden': 192, 'n_blocks': 4, 'dropout_first': 0.3622795281702374, 'dropout_second': 0.17064727938333277, 'lr': 0.009849616617449248, 'weight_decay': 0.001965698879360996, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:21:58,294] Trial 19 finished with value: 0.4280459891897568 and parameters: {'d_main': 96, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.37559541515086076, 'dropout_second': 0.12573648962622522, 'lr': 0.0007026599213197553, 'weight_decay': 0.0004888453139812705, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 19 완료 + Value (CSI): 0.428046 + Parameters: {'d_main': 96, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.37559541515086076, 'dropout_second': 0.12573648962622522, 'lr': 0.0007026599213197553, 'weight_decay': 0.0004888453139812705, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:22:52,639] Trial 20 finished with value: 0.4473622034239025 and parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3145521525961488, 'dropout_second': 0.00020160746361660986, 'lr': 0.0034026117302266255, 'weight_decay': 0.002657722803268852, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 20 완료 + Value (CSI): 0.447362 + Parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3145521525961488, 'dropout_second': 0.00020160746361660986, 'lr': 0.0034026117302266255, 'weight_decay': 0.002657722803268852, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:23:50,804] Trial 21 finished with value: 0.44204086830504435 and parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3183016597308007, 'dropout_second': 0.07169751503018575, 'lr': 0.004153834234354182, 'weight_decay': 0.0017460742618744223, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 21 완료 + Value (CSI): 0.442041 + Parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3183016597308007, 'dropout_second': 0.07169751503018575, 'lr': 0.004153834234354182, 'weight_decay': 0.0017460742618744223, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:24:29,469] Trial 22 finished with value: 0.44170795196149865 and parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3718145358239289, 'dropout_second': 0.020802317423640464, 'lr': 0.004309328198217187, 'weight_decay': 0.00010265213956297674, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 22 완료 + Value (CSI): 0.441708 + Parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3718145358239289, 'dropout_second': 0.020802317423640464, 'lr': 0.004309328198217187, 'weight_decay': 0.00010265213956297674, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:25:09,045] Trial 23 finished with value: 0.43955053810526395 and parameters: {'d_main': 128, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.3151874146989375, 'dropout_second': 0.0032748532326382362, 'lr': 0.0012501351341460745, 'weight_decay': 0.002308526595328523, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 23 완료 + Value (CSI): 0.439551 + Parameters: {'d_main': 128, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.3151874146989375, 'dropout_second': 0.0032748532326382362, 'lr': 0.0012501351341460745, 'weight_decay': 0.002308526595328523, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:25:14,673] Trial 24 pruned. + +================================================================================ +Trial 24 완료 + Value (CSI): 0.396961 + Parameters: {'d_main': 160, 'd_hidden': 192, 'n_blocks': 3, 'dropout_first': 0.3974297972622448, 'dropout_second': 0.06452060929203224, 'lr': 0.004605672226091787, 'weight_decay': 0.008400509369887385, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:25:17,220] Trial 25 pruned. + +================================================================================ +Trial 25 완료 + Value (CSI): 0.372683 + Parameters: {'d_main': 96, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.36209403383025635, 'dropout_second': 0.09958519896522586, 'lr': 0.009786349972145244, 'weight_decay': 0.0007091337177273674, 'batch_size': 256} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:25:23,990] Trial 26 pruned. + +================================================================================ +Trial 26 완료 + Value (CSI): 0.421591 + Parameters: {'d_main': 192, 'd_hidden': 320, 'n_blocks': 3, 'dropout_first': 0.323640406862441, 'dropout_second': 0.05079661743239261, 'lr': 0.0019100642172347109, 'weight_decay': 0.0034610895643706046, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:26:02,712] Trial 27 finished with value: 0.4382881880213641 and parameters: {'d_main': 224, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.3551718162507212, 'dropout_second': 0.09013618820792126, 'lr': 0.0007004133318456567, 'weight_decay': 0.002240418049145008, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 27 완료 + Value (CSI): 0.438288 + Parameters: {'d_main': 224, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.3551718162507212, 'dropout_second': 0.09013618820792126, 'lr': 0.0007004133318456567, 'weight_decay': 0.002240418049145008, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) +[I 2025-12-24 21:26:39,207] Trial 28 pruned. + +================================================================================ +Trial 28 완료 + Value (CSI): 0.405460 + Parameters: {'d_main': 160, 'd_hidden': 512, 'n_blocks': 5, 'dropout_first': 0.3023039069548692, 'dropout_second': 0.10776187651863663, 'lr': 0.0033715601369812844, 'weight_decay': 0.0013284101969841858, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) +[I 2025-12-24 21:27:13,648] Trial 29 pruned. + +================================================================================ +Trial 29 완료 + Value (CSI): 0.423542 + Parameters: {'d_main': 128, 'd_hidden': 320, 'n_blocks': 3, 'dropout_first': 0.2756848015240307, 'dropout_second': 0.13462242736451677, 'lr': 0.0003545922353182172, 'weight_decay': 0.0054772184950549335, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:27:17,452] Trial 30 pruned. + +================================================================================ +Trial 30 완료 + Value (CSI): 0.334220 + Parameters: {'d_main': 192, 'd_hidden': 192, 'n_blocks': 4, 'dropout_first': 0.3322883020792489, 'dropout_second': 0.11807426903068219, 'lr': 0.005985425885819677, 'weight_decay': 0.009410278161680613, 'batch_size': 128} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:28:14,444] Trial 31 finished with value: 0.44145364837666917 and parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.31405343601871594, 'dropout_second': 0.07102810427543872, 'lr': 0.004740041341857366, 'weight_decay': 0.0015135969243943843, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 31 완료 + Value (CSI): 0.441454 + Parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.31405343601871594, 'dropout_second': 0.07102810427543872, 'lr': 0.004740041341857366, 'weight_decay': 0.0015135969243943843, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:29:04,886] Trial 32 finished with value: 0.43956881974414125 and parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3250617189581803, 'dropout_second': 0.03434670239062896, 'lr': 0.004495364444107991, 'weight_decay': 0.0025593002021569284, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 32 완료 + Value (CSI): 0.439569 + Parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3250617189581803, 'dropout_second': 0.03434670239062896, 'lr': 0.004495364444107991, 'weight_decay': 0.0025593002021569284, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:30:05,984] Trial 33 finished with value: 0.44273834050731936 and parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.37809812554349564, 'dropout_second': 0.059228222967013064, 'lr': 0.002752691589881964, 'weight_decay': 0.004220488818798125, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 33 완료 + Value (CSI): 0.442738 + Parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.37809812554349564, 'dropout_second': 0.059228222967013064, 'lr': 0.002752691589881964, 'weight_decay': 0.004220488818798125, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) +[I 2025-12-24 21:30:38,081] Trial 34 pruned. + +================================================================================ +Trial 34 완료 + Value (CSI): 0.429586 + Parameters: {'d_main': 128, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.38499798694424375, 'dropout_second': 0.009128697317728099, 'lr': 0.0016825858435417515, 'weight_decay': 0.003914304590256588, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:30:46,536] Trial 35 pruned. + +================================================================================ +Trial 35 완료 + Value (CSI): 0.425629 + Parameters: {'d_main': 128, 'd_hidden': 64, 'n_blocks': 3, 'dropout_first': 0.3658252018752079, 'dropout_second': 0.027146258070606027, 'lr': 0.0028359080250564203, 'weight_decay': 0.004484975230073981, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:30:48,966] Trial 36 pruned. + +================================================================================ +Trial 36 완료 + Value (CSI): 0.375502 + Parameters: {'d_main': 224, 'd_hidden': 192, 'n_blocks': 3, 'dropout_first': 0.3836795808660148, 'dropout_second': 0.04084419052748185, 'lr': 0.00019517224485196997, 'weight_decay': 0.00588253530548959, 'batch_size': 256} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:31:36,850] Trial 37 finished with value: 0.4455072361639985 and parameters: {'d_main': 192, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.3475855241826895, 'dropout_second': 0.10418206290374066, 'lr': 0.0012026224203230808, 'weight_decay': 0.002864240729531861, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 37 완료 + Value (CSI): 0.445507 + Parameters: {'d_main': 192, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.3475855241826895, 'dropout_second': 0.10418206290374066, 'lr': 0.0012026224203230808, 'weight_decay': 0.002864240729531861, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:31:40,761] Trial 38 pruned. + +================================================================================ +Trial 38 완료 + Value (CSI): 0.353414 + Parameters: {'d_main': 256, 'd_hidden': 128, 'n_blocks': 5, 'dropout_first': 0.34819936702622867, 'dropout_second': 0.0921866933435165, 'lr': 0.000557440628976578, 'weight_decay': 0.0005248752915848209, 'batch_size': 128} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:32:33,381] Trial 39 finished with value: 0.4321099320672627 and parameters: {'d_main': 224, 'd_hidden': 192, 'n_blocks': 3, 'dropout_first': 0.3431614456683113, 'dropout_second': 0.10854206437477848, 'lr': 0.0012161673292103293, 'weight_decay': 0.0013693459346284232, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 39 완료 + Value (CSI): 0.432110 + Parameters: {'d_main': 224, 'd_hidden': 192, 'n_blocks': 3, 'dropout_first': 0.3431614456683113, 'dropout_second': 0.10854206437477848, 'lr': 0.0012161673292103293, 'weight_decay': 0.0013693459346284232, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) +[I 2025-12-24 21:33:21,124] Trial 40 pruned. + +================================================================================ +Trial 40 완료 + Value (CSI): 0.440145 + Parameters: {'d_main': 224, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.20864741771870599, 'dropout_second': 5.221246157544583e-05, 'lr': 0.0010108499034498211, 'weight_decay': 0.0031649187052853953, 'batch_size': 32} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:33:27,120] Trial 41 pruned. + +================================================================================ +Trial 41 완료 + Value (CSI): 0.431920 + Parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3562850264289354, 'dropout_second': 0.10121471689697042, 'lr': 0.0017332300378841141, 'weight_decay': 0.002321038257830069, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:33:33,111] Trial 42 pruned. + +================================================================================ +Trial 42 완료 + Value (CSI): 0.429989 + Parameters: {'d_main': 192, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.3710856037171459, 'dropout_second': 0.05512113924843346, 'lr': 0.0027584547854567674, 'weight_decay': 0.005034424216788256, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:33:39,104] Trial 43 pruned. + +================================================================================ +Trial 43 완료 + Value (CSI): 0.414883 + Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.38488475159186586, 'dropout_second': 0.0833905423269905, 'lr': 0.00561766421482232, 'weight_decay': 0.001644975402660968, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) +[I 2025-12-24 21:34:08,538] Trial 44 pruned. + +================================================================================ +Trial 44 완료 + Value (CSI): 0.416304 + Parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3303204222772923, 'dropout_second': 0.012940877945961517, 'lr': 0.007434239274548459, 'weight_decay': 0.003586341968004565, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) +[I 2025-12-24 21:34:29,554] Trial 45 pruned. + +================================================================================ +Trial 45 완료 + Value (CSI): 0.433155 + Parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 3, 'dropout_first': 0.3444639550145677, 'dropout_second': 0.020196626824556443, 'lr': 0.0033500933299985517, 'weight_decay': 0.0028994116301427238, 'batch_size': 128} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) +[I 2025-12-24 21:35:00,306] Trial 46 pruned. + +================================================================================ +Trial 46 완료 + Value (CSI): 0.428266 + Parameters: {'d_main': 64, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.36367374929064444, 'dropout_second': 0.03821615550786598, 'lr': 0.0019866184604460644, 'weight_decay': 0.013000871835526062, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:35:15,659] Trial 47 pruned. + +================================================================================ +Trial 47 완료 + Value (CSI): 0.428416 + Parameters: {'d_main': 128, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.38753383788358836, 'dropout_second': 0.1383601170453554, 'lr': 0.00011094468928924497, 'weight_decay': 0.021784604105696714, 'batch_size': 32} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:35:34,800] Trial 48 pruned. + +================================================================================ +Trial 48 완료 + Value (CSI): 0.425000 + Parameters: {'d_main': 160, 'd_hidden': 192, 'n_blocks': 2, 'dropout_first': 0.39890392663265256, 'dropout_second': 0.11570823769083624, 'lr': 0.0014580294454300247, 'weight_decay': 0.0011396627717050346, 'batch_size': 256} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:36:33,698] Trial 49 finished with value: 0.4424547208160127 and parameters: {'d_main': 192, 'd_hidden': 256, 'n_blocks': 4, 'dropout_first': 0.33567055814499863, 'dropout_second': 0.12710096333885698, 'lr': 0.0009294114463962253, 'weight_decay': 0.007074548015447651, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 49 완료 + Value (CSI): 0.442455 + Parameters: {'d_main': 192, 'd_hidden': 256, 'n_blocks': 4, 'dropout_first': 0.33567055814499863, 'dropout_second': 0.12710096333885698, 'lr': 0.0009294114463962253, 'weight_decay': 0.007074548015447651, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) +[I 2025-12-24 21:37:15,304] Trial 50 pruned. + +================================================================================ +Trial 50 완료 + Value (CSI): 0.438776 + Parameters: {'d_main': 96, 'd_hidden': 448, 'n_blocks': 3, 'dropout_first': 0.3758381143719122, 'dropout_second': 0.09702947297267506, 'lr': 0.0020737177051991748, 'weight_decay': 0.004787331970548769, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) +[I 2025-12-24 21:38:01,360] Trial 51 pruned. + +================================================================================ +Trial 51 완료 + Value (CSI): 0.432155 + Parameters: {'d_main': 192, 'd_hidden': 256, 'n_blocks': 4, 'dropout_first': 0.3365952918592853, 'dropout_second': 0.12519612175799544, 'lr': 0.001065472375638902, 'weight_decay': 0.008035669839134695, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:38:53,408] Trial 52 finished with value: 0.4406817839828802 and parameters: {'d_main': 192, 'd_hidden': 320, 'n_blocks': 4, 'dropout_first': 0.3396025425315139, 'dropout_second': 0.14155889974814928, 'lr': 0.0008327862386711396, 'weight_decay': 0.007299313328729318, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 52 완료 + Value (CSI): 0.440682 + Parameters: {'d_main': 192, 'd_hidden': 320, 'n_blocks': 4, 'dropout_first': 0.3396025425315139, 'dropout_second': 0.14155889974814928, 'lr': 0.0008327862386711396, 'weight_decay': 0.007299313328729318, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:39:01,093] Trial 53 pruned. + +================================================================================ +Trial 53 완료 + Value (CSI): 0.426156 + Parameters: {'d_main': 224, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.3527845408233939, 'dropout_second': 0.1263090269705709, 'lr': 0.0005376455837821901, 'weight_decay': 0.009943638269414072, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:39:09,209] Trial 54 pruned. + +================================================================================ +Trial 54 완료 + Value (CSI): 0.410870 + Parameters: {'d_main': 160, 'd_hidden': 256, 'n_blocks': 4, 'dropout_first': 0.3664418902903965, 'dropout_second': 0.10966236615831551, 'lr': 0.0014369471568068924, 'weight_decay': 0.004411160426574825, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:39:16,889] Trial 55 pruned. + +================================================================================ +Trial 55 완료 + Value (CSI): 0.414365 + Parameters: {'d_main': 192, 'd_hidden': 128, 'n_blocks': 5, 'dropout_first': 0.30599382518354934, 'dropout_second': 0.1577573695615076, 'lr': 0.0022148465051297444, 'weight_decay': 0.0028252527171977945, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:41:28,659] Trial 56 finished with value: 0.43716472149713753 and parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.37719265532164403, 'dropout_second': 0.14332654129315728, 'lr': 0.0033386388416628203, 'weight_decay': 0.006267955159890609, 'batch_size': 32}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 56 완료 + Value (CSI): 0.437165 + Parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.37719265532164403, 'dropout_second': 0.14332654129315728, 'lr': 0.0033386388416628203, 'weight_decay': 0.006267955159890609, 'batch_size': 32} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:42:17,713] Trial 57 finished with value: 0.43471443202404997 and parameters: {'d_main': 224, 'd_hidden': 128, 'n_blocks': 4, 'dropout_first': 0.35309004774060826, 'dropout_second': 0.12133736338791584, 'lr': 0.00046044011244261723, 'weight_decay': 0.0017921891676794686, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 57 완료 + Value (CSI): 0.434714 + Parameters: {'d_main': 224, 'd_hidden': 128, 'n_blocks': 4, 'dropout_first': 0.35309004774060826, 'dropout_second': 0.12133736338791584, 'lr': 0.00046044011244261723, 'weight_decay': 0.0017921891676794686, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:42:22,902] Trial 58 pruned. + +================================================================================ +Trial 58 완료 + Value (CSI): 0.399556 + Parameters: {'d_main': 256, 'd_hidden': 448, 'n_blocks': 2, 'dropout_first': 0.3283300637452521, 'dropout_second': 0.1309637228972499, 'lr': 0.000891371524576702, 'weight_decay': 0.001904563638931848, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:42:25,322] Trial 59 pruned. + +================================================================================ +Trial 59 완료 + Value (CSI): 0.390769 + Parameters: {'d_main': 160, 'd_hidden': 192, 'n_blocks': 3, 'dropout_first': 0.38988816620292216, 'dropout_second': 0.1829678494145513, 'lr': 0.00025927357045041024, 'weight_decay': 0.0035888583954596935, 'batch_size': 256} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:42:55,854] Trial 60 finished with value: 0.4404613796863366 and parameters: {'d_main': 128, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.37606617524552904, 'dropout_second': 0.08075687844999693, 'lr': 0.0013855056696050502, 'weight_decay': 0.011266499307907735, 'batch_size': 128}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 60 완료 + Value (CSI): 0.440461 + Parameters: {'d_main': 128, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.37606617524552904, 'dropout_second': 0.08075687844999693, 'lr': 0.0013855056696050502, 'weight_decay': 0.011266499307907735, 'batch_size': 128} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:43:58,942] Trial 61 finished with value: 0.43810815210492443 and parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3152990873100266, 'dropout_second': 0.07182453814444721, 'lr': 0.003656085190262352, 'weight_decay': 0.0010807805875535023, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 61 완료 + Value (CSI): 0.438108 + Parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3152990873100266, 'dropout_second': 0.07182453814444721, 'lr': 0.003656085190262352, 'weight_decay': 0.0010807805875535023, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:44:50,323] Trial 62 finished with value: 0.44481539574992474 and parameters: {'d_main': 128, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.33812014513675254, 'dropout_second': 0.08813950774777857, 'lr': 0.002465409224517159, 'weight_decay': 0.0022360187831933663, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 62 완료 + Value (CSI): 0.444815 + Parameters: {'d_main': 128, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.33812014513675254, 'dropout_second': 0.08813950774777857, 'lr': 0.002465409224517159, 'weight_decay': 0.0022360187831933663, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:45:39,343] Trial 63 finished with value: 0.44090248673243665 and parameters: {'d_main': 128, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.33849020014227604, 'dropout_second': 0.11410038057153776, 'lr': 0.0026079389621712053, 'weight_decay': 0.007152092779290116, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 63 완료 + Value (CSI): 0.440902 + Parameters: {'d_main': 128, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.33849020014227604, 'dropout_second': 0.11410038057153776, 'lr': 0.0026079389621712053, 'weight_decay': 0.007152092779290116, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:46:34,072] Trial 64 finished with value: 0.43963906579694517 and parameters: {'d_main': 128, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3591761855610655, 'dropout_second': 0.10481713463460518, 'lr': 0.0023507393707398083, 'weight_decay': 0.0022924470976169817, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 64 완료 + Value (CSI): 0.439639 + Parameters: {'d_main': 128, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3591761855610655, 'dropout_second': 0.10481713463460518, 'lr': 0.0023507393707398083, 'weight_decay': 0.0022924470976169817, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:46:40,163] Trial 65 pruned. + +================================================================================ +Trial 65 완료 + Value (CSI): 0.424612 + Parameters: {'d_main': 96, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.34861827133164214, 'dropout_second': 0.08712643836108973, 'lr': 0.005553326707005547, 'weight_decay': 0.0028618760377371317, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:46:46,236] Trial 66 pruned. + +================================================================================ +Trial 66 완료 + Value (CSI): 0.398455 + Parameters: {'d_main': 192, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.36877943766207033, 'dropout_second': 0.09637091597859247, 'lr': 0.002965809186631551, 'weight_decay': 0.005402270361481693, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:47:45,782] Trial 67 finished with value: 0.4384558162726124 and parameters: {'d_main': 96, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.3254775511725386, 'dropout_second': 0.09174754386842371, 'lr': 0.001620413277019005, 'weight_decay': 0.003970414736815029, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 67 완료 + Value (CSI): 0.438456 + Parameters: {'d_main': 96, 'd_hidden': 64, 'n_blocks': 4, 'dropout_first': 0.3254775511725386, 'dropout_second': 0.09174754386842371, 'lr': 0.001620413277019005, 'weight_decay': 0.003970414736815029, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:48:36,928] Trial 68 pruned. + +================================================================================ +Trial 68 완료 + Value (CSI): 0.406579 + Parameters: {'d_main': 160, 'd_hidden': 256, 'n_blocks': 3, 'dropout_first': 0.39376125120369876, 'dropout_second': 0.12050318860636802, 'lr': 0.004108335270976553, 'weight_decay': 0.001413612266624217, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) +[I 2025-12-24 21:49:19,097] Trial 69 pruned. + +================================================================================ +Trial 69 완료 + Value (CSI): 0.444311 + Parameters: {'d_main': 192, 'd_hidden': 192, 'n_blocks': 5, 'dropout_first': 0.3340022850727983, 'dropout_second': 0.11253145090131511, 'lr': 0.001202318070174665, 'weight_decay': 0.001949059601791208, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:50:30,628] Trial 70 finished with value: 0.42055728970306033 and parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.35790239618771785, 'dropout_second': 0.07708357633864019, 'lr': 0.008071824213324797, 'weight_decay': 0.0009358363281376331, 'batch_size': 32}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 70 완료 + Value (CSI): 0.420557 + Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.35790239618771785, 'dropout_second': 0.07708357633864019, 'lr': 0.008071824213324797, 'weight_decay': 0.0009358363281376331, 'batch_size': 32} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:51:20,863] Trial 71 finished with value: 0.4404140454664894 and parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.29382493135861004, 'dropout_second': 0.06519424390899814, 'lr': 0.003965664775274111, 'weight_decay': 0.0025140368478068927, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 71 완료 + Value (CSI): 0.440414 + Parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.29382493135861004, 'dropout_second': 0.06519424390899814, 'lr': 0.003965664775274111, 'weight_decay': 0.0025140368478068927, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:52:10,062] Trial 72 finished with value: 0.4404237343128962 and parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.31487131788227296, 'dropout_second': 0.101718109086827, 'lr': 0.004900652999854574, 'weight_decay': 0.0017525685674651863, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 72 완료 + Value (CSI): 0.440424 + Parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.31487131788227296, 'dropout_second': 0.101718109086827, 'lr': 0.004900652999854574, 'weight_decay': 0.0017525685674651863, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:53:03,941] Trial 73 finished with value: 0.4386094999458166 and parameters: {'d_main': 128, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.32102749960566423, 'dropout_second': 0.05817897150117925, 'lr': 0.006510079170543316, 'weight_decay': 0.0031960678553269286, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 73 완료 + Value (CSI): 0.438609 + Parameters: {'d_main': 128, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.32102749960566423, 'dropout_second': 0.05817897150117925, 'lr': 0.006510079170543316, 'weight_decay': 0.0031960678553269286, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:53:57,575] Trial 74 finished with value: 0.4280705603705022 and parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.34278340200647434, 'dropout_second': 0.048310391428968036, 'lr': 0.00852661643711414, 'weight_decay': 0.0015393162543240542, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 74 완료 + Value (CSI): 0.428071 + Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.34278340200647434, 'dropout_second': 0.048310391428968036, 'lr': 0.00852661643711414, 'weight_decay': 0.0015393162543240542, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:54:53,658] Trial 75 finished with value: 0.44930303030217394 and parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.34658271146063363, 'dropout_second': 0.09492293358258547, 'lr': 0.0024297290242727802, 'weight_decay': 0.0012037437402696214, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 75 완료 + Value (CSI): 0.449303 + Parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.34658271146063363, 'dropout_second': 0.09492293358258547, 'lr': 0.0024297290242727802, 'weight_decay': 0.0012037437402696214, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:56:07,714] Trial 76 finished with value: 0.44597671439099723 and parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3823609162623983, 'dropout_second': 0.08519766854371615, 'lr': 0.0018371128262052454, 'weight_decay': 0.0012398260391136787, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 76 완료 + Value (CSI): 0.445977 + Parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3823609162623983, 'dropout_second': 0.08519766854371615, 'lr': 0.0018371128262052454, 'weight_decay': 0.0012398260391136787, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:56:44,367] Trial 77 finished with value: 0.449830550894976 and parameters: {'d_main': 224, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.38091584711367427, 'dropout_second': 0.08406036770928038, 'lr': 0.00215007709001068, 'weight_decay': 0.0008905493352292406, 'batch_size': 128}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 77 완료 + Value (CSI): 0.449831 + Parameters: {'d_main': 224, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.38091584711367427, 'dropout_second': 0.08406036770928038, 'lr': 0.00215007709001068, 'weight_decay': 0.0008905493352292406, 'batch_size': 128} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:57:11,192] Trial 78 finished with value: 0.438914928679929 and parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3927849960386153, 'dropout_second': 0.0854189053525165, 'lr': 0.002156765635960189, 'weight_decay': 0.0007615685292670977, 'batch_size': 128}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 78 완료 + Value (CSI): 0.438915 + Parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3927849960386153, 'dropout_second': 0.0854189053525165, 'lr': 0.002156765635960189, 'weight_decay': 0.0007615685292670977, 'batch_size': 128} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:57:14,436] Trial 79 pruned. + +================================================================================ +Trial 79 완료 + Value (CSI): 0.412170 + Parameters: {'d_main': 224, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3825175888723614, 'dropout_second': 0.10573484575500425, 'lr': 0.001867356038309785, 'weight_decay': 0.0011480024218685615, 'batch_size': 128} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:57:43,314] Trial 80 finished with value: 0.42916962085788146 and parameters: {'d_main': 224, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.39997613246844954, 'dropout_second': 0.08809959658523583, 'lr': 0.003300771273049726, 'weight_decay': 0.0012997932212244904, 'batch_size': 128}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 80 완료 + Value (CSI): 0.429170 + Parameters: {'d_main': 224, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.39997613246844954, 'dropout_second': 0.08809959658523583, 'lr': 0.003300771273049726, 'weight_decay': 0.0012997932212244904, 'batch_size': 128} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:58:12,070] Trial 81 finished with value: 0.43863414825034863 and parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3703430757364481, 'dropout_second': 0.09296746207628308, 'lr': 0.0025704567245108073, 'weight_decay': 0.0009075477842367546, 'batch_size': 128}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 81 완료 + Value (CSI): 0.438634 + Parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3703430757364481, 'dropout_second': 0.09296746207628308, 'lr': 0.0025704567245108073, 'weight_decay': 0.0009075477842367546, 'batch_size': 128} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:58:31,981] Trial 82 finished with value: 0.445806566961088 and parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3607614087532579, 'dropout_second': 0.07819129968504362, 'lr': 0.003005765341845703, 'weight_decay': 0.0006844624806872199, 'batch_size': 256}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 82 완료 + Value (CSI): 0.445807 + Parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3607614087532579, 'dropout_second': 0.07819129968504362, 'lr': 0.003005765341845703, 'weight_decay': 0.0006844624806872199, 'batch_size': 256} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:58:34,354] Trial 83 pruned. + +================================================================================ +Trial 83 완료 + Value (CSI): 0.405200 + Parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3625982822133438, 'dropout_second': 0.07851044281204626, 'lr': 0.001712021303130295, 'weight_decay': 0.0007343675559053701, 'batch_size': 256} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:58:37,038] Trial 84 pruned. + +================================================================================ +Trial 84 완료 + Value (CSI): 0.430769 + Parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.34930268858787195, 'dropout_second': 0.09601989095448318, 'lr': 0.003068772669217, 'weight_decay': 0.001020167408178886, 'batch_size': 256} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) +[I 2025-12-24 21:58:50,367] Trial 85 pruned. + +================================================================================ +Trial 85 완료 + Value (CSI): 0.435722 + Parameters: {'d_main': 224, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3829407570021397, 'dropout_second': 0.08363204621646977, 'lr': 0.0051002058891139734, 'weight_decay': 0.000601168578619266, 'batch_size': 256} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:58:53,037] Trial 86 pruned. + +================================================================================ +Trial 86 완료 + Value (CSI): 0.394063 + Parameters: {'d_main': 192, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.3587670193340947, 'dropout_second': 0.10137885585080655, 'lr': 0.006307802394420197, 'weight_decay': 0.0013810576193364413, 'batch_size': 256} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:58:57,092] Trial 87 pruned. + +================================================================================ +Trial 87 완료 + Value (CSI): 0.387214 + Parameters: {'d_main': 224, 'd_hidden': 64, 'n_blocks': 3, 'dropout_first': 0.3711512931773601, 'dropout_second': 0.07776968734261099, 'lr': 0.003913634053748914, 'weight_decay': 0.00043929827705109395, 'batch_size': 128} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 21:59:22,009] Trial 88 finished with value: 0.4350133561241542 and parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.34578380281522986, 'dropout_second': 0.09035756606412548, 'lr': 0.0022902991656233405, 'weight_decay': 0.002104390626404288, 'batch_size': 256}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 88 완료 + Value (CSI): 0.435013 + Parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.34578380281522986, 'dropout_second': 0.09035756606412548, 'lr': 0.0022902991656233405, 'weight_decay': 0.002104390626404288, 'batch_size': 256} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 21:59:29,293] Trial 89 pruned. + +================================================================================ +Trial 89 완료 + Value (CSI): 0.421179 + Parameters: {'d_main': 224, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.3876967900951302, 'dropout_second': 0.07463764964302302, 'lr': 0.0014914338375181778, 'weight_decay': 0.0012170129041252319, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 22:00:34,322] Trial 90 finished with value: 0.43464683216345984 and parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.35404068337847894, 'dropout_second': 0.06959824977444388, 'lr': 0.004398818448843434, 'weight_decay': 0.0008327757727328426, 'batch_size': 32}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 90 완료 + Value (CSI): 0.434647 + Parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.35404068337847894, 'dropout_second': 0.06959824977444388, 'lr': 0.004398818448843434, 'weight_decay': 0.0008327757727328426, 'batch_size': 32} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) +[I 2025-12-24 22:00:40,323] Trial 91 pruned. + +================================================================================ +Trial 91 완료 + Value (CSI): 0.398058 + Parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3784743501789688, 'dropout_second': 0.08234168791929641, 'lr': 0.002705244088124891, 'weight_decay': 0.0017100695150504323, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) +[I 2025-12-24 22:01:17,887] Trial 92 pruned. + +================================================================================ +Trial 92 완료 + Value (CSI): 0.454327 + Parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3649202625880713, 'dropout_second': 0.09463656563882958, 'lr': 0.0020018067625070567, 'weight_decay': 0.0021184635358590873, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 22:02:13,688] Trial 93 finished with value: 0.4426008099967209 and parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.37480891523261006, 'dropout_second': 0.08795755989123837, 'lr': 0.002958721177960843, 'weight_decay': 0.002545465276475854, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 93 완료 + Value (CSI): 0.442601 + Parameters: {'d_main': 192, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.37480891523261006, 'dropout_second': 0.08795755989123837, 'lr': 0.002958721177960843, 'weight_decay': 0.002545465276475854, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 22:03:13,493] Trial 94 finished with value: 0.4411719603215167 and parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3887266116530951, 'dropout_second': 0.06413803838646395, 'lr': 0.0023331234881503664, 'weight_decay': 0.0014942355557454774, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 94 완료 + Value (CSI): 0.441172 + Parameters: {'d_main': 256, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.3887266116530951, 'dropout_second': 0.06413803838646395, 'lr': 0.0023331234881503664, 'weight_decay': 0.0014942355557454774, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 77.97333333333333, 1: 5.778656126482214, 2: 0.3553503068603026} (클래스별 샘플 수: {0: 75, 1: 1012, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 97.46666666666667, 1: 5.5961722488038275, 2: 0.3557394002068252} (클래스별 샘플 수: {0: 60, 1: 1045, 2: 16439}) +[I 2025-12-24 22:04:06,661] Trial 95 finished with value: 0.4373151972934104 and parameters: {'d_main': 192, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.379976729451679, 'dropout_second': 0.027858340171992672, 'lr': 0.0018147395191704815, 'weight_decay': 0.0010452732417813452, 'batch_size': 64}. Best is trial 16 with value: 0.4542970487265281. + +================================================================================ +Trial 95 완료 + Value (CSI): 0.437315 + Parameters: {'d_main': 192, 'd_hidden': 128, 'n_blocks': 2, 'dropout_first': 0.379976729451679, 'dropout_second': 0.027858340171992672, 'lr': 0.0018147395191704815, 'weight_decay': 0.0010452732417813452, 'batch_size': 64} + Best Value (CSI): 0.454297 + Best Trial: 16 + Best Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3972607776862854, 'dropout_second': 0.13044016240028491, 'lr': 0.009478600883696408, 'weight_decay': 0.009976371611112884, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 110.18867924528301, 1: 5.98974358974359, 2: 0.354111084162018} (클래스별 샘플 수: {0: 53, 1: 975, 2: 16492}) diff --git a/Analysis_code/5.optima/run_bash/resnet_like/resnet_like_smote.log b/Analysis_code/5.optima/run_bash/resnet_like/resnet_like_smote.log new file mode 100644 index 0000000000000000000000000000000000000000..9e072d19e457b830e232e7abd0bd684ca0c6a94b --- /dev/null +++ b/Analysis_code/5.optima/run_bash/resnet_like/resnet_like_smote.log @@ -0,0 +1,830 @@ +nohup: ignoring input +/bin/bash: /opt/conda/lib/libtinfo.so.6: no version information available (required by /bin/bash) +========================================== +ResNet-Like SMOTE 파일 실행 시작 +시작 시간: 2025-12-24 21:05:21 +GPU: 0번 (CUDA_VISIBLE_DEVICES=0) +========================================== + +---------------------------------------- +실행 중: resnet_like_smote/resnet_like_smote_busan.py +시작 시간: 2025-12-24 21:05:21 +---------------------------------------- +[I 2025-12-24 21:05:22,108] A new study created in memory with name: no-name-0399d9fe-1029-420c-815d-9f44b2dcdbe1 + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:06:24,379] Trial 0 finished with value: 0.4343813963423946 and parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39624936600633076, 'dropout_second': 0.1648026697179265, 'lr': 0.001229810644376036, 'weight_decay': 0.02286984673757277, 'batch_size': 64}. Best is trial 0 with value: 0.4343813963423946. + +================================================================================ +Trial 0 완료 + Value (CSI): 0.434381 + Parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39624936600633076, 'dropout_second': 0.1648026697179265, 'lr': 0.001229810644376036, 'weight_decay': 0.02286984673757277, 'batch_size': 64} + Best Value (CSI): 0.434381 + Best Trial: 0 + Best Parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39624936600633076, 'dropout_second': 0.1648026697179265, 'lr': 0.001229810644376036, 'weight_decay': 0.02286984673757277, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:08:21,509] Trial 1 finished with value: 0.3539024820620083 and parameters: {'d_main': 192, 'd_hidden': 128, 'n_blocks': 5, 'dropout_first': 0.353128682274814, 'dropout_second': 0.08191818144632719, 'lr': 1.4236055607492143e-05, 'weight_decay': 0.04225322504913049, 'batch_size': 128}. Best is trial 0 with value: 0.4343813963423946. + +================================================================================ +Trial 1 완료 + Value (CSI): 0.353902 + Parameters: {'d_main': 192, 'd_hidden': 128, 'n_blocks': 5, 'dropout_first': 0.353128682274814, 'dropout_second': 0.08191818144632719, 'lr': 1.4236055607492143e-05, 'weight_decay': 0.04225322504913049, 'batch_size': 128} + Best Value (CSI): 0.434381 + Best Trial: 0 + Best Parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39624936600633076, 'dropout_second': 0.1648026697179265, 'lr': 0.001229810644376036, 'weight_decay': 0.02286984673757277, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:09:02,838] Trial 2 finished with value: 0.4211014995122931 and parameters: {'d_main': 64, 'd_hidden': 384, 'n_blocks': 3, 'dropout_first': 0.1639681780701901, 'dropout_second': 0.007464294785105352, 'lr': 0.0012382197092395632, 'weight_decay': 0.03871372793047288, 'batch_size': 128}. Best is trial 0 with value: 0.4343813963423946. + +================================================================================ +Trial 2 완료 + Value (CSI): 0.421101 + Parameters: {'d_main': 64, 'd_hidden': 384, 'n_blocks': 3, 'dropout_first': 0.1639681780701901, 'dropout_second': 0.007464294785105352, 'lr': 0.0012382197092395632, 'weight_decay': 0.03871372793047288, 'batch_size': 128} + Best Value (CSI): 0.434381 + Best Trial: 0 + Best Parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39624936600633076, 'dropout_second': 0.1648026697179265, 'lr': 0.001229810644376036, 'weight_decay': 0.02286984673757277, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:11:12,287] Trial 3 finished with value: 0.4155590951412993 and parameters: {'d_main': 160, 'd_hidden': 512, 'n_blocks': 5, 'dropout_first': 0.1558356067137176, 'dropout_second': 0.13836993158005303, 'lr': 7.910457945589434e-05, 'weight_decay': 0.08233846772375299, 'batch_size': 32}. Best is trial 0 with value: 0.4343813963423946. + +================================================================================ +Trial 3 완료 + Value (CSI): 0.415559 + Parameters: {'d_main': 160, 'd_hidden': 512, 'n_blocks': 5, 'dropout_first': 0.1558356067137176, 'dropout_second': 0.13836993158005303, 'lr': 7.910457945589434e-05, 'weight_decay': 0.08233846772375299, 'batch_size': 32} + Best Value (CSI): 0.434381 + Best Trial: 0 + Best Parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39624936600633076, 'dropout_second': 0.1648026697179265, 'lr': 0.001229810644376036, 'weight_decay': 0.02286984673757277, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:11:46,539] Trial 4 finished with value: 0.4167225708580298 and parameters: {'d_main': 256, 'd_hidden': 448, 'n_blocks': 4, 'dropout_first': 0.20445983850640104, 'dropout_second': 0.09277378016947287, 'lr': 0.0005812838850083716, 'weight_decay': 0.013596896731255085, 'batch_size': 256}. Best is trial 0 with value: 0.4343813963423946. + +================================================================================ +Trial 4 완료 + Value (CSI): 0.416723 + Parameters: {'d_main': 256, 'd_hidden': 448, 'n_blocks': 4, 'dropout_first': 0.20445983850640104, 'dropout_second': 0.09277378016947287, 'lr': 0.0005812838850083716, 'weight_decay': 0.013596896731255085, 'batch_size': 256} + Best Value (CSI): 0.434381 + Best Trial: 0 + Best Parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39624936600633076, 'dropout_second': 0.1648026697179265, 'lr': 0.001229810644376036, 'weight_decay': 0.02286984673757277, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:11:51,919] Trial 5 pruned. + +================================================================================ +Trial 5 완료 + Value (CSI): 0.421557 + Parameters: {'d_main': 224, 'd_hidden': 448, 'n_blocks': 3, 'dropout_first': 0.20417924579010543, 'dropout_second': 0.17538258715616833, 'lr': 0.00022069069285576812, 'weight_decay': 0.007068205865860933, 'batch_size': 256} + Best Value (CSI): 0.434381 + Best Trial: 0 + Best Parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39624936600633076, 'dropout_second': 0.1648026697179265, 'lr': 0.001229810644376036, 'weight_decay': 0.02286984673757277, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:12:21,348] Trial 6 finished with value: 0.423788118938238 and parameters: {'d_main': 128, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.239666458448927, 'dropout_second': 0.11228726017897378, 'lr': 0.0008856053871852164, 'weight_decay': 0.0021253391534866526, 'batch_size': 256}. Best is trial 0 with value: 0.4343813963423946. + +================================================================================ +Trial 6 완료 + Value (CSI): 0.423788 + Parameters: {'d_main': 128, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.239666458448927, 'dropout_second': 0.11228726017897378, 'lr': 0.0008856053871852164, 'weight_decay': 0.0021253391534866526, 'batch_size': 256} + Best Value (CSI): 0.434381 + Best Trial: 0 + Best Parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39624936600633076, 'dropout_second': 0.1648026697179265, 'lr': 0.001229810644376036, 'weight_decay': 0.02286984673757277, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:14:08,754] Trial 7 finished with value: 0.41124187158896125 and parameters: {'d_main': 64, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.18406178058388775, 'dropout_second': 0.18254329300682204, 'lr': 0.000654774993127704, 'weight_decay': 0.00035191995408995175, 'batch_size': 32}. Best is trial 0 with value: 0.4343813963423946. + +================================================================================ +Trial 7 완료 + Value (CSI): 0.411242 + Parameters: {'d_main': 64, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.18406178058388775, 'dropout_second': 0.18254329300682204, 'lr': 0.000654774993127704, 'weight_decay': 0.00035191995408995175, 'batch_size': 32} + Best Value (CSI): 0.434381 + Best Trial: 0 + Best Parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39624936600633076, 'dropout_second': 0.1648026697179265, 'lr': 0.001229810644376036, 'weight_decay': 0.02286984673757277, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:14:55,637] Trial 8 finished with value: 0.43035077869465477 and parameters: {'d_main': 64, 'd_hidden': 192, 'n_blocks': 4, 'dropout_first': 0.2733631354486785, 'dropout_second': 0.0057343963518872165, 'lr': 0.0066244463673539936, 'weight_decay': 0.0008017715925901634, 'batch_size': 128}. Best is trial 0 with value: 0.4343813963423946. + +================================================================================ +Trial 8 완료 + Value (CSI): 0.430351 + Parameters: {'d_main': 64, 'd_hidden': 192, 'n_blocks': 4, 'dropout_first': 0.2733631354486785, 'dropout_second': 0.0057343963518872165, 'lr': 0.0066244463673539936, 'weight_decay': 0.0008017715925901634, 'batch_size': 128} + Best Value (CSI): 0.434381 + Best Trial: 0 + Best Parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39624936600633076, 'dropout_second': 0.1648026697179265, 'lr': 0.001229810644376036, 'weight_decay': 0.02286984673757277, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:14:59,904] Trial 9 pruned. + +================================================================================ +Trial 9 완료 + Value (CSI): 0.420883 + Parameters: {'d_main': 224, 'd_hidden': 512, 'n_blocks': 4, 'dropout_first': 0.2146461365240275, 'dropout_second': 0.12044287854713281, 'lr': 0.0008894385413904603, 'weight_decay': 0.008396467682060343, 'batch_size': 256} + Best Value (CSI): 0.434381 + Best Trial: 0 + Best Parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39624936600633076, 'dropout_second': 0.1648026697179265, 'lr': 0.001229810644376036, 'weight_decay': 0.02286984673757277, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:16:40,942] Trial 10 finished with value: 0.4473603019416436 and parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 10 완료 + Value (CSI): 0.447360 + Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:17:54,798] Trial 11 finished with value: 0.4347598060800708 and parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39563344954768015, 'dropout_second': 0.19347069888922752, 'lr': 0.007052573598514607, 'weight_decay': 0.0001026084710713299, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 11 완료 + Value (CSI): 0.434760 + Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39563344954768015, 'dropout_second': 0.19347069888922752, 'lr': 0.007052573598514607, 'weight_decay': 0.0001026084710713299, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:19:11,173] Trial 12 finished with value: 0.4171686104915467 and parameters: {'d_main': 128, 'd_hidden': 320, 'n_blocks': 5, 'dropout_first': 0.3412281091188458, 'dropout_second': 0.1970475089659485, 'lr': 0.00803332115380869, 'weight_decay': 0.00010510009563331521, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 12 완료 + Value (CSI): 0.417169 + Parameters: {'d_main': 128, 'd_hidden': 320, 'n_blocks': 5, 'dropout_first': 0.3412281091188458, 'dropout_second': 0.1970475089659485, 'lr': 0.00803332115380869, 'weight_decay': 0.00010510009563331521, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:20:16,333] Trial 13 finished with value: 0.44107679211262624 and parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.3997404482755059, 'dropout_second': 0.195264877974044, 'lr': 0.0034613838100220062, 'weight_decay': 0.00010539142052591408, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 13 완료 + Value (CSI): 0.441077 + Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.3997404482755059, 'dropout_second': 0.195264877974044, 'lr': 0.0034613838100220062, 'weight_decay': 0.00010539142052591408, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:21:27,889] Trial 14 finished with value: 0.4365647184150577 and parameters: {'d_main': 160, 'd_hidden': 320, 'n_blocks': 4, 'dropout_first': 0.11177544953501278, 'dropout_second': 0.162162744822013, 'lr': 0.0030328051458252204, 'weight_decay': 0.0003252303901534768, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 14 완료 + Value (CSI): 0.436565 + Parameters: {'d_main': 160, 'd_hidden': 320, 'n_blocks': 4, 'dropout_first': 0.11177544953501278, 'dropout_second': 0.162162744822013, 'lr': 0.0030328051458252204, 'weight_decay': 0.0003252303901534768, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:22:30,373] Trial 15 finished with value: 0.42848690659809646 and parameters: {'d_main': 96, 'd_hidden': 192, 'n_blocks': 2, 'dropout_first': 0.2938189064608773, 'dropout_second': 0.19896914227566123, 'lr': 0.002821388971067019, 'weight_decay': 0.00025338108059882943, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 15 완료 + Value (CSI): 0.428487 + Parameters: {'d_main': 96, 'd_hidden': 192, 'n_blocks': 2, 'dropout_first': 0.2938189064608773, 'dropout_second': 0.19896914227566123, 'lr': 0.002821388971067019, 'weight_decay': 0.00025338108059882943, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:23:42,616] Trial 16 finished with value: 0.4335443408803838 and parameters: {'d_main': 192, 'd_hidden': 192, 'n_blocks': 5, 'dropout_first': 0.33684901310872456, 'dropout_second': 0.15123573194591053, 'lr': 0.003411289533781867, 'weight_decay': 0.0016228608882330549, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 16 완료 + Value (CSI): 0.433544 + Parameters: {'d_main': 192, 'd_hidden': 192, 'n_blocks': 5, 'dropout_first': 0.33684901310872456, 'dropout_second': 0.15123573194591053, 'lr': 0.003411289533781867, 'weight_decay': 0.0016228608882330549, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:23:52,219] Trial 17 pruned. + +================================================================================ +Trial 17 완료 + Value (CSI): 0.436341 + Parameters: {'d_main': 96, 'd_hidden': 384, 'n_blocks': 4, 'dropout_first': 0.3997541414962253, 'dropout_second': 0.14496496506062093, 'lr': 0.009223530964708467, 'weight_decay': 0.0006623981669238755, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:25:11,760] Trial 18 finished with value: 0.433088626382028 and parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.3069828783082295, 'dropout_second': 0.17521124533812116, 'lr': 0.002321964800858459, 'weight_decay': 0.00015094781137616853, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 18 완료 + Value (CSI): 0.433089 + Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.3069828783082295, 'dropout_second': 0.17521124533812116, 'lr': 0.002321964800858459, 'weight_decay': 0.00015094781137616853, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:27:19,932] Trial 19 finished with value: 0.4268209880694089 and parameters: {'d_main': 192, 'd_hidden': 320, 'n_blocks': 4, 'dropout_first': 0.3659149730104986, 'dropout_second': 0.17809965429250207, 'lr': 0.004084259132654814, 'weight_decay': 0.00022588853967319856, 'batch_size': 32}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 19 완료 + Value (CSI): 0.426821 + Parameters: {'d_main': 192, 'd_hidden': 320, 'n_blocks': 4, 'dropout_first': 0.3659149730104986, 'dropout_second': 0.17809965429250207, 'lr': 0.004084259132654814, 'weight_decay': 0.00022588853967319856, 'batch_size': 32} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:27:29,914] Trial 20 pruned. + +================================================================================ +Trial 20 완료 + Value (CSI): 0.431214 + Parameters: {'d_main': 160, 'd_hidden': 64, 'n_blocks': 5, 'dropout_first': 0.36807764051118264, 'dropout_second': 0.1995534486373585, 'lr': 0.00216432368196577, 'weight_decay': 0.0007843709288705901, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:28:34,024] Trial 21 finished with value: 0.435732422917031 and parameters: {'d_main': 160, 'd_hidden': 320, 'n_blocks': 4, 'dropout_first': 0.1248254358180246, 'dropout_second': 0.16097776006247447, 'lr': 0.0048195124687075664, 'weight_decay': 0.0003724655286704962, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 21 완료 + Value (CSI): 0.435732 + Parameters: {'d_main': 160, 'd_hidden': 320, 'n_blocks': 4, 'dropout_first': 0.1248254358180246, 'dropout_second': 0.16097776006247447, 'lr': 0.0048195124687075664, 'weight_decay': 0.0003724655286704962, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:29:44,581] Trial 22 finished with value: 0.42307404432987 and parameters: {'d_main': 160, 'd_hidden': 384, 'n_blocks': 4, 'dropout_first': 0.10311842651516798, 'dropout_second': 0.16499770566853558, 'lr': 0.0019241834727983145, 'weight_decay': 0.00018689904068088046, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 22 완료 + Value (CSI): 0.423074 + Parameters: {'d_main': 160, 'd_hidden': 384, 'n_blocks': 4, 'dropout_first': 0.10311842651516798, 'dropout_second': 0.16499770566853558, 'lr': 0.0019241834727983145, 'weight_decay': 0.00018689904068088046, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:30:45,337] Trial 23 finished with value: 0.4367342566446551 and parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.2502050397481079, 'dropout_second': 0.18074150454910173, 'lr': 0.004047093433258671, 'weight_decay': 0.00014132905064186818, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 23 완료 + Value (CSI): 0.436734 + Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.2502050397481079, 'dropout_second': 0.18074150454910173, 'lr': 0.004047093433258671, 'weight_decay': 0.00014132905064186818, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:32:05,959] Trial 24 finished with value: 0.4178003069965725 and parameters: {'d_main': 96, 'd_hidden': 192, 'n_blocks': 5, 'dropout_first': 0.32265890732143293, 'dropout_second': 0.18198187695200982, 'lr': 0.009925096530452725, 'weight_decay': 0.00010015253198894729, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 24 완료 + Value (CSI): 0.417800 + Parameters: {'d_main': 96, 'd_hidden': 192, 'n_blocks': 5, 'dropout_first': 0.32265890732143293, 'dropout_second': 0.18198187695200982, 'lr': 0.009925096530452725, 'weight_decay': 0.00010015253198894729, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:33:15,904] Trial 25 finished with value: 0.4280091003496354 and parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.275534060924041, 'dropout_second': 0.18663527926992154, 'lr': 0.004173625935491338, 'weight_decay': 0.00017664624983046925, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 25 완료 + Value (CSI): 0.428009 + Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.275534060924041, 'dropout_second': 0.18663527926992154, 'lr': 0.004173625935491338, 'weight_decay': 0.00017664624983046925, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:34:50,204] Trial 26 finished with value: 0.43733033472594646 and parameters: {'d_main': 96, 'd_hidden': 128, 'n_blocks': 5, 'dropout_first': 0.32664367103042713, 'dropout_second': 0.13520491639758653, 'lr': 0.005415812612088505, 'weight_decay': 0.00044629786170172214, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 26 완료 + Value (CSI): 0.437330 + Parameters: {'d_main': 96, 'd_hidden': 128, 'n_blocks': 5, 'dropout_first': 0.32664367103042713, 'dropout_second': 0.13520491639758653, 'lr': 0.005415812612088505, 'weight_decay': 0.00044629786170172214, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:35:42,253] Trial 27 finished with value: 0.4283513104335471 and parameters: {'d_main': 96, 'd_hidden': 128, 'n_blocks': 5, 'dropout_first': 0.3692527365415492, 'dropout_second': 0.13464445821366075, 'lr': 0.005625746698258866, 'weight_decay': 0.00048722371861008285, 'batch_size': 128}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 27 완료 + Value (CSI): 0.428351 + Parameters: {'d_main': 96, 'd_hidden': 128, 'n_blocks': 5, 'dropout_first': 0.3692527365415492, 'dropout_second': 0.13464445821366075, 'lr': 0.005625746698258866, 'weight_decay': 0.00048722371861008285, 'batch_size': 128} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:37:36,801] Trial 28 finished with value: 0.43189558772938624 and parameters: {'d_main': 96, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3229039666321444, 'dropout_second': 0.15283983680302496, 'lr': 0.0019480052295566856, 'weight_decay': 0.00023991380251639887, 'batch_size': 32}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 28 완료 + Value (CSI): 0.431896 + Parameters: {'d_main': 96, 'd_hidden': 128, 'n_blocks': 3, 'dropout_first': 0.3229039666321444, 'dropout_second': 0.15283983680302496, 'lr': 0.0019480052295566856, 'weight_decay': 0.00023991380251639887, 'batch_size': 32} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:39:17,273] Trial 29 finished with value: 0.41964062157979587 and parameters: {'d_main': 64, 'd_hidden': 64, 'n_blocks': 5, 'dropout_first': 0.37990974626544477, 'dropout_second': 0.1649714587975413, 'lr': 0.0015213139557115523, 'weight_decay': 0.0005214484045864776, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 29 완료 + Value (CSI): 0.419641 + Parameters: {'d_main': 64, 'd_hidden': 64, 'n_blocks': 5, 'dropout_first': 0.37990974626544477, 'dropout_second': 0.1649714587975413, 'lr': 0.0015213139557115523, 'weight_decay': 0.0005214484045864776, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:39:28,024] Trial 30 pruned. + +================================================================================ +Trial 30 완료 + Value (CSI): 0.372905 + Parameters: {'d_main': 128, 'd_hidden': 192, 'n_blocks': 5, 'dropout_first': 0.3482085406410318, 'dropout_second': 0.13698891649105605, 'lr': 0.005678872996086508, 'weight_decay': 0.0013493949025716197, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:40:34,109] Trial 31 finished with value: 0.4294868488485042 and parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39975250488313974, 'dropout_second': 0.1833658248405648, 'lr': 0.003929484549418744, 'weight_decay': 0.00013085744089831708, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 31 완료 + Value (CSI): 0.429487 + Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.39975250488313974, 'dropout_second': 0.1833658248405648, 'lr': 0.003929484549418744, 'weight_decay': 0.00013085744089831708, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:41:44,357] Trial 32 finished with value: 0.4368525429792709 and parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.3742589402551822, 'dropout_second': 0.17216980627842127, 'lr': 0.0028595030480820867, 'weight_decay': 0.00017953070603671044, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 32 완료 + Value (CSI): 0.436853 + Parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.3742589402551822, 'dropout_second': 0.17216980627842127, 'lr': 0.0028595030480820867, 'weight_decay': 0.00017953070603671044, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:42:39,570] Trial 33 finished with value: 0.4260899256138342 and parameters: {'d_main': 96, 'd_hidden': 192, 'n_blocks': 5, 'dropout_first': 0.38058354775768977, 'dropout_second': 0.16948704033897635, 'lr': 0.0014761753892182578, 'weight_decay': 0.00022806966555660217, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 33 완료 + Value (CSI): 0.426090 + Parameters: {'d_main': 96, 'd_hidden': 192, 'n_blocks': 5, 'dropout_first': 0.38058354775768977, 'dropout_second': 0.16948704033897635, 'lr': 0.0014761753892182578, 'weight_decay': 0.00022806966555660217, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:43:25,412] Trial 34 finished with value: 0.4343276725936178 and parameters: {'d_main': 64, 'd_hidden': 320, 'n_blocks': 5, 'dropout_first': 0.35692715711643425, 'dropout_second': 0.1530422725175024, 'lr': 0.0026637316969465702, 'weight_decay': 0.00015356763772259109, 'batch_size': 128}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 34 완료 + Value (CSI): 0.434328 + Parameters: {'d_main': 64, 'd_hidden': 320, 'n_blocks': 5, 'dropout_first': 0.35692715711643425, 'dropout_second': 0.1530422725175024, 'lr': 0.0026637316969465702, 'weight_decay': 0.00015356763772259109, 'batch_size': 128} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:44:41,111] Trial 35 finished with value: 0.4214856378764236 and parameters: {'d_main': 96, 'd_hidden': 384, 'n_blocks': 5, 'dropout_first': 0.38053667843710715, 'dropout_second': 0.1905353645784542, 'lr': 0.006797029013988444, 'weight_decay': 0.0002887315602976826, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 35 완료 + Value (CSI): 0.421486 + Parameters: {'d_main': 96, 'd_hidden': 384, 'n_blocks': 5, 'dropout_first': 0.38053667843710715, 'dropout_second': 0.1905353645784542, 'lr': 0.006797029013988444, 'weight_decay': 0.0002887315602976826, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:44:50,516] Trial 36 pruned. + +================================================================================ +Trial 36 완료 + Value (CSI): 0.399763 + Parameters: {'d_main': 96, 'd_hidden': 256, 'n_blocks': 4, 'dropout_first': 0.3510051536914929, 'dropout_second': 0.17256735358341435, 'lr': 0.009744178969795878, 'weight_decay': 0.0003929468373396067, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:44:54,895] Trial 37 pruned. + +================================================================================ +Trial 37 완료 + Value (CSI): 0.430512 + Parameters: {'d_main': 64, 'd_hidden': 128, 'n_blocks': 5, 'dropout_first': 0.33552996127371426, 'dropout_second': 0.07621865513155274, 'lr': 0.0013491047024681365, 'weight_decay': 0.00017560666243623962, 'batch_size': 256} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:47:01,484] Trial 38 finished with value: 0.4318721195547683 and parameters: {'d_main': 128, 'd_hidden': 192, 'n_blocks': 5, 'dropout_first': 0.35824949633743575, 'dropout_second': 0.19132445921170682, 'lr': 0.0002914017451538734, 'weight_decay': 0.00027880987978853985, 'batch_size': 32}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 38 완료 + Value (CSI): 0.431872 + Parameters: {'d_main': 128, 'd_hidden': 192, 'n_blocks': 5, 'dropout_first': 0.35824949633743575, 'dropout_second': 0.19132445921170682, 'lr': 0.0002914017451538734, 'weight_decay': 0.00027880987978853985, 'batch_size': 32} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:47:35,216] Trial 39 finished with value: 0.44369116381668466 and parameters: {'d_main': 192, 'd_hidden': 448, 'n_blocks': 2, 'dropout_first': 0.38476385868545526, 'dropout_second': 0.1722633631062235, 'lr': 0.005351515859513488, 'weight_decay': 0.00010261132011866752, 'batch_size': 128}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 39 완료 + Value (CSI): 0.443691 + Parameters: {'d_main': 192, 'd_hidden': 448, 'n_blocks': 2, 'dropout_first': 0.38476385868545526, 'dropout_second': 0.1722633631062235, 'lr': 0.005351515859513488, 'weight_decay': 0.00010261132011866752, 'batch_size': 128} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:48:10,104] Trial 40 finished with value: 0.42860930927246343 and parameters: {'d_main': 224, 'd_hidden': 448, 'n_blocks': 2, 'dropout_first': 0.3842819526794761, 'dropout_second': 0.15789538154059257, 'lr': 0.005174136587435888, 'weight_decay': 0.00010682612628890465, 'batch_size': 128}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 40 완료 + Value (CSI): 0.428609 + Parameters: {'d_main': 224, 'd_hidden': 448, 'n_blocks': 2, 'dropout_first': 0.3842819526794761, 'dropout_second': 0.15789538154059257, 'lr': 0.005174136587435888, 'weight_decay': 0.00010682612628890465, 'batch_size': 128} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:48:54,960] Trial 41 finished with value: 0.4321492653864722 and parameters: {'d_main': 192, 'd_hidden': 512, 'n_blocks': 3, 'dropout_first': 0.38469533232946324, 'dropout_second': 0.16944549796915215, 'lr': 0.0027604848728517077, 'weight_decay': 0.0001681736493129496, 'batch_size': 128}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 41 완료 + Value (CSI): 0.432149 + Parameters: {'d_main': 192, 'd_hidden': 512, 'n_blocks': 3, 'dropout_first': 0.38469533232946324, 'dropout_second': 0.16944549796915215, 'lr': 0.0027604848728517077, 'weight_decay': 0.0001681736493129496, 'batch_size': 128} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:49:28,971] Trial 42 finished with value: 0.4320049743344227 and parameters: {'d_main': 224, 'd_hidden': 448, 'n_blocks': 2, 'dropout_first': 0.36659840937246746, 'dropout_second': 0.1905344248802165, 'lr': 0.0060220832777173605, 'weight_decay': 0.00020082851064004076, 'batch_size': 128}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 42 완료 + Value (CSI): 0.432005 + Parameters: {'d_main': 224, 'd_hidden': 448, 'n_blocks': 2, 'dropout_first': 0.36659840937246746, 'dropout_second': 0.1905344248802165, 'lr': 0.0060220832777173605, 'weight_decay': 0.00020082851064004076, 'batch_size': 128} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:49:34,872] Trial 43 pruned. + +================================================================================ +Trial 43 완료 + Value (CSI): 0.427489 + Parameters: {'d_main': 192, 'd_hidden': 384, 'n_blocks': 3, 'dropout_first': 0.390602286629313, 'dropout_second': 0.17402385450994773, 'lr': 0.000995575768438301, 'weight_decay': 0.0001400285830497261, 'batch_size': 128} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:50:00,418] Trial 44 finished with value: 0.43281105350829413 and parameters: {'d_main': 256, 'd_hidden': 320, 'n_blocks': 4, 'dropout_first': 0.37141092236069057, 'dropout_second': 0.18564948369406348, 'lr': 0.003369045095488757, 'weight_decay': 0.00012418206028431744, 'batch_size': 256}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 44 완료 + Value (CSI): 0.432811 + Parameters: {'d_main': 256, 'd_hidden': 320, 'n_blocks': 4, 'dropout_first': 0.37141092236069057, 'dropout_second': 0.18564948369406348, 'lr': 0.003369045095488757, 'weight_decay': 0.00012418206028431744, 'batch_size': 256} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:50:05,628] Trial 45 pruned. + +================================================================================ +Trial 45 완료 + Value (CSI): 0.445946 + Parameters: {'d_main': 160, 'd_hidden': 256, 'n_blocks': 2, 'dropout_first': 0.39878354171284, 'dropout_second': 0.1451590364374503, 'lr': 0.0068006488100975275, 'weight_decay': 0.00010358992732579704, 'batch_size': 128} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:50:15,546] Trial 46 pruned. + +================================================================================ +Trial 46 완료 + Value (CSI): 0.439952 + Parameters: {'d_main': 128, 'd_hidden': 192, 'n_blocks': 4, 'dropout_first': 0.35296253053565585, 'dropout_second': 0.19866888828998167, 'lr': 0.000564551634869356, 'weight_decay': 0.00030712435801819325, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:50:46,826] Trial 47 finished with value: 0.4321749100852273 and parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 5, 'dropout_first': 0.38005106410292655, 'dropout_second': 0.17753317310779493, 'lr': 0.0074999053685892, 'weight_decay': 0.00047535047858282656, 'batch_size': 256}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 47 완료 + Value (CSI): 0.432175 + Parameters: {'d_main': 160, 'd_hidden': 128, 'n_blocks': 5, 'dropout_first': 0.38005106410292655, 'dropout_second': 0.17753317310779493, 'lr': 0.0074999053685892, 'weight_decay': 0.00047535047858282656, 'batch_size': 256} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:50:55,857] Trial 48 pruned. + +================================================================================ +Trial 48 완료 + Value (CSI): 0.421784 + Parameters: {'d_main': 96, 'd_hidden': 512, 'n_blocks': 3, 'dropout_first': 0.344117203119826, 'dropout_second': 0.12774995312215154, 'lr': 0.0049548630768280165, 'weight_decay': 0.00021743043034593327, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:52:48,816] Trial 49 finished with value: 0.42472553590197365 and parameters: {'d_main': 64, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.3624312153263216, 'dropout_second': 0.1598724472473137, 'lr': 0.003057028535229428, 'weight_decay': 0.00013469732289558261, 'batch_size': 32}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 49 완료 + Value (CSI): 0.424726 + Parameters: {'d_main': 64, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.3624312153263216, 'dropout_second': 0.1598724472473137, 'lr': 0.003057028535229428, 'weight_decay': 0.00013469732289558261, 'batch_size': 32} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:53:55,744] Trial 50 finished with value: 0.4320861941985803 and parameters: {'d_main': 160, 'd_hidden': 320, 'n_blocks': 4, 'dropout_first': 0.3895612347394379, 'dropout_second': 0.17106578663634198, 'lr': 0.0019264954481598307, 'weight_decay': 0.00025518688872079896, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 50 완료 + Value (CSI): 0.432086 + Parameters: {'d_main': 160, 'd_hidden': 320, 'n_blocks': 4, 'dropout_first': 0.3895612347394379, 'dropout_second': 0.17106578663634198, 'lr': 0.0019264954481598307, 'weight_decay': 0.00025518688872079896, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:55:17,637] Trial 51 finished with value: 0.4337069984703827 and parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.2382801450122345, 'dropout_second': 0.18398332723587912, 'lr': 0.003693740407503076, 'weight_decay': 0.00015043046525101657, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 51 완료 + Value (CSI): 0.433707 + Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.2382801450122345, 'dropout_second': 0.18398332723587912, 'lr': 0.003693740407503076, 'weight_decay': 0.00015043046525101657, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:56:41,037] Trial 52 finished with value: 0.4280210196835079 and parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.32685477444017463, 'dropout_second': 0.1928963585369391, 'lr': 0.004439140258516687, 'weight_decay': 0.0001354505123810376, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 52 완료 + Value (CSI): 0.428021 + Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.32685477444017463, 'dropout_second': 0.1928963585369391, 'lr': 0.004439140258516687, 'weight_decay': 0.0001354505123810376, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:57:46,653] Trial 53 finished with value: 0.4079658904564553 and parameters: {'d_main': 128, 'd_hidden': 448, 'n_blocks': 5, 'dropout_first': 0.3079896933116175, 'dropout_second': 0.17740098592969075, 'lr': 0.007572717836812667, 'weight_decay': 0.0001866748024085073, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 53 완료 + Value (CSI): 0.407966 + Parameters: {'d_main': 128, 'd_hidden': 448, 'n_blocks': 5, 'dropout_first': 0.3079896933116175, 'dropout_second': 0.17740098592969075, 'lr': 0.007572717836812667, 'weight_decay': 0.0001866748024085073, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 21:58:51,032] Trial 54 finished with value: 0.4333916520291255 and parameters: {'d_main': 160, 'd_hidden': 320, 'n_blocks': 5, 'dropout_first': 0.3744308735132934, 'dropout_second': 0.19956187944372472, 'lr': 0.0025097291215705636, 'weight_decay': 0.00012149503686331255, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 54 완료 + Value (CSI): 0.433392 + Parameters: {'d_main': 160, 'd_hidden': 320, 'n_blocks': 5, 'dropout_first': 0.3744308735132934, 'dropout_second': 0.19956187944372472, 'lr': 0.0025097291215705636, 'weight_decay': 0.00012149503686331255, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 21:59:01,684] Trial 55 pruned. + +================================================================================ +Trial 55 완료 + Value (CSI): 0.418968 + Parameters: {'d_main': 192, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.3599320928445706, 'dropout_second': 0.1810266258105292, 'lr': 0.003680924428387625, 'weight_decay': 0.0002042984846500055, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 22:00:24,754] Trial 56 finished with value: 0.42157904511123884 and parameters: {'d_main': 96, 'd_hidden': 192, 'n_blocks': 5, 'dropout_first': 0.38967512798954623, 'dropout_second': 0.1656770195187156, 'lr': 0.005132932153047788, 'weight_decay': 0.00034436242549396967, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 56 완료 + Value (CSI): 0.421579 + Parameters: {'d_main': 96, 'd_hidden': 192, 'n_blocks': 5, 'dropout_first': 0.38967512798954623, 'dropout_second': 0.1656770195187156, 'lr': 0.005132932153047788, 'weight_decay': 0.00034436242549396967, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) +[I 2025-12-24 22:00:31,397] Trial 57 pruned. + +================================================================================ +Trial 57 완료 + Value (CSI): 0.421673 + Parameters: {'d_main': 128, 'd_hidden': 384, 'n_blocks': 5, 'dropout_first': 0.34772048408881145, 'dropout_second': 0.1897980021677352, 'lr': 0.00810266251475978, 'weight_decay': 0.0001038350439266136, 'batch_size': 128} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 22:01:32,667] Trial 58 finished with value: 0.434223408095398 and parameters: {'d_main': 96, 'd_hidden': 128, 'n_blocks': 4, 'dropout_first': 0.3356153643670432, 'dropout_second': 0.14708447855511897, 'lr': 0.002256233146605267, 'weight_decay': 0.0001589115005016958, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 58 완료 + Value (CSI): 0.434223 + Parameters: {'d_main': 96, 'd_hidden': 128, 'n_blocks': 4, 'dropout_first': 0.3356153643670432, 'dropout_second': 0.14708447855511897, 'lr': 0.002256233146605267, 'weight_decay': 0.0001589115005016958, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) +[I 2025-12-24 22:02:35,163] Trial 59 finished with value: 0.43304195367016735 and parameters: {'d_main': 128, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.399245780010721, 'dropout_second': 0.16065095503019433, 'lr': 0.0033220193149762407, 'weight_decay': 0.00027195822756509387, 'batch_size': 64}. Best is trial 10 with value: 0.4473603019416436. + +================================================================================ +Trial 59 완료 + Value (CSI): 0.433042 + Parameters: {'d_main': 128, 'd_hidden': 64, 'n_blocks': 2, 'dropout_first': 0.399245780010721, 'dropout_second': 0.16065095503019433, 'lr': 0.0033220193149762407, 'weight_decay': 0.00027195822756509387, 'batch_size': 64} + Best Value (CSI): 0.447360 + Best Trial: 10 + Best Parameters: {'d_main': 128, 'd_hidden': 256, 'n_blocks': 5, 'dropout_first': 0.37677375956516684, 'dropout_second': 0.18705700465884292, 'lr': 0.005004477317296484, 'weight_decay': 0.00012190453086381686, 'batch_size': 64} +================================================================================ + + Fold 1 - 클래스별 가중치: {0: 1.3134117647058823, 1: 1.3134117647058823, 2: 0.6769342711617754} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16492}) + Fold 2 - 클래스별 가중치: {0: 1.3120392156862746, 1: 1.3120392156862746, 2: 0.677665026027425} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16457}) + Fold 3 - 클래스별 가중치: {0: 1.3113333333333332, 1: 1.3113333333333332, 2: 0.6780420544639779} (클래스별 샘플 수: {0: 8500, 1: 8500, 2: 16439}) diff --git a/Analysis_code/5.optima/run_bash/resnet_like/run_resnet_like_pure.sh b/Analysis_code/5.optima/run_bash/resnet_like/run_resnet_like_pure.sh new file mode 100755 index 0000000000000000000000000000000000000000..eb8cb98c06b30354025dd1dc2688213dcf49d4bc --- /dev/null +++ b/Analysis_code/5.optima/run_bash/resnet_like/run_resnet_like_pure.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "ResNet-Like Pure 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 0번 (CUDA_VISIBLE_DEVICES=0)" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + "resnet_like_pure_busan.py" + "resnet_like_pure_daegu.py" + "resnet_like_pure_daejeon.py" + "resnet_like_pure_gwangju.py" + "resnet_like_pure_incheon.py" + "resnet_like_pure_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="resnet_like_pure/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (GPU 0번 설정) + if CUDA_VISIBLE_DEVICES=0 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "ResNet-Like Pure 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + + + diff --git a/Analysis_code/5.optima/run_bash/resnet_like/run_resnet_like_smote.sh b/Analysis_code/5.optima/run_bash/resnet_like/run_resnet_like_smote.sh new file mode 100755 index 0000000000000000000000000000000000000000..0a1faa4088247c60f06e00405b32d22b6f5a1bde --- /dev/null +++ b/Analysis_code/5.optima/run_bash/resnet_like/run_resnet_like_smote.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "ResNet-Like SMOTE 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 0번 (CUDA_VISIBLE_DEVICES=0)" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + "resnet_like_smote_busan.py" + "resnet_like_smote_daegu.py" + "resnet_like_smote_daejeon.py" + "resnet_like_smote_gwangju.py" + "resnet_like_smote_incheon.py" + "resnet_like_smote_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="resnet_like_smote/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (GPU 0번 설정) + if CUDA_VISIBLE_DEVICES=0 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "ResNet-Like SMOTE 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + diff --git a/Analysis_code/5.optima/run_bash/resnet_like/run_resnet_like_smotenc_ctgan20000.sh b/Analysis_code/5.optima/run_bash/resnet_like/run_resnet_like_smotenc_ctgan20000.sh new file mode 100755 index 0000000000000000000000000000000000000000..4b919644983c31b19c43ca62a1b15f1207e1c010 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/resnet_like/run_resnet_like_smotenc_ctgan20000.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "ResNet-Like SMOTENC CTGAN20000 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 0번 (CUDA_VISIBLE_DEVICES=0)" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + "resnet_like_smotenc_ctgan20000_busan.py" + "resnet_like_smotenc_ctgan20000_daegu.py" + "resnet_like_smotenc_ctgan20000_daejeon.py" + "resnet_like_smotenc_ctgan20000_gwangju.py" + "resnet_like_smotenc_ctgan20000_incheon.py" + "resnet_like_smotenc_ctgan20000_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="resnet_like_smotenc_ctgan20000/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (GPU 0번 설정) + if CUDA_VISIBLE_DEVICES=0 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "ResNet-Like SMOTENC CTGAN20000 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + + + diff --git a/Analysis_code/5.optima/run_bash/xgb/run_xgb_ctgan10000.sh b/Analysis_code/5.optima/run_bash/xgb/run_xgb_ctgan10000.sh new file mode 100755 index 0000000000000000000000000000000000000000..0b9512a58947033dca4866d672e0c3bf041ffb23 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/xgb/run_xgb_ctgan10000.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "XGB CTGAN10000 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 0번 (CUDA_VISIBLE_DEVICES=0)" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + "XGB_ctgan10000_busan.py" + "XGB_ctgan10000_daegu.py" + "XGB_ctgan10000_daejeon.py" + "XGB_ctgan10000_gwangju.py" + "XGB_ctgan10000_incheon.py" + "XGB_ctgan10000_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="xgb_ctgan10000/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (GPU 0번 설정) + if CUDA_VISIBLE_DEVICES=0 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "XGB CTGAN10000 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + + diff --git a/Analysis_code/5.optima/run_bash/xgb/run_xgb_pure.sh b/Analysis_code/5.optima/run_bash/xgb/run_xgb_pure.sh new file mode 100755 index 0000000000000000000000000000000000000000..a943bb8a2ace095282f63707862f0b8dd328ab14 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/xgb/run_xgb_pure.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "XGB Pure 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 0번 (os.environ['CUDA_VISIBLE_DEVICES'] = '0')" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + # "XGB_pure_busan.py" + # "XGB_pure_daegu.py" + "XGB_pure_daejeon.py" + "XGB_pure_gwangju.py" + "XGB_pure_incheon.py" + "XGB_pure_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="xgb_pure/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (os.environ으로 GPU 0번 설정) + if CUDA_VISIBLE_DEVICES=0 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "XGB Pure 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + diff --git a/Analysis_code/5.optima/run_bash/xgb/run_xgb_smote.sh b/Analysis_code/5.optima/run_bash/xgb/run_xgb_smote.sh new file mode 100755 index 0000000000000000000000000000000000000000..194439690f12ccb7cd32dabf42314d3362bae433 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/xgb/run_xgb_smote.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "XGB SMOTE 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 0번 (os.environ['CUDA_VISIBLE_DEVICES'] = '0')" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + # "XGB_smote_busan.py" + # "XGB_smote_daegu.py" + "XGB_smote_daejeon.py" + "XGB_smote_gwangju.py" + "XGB_smote_incheon.py" + "XGB_smote_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="xgb_smote/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (os.environ으로 GPU 0번 설정) + if CUDA_VISIBLE_DEVICES=0 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "XGB SMOTE 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + diff --git a/Analysis_code/5.optima/run_bash/xgb/run_xgb_smotenc_ctgan20000.sh b/Analysis_code/5.optima/run_bash/xgb/run_xgb_smotenc_ctgan20000.sh new file mode 100755 index 0000000000000000000000000000000000000000..d2e1ea55985ff93293d8b92d804e9748ff06b9a3 --- /dev/null +++ b/Analysis_code/5.optima/run_bash/xgb/run_xgb_smotenc_ctgan20000.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +# 스크립트 디렉토리로 이동 (상위 디렉토리인 5.optima로 이동) +cd "$(dirname "$0")/../.." + +# 시작 시간 기록 +START_TIME=$(date +%s) +echo "==========================================" +echo "XGB SMOTENC CTGAN20000 파일 실행 시작" +echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "GPU: 0번 (CUDA_VISIBLE_DEVICES=0)" +echo "==========================================" +echo "" + +# 실행할 파일 목록 +FILES=( + "XGB_smotenc_ctgan20000_busan.py" + "XGB_smotenc_ctgan20000_daegu.py" + "XGB_smotenc_ctgan20000_daejeon.py" + "XGB_smotenc_ctgan20000_gwangju.py" + "XGB_smotenc_ctgan20000_incheon.py" + "XGB_smotenc_ctgan20000_seoul.py" +) + +# 에러 발생 시 중단 여부 (set -e를 사용하면 에러 발생 시 즉시 중단) +set -e + +# 각 파일 실행 +SUCCESS_COUNT=0 +FAIL_COUNT=0 + +for file in "${FILES[@]}"; do + filepath="xgb_smotenc_ctgan20000/$file" + if [ ! -f "$filepath" ]; then + echo "⚠️ 경고: $filepath 파일을 찾을 수 없습니다. 건너뜁니다." + FAIL_COUNT=$((FAIL_COUNT + 1)) + continue + fi + + echo "----------------------------------------" + echo "실행 중: $filepath" + echo "시작 시간: $(date '+%Y-%m-%d %H:%M:%S')" + echo "----------------------------------------" + + FILE_START=$(date +%s) + + # Python 스크립트 실행 (GPU 0번 설정) + if CUDA_VISIBLE_DEVICES=0 python3 -u "$filepath"; then + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✓ 완료: $filepath (소요 시간: ${FILE_DURATION}초)" + SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) + else + FILE_END=$(date +%s) + FILE_DURATION=$((FILE_END - FILE_START)) + echo "" + echo "✗ 실패: $filepath (소요 시간: ${FILE_DURATION}초)" + FAIL_COUNT=$((FAIL_COUNT + 1)) + echo "에러 발생으로 인해 스크립트를 중단합니다." + exit 1 + fi + echo "" +done + +# 종료 시간 기록 +END_TIME=$(date +%s) +TOTAL_DURATION=$((END_TIME - START_TIME)) +HOURS=$((TOTAL_DURATION / 3600)) +MINUTES=$(((TOTAL_DURATION % 3600) / 60)) +SECONDS=$((TOTAL_DURATION % 60)) + +echo "==========================================" +echo "XGB SMOTENC CTGAN20000 파일 실행 완료" +echo "종료 시간: $(date '+%Y-%m-%d %H:%M:%S')" +echo "총 소요 시간: ${HOURS}시간 ${MINUTES}분 ${SECONDS}초" +echo "성공: ${SUCCESS_COUNT}개" +echo "실패: ${FAIL_COUNT}개" +echo "==========================================" + + diff --git a/Analysis_code/5.optima/run_bash/xgb/xgb_ctgan10000.log b/Analysis_code/5.optima/run_bash/xgb/xgb_ctgan10000.log new file mode 100644 index 0000000000000000000000000000000000000000..5e46a1f8c4c9b10ca1aa136080173712f2e256fd --- /dev/null +++ b/Analysis_code/5.optima/run_bash/xgb/xgb_ctgan10000.log @@ -0,0 +1,156 @@ +nohup: ignoring input +/bin/bash: /opt/conda/lib/libtinfo.so.6: no version information available (required by /bin/bash) +========================================== +XGB CTGAN10000 파일 실행 시작 +시작 시간: 2025-12-23 19:08:25 +GPU: 0번 (CUDA_VISIBLE_DEVICES=0) +========================================== + +---------------------------------------- +실행 중: xgb_ctgan10000/XGB_ctgan10000_busan.py +시작 시간: 2025-12-23 19:08:25 +---------------------------------------- +데이터 로딩 중... +데이터 전처리 중... +하이퍼파라미터 최적화 시작... + + 0%| | 0/100 [00:00 pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_busan = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/busan_train.csv")) +df_ctgan_busan_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/ctgan10000/ctgan10000_1_busan.csv")) +df_ctgan_busan_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/ctgan10000/ctgan10000_2_busan.csv")) +df_ctgan_busan_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/ctgan10000/ctgan10000_3_busan.csv")) + +print("데이터 전처리 중...") +df_ctgan_busan_1 = preprocessing(df_ctgan_busan_1) +df_ctgan_busan_2 = preprocessing(df_ctgan_busan_2) +df_ctgan_busan_3 = preprocessing(df_ctgan_busan_3) +df_busan = preprocessing(df_busan) + +# CTGAN 데이터 리스트 (fold 순서와 일치) +df_ctgan_list = [df_ctgan_busan_1, df_ctgan_busan_2, df_ctgan_busan_3] + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_sampled, (train_years, val_year) in zip(df_ctgan_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_busan, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_ctgan10000_busan_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_sampled, (train_years, val_year)) in enumerate( + zip(df_ctgan_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_busan, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_ctgan10000_busan.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_pure/XGB_pure_busan.py b/Analysis_code/5.optima/xgb_pure/XGB_pure_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..edca037d24da966f2f5d6aa30c046bf116b346c9 --- /dev/null +++ b/Analysis_code/5.optima/xgb_pure/XGB_pure_busan.py @@ -0,0 +1,280 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def split_data_pure(df_original, train_years, val_year): + """Pure 데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + X_train = df_original.loc[df_original['year'].isin(train_years), df_original.columns != 'multi_class'].copy() + X_val = df_original.loc[df_original['year'] == val_year, df_original.columns != 'multi_class'].copy() + y_train = df_original.loc[df_original['year'].isin(train_years), 'multi_class'] + y_val = df_original.loc[df_original['year'] == val_year, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_busan = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/busan_train.csv")) +df_busan = preprocessing(df_busan) + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for train_years, val_year in FOLD_CONFIGS: + X_train, X_val, y_train, y_val = split_data_pure( + df_busan, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +# 파일 위치 기반으로 base 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_pure_busan_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (train_years, val_year) in enumerate(FOLD_CONFIGS, start=1): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data_pure( + df_busan, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_pure_busan.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_pure/XGB_pure_daegu.py b/Analysis_code/5.optima/xgb_pure/XGB_pure_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..37683b276714578dcd2b6c632bf6c8440c079d21 --- /dev/null +++ b/Analysis_code/5.optima/xgb_pure/XGB_pure_daegu.py @@ -0,0 +1,281 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_daegu = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/daegu_train.csv")) +df_daegu = preprocessing(df_daegu) + +def split_data(df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + X_train = df_original.loc[df_original['year'].isin(train_years), df_original.columns != 'multi_class'].copy() + X_val = df_original.loc[df_original['year'] == val_year, df_original.columns != 'multi_class'].copy() + y_train = df_original.loc[df_original['year'].isin(train_years), 'multi_class'] + y_val = df_original.loc[df_original['year'] == val_year, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for train_years, val_year in FOLD_CONFIGS: + X_train, X_val, y_train, y_val = split_data( + df_daegu, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_pure_daegu_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (train_years, val_year) in enumerate(FOLD_CONFIGS, start=1): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_daegu, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_pure_daegu.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_pure/XGB_pure_daejeon.py b/Analysis_code/5.optima/xgb_pure/XGB_pure_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..3c9553d7951fdf25d8b4cecf693f0475c2618fef --- /dev/null +++ b/Analysis_code/5.optima/xgb_pure/XGB_pure_daejeon.py @@ -0,0 +1,281 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_daejeon = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/daejeon_train.csv")) +df_daejeon = preprocessing(df_daejeon) + +def split_data(df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + X_train = df_original.loc[df_original['year'].isin(train_years), df_original.columns != 'multi_class'].copy() + X_val = df_original.loc[df_original['year'] == val_year, df_original.columns != 'multi_class'].copy() + y_train = df_original.loc[df_original['year'].isin(train_years), 'multi_class'] + y_val = df_original.loc[df_original['year'] == val_year, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for train_years, val_year in FOLD_CONFIGS: + X_train, X_val, y_train, y_val = split_data( + df_daejeon, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_pure_daejeon_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (train_years, val_year) in enumerate(FOLD_CONFIGS, start=1): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_daejeon, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_pure_daejeon.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_pure/XGB_pure_gwangju.py b/Analysis_code/5.optima/xgb_pure/XGB_pure_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..ab3982591cb070ac28889b49b8d25db5ef040a1f --- /dev/null +++ b/Analysis_code/5.optima/xgb_pure/XGB_pure_gwangju.py @@ -0,0 +1,281 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_gwangju = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/gwangju_train.csv")) +df_gwangju = preprocessing(df_gwangju) + +def split_data(df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + X_train = df_original.loc[df_original['year'].isin(train_years), df_original.columns != 'multi_class'].copy() + X_val = df_original.loc[df_original['year'] == val_year, df_original.columns != 'multi_class'].copy() + y_train = df_original.loc[df_original['year'].isin(train_years), 'multi_class'] + y_val = df_original.loc[df_original['year'] == val_year, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for train_years, val_year in FOLD_CONFIGS: + X_train, X_val, y_train, y_val = split_data( + df_gwangju, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_pure_gwangju_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (train_years, val_year) in enumerate(FOLD_CONFIGS, start=1): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_gwangju, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_pure_gwangju.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_pure/XGB_pure_incheon.py b/Analysis_code/5.optima/xgb_pure/XGB_pure_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..a1a76867352730db7d5dcf99269849270d675069 --- /dev/null +++ b/Analysis_code/5.optima/xgb_pure/XGB_pure_incheon.py @@ -0,0 +1,281 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_incheon = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/incheon_train.csv")) +df_incheon = preprocessing(df_incheon) + +def split_data(df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + X_train = df_original.loc[df_original['year'].isin(train_years), df_original.columns != 'multi_class'].copy() + X_val = df_original.loc[df_original['year'] == val_year, df_original.columns != 'multi_class'].copy() + y_train = df_original.loc[df_original['year'].isin(train_years), 'multi_class'] + y_val = df_original.loc[df_original['year'] == val_year, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for train_years, val_year in FOLD_CONFIGS: + X_train, X_val, y_train, y_val = split_data( + df_incheon, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_pure_incheon_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (train_years, val_year) in enumerate(FOLD_CONFIGS, start=1): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_incheon, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_pure_incheon.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_pure/XGB_pure_seoul.py b/Analysis_code/5.optima/xgb_pure/XGB_pure_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..6abe84dd0335de5a1818c5da8fdc5216558d2f84 --- /dev/null +++ b/Analysis_code/5.optima/xgb_pure/XGB_pure_seoul.py @@ -0,0 +1,281 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_seoul = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/seoul_train.csv")) +df_seoul = preprocessing(df_seoul) + +def split_data(df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + X_train = df_original.loc[df_original['year'].isin(train_years), df_original.columns != 'multi_class'].copy() + X_val = df_original.loc[df_original['year'] == val_year, df_original.columns != 'multi_class'].copy() + y_train = df_original.loc[df_original['year'].isin(train_years), 'multi_class'] + y_val = df_original.loc[df_original['year'] == val_year, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for train_years, val_year in FOLD_CONFIGS: + X_train, X_val, y_train, y_val = split_data( + df_seoul, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_pure_seoul_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (train_years, val_year) in enumerate(FOLD_CONFIGS, start=1): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_seoul, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_pure_seoul.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_smote/XGB_smote_busan.py b/Analysis_code/5.optima/xgb_smote/XGB_smote_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..dc3f181104ba8b05e78cdcc852e9ba856c67dd5c --- /dev/null +++ b/Analysis_code/5.optima/xgb_smote/XGB_smote_busan.py @@ -0,0 +1,300 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_busan = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/busan_train.csv")) +df_smote_busan_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_1_busan.csv")) +df_smote_busan_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_2_busan.csv")) +df_smote_busan_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_3_busan.csv")) + +print("데이터 전처리 중...") +df_smote_busan_1 = preprocessing(df_smote_busan_1) +df_smote_busan_2 = preprocessing(df_smote_busan_2) +df_smote_busan_3 = preprocessing(df_smote_busan_3) +df_busan = preprocessing(df_busan) + +# SMOTE 데이터 리스트 (fold 순서와 일치) +df_smote_list = [df_smote_busan_1, df_smote_busan_2, df_smote_busan_3] + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_sampled, (train_years, val_year) in zip(df_smote_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_busan, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_smote_busan_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_sampled, (train_years, val_year)) in enumerate( + zip(df_smote_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_busan, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_smote_busan.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_smote/XGB_smote_daegu.py b/Analysis_code/5.optima/xgb_smote/XGB_smote_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..d5760070e0fbfd5180abf9daf65a6c4a6f3d2f71 --- /dev/null +++ b/Analysis_code/5.optima/xgb_smote/XGB_smote_daegu.py @@ -0,0 +1,300 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_daegu = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/daegu_train.csv")) +df_smote_daegu_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_1_daegu.csv")) +df_smote_daegu_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_2_daegu.csv")) +df_smote_daegu_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_3_daegu.csv")) + +print("데이터 전처리 중...") +df_smote_daegu_1 = preprocessing(df_smote_daegu_1) +df_smote_daegu_2 = preprocessing(df_smote_daegu_2) +df_smote_daegu_3 = preprocessing(df_smote_daegu_3) +df_daegu = preprocessing(df_daegu) + +# SMOTE 데이터 리스트 (fold 순서와 일치) +df_smote_list = [df_smote_daegu_1, df_smote_daegu_2, df_smote_daegu_3] + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_sampled, (train_years, val_year) in zip(df_smote_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_daegu, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_smote_daegu_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_sampled, (train_years, val_year)) in enumerate( + zip(df_smote_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_daegu, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_smote_daegu.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_smote/XGB_smote_daejeon.py b/Analysis_code/5.optima/xgb_smote/XGB_smote_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..f5125779a10333817a4454646747869360595d1a --- /dev/null +++ b/Analysis_code/5.optima/xgb_smote/XGB_smote_daejeon.py @@ -0,0 +1,300 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_daejeon = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/daejeon_train.csv")) +df_smote_daejeon_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_1_daejeon.csv")) +df_smote_daejeon_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_2_daejeon.csv")) +df_smote_daejeon_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_3_daejeon.csv")) + +print("데이터 전처리 중...") +df_smote_daejeon_1 = preprocessing(df_smote_daejeon_1) +df_smote_daejeon_2 = preprocessing(df_smote_daejeon_2) +df_smote_daejeon_3 = preprocessing(df_smote_daejeon_3) +df_daejeon = preprocessing(df_daejeon) + +# SMOTE 데이터 리스트 (fold 순서와 일치) +df_smote_list = [df_smote_daejeon_1, df_smote_daejeon_2, df_smote_daejeon_3] + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_sampled, (train_years, val_year) in zip(df_smote_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_daejeon, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_smote_daejeon_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_sampled, (train_years, val_year)) in enumerate( + zip(df_smote_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_daejeon, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_smote_daejeon.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_smote/XGB_smote_gwangju.py b/Analysis_code/5.optima/xgb_smote/XGB_smote_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..8e349926a7fb6df4d4a9e79de1f5471df95632b6 --- /dev/null +++ b/Analysis_code/5.optima/xgb_smote/XGB_smote_gwangju.py @@ -0,0 +1,300 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_gwangju = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/gwangju_train.csv")) +df_smote_gwangju_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_1_gwangju.csv")) +df_smote_gwangju_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_2_gwangju.csv")) +df_smote_gwangju_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_3_gwangju.csv")) + +print("데이터 전처리 중...") +df_smote_gwangju_1 = preprocessing(df_smote_gwangju_1) +df_smote_gwangju_2 = preprocessing(df_smote_gwangju_2) +df_smote_gwangju_3 = preprocessing(df_smote_gwangju_3) +df_gwangju = preprocessing(df_gwangju) + +# SMOTE 데이터 리스트 (fold 순서와 일치) +df_smote_list = [df_smote_gwangju_1, df_smote_gwangju_2, df_smote_gwangju_3] + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_sampled, (train_years, val_year) in zip(df_smote_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_gwangju, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_smote_gwangju_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_sampled, (train_years, val_year)) in enumerate( + zip(df_smote_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_gwangju, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_smote_gwangju.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_smote/XGB_smote_incheon.py b/Analysis_code/5.optima/xgb_smote/XGB_smote_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..ec2d1c8db59c2913b4328b59d7a8511b27ad3a24 --- /dev/null +++ b/Analysis_code/5.optima/xgb_smote/XGB_smote_incheon.py @@ -0,0 +1,300 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_incheon = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/incheon_train.csv")) +df_smote_incheon_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_1_incheon.csv")) +df_smote_incheon_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_2_incheon.csv")) +df_smote_incheon_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_3_incheon.csv")) + +print("데이터 전처리 중...") +df_smote_incheon_1 = preprocessing(df_smote_incheon_1) +df_smote_incheon_2 = preprocessing(df_smote_incheon_2) +df_smote_incheon_3 = preprocessing(df_smote_incheon_3) +df_incheon = preprocessing(df_incheon) + +# SMOTE 데이터 리스트 (fold 순서와 일치) +df_smote_list = [df_smote_incheon_1, df_smote_incheon_2, df_smote_incheon_3] + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_sampled, (train_years, val_year) in zip(df_smote_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_incheon, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_smote_incheon_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_sampled, (train_years, val_year)) in enumerate( + zip(df_smote_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_incheon, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_smote_incheon.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_smote/XGB_smote_seoul.py b/Analysis_code/5.optima/xgb_smote/XGB_smote_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..b0878029827cd0331deef10a80683dc2f3694e9e --- /dev/null +++ b/Analysis_code/5.optima/xgb_smote/XGB_smote_seoul.py @@ -0,0 +1,300 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_seoul = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/seoul_train.csv")) +df_smote_seoul_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_1_seoul.csv")) +df_smote_seoul_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_2_seoul.csv")) +df_smote_seoul_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smote/smote_3_seoul.csv")) + +print("데이터 전처리 중...") +df_smote_seoul_1 = preprocessing(df_smote_seoul_1) +df_smote_seoul_2 = preprocessing(df_smote_seoul_2) +df_smote_seoul_3 = preprocessing(df_smote_seoul_3) +df_seoul = preprocessing(df_seoul) + +# SMOTE 데이터 리스트 (fold 순서와 일치) +df_smote_list = [df_smote_seoul_1, df_smote_seoul_2, df_smote_seoul_3] + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_sampled, (train_years, val_year) in zip(df_smote_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_seoul, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_smote_seoul_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_sampled, (train_years, val_year)) in enumerate( + zip(df_smote_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_seoul, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_smote_seoul.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_busan.py b/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_busan.py new file mode 100644 index 0000000000000000000000000000000000000000..ceaf301a690d9034b0d016c5a89844cd438ab001 --- /dev/null +++ b/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_busan.py @@ -0,0 +1,304 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_busan = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/busan_train.csv")) +df_smotenc_ctgan_busan_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_busan.csv")) +df_smotenc_ctgan_busan_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_busan.csv")) +df_smotenc_ctgan_busan_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_busan.csv")) + +print("데이터 전처리 중...") +df_smotenc_ctgan_busan_1 = preprocessing(df_smotenc_ctgan_busan_1) +df_smotenc_ctgan_busan_2 = preprocessing(df_smotenc_ctgan_busan_2) +df_smotenc_ctgan_busan_3 = preprocessing(df_smotenc_ctgan_busan_3) +df_busan = preprocessing(df_busan) + +# SMOTENC+CTGAN 데이터 리스트 (fold 순서와 일치) +df_smotenc_ctgan_list = [df_smotenc_ctgan_busan_1, df_smotenc_ctgan_busan_2, df_smotenc_ctgan_busan_3] + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_sampled, (train_years, val_year) in zip(df_smotenc_ctgan_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_busan, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +# 파일 위치 기반으로 base 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_smotenc_ctgan20000_busan_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_sampled, (train_years, val_year)) in enumerate( + zip(df_smotenc_ctgan_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_busan, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +os.makedirs(os.path.join(base_dir, "save_model/xgb_optima"), exist_ok=True) +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_smotenc_ctgan20000_busan.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_daegu.py b/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_daegu.py new file mode 100644 index 0000000000000000000000000000000000000000..f43b74296c785394da8a48db590e96ac19106b37 --- /dev/null +++ b/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_daegu.py @@ -0,0 +1,304 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_daegu = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/daegu_train.csv")) +df_smotenc_ctgan_daegu_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_daegu.csv")) +df_smotenc_ctgan_daegu_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_daegu.csv")) +df_smotenc_ctgan_daegu_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_daegu.csv")) + +print("데이터 전처리 중...") +df_smotenc_ctgan_daegu_1 = preprocessing(df_smotenc_ctgan_daegu_1) +df_smotenc_ctgan_daegu_2 = preprocessing(df_smotenc_ctgan_daegu_2) +df_smotenc_ctgan_daegu_3 = preprocessing(df_smotenc_ctgan_daegu_3) +df_daegu = preprocessing(df_daegu) + +# SMOTENC+CTGAN 데이터 리스트 (fold 순서와 일치) +df_smotenc_ctgan_list = [df_smotenc_ctgan_daegu_1, df_smotenc_ctgan_daegu_2, df_smotenc_ctgan_daegu_3] + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_sampled, (train_years, val_year) in zip(df_smotenc_ctgan_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_daegu, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +# 파일 위치 기반으로 base 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_smotenc_ctgan20000_daegu_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_sampled, (train_years, val_year)) in enumerate( + zip(df_smotenc_ctgan_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_daegu, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +os.makedirs(os.path.join(base_dir, "save_model/xgb_optima"), exist_ok=True) +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_smotenc_ctgan20000_daegu.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_daejeon.py b/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_daejeon.py new file mode 100644 index 0000000000000000000000000000000000000000..4eb6f0d582239cf43ecef5bf1cbde00a65b84bc9 --- /dev/null +++ b/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_daejeon.py @@ -0,0 +1,304 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_daejeon = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/daejeon_train.csv")) +df_smotenc_ctgan_daejeon_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_daejeon.csv")) +df_smotenc_ctgan_daejeon_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_daejeon.csv")) +df_smotenc_ctgan_daejeon_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_daejeon.csv")) + +print("데이터 전처리 중...") +df_smotenc_ctgan_daejeon_1 = preprocessing(df_smotenc_ctgan_daejeon_1) +df_smotenc_ctgan_daejeon_2 = preprocessing(df_smotenc_ctgan_daejeon_2) +df_smotenc_ctgan_daejeon_3 = preprocessing(df_smotenc_ctgan_daejeon_3) +df_daejeon = preprocessing(df_daejeon) + +# SMOTENC+CTGAN 데이터 리스트 (fold 순서와 일치) +df_smotenc_ctgan_list = [df_smotenc_ctgan_daejeon_1, df_smotenc_ctgan_daejeon_2, df_smotenc_ctgan_daejeon_3] + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_sampled, (train_years, val_year) in zip(df_smotenc_ctgan_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_daejeon, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +# 파일 위치 기반으로 base 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_smotenc_ctgan20000_daejeon_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_sampled, (train_years, val_year)) in enumerate( + zip(df_smotenc_ctgan_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_daejeon, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +os.makedirs(os.path.join(base_dir, "save_model/xgb_optima"), exist_ok=True) +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_smotenc_ctgan20000_daejeon.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_gwangju.py b/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_gwangju.py new file mode 100644 index 0000000000000000000000000000000000000000..3226a6d0eeb00a411782daa7bbbe16ebf64721e4 --- /dev/null +++ b/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_gwangju.py @@ -0,0 +1,303 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_gwangju = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/gwangju_train.csv")) +df_smotenc_ctgan_gwangju_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_gwangju.csv")) +df_smotenc_ctgan_gwangju_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_gwangju.csv")) +df_smotenc_ctgan_gwangju_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_gwangju.csv")) + +print("데이터 전처리 중...") +df_smotenc_ctgan_gwangju_1 = preprocessing(df_smotenc_ctgan_gwangju_1) +df_smotenc_ctgan_gwangju_2 = preprocessing(df_smotenc_ctgan_gwangju_2) +df_smotenc_ctgan_gwangju_3 = preprocessing(df_smotenc_ctgan_gwangju_3) +df_gwangju = preprocessing(df_gwangju) + +# SMOTENC+CTGAN 데이터 리스트 (fold 순서와 일치) +df_smotenc_ctgan_list = [df_smotenc_ctgan_gwangju_1, df_smotenc_ctgan_gwangju_2, df_smotenc_ctgan_gwangju_3] + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_sampled, (train_years, val_year) in zip(df_smotenc_ctgan_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_gwangju, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +# 파일 위치 기반으로 base 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_smotenc_ctgan20000_gwangju_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_sampled, (train_years, val_year)) in enumerate( + zip(df_smotenc_ctgan_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_gwangju, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_smotenc_ctgan20000_gwangju.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_incheon.py b/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_incheon.py new file mode 100644 index 0000000000000000000000000000000000000000..cbf206f4506ccb5c114ec05948d5749f2be815cf --- /dev/null +++ b/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_incheon.py @@ -0,0 +1,304 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_incheon = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/incheon_train.csv")) +df_smotenc_ctgan_incheon_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_incheon.csv")) +df_smotenc_ctgan_incheon_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_incheon.csv")) +df_smotenc_ctgan_incheon_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_incheon.csv")) + +print("데이터 전처리 중...") +df_smotenc_ctgan_incheon_1 = preprocessing(df_smotenc_ctgan_incheon_1) +df_smotenc_ctgan_incheon_2 = preprocessing(df_smotenc_ctgan_incheon_2) +df_smotenc_ctgan_incheon_3 = preprocessing(df_smotenc_ctgan_incheon_3) +df_incheon = preprocessing(df_incheon) + +# SMOTENC+CTGAN 데이터 리스트 (fold 순서와 일치) +df_smotenc_ctgan_list = [df_smotenc_ctgan_incheon_1, df_smotenc_ctgan_incheon_2, df_smotenc_ctgan_incheon_3] + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_sampled, (train_years, val_year) in zip(df_smotenc_ctgan_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_incheon, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +# 파일 위치 기반으로 base 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_smotenc_ctgan20000_incheon_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_sampled, (train_years, val_year)) in enumerate( + zip(df_smotenc_ctgan_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_incheon, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +os.makedirs(os.path.join(base_dir, "save_model/xgb_optima"), exist_ok=True) +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_smotenc_ctgan20000_incheon.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_seoul.py b/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_seoul.py new file mode 100644 index 0000000000000000000000000000000000000000..65d468f4fc52ad50d7b82cb758662558c876c45b --- /dev/null +++ b/Analysis_code/5.optima/xgb_smotenc_ctgan20000/XGB_smotenc_ctgan20000_seoul.py @@ -0,0 +1,304 @@ +import pandas as pd +import os +import numpy as np +import joblib +from xgboost import XGBClassifier +from warnings import filterwarnings +filterwarnings('ignore') +from sklearn.metrics import confusion_matrix +from hyperopt import fmin, tpe, Trials, hp + +# 상수 정의 +RANDOM_STATE = 42 +N_ESTIMATORS = 4000 +EARLY_STOPPING_ROUNDS = 400 +MAX_EVALS = 100 + +# Fold 설정: (train_years, val_year) +FOLD_CONFIGS = [ + ([2018, 2019], 2020), # Fold 1 + ([2018, 2020], 2019), # Fold 2 + ([2019, 2020], 2018), # Fold 3 +] + +def calculate_csi(Y_test, pred): + """CSI(Critical Success Index) 점수를 계산합니다. + + Args: + Y_test: 실제 레이블 + pred: 예측 레이블 + + Returns: + CSI 점수 (0~1 사이의 값) + """ + cm = confusion_matrix(Y_test, pred) + H = (cm[0, 0] + cm[1, 1]) + F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) + M = (cm[0, 2] + cm[1, 2]) + CSI = H / (H + F + M + 1e-10) + return CSI + +def eval_metric_csi(y_true, pred_prob): + """XGBoost용 CSI 메트릭 함수. + + Args: + y_true: 실제 레이블 + pred_prob: 예측 확률 + + Returns: + CSI 점수의 음수값 + """ + pred = np.argmax(pred_prob, axis=1) + csi = calculate_csi(y_true, pred) + return -1*csi + +def add_derived_features(df: pd.DataFrame) -> pd.DataFrame: + """ + 제거했던 파생 변수들을 복구 + + Args: + df: 데이터프레임 + + Returns: + 파생 변수가 추가된 데이터프레임 + """ + df = df.copy() + df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24) + df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24) + df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) + df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) + df['ground_temp - temp_C'] = df['groundtemp'] - df['temp_C'] + return df + +def preprocessing(df): + """데이터 전처리 함수. + + Args: + df: 원본 데이터프레임 + + Returns: + 전처리된 데이터프레임 + """ + df = df[df.columns].copy() + df['year'] = df['year'].astype('int') + df['month'] = df['month'].astype('int') + df['hour'] = df['hour'].astype('int') + df = add_derived_features(df).copy() + df['multi_class'] = df['multi_class'].astype('int') + df.loc[df['wind_dir']=='정온', 'wind_dir'] = "0" + df['wind_dir'] = df['wind_dir'].astype('int') + df = df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', + 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure', + 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase', + 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year', + 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos', + 'month_sin', 'month_cos','multi_class']].copy() + return df + +def create_xgb_model(search_space=None, best_params=None): + """XGBoost 모델을 생성합니다. + + Args: + search_space: 하이퍼파라미터 검색 공간 (objective_func에서 사용) + best_params: 최적화된 하이퍼파라미터 (최종 모델 학습에서 사용) + + Returns: + XGBClassifier 인스턴스 + """ + base_params = { + 'n_estimators': N_ESTIMATORS, + 'tree_method': 'hist', + 'device': 'cuda', + 'enable_categorical': True, + 'eval_metric': eval_metric_csi, + 'objective': 'multi:softprob', + 'random_state': RANDOM_STATE, + 'early_stopping_rounds': EARLY_STOPPING_ROUNDS, + } + + if search_space is not None: + # 하이퍼파라미터 최적화 중 + params = { + **base_params, + 'learning_rate': search_space['learning_rate'], + 'max_depth': int(search_space['max_depth']), + 'min_child_weight': int(search_space['min_child_weight']), + 'gamma': search_space['gamma'], + 'subsample': search_space['subsample'], + 'colsample_bytree': search_space['colsample_bytree'], + 'reg_alpha': search_space['reg_alpha'], + 'reg_lambda': search_space['reg_lambda'], + } + elif best_params is not None: + # 최적화된 파라미터로 최종 모델 생성 + params = { + **base_params, + 'learning_rate': best_params['learning_rate'], + 'max_depth': int(best_params['max_depth']), + 'min_child_weight': int(best_params['min_child_weight']), + 'gamma': best_params['gamma'], + 'subsample': best_params['subsample'], + 'colsample_bytree': best_params['colsample_bytree'], + 'reg_alpha': best_params['reg_alpha'], + 'reg_lambda': best_params['reg_lambda'], + } + else: + params = base_params + + return XGBClassifier(**params) + + +# 데이터 로딩 및 전처리 +print("데이터 로딩 중...") +# 파일 위치 기반으로 데이터 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +data_base_dir = os.path.abspath(os.path.join(current_file_dir, '../../../data')) +df_seoul = pd.read_csv(os.path.join(data_base_dir, "data_for_modeling/seoul_train.csv")) +df_smotenc_ctgan_seoul_1 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_1_seoul.csv")) +df_smotenc_ctgan_seoul_2 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_2_seoul.csv")) +df_smotenc_ctgan_seoul_3 = pd.read_csv(os.path.join(data_base_dir, "data_oversampled/smotenc_ctgan20000/smotenc_ctgan20000_3_seoul.csv")) + +print("데이터 전처리 중...") +df_smotenc_ctgan_seoul_1 = preprocessing(df_smotenc_ctgan_seoul_1) +df_smotenc_ctgan_seoul_2 = preprocessing(df_smotenc_ctgan_seoul_2) +df_smotenc_ctgan_seoul_3 = preprocessing(df_smotenc_ctgan_seoul_3) +df_seoul = preprocessing(df_seoul) + +# SMOTENC+CTGAN 데이터 리스트 (fold 순서와 일치) +df_smotenc_ctgan_list = [df_smotenc_ctgan_seoul_1, df_smotenc_ctgan_seoul_2, df_smotenc_ctgan_seoul_3] + +def split_data(df_sampled, df_original, train_years, val_year): + """데이터를 학습용과 검증용으로 분할합니다. + + Args: + df_sampled: 샘플링된 데이터프레임 + df_original: 원본 데이터프레임 + train_years: 학습에 사용할 연도 리스트 + val_year: 검증에 사용할 연도 + + Returns: + (X_train, X_val, y_train, y_val) 튜플 + """ + # 학습 데이터: 샘플링된 데이터에서 train_years에 해당하는 데이터 + train_mask = df_sampled['year'].isin(train_years) + X_train = df_sampled.loc[train_mask, df_sampled.columns != 'multi_class'].copy() + y_train = df_sampled.loc[train_mask, 'multi_class'] + + # 검증 데이터: 원본 데이터에서 val_year에 해당하는 데이터 + val_mask = df_original['year'] == val_year + X_val = df_original.loc[val_mask, df_original.columns != 'multi_class'].copy() + y_val = df_original.loc[val_mask, 'multi_class'] + + X_train.drop(columns=['year'], inplace=True) + X_val.drop(columns=['year'], inplace=True) + + return X_train, X_val, y_train, y_val + + +# 하이퍼파라미터 검색 공간 정의 +xgb_search_space = { + 'learning_rate': hp.loguniform('learning_rate', np.log(0.01), np.log(0.2)), + 'max_depth': hp.quniform('max_depth', 3, 12, 1), + 'min_child_weight': hp.quniform('min_child_weight', 1, 20, 1), + 'gamma': hp.uniform('gamma', 0, 5), # 트리 분할을 위한 최소 손실 감소 값 + 'subsample': hp.uniform('subsample', 0.6, 1.0), + 'colsample_bytree': hp.uniform('colsample_bytree', 0.6, 1.0), + 'reg_alpha': hp.uniform('reg_alpha', 0.0, 1.0), + 'reg_lambda': hp.uniform('reg_lambda', 0.0, 1.0) +} + +def objective_func(search_space): + """하이퍼파라미터 최적화를 위한 목적 함수. + + Args: + search_space: 하이퍼파라미터 검색 공간 + + Returns: + 평균 CSI 점수의 음수값 (hyperopt는 최소화를 수행하므로) + """ + xgb_model = create_xgb_model(search_space=search_space) + csi_scores = [] + + # 각 fold에 대해 교차 검증 수행 + for df_sampled, (train_years, val_year) in zip(df_smotenc_ctgan_list, FOLD_CONFIGS): + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_seoul, train_years, val_year + ) + + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + csi = calculate_csi(y_val, xgb_model.predict(X_val)) + csi_scores.append(csi) + + return -1*round(np.mean(csi_scores), 4) + + +# 하이퍼파라미터 최적화 +print("하이퍼파라미터 최적화 시작...") +trials = Trials() +xgb_best = fmin( + fn=objective_func, + space=xgb_search_space, + algo=tpe.suggest, + max_evals=MAX_EVALS, + trials=trials +) + +# 최적화 결과 분석 및 출력 +print(f"\n최적화 완료. 최적 파라미터: {xgb_best}") + +# Best loss (CSI 점수의 음수값이므로, 실제 CSI는 -loss) +best_loss = trials.best_trial['result']['loss'] +best_csi = -best_loss +print(f"최적 CSI 점수: {best_csi:.4f} (loss: {best_loss:.4f})") + +# 모든 trial의 loss 값 추출 +losses = [trial['result']['loss'] for trial in trials.trials if trial['result']['status'] == 'ok'] +csi_scores = [-loss for loss in losses] + +print(f"\n최적화 과정 요약:") +print(f" - 총 시도 횟수: {len(trials.trials)}") +print(f" - 성공한 시도: {len(losses)}") +print(f" - 최초 CSI: {csi_scores[0]:.4f}") +print(f" - 최종 CSI: {csi_scores[-1]:.4f}") +print(f" - 최고 CSI: {max(csi_scores):.4f}") +print(f" - 최저 CSI: {min(csi_scores):.4f}") +print(f" - 평균 CSI: {np.mean(csi_scores):.4f}") + +# Trials 객체 저장 +# 파일 위치 기반으로 base 디렉토리 경로 설정 +current_file_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.dirname(os.path.dirname(current_file_dir)) # 5.optima 디렉토리 +os.makedirs(os.path.join(base_dir, "optimization_history"), exist_ok=True) +trials_path = os.path.join(base_dir, "optimization_history/xgb_smotenc_ctgan20000_seoul_trials.pkl") +joblib.dump(trials, trials_path) +print(f"\n최적화 Trials 객체가 {trials_path}에 저장되었습니다.") + +# 최적화된 하이퍼파라미터로 최종 모델 학습 +print("최종 모델 학습 시작...") +models = [] + +for fold_idx, (df_sampled, (train_years, val_year)) in enumerate( + zip(df_smotenc_ctgan_list, FOLD_CONFIGS), start=1 +): + print(f"Fold {fold_idx} 학습 중... (학습 연도: {train_years}, 검증 연도: {val_year})") + + X_train, X_val, y_train, y_val = split_data( + df_sampled, df_seoul, train_years, val_year + ) + + xgb_model = create_xgb_model(best_params=xgb_best) + xgb_model.fit(X_train, y_train, eval_set=[(X_val, y_val)], verbose=False) + + # 검증 성능 출력 + val_csi = calculate_csi(y_val, xgb_model.predict(X_val)) + print(f"Fold {fold_idx} 검증 CSI: {val_csi:.4f}") + + models.append(xgb_model) + + +# 모델 저장 +print("모델 저장 중...") +os.makedirs(os.path.join(base_dir, "save_model/xgb_optima"), exist_ok=True) +model_save_path = os.path.join(base_dir, "save_model/xgb_optima/xgb_smotenc_ctgan20000_seoul.pkl") +joblib.dump(models, model_save_path) +print(f"모델이 {model_save_path}에 저장되었습니다.") diff --git a/Analysis_code/final_test/final.ipynb b/Analysis_code/final_test/final.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..5c690bfbbdf6c13ab32eb8ad3bb33c130c6d3ac3 --- /dev/null +++ b/Analysis_code/final_test/final.ipynb @@ -0,0 +1,1143 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.preprocessing import StandardScaler, LabelEncoder\n", + "import torch\n", + "from torch.utils.data import DataLoader, TensorDataset\n", + "import random\n", + "from collections import Counter\n", + "import sys\n", + "sys.path.append('../../../../../../../../mnt/workspace/LightGBM/python-package')\n", + "from lightgbm import LGBMClassifier\n", + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.inspection import permutation_importance\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from sklearn.model_selection import StratifiedKFold\n", + "from xgboost import XGBClassifier\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')\n", + "import sys\n", + "sys.path.append('../../')\n", + "import torch\n", + "import torch.nn as nn\n", + "import torch.optim as optim\n", + "import optuna\n", + "import pandas as pd\n", + "import numpy as np\n", + "import random\n", + "from models.ft_transformer import FTTransformer\n", + "from models.resnet_like import ResNetLike\n", + "from models.deepgbm import DeepGBM\n", + "from pytorch_tabnet.tab_model import TabNetClassifier\n", + "from sklearn.metrics import accuracy_score, f1_score, roc_auc_score, confusion_matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Python 및 Numpy 시드 고정\n", + "seed = 42\n", + "random.seed(seed)\n", + "np.random.seed(seed)\n", + "\n", + "# PyTorch 시드 고정\n", + "torch.manual_seed(seed)\n", + "torch.cuda.manual_seed(seed)\n", + "torch.cuda.manual_seed_all(seed) # Multi-GPU 환경에서 동일한 시드 적용\n", + "\n", + "# PyTorch 연산의 결정적 모드 설정\n", + "torch.backends.cudnn.deterministic = True # 실행마다 동일한 결과를 보장\n", + "torch.backends.cudnn.benchmark = True # 성능 최적화를 활성화 (가능한 한 빠른 연산 수행)\n", + "\n", + "# 전처리 함수\n", + "def preprocessing(df):\n", + " df = df[df.columns].copy()\n", + " df.loc[df['wind_dir']=='정온', 'wind_dir'] = \"0\"\n", + " df['wind_dir'] = df['wind_dir'].astype('int')\n", + " df['lm_cloudcover'] = df['lm_cloudcover'].astype('int')\n", + " df['cloudcover'] = df['cloudcover'].astype('int')\n", + " return df\n", + "\n", + "# 데이터셋 준비 함수\n", + "def prepare_dataset(region, data_sample='pure', target='multi', fold=3):\n", + "\n", + " # 데이터 경로 지정\n", + " dat_path = f\"../../data/data_for_modeling/{region}_train.csv\"\n", + " if data_sample == 'pure':\n", + " train_path = dat_path\n", + " else:\n", + " train_path = f'../../data/data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv'\n", + " train_path = f'../../data/data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv'\n", + " test_path = f\"../../data/data_for_modeling/{region}_test.csv\"\n", + " drop_col = ['binary_class','multi_class','visi','year']\n", + " target_col = f'{target}_class'\n", + " \n", + " # 데이터 로드\n", + " region_dat = preprocessing(pd.read_csv(dat_path, index_col=0))\n", + " if data_sample == 'pure':\n", + " region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :]\n", + " else:\n", + " region_train = preprocessing(pd.read_csv(train_path))\n", + " region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :]\n", + " region_test = preprocessing(pd.read_csv(test_path))\n", + "\n", + " # 컬럼 정렬 (일관성 유지)\n", + " common_columns = region_train.columns.to_list()\n", + " train_data = region_train[common_columns]\n", + " val_data = region_val[common_columns]\n", + " test_data = region_test[common_columns]\n", + "\n", + " # 설명변수 & 타겟 분리\n", + " X_train = train_data.drop(columns=drop_col)\n", + " y_train = train_data[target_col]\n", + " X_val = val_data.drop(columns=drop_col)\n", + " y_val = val_data[target_col]\n", + " X_test = test_data.drop(columns=drop_col)\n", + " y_test = test_data[target_col]\n", + "\n", + " # 범주형 & 연속형 변수 분리\n", + " categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns\n", + " numerical_cols = X_train.select_dtypes(include=['float64']).columns\n", + "\n", + " # 범주형 변수 Label Encoding\n", + " label_encoders = {}\n", + " for col in categorical_cols:\n", + " le = LabelEncoder()\n", + " le.fit(X_train[col]) # Train 데이터 기준으로 학습\n", + " label_encoders[col] = le\n", + "\n", + " # 변환 적용\n", + " for col in categorical_cols:\n", + " X_train[col] = label_encoders[col].transform(X_train[col])\n", + " X_val[col] = label_encoders[col].transform(X_val[col])\n", + " X_test[col] = label_encoders[col].transform(X_test[col])\n", + "\n", + " # 연속형 변수 Standard Scaling\n", + " scaler = StandardScaler()\n", + " scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습\n", + "\n", + " # 변환 적용\n", + " X_train[numerical_cols] = scaler.transform(X_train[numerical_cols])\n", + " X_val[numerical_cols] = scaler.transform(X_val[numerical_cols])\n", + " X_test[numerical_cols] = scaler.transform(X_test[numerical_cols])\n", + "\n", + " return X_train, X_val, X_test, y_train, y_val, y_test, categorical_cols, numerical_cols\n", + "\n", + "# 데이터 변환 및 dataloader 생성 함수\n", + "def prepare_dataloader(region, data_sample='pure', target='multi', fold=3, random_state=None):\n", + "\n", + " # 데이터 경로 지정\n", + " dat_path = f\"../../data/data_for_modeling/{region}_train.csv\"\n", + " if data_sample == 'pure':\n", + " train_path = dat_path\n", + " else:\n", + " train_path = f'../../data/data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv'\n", + " train_path = f'../../data/data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv'\n", + " test_path = f\"../../data/data_for_modeling/{region}_test.csv\"\n", + " drop_col = ['binary_class','multi_class','visi','year']\n", + " target_col = f'{target}_class'\n", + " \n", + " # 데이터 로드\n", + " region_dat = preprocessing(pd.read_csv(dat_path, index_col=0))\n", + " if data_sample == 'pure':\n", + " region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :]\n", + " else:\n", + " region_train = preprocessing(pd.read_csv(train_path))\n", + " region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :]\n", + " region_test = preprocessing(pd.read_csv(test_path))\n", + "\n", + " # 컬럼 정렬 (일관성 유지)\n", + " common_columns = region_train.columns.to_list()\n", + " train_data = region_train[common_columns]\n", + " val_data = region_val[common_columns]\n", + " test_data = region_test[common_columns]\n", + "\n", + " # 설명변수 & 타겟 분리\n", + " X_train = train_data.drop(columns=drop_col)\n", + " y_train = train_data[target_col]\n", + " X_val = val_data.drop(columns=drop_col)\n", + " y_val = val_data[target_col]\n", + " X_test = test_data.drop(columns=drop_col)\n", + " y_test = test_data[target_col]\n", + "\n", + " # 범주형 & 연속형 변수 분리\n", + " categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns\n", + " numerical_cols = X_train.select_dtypes(include=['float64']).columns\n", + "\n", + " # 범주형 변수 Label Encoding\n", + " label_encoders = {}\n", + " for col in categorical_cols:\n", + " le = LabelEncoder()\n", + " le.fit(X_train[col]) # Train 데이터 기준으로 학습\n", + " label_encoders[col] = le\n", + "\n", + " # 변환 적용\n", + " for col in categorical_cols:\n", + " X_train[col] = label_encoders[col].transform(X_train[col])\n", + " X_val[col] = label_encoders[col].transform(X_val[col])\n", + " X_test[col] = label_encoders[col].transform(X_test[col])\n", + "\n", + " # 연속형 변수 Standard Scaling\n", + " scaler = StandardScaler()\n", + " scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습\n", + "\n", + " # 변환 적용\n", + " X_train[numerical_cols] = scaler.transform(X_train[numerical_cols])\n", + " X_val[numerical_cols] = scaler.transform(X_val[numerical_cols])\n", + " X_test[numerical_cols] = scaler.transform(X_test[numerical_cols])\n", + "\n", + " # 연속형 변수와 범주형 변수 분리\n", + " X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32)\n", + " X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long)\n", + "\n", + " X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32)\n", + " X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long)\n", + "\n", + " X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32)\n", + " X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long)\n", + "\n", + " # 레이블 변환\n", + " if target == \"binary\":\n", + " y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32\n", + " y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32)\n", + " y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32)\n", + " elif target == \"multi\":\n", + " y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long\n", + " y_val_tensor = torch.tensor(y_val.values, dtype=torch.long)\n", + " y_test_tensor = torch.tensor(y_test.values, dtype=torch.long)\n", + " else:\n", + " raise ValueError(\"target must be 'binary' or 'multi'\")\n", + "\n", + " # TensorDataset 생성\n", + " train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor)\n", + " val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor)\n", + " test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor)\n", + "\n", + " # DataLoader 생성\n", + " if random_state == None:\n", + " train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)\n", + " else:\n", + " train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, generator=torch.Generator().manual_seed(random_state))\n", + " val_loader = DataLoader(val_dataset, batch_size=64, shuffle=False)\n", + " test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)\n", + " \n", + " return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import torch\n", + "# 디바이스 설정 (CUDA 사용 가능하면 GPU로, 아니면 CPU로)\n", + "import glob\n", + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "\n", + "def calculate_csi(Y_test, pred):\n", + "\n", + " cm = confusion_matrix(Y_test, pred) # 변수 이름을 cm으로 변경\n", + " # 혼동 행렬에서 H, F, M 추출\n", + " H = (cm[0, 0] + cm[1, 1])\n", + " \n", + " F = (cm[1, 0] + cm[2, 0] +\n", + " cm[0, 1] + cm[2, 1])\n", + "\n", + " M = (cm[0, 2] + cm[1, 2])\n", + " \n", + " # CSI 계산\n", + " CSI = H / (H + F + M + 1e-10)\n", + " return CSI\n", + "\n", + "def csi_metric(y_true, pred):\n", + " y_pred_binary = np.argmax(pred, axis=1)\n", + " score = calculate_csi(y_true, y_pred_binary)\n", + " return 'CSI', score, True # higher_better=True\n", + "\n", + "\n", + "def eval_metric_csi(y_true, pred_prob):\n", + "\n", + " pred = np.argmax(pred_prob, axis=1)\n", + " y_true = y_true\n", + " y_pred = pred\n", + " csi = calculate_csi(y_true, y_pred)\n", + " return -1*csi\n", + "\n", + "\n", + "from sklearn.metrics import matthews_corrcoef, accuracy_score\n", + "\n", + "def multiclass_mcc(y_val, y_pred):\n", + " \"\"\"\n", + " 다중 분류에서도 sklearn의 matthews_corrcoef를 그대로 사용할 수 있음.\n", + " \"\"\"\n", + " return matthews_corrcoef(y_val, y_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import torch\n", + "# 디바이스 설정 (CUDA 사용 가능하면 GPU로, 아니면 CPU로)\n", + "import glob\n", + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "def calculate_csi(Y_test, pred):\n", + "\n", + " cm = confusion_matrix(Y_test, pred) # 변수 이름을 cm으로 변경\n", + " # 혼동 행렬에서 H, F, M 추출\n", + " H = (cm[0, 0] + cm[1, 1])\n", + " \n", + " F = (cm[1, 0] + cm[2, 0] +\n", + " cm[0, 1] + cm[2, 1])\n", + "\n", + " M = (cm[0, 2] + cm[1, 2])\n", + " \n", + " # CSI 계산\n", + " CSI = H / (H + F + M + 1e-10)\n", + " return CSI\n", + "\n", + "# Soft Voting 앙상블\n", + "def get_proba(region, model_choose, data_sample, fold, target='multi'):\n", + " _, _, _, _,val_loader , test_loader = prepare_dataloader(region=region, data_sample=data_sample, target=target,fold=fold ,random_state=120)\n", + "\n", + " folder_path = f'../save_model/{model_choose}/{data_sample}'\n", + " model_paths = [path for path in glob.glob(f'{folder_path}/*.pth') if f'{region}' in path]\n", + "\n", + " model = torch.load(model_paths[fold-1], weights_only=False).to(device)\n", + " model.eval()\n", + "\n", + " test_preds = []\n", + "\n", + "\n", + " with torch.no_grad():\n", + " for x_num_batch, x_cat_batch, _ in test_loader:\n", + " output = model(x_num_batch.to(device), x_cat_batch.to(device))\n", + " output = torch.softmax(output, dim=1)\n", + " test_preds.extend(output.cpu().numpy())\n", + "\n", + "\n", + " return test_preds\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "df_seoul = pd.read_csv(\"../../data/data_for_modeling/seoul_train.csv\")\n", + "df_seoul_test = pd.read_csv(\"../../data/data_for_modeling/seoul_test.csv\")\n", + "\n", + "df_busan = pd.read_csv(\"../../data/data_for_modeling/busan_train.csv\")\n", + "df_busan_test = pd.read_csv(\"../../data/data_for_modeling/busan_test.csv\")\n", + "\n", + "df_daegu = pd.read_csv(\"../../data/data_for_modeling/daegu_train.csv\")\n", + "df_daegu_test = pd.read_csv(\"../../data/data_for_modeling/daegu_test.csv\")\n", + "\n", + "df_daejeon = pd.read_csv(\"../../data/data_for_modeling/daejeon_train.csv\")\n", + "df_daejeon_test = pd.read_csv(\"../../data/data_for_modeling/daejeon_test.csv\")\n", + "\n", + "df_incheon = pd.read_csv(\"../../data/data_for_modeling/incheon_train.csv\")\n", + "df_incheon_test = pd.read_csv(\"../../data/data_for_modeling/incheon_test.csv\")\n", + "\n", + "df_gwangju = pd.read_csv(\"../../data/data_for_modeling/gwangju_train.csv\")\n", + "df_gwangju_test = pd.read_csv(\"../../data/data_for_modeling/gwangju_test.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def preprocessing_df(df):\n", + " df = df[df.columns].copy()\n", + " df['year'] = df['year'].astype('int')\n", + " df['month'] = df['month'].astype('int')\n", + " df['hour'] = df['hour'].astype('int')\n", + " df['binary_class'] = df['binary_class'].astype('int')\n", + " df['multi_class'] = df['multi_class'].astype('int')\n", + "\n", + " df.loc[df['wind_dir']=='정온', 'wind_dir'] = \"0\"\n", + " df['wind_dir'] = df['wind_dir'].astype('int')\n", + " df= df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm',\n", + " 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure',\n", + " 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase',\n", + " 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year',\n", + " 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos',\n", + " 'month_sin', 'month_cos','multi_class']]\n", + " return df\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "df_seoul_test= preprocessing_df(df_seoul_test).copy()\n", + "df_busan_test= preprocessing_df(df_busan_test).copy()\n", + "df_daegu_test= preprocessing_df(df_daegu_test).copy()\n", + "df_gwangju_test= preprocessing_df(df_gwangju_test).copy()\n", + "df_daejeon_test= preprocessing_df(df_daejeon_test).copy()\n", + "df_incheon_test= preprocessing_df(df_incheon_test).copy()\n", + "\n", + "df_seoul= preprocessing_df(df_seoul).copy()\n", + "df_busan= preprocessing_df(df_busan).copy()\n", + "df_daegu= preprocessing_df(df_daegu).copy()\n", + "df_gwangju= preprocessing_df(df_gwangju).copy()\n", + "df_daejeon= preprocessing_df(df_daejeon).copy()\n", + "df_incheon= preprocessing_df(df_incheon).copy()\n", + "\n", + "df_seoul_test.drop(columns=['year'], inplace=True)\n", + "df_busan_test.drop(columns=['year'], inplace=True)\n", + "df_daegu_test.drop(columns=['year'], inplace=True)\n", + "df_daejeon_test.drop(columns=['year'], inplace=True)\n", + "df_incheon_test.drop(columns=['year'], inplace=True)\n", + "df_gwangju_test.drop(columns=['year'], inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import joblib\n", + "\n", + "lgb_seoul= joblib.load('../save_model/LGB_optima/lgb_seoul_smote.pkl')\n", + "lgb_busan= joblib.load('../save_model/LGB_optima/lgb_busan_smote.pkl')\n", + "lgb_incheon= joblib.load('../save_model/LGB_optima/lgb_incheon_smote.pkl')\n", + "lgb_daegu= joblib.load('../save_model/LGB_optima/lgb_daegu_smote.pkl')\n", + "lgb_daejeon= joblib.load('../save_model/LGB_optima/lgb_daejeon_smote.pkl')\n", + "lgb_gwangju= joblib.load('../save_model/LGB_optima/lgb_gwangju_smote.pkl')\n", + "\n", + "xgb_seoul= joblib.load('../save_model/XGB_optima/xgb_seoul_smote.pkl')\n", + "xgb_busan= joblib.load('../save_model/XGB_optima/xgb_busan_ctgan20000.pkl')\n", + "xgb_incheon= joblib.load('../save_model/XGB_optima/xgb_incheon_smote.pkl')\n", + "xgb_daegu= joblib.load('../save_model/XGB_optima/xgb_daegu_smote.pkl')\n", + "xgb_daejeon= joblib.load('../save_model/XGB_optima/xgb_daejeon_smote.pkl')\n", + "xgb_gwangju= joblib.load('../save_model/XGB_optima/xgb_gwangju_smote.pkl')\n", + "\n", + "lgb_seoul_1= lgb_seoul[0]\n", + "lgb_seoul_2= lgb_seoul[1]\n", + "lgb_seoul_3= lgb_seoul[2]\n", + "\n", + "lgb_busan_1= lgb_busan[0]\n", + "lgb_busan_2= lgb_busan[1]\n", + "lgb_busan_3= lgb_busan[2]\n", + "\n", + "lgb_incheon_1= lgb_incheon[0]\n", + "lgb_incheon_2= lgb_incheon[1]\n", + "lgb_incheon_3= lgb_incheon[2]\n", + "\n", + "lgb_daegu_1= lgb_daegu[0]\n", + "lgb_daegu_2= lgb_daegu[1]\n", + "lgb_daegu_3= lgb_daegu[2]\n", + "\n", + "lgb_daejeon_1= lgb_daejeon[0]\n", + "lgb_daejeon_2= lgb_daejeon[1]\n", + "lgb_daejeon_3= lgb_daejeon[2]\n", + "\n", + "lgb_gwangju_1= lgb_gwangju[0]\n", + "lgb_gwangju_2= lgb_gwangju[1]\n", + "lgb_gwangju_3= lgb_gwangju[2]\n", + "\n", + "\n", + "xgb_seoul_1= xgb_seoul[0]\n", + "xgb_seoul_2= xgb_seoul[1]\n", + "xgb_seoul_3= xgb_seoul[2]\n", + "\n", + "xgb_busan_1= xgb_busan[0]\n", + "xgb_busan_2= xgb_busan[1]\n", + "xgb_busan_3= xgb_busan[2]\n", + "\n", + "xgb_incheon_1= xgb_incheon[0]\n", + "xgb_incheon_2= xgb_incheon[1]\n", + "xgb_incheon_3= xgb_incheon[2]\n", + "\n", + "xgb_daegu_1= xgb_daegu[0]\n", + "xgb_daegu_2= xgb_daegu[1]\n", + "xgb_daegu_3= xgb_daegu[2]\n", + "\n", + "xgb_daejeon_1= xgb_daejeon[0]\n", + "xgb_daejeon_2= xgb_daejeon[1]\n", + "xgb_daejeon_3= xgb_daejeon[2]\n", + "\n", + "xgb_gwangju_1= xgb_gwangju[0]\n", + "xgb_gwangju_2= xgb_gwangju[1]\n", + "xgb_gwangju_3= xgb_gwangju[2]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **Soft Voting**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "voting = []\n", + "mcc = []\n", + "accuracy = []\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm', 'vap_pressure',\n", + " 'dewpoint_C', 'loc_pressure', 'sea_pressure', 'solarRad', 'snow_cm',\n", + " 'cloudcover', 'lm_cloudcover', 'low_cloudbase', 'groundtemp', 'O3',\n", + " 'NO2', 'PM10', 'PM25', 'month', 'hour', 'ground_temp - temp_C',\n", + " 'hour_sin', 'hour_cos', 'month_sin', 'month_cos', 'multi_class'],\n", + " dtype='object')" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_seoul_test.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CSI score of soft(test) : 0.3248062015503624\n" + ] + } + ], + "source": [ + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "\n", + "probas = []\n", + "\n", + "# 1 Fold\n", + "test_preds = get_proba('seoul', 'deepgbm', 'ctgan20000', 1)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('seoul', 'resnet_like', 'smote', 1)\n", + "probas.append(test_preds)\n", + "# probas.append(xgb_seoul_1.predict_proba(df_seoul_test.iloc[:,:-1]))\n", + "\n", + "# 2 Fold\n", + "test_preds = get_proba('seoul', 'deepgbm', 'ctgan20000', 2)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('seoul', 'resnet_like', 'smote', 2)\n", + "probas.append(test_preds)\n", + "# probas.append(xgb_seoul_2.predict_proba(df_seoul_test.iloc[:,:-1]))\n", + "\n", + "# 3 Fold\n", + "test_preds = get_proba('seoul', 'deepgbm', 'ctgan20000', 3)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('seoul', 'resnet_like', 'smote', 3)\n", + "probas.append(test_preds)\n", + "# probas.append(xgb_seoul_3.predict_proba(df_seoul_test.iloc[:,:-1]))\n", + "\n", + "voting.append(calculate_csi(df_seoul_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "mcc.append(multiclass_mcc(df_seoul_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "accuracy.append(accuracy_score(df_seoul_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "\n", + "\n", + "print(\"CSI score of soft(test) :\", calculate_csi(df_seoul_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 2, 11, 0],\n", + " [ 6, 417, 58],\n", + " [ 7, 789, 7470]])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "confusion_matrix(df_seoul_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CSI score of soft(test) : 0.46608315098458075\n" + ] + } + ], + "source": [ + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "\n", + "probas = []\n", + "\n", + "# 1 Fold\n", + "test_preds = get_proba('busan', 'deepgbm', 'pure', 1)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('busan', 'resnet_like', 'ctgan10000', 1)\n", + "probas.append(test_preds)\n", + "\n", + "\n", + "# 2 Fold\n", + "test_preds = get_proba('busan', 'deepgbm', 'pure', 2)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('busan', 'resnet_like', 'ctgan10000', 2)\n", + "probas.append(test_preds)\n", + "\n", + "\n", + "# 3 Fold\n", + "test_preds = get_proba('busan', 'deepgbm', 'pure', 3)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('busan', 'resnet_like', 'ctgan10000', 3)\n", + "probas.append(test_preds)\n", + "\n", + "\n", + "voting.append(calculate_csi(df_busan_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "mcc.append(multiclass_mcc(df_busan_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "accuracy.append(accuracy_score(df_busan_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "\n", + "print(\"CSI score of soft(test) :\", calculate_csi(df_busan_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 11, 13, 0],\n", + " [ 11, 202, 68],\n", + " [ 2, 150, 8303]])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "confusion_matrix(df_busan_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CSI score of hard(test) : 0.572269457161506\n" + ] + } + ], + "source": [ + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "\n", + "\n", + "# 1 Fold\n", + "probas = []\n", + "test_preds = get_proba('incheon', 'deepgbm', 'pure', 1)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('incheon', 'resnet_like', 'smote', 1)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('incheon', 'ft_transformer', 'pure', 1)\n", + "probas.append(test_preds)\n", + "\n", + "probas.append(lgb_incheon_1.predict_proba(df_incheon_test.iloc[:,:-1]))\n", + "probas.append(xgb_incheon_1.predict_proba(df_incheon_test.iloc[:,:-1]))\n", + "\n", + "# 2 Fold\n", + "test_preds = get_proba('incheon', 'deepgbm', 'pure', 2)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('incheon', 'resnet_like', 'smote', 2)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('incheon', 'ft_transformer', 'pure', 2)\n", + "probas.append(test_preds)\n", + "\n", + "probas.append(lgb_incheon_2.predict_proba(df_incheon_test.iloc[:,:-1]))\n", + "probas.append(xgb_incheon_2.predict_proba(df_incheon_test.iloc[:,:-1]))\n", + "\n", + "# 3 Fold\n", + "test_preds = get_proba('incheon', 'deepgbm', 'pure', 3)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('incheon', 'resnet_like', 'smote', 3)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('incheon', 'ft_transformer', 'pure', 3)\n", + "probas.append(test_preds)\n", + "\n", + "probas.append(lgb_incheon_3.predict_proba(df_incheon_test.iloc[:,:-1]))\n", + "probas.append(xgb_incheon_3.predict_proba(df_incheon_test.iloc[:,:-1]))\n", + "\n", + "\n", + "\n", + "voting.append(calculate_csi(df_incheon_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "mcc.append(multiclass_mcc(df_incheon_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "accuracy.append(accuracy_score(df_incheon_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "\n", + "\n", + "print(\"CSI score of hard(test) :\", calculate_csi(df_incheon_test.iloc[:,-1],mode(np.argmax(probas, axis=2), axis=0).mode[0]))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 87, 74, 21],\n", + " [ 22, 788, 395],\n", + " [ 2, 140, 7231]])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "confusion_matrix(df_incheon_test.iloc[:,-1],mode(np.argmax(probas, axis=2), axis=0).mode[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CSI score of soft(test) : 0.2852112676055334\n" + ] + } + ], + "source": [ + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "\n", + "probas= []\n", + "\n", + "# 1 Fold\n", + "test_preds = get_proba('daegu', 'deepgbm', 'smote', 1)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('daegu', 'ft_transformer', 'pure', 1)\n", + "probas.append(test_preds)\n", + "\n", + "# 2 Fold\n", + "test_preds = get_proba('daegu', 'deepgbm', 'smote', 2)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('daegu', 'ft_transformer', 'pure', 2)\n", + "probas.append(test_preds)\n", + "\n", + "# 3 Fold\n", + "test_preds = get_proba('daegu', 'deepgbm', 'smote', 3)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('daegu', 'ft_transformer', 'pure', 3)\n", + "probas.append(test_preds)\n", + "\n", + "voting.append(calculate_csi(df_daegu_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "mcc.append(multiclass_mcc(df_daegu_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "accuracy.append(accuracy_score(df_daegu_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "\n", + "print(\"CSI score of soft(test) :\", calculate_csi(df_daegu_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1, 0, 0],\n", + " [ 1, 80, 47],\n", + " [ 2, 153, 8476]])" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "confusion_matrix(df_daegu_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CSI score of soft(test) : 0.31884057971011603\n" + ] + } + ], + "source": [ + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "\n", + "probas = []\n", + "\n", + "# 1 Fold\n", + "test_preds = get_proba('daejeon', 'deepgbm', 'pure', 1)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('daejeon', 'ft_transformer', 'pure', 1)\n", + "probas.append(test_preds)\n", + "\n", + "\n", + "# 2 Fold\n", + "test_preds = get_proba('daejeon', 'deepgbm', 'pure', 2)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('daejeon', 'ft_transformer', 'pure', 2)\n", + "probas.append(test_preds)\n", + "\n", + "\n", + "# 3 Fold\n", + "test_preds = get_proba('daejeon', 'deepgbm', 'pure', 3)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('daejeon', 'ft_transformer', 'pure', 3)\n", + "probas.append(test_preds)\n", + "\n", + "voting.append(calculate_csi(df_daejeon_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "mcc.append(multiclass_mcc(df_daejeon_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "accuracy.append(accuracy_score(df_daejeon_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "\n", + "\n", + "print(\"CSI score of soft(test) :\", calculate_csi(df_daejeon_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 15, 23, 15],\n", + " [ 10, 337, 271],\n", + " [ 0, 433, 7656]])" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "confusion_matrix(df_daejeon_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CSI score of soft(test) : 0.4759725400457121\n" + ] + } + ], + "source": [ + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "\n", + "probas = []\n", + "\n", + "# 1 Fold\n", + "test_preds = get_proba('gwangju', 'deepgbm', 'pure', 1)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('gwangju', 'ft_transformer', 'pure', 1)\n", + "probas.append(test_preds)\n", + "\n", + "\n", + "# 2 Fold\n", + "test_preds = get_proba('gwangju', 'deepgbm', 'pure', 2)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('gwangju', 'ft_transformer', 'pure', 2)\n", + "probas.append(test_preds)\n", + "\n", + "\n", + "# 3 Fold\n", + "test_preds = get_proba('gwangju', 'deepgbm', 'pure', 3)\n", + "probas.append(test_preds)\n", + "test_preds = get_proba('gwangju', 'ft_transformer', 'pure', 3)\n", + "probas.append(test_preds)\n", + "\n", + "voting.append(calculate_csi(df_gwangju_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "mcc.append(multiclass_mcc(df_gwangju_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "accuracy.append(accuracy_score(df_gwangju_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))\n", + "\n", + "\n", + "print(\"CSI score of soft(test) :\", calculate_csi(df_gwangju_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 10, 12, 8],\n", + " [ 2, 406, 235],\n", + " [ 0, 201, 7886]])" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "confusion_matrix(df_gwangju_test.iloc[:,-1], np.argmax(np.mean(probas, axis=0), axis=1))" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA04AAAHDCAYAAAATEUquAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABDfUlEQVR4nO3deVwVdf///+cBZBfEDcgQUtw33EMvxQpDLcsrKysL5GvqpWJeF5VFlmiLWJbppaZZH9PcMs1WU0vUSrM0FZdCxd00cClFUKHg/fujH+fqCDhiynF53G+3c6t5z3tmXnPOeM55MjPvYzPGGAEAAAAASuXi7AIAAAAA4EpHcAIAAAAACwQnAAAAALBAcAIAAAAACwQnAAAAALBAcAIAAAAACwQnAAAAALBAcAIAAAAACwQnAAAAALBAcAIAXFPWr1+vdu3aycfHRzabTWlpac4uSSNHjpTNZnN2GeVq1apVstlsWrVqVZmXnTFjhmw2m/bt23fJ6wKAi0VwAoDLaPfu3RowYIBq1aolT09P+fn5qX379powYYLOnDlj75efn68JEyaoefPm8vPzU6VKldSoUSP1799f27dvt/cr+kL5ww8/WG573759io+PV+3ateXp6amgoCB17NhRycnJl2VfrwS///677rvvPv366696/fXXNWvWLIWGhhbr99hjj8lms2nXrl2lrmv48OGy2WzasmXLBW379OnTGjly5EUFhcupT58+stls8vPzczjmimRkZMhms8lms+nVV191QoUAcHUgOAHAZbJ48WI1adJE77//vrp3766JEycqJSVFNWvW1JNPPqmhQ4fa+/bs2VOPP/64GjdurDFjxmjUqFHq2LGjlixZou+++67M2961a5eaN2+uZcuW6cEHH9SkSZM0ePBgValSRS+//PKl3M0ryu7du7V//3498cQT6t+/vx5++GEFBAQU69e7d29J0ty5c0td17x589SkSRM1bdr0grZ9+vRpjRo1qsTg9Oyzz5YYWsqLm5ubTp8+rU8//bTYvDlz5sjT09MJVQHA1cXN2QUAwLVo7969euCBBxQaGqoVK1YoODjYPm/w4MHatWuXFi9eLOnPS8s+++wzvfTSS3rmmWcc1jNp0iSdOHGizNt//fXXlZOTo7S0tGJnXI4cOVL2HfobcnNz5ePjUy7bKtq3SpUqnbdf27ZtFR4ernnz5mnEiBHF5q9du1Z79+7VmDFjLkldbm5ucnNz3keuh4eH2rdvr3nz5un+++93mDd37lzdcccd+uCDD5xUHQBcHTjjBACXwSuvvKKcnBz93//9n0NoKhIeHm4/47R7925JUvv27Yv1c3V1VZUqVcq8/d27d+vGG28s8TK16tWrF2tbsmSJoqKiVLFiRfn5+al169bFzsYsWLBALVu2lJeXl6pWraqHH35Yhw4dcujTp08f+fr6avfu3erWrZsqVqxoP7tTWFio8ePHq1GjRvL09FRgYKAGDBig33777YL2acWKFerQoYN8fHxUqVIl3X333UpPT3fYdlRUlCTpvvvuk81mU6dOnUpdX+/evbV9+3Zt3Lix2Ly5c+fKZrPpwQcflPRnIOvbt68CAwPl6empZs2aaebMmfb++/btU7Vq1SRJo0aNsl/6NnLkSEkl3+Nks9mUkJCgjz76SI0bN5aHh4caNWqkpUuXFqtn1apVatWqlTw9PVW7dm29+eabZb5v6qGHHtKSJUscgvj69euVkZGhhx56qMRl9uzZo/vuu0+VK1eWt7e3br75Znvg/6uff/5ZPXr0kI+Pj6pXr67//Oc/ysvLK3Gd33//vbp06SJ/f395e3srKipKa9asueD9AABnITgBwGXw6aefqlatWmrXrp1l36JwM2fOHP3xxx+XZPuhoaE6ePCgVqxYYdl3xowZuuOOO/Trr78qKSlJY8aMUUREhMMX+BkzZuj++++Xq6urUlJS1K9fPy1atEj/+Mc/ip0R++OPPxQTE6Pq1avr1VdfVc+ePSVJAwYM0JNPPmm/xys+Pl5z5sxRTEyMfv/99/PWuHz5csXExOjIkSMaOXKkEhMT9e2336p9+/b2AQQGDBhgP2P32GOPadasWRo+fHip6yztcr2CggK9//776tChg2rWrKkzZ86oU6dOmjVrlnr37q2xY8fK399fffr00YQJEyRJ1apV05QpUyRJ//znPzVr1izNmjVL99xzz3n3a/Xq1Ro0aJAeeOABvfLKKzp79qx69uyp48eP2/ts2rRJXbp00fHjxzVq1Cj17dtXzz//vD766KPzrvtc99xzj2w2mxYtWmRvmzt3rurXr68WLVoU65+VlaV27dpp2bJlGjRokF566SWdPXtWd911lz788EN7vzNnzui2227TsmXLlJCQoOHDh+ubb77RsGHDiq1zxYoV6tixo7Kzs5WcnKzRo0frxIkTuvXWW7Vu3boy7Q8AlDsDALikTp48aSSZu++++4L6FxYWmqioKCPJBAYGmgcffNBMnjzZ7N+/v1jfd955x0gy69evP+86t23bZry8vIwkExERYYYOHWo++ugjk5ub69DvxIkTpmLFiqZt27bmzJkzxeoyxpj8/HxTvXp107hxY4c+n332mZFkRowYYW+Li4szkszTTz/tsK5vvvnGSDJz5sxxaF+6dGmJ7eeKiIgw1atXN8ePH7e3bd682bi4uJjY2Fh728qVK40ks2DBgvOur0jr1q3NjTfeaAoKCorV9OabbxpjjBk/fryRZGbPnm3vk5+fbyIjI42vr6/Jzs42xhhz9OhRI8kkJycX205ycrI59yNXknF3dze7du1y2CdJZuLEifa27t27G29vb3Po0CF7W0ZGhnFzcyu2zpLExcUZHx8fY4wx9957r7ntttuMMcYUFBSYoKAgM2rUKLN3714jyYwdO9a+3L///W8jyXzzzTf2tlOnTpmbbrrJhIWF2Z+zoufn/ffft/fLzc014eHhRpJZuXKlMebP46lOnTomJibGfmwZY8zp06fNTTfdZDp37mxvKzrO9+7da7l/AFBeOOMEAJdYdna2JKlixYoX1N9ms2nZsmV68cUXFRAQoHnz5mnw4MEKDQ1Vr169Luoep0aNGiktLU0PP/yw9u3bpwkTJqhHjx4KDAzUW2+9Ze/35Zdf6tSpU3r66aeLDRBQdBnYDz/8oCNHjmjQoEEOfe644w7Vr1+/xEu3Bg4c6DC9YMEC+fv7q3Pnzjp27Jj90bJlS/n6+mrlypWl7ssvv/yitLQ09enTR5UrV7a3N23aVJ07d9bnn39etifnLx5++GH9/PPP+vrrr+1tc+fOlbu7u+677z5J0ueff66goCD7ZXuSVKFCBT322GPKycnRV199ddHbj46OVu3ate3TTZs2lZ+fn/bs2SPpz7Nfy5cvV48ePXTDDTfY+4WHh6tr165l3t5DDz2kVatWKTMzUytWrFBmZmapl+l9/vnnatOmjf7xj3/Y23x9fdW/f3/t27dPP/30k71fcHCw7r33Xns/b29v9e/f32F9aWlp9ssCjx8/bj8GcnNzddttt+nrr79WYWFhmfcJAMoLwQkALjE/Pz9J0qlTpy54GQ8PDw0fPlzp6ek6fPiw5s2bp5tvvlnvv/++EhISLqqOunXratasWTp27Ji2bNmi0aNHy83NTf3799fy5csl/e/+qsaNG5e6nv3790uS6tWrV2xe/fr17fOLuLm56cYbb3Roy8jI0MmTJ1W9enVVq1bN4ZGTk3PeASvOt/0GDRrYv3xfjAceeECurq72y/XOnj2rDz/8UF27drWPxrd//37VqVNHLi6OH5kNGjRwqO9i1KxZs1hbQECA/b6vI0eO6MyZMwoPDy/Wr6Q2K0X3nc2fP19z5sxR69atS13P/v37S33Oi+YX/Tc8PLzY/VbnLpuRkSFJiouLK3YMvP3228rLy9PJkyfLvE8AUF4YVQ8ALjE/Pz/dcMMN2rZt20UtHxwcrAceeEA9e/ZUo0aN9P7772vGjBkXPSqbq6urmjRpoiZNmigyMlK33HKL5syZo+jo6ItanxUPD49iIaOwsFDVq1fXnDlzSlymaGCF8la9enV17txZH3zwgSZPnqxPP/1Up06dst//dLm5urqW2G6MuSzb8/Dw0D333KOZM2dqz5499sErykPR2aSxY8cqIiKixD6+vr7lVg8AlBXBCQAugzvvvFPTpk3T2rVrFRkZeVHrqFChgpo2baqMjAwdO3ZMQUFBf7uuVq1aSfrz8jdJ9svEtm3bVuqZh6LBK3bs2KFbb73VYd6OHTtKHLnvXLVr19by5cvVvn17eXl5lanmv27/XNu3b1fVqlX/1nDnvXv31tKlS7VkyRLNnTtXfn5+6t69u8P2t2zZosLCQodAWPTDxEX1lWWEuwtVvXp1eXp6lvhDvef78d7zeeihhzR9+nS5uLjogQceKLVfaGhoqc950fyi/27btk3GGIfn4Nxli441Pz+/yxbaAeBy4lI9ALgMhg0bJh8fHz366KPKysoqNn/37t32EdkyMjJ04MCBYn1OnDihtWvXKiAgoMxnZL755psSR6oruh+o6DKq22+/XRUrVlRKSorOnj3r0LforEerVq1UvXp1TZ061WGI6SVLlig9PV133HGHZT3333+/CgoK9MILLxSb98cff5z3Pq7g4GBFRERo5syZDv22bdumL774Qt26dbPc/vn06NFD3t7eeuONN7RkyRLdc889DvdydevWTZmZmZo/f75DzRMnTpSvr699CHRvb29Juqh70krj6uqq6OhoffTRRzp8+LC9fdeuXVqyZMlF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O51dFoByUvQesG/fPi1ZskS33HKLhg4dqjvvvFN//PGHs8vDJVRer3XlypVVsWLFS7Y+/H179uxR8+bN9cUXX2j06NHatGmT1q5dq2HDhumzzz7T8uXLnV1iqdzd3RUUFCSbzebsUi4LgtNV5sSJE/rmm2/08ssv65ZbblFoaKjatGmjpKQk3XXXXfY+jz76qKpVqyY/Pz/deuut2rx5s8N6pkyZotq1a8vd3V316tXTrFmz7PP27dsnm82mtLQ0h+3abDatWrWqPHYTpSg6wxgUFKSIiAg9/fTTOnjwoI4ePVri6fG0tDTZbDbt27dPkrR//351795dAQEB8vHxUaNGjfT5559LkgoKCtS3b1/ddNNN8vLyUr169TRhwgSH7RedCXn11VcVHBysKlWqaPDgwfr999/L6ym47nTq1EmPPfaYhg0bpsqVKysoKEgjR4506HPixAkNGDBAgYGB8vT0VOPGjfXZZ5859Fm2bJkaNGggX19f+xeyv3r77bfVoEEDeXp6qn79+nrjjTcc5m/dulW33nqrvLy8VKVKFfXv3185OTn2+Rwb5aPoPaBGjRpq0aKFnnnmGX388cdasmSJZsyYIUkaN26cmjRpIh8fH4WEhGjQoEEOr5UkrV69Wh06dJCXl5dCQkL02GOPKTc31z7/l19+0R133CEvLy/ddNNNmjt3rsLCwjR+/HhJfE6Uh/J6rc+9VC8vL09PPPGEatSoIR8fH7Vt27bYa/rBBx+oUaNG8vDwUFhYmF577TWH+WFhYRo9erT+3//7f6pYsaJq1qypadOmXdLn51o2aNAgubm56YcfftD999+vBg0aqFatWrr77ru1ePFide/eXU888YTDH07Hjx8vm82mpUuX2tvCw8P19ttvS5LWr1+vzp07q2rVqvL391dUVJQ2btzosF2bzaa3335b//znP+Xt7a06derok08+cejzySefqE6dOvL09NQtt9yimTNnOnz3OPe7yMiRIxUREeGwjvHjxyssLOzSPFnljOB0lfH19ZWvr68++ugj5eXlldjnvvvu05EjR7RkyRJt2LBBLVq00G233aZff/1VkvThhx9q6NChevzxx7Vt2zYNGDBA8fHxWrlyZXnuCv6mnJwczZ49W+Hh4apSpcoFLTN48GDl5eXp66+/1tatW/Xyyy/L19dXklRYWKgbb7xRCxYs0E8/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Nm3apP79+8vLy8v+xYfPicuvPF7rc9WtW1e9e/dWbGysFi1apL1792rdunVKSUnR4sWLJUmPP/64UlNT9cILL2jnzp2aOXOmJk2a5DDgDP6eN954Q3/88YdatWql+fPnKz09XTt27NDs2bO1fft2e0Dt2LGjTp06pc8++8wekjp16qQ5c+YoODjY4Y9pderU0axZs5Senq7vv/9evXv3vqArFv5qwIAB2r59u5566int3LlT77//vn1QkNKGH+/UqZOOHj2qV155Rbt379bkyZO1ZMmSsj8pVwrn3V6Fi3H27Fnz9NNPmxYtWhh/f3/j7e1t6tWrZ5599llz+vRpY4wx2dnZZsiQIeaGG24wFSpUMCEhIaZ3797mwIED9vW88cYbplatWqZChQqmbt265t1333XYzk8//WQiIyONl5eXiYiIMF988QWDQzhZXFyckWR/VKxY0bRu3dosXLjQ3mf16tWmSZMmxtPT03To0MEsWLDAYXCIhIQEU7t2bePh4WGqVatmHnnkEXPs2DFjzJ/HVp8+fYy/v7+pVKmSGThwoHn66acdbuos6YbloUOHmqioqMu899eXcweHKLpxu8jdd99t4uLi7NPHjx838fHxpkqVKsbT09M0btzYfPbZZ8aYPweH8Pf3d1j+ww8/NOe+/c+ZM8dEREQYd3d3ExAQYDp27Ohwc/KWLVvMLbfcYjw9PU3lypVNv379zKlTp0qsuQjHxqX11/cANzc3U61aNRMdHW2mT59uCgoK7P3GjRtngoODjZeXl4mJiTHvvvtusffrdevWmc6dOxtfX1/j4+NjmjZtal566SX7/MOHD5uuXbsaDw8PExoaaubOnWuqV69upk6dau9j9TmBi1eer/W57zH5+flmxIgRJiwszFSoUMEEBwebf/7zn2bLli32PgsXLjQNGzY0FSpUMDVr1jRjx451qD80NNQ+kEiRZs2ameTk5Evy/FwPDh8+bBISEsxNN91kKlSoYHx9fU2bNm3M2LFjTW5urr1fs2bNTFBQkH36+PHjxmazmQceeMBhfRs3bjStWrUynp6epk6dOmbBggXFXidJ5sMPP3RYzt/f37zzzjv26Y8//tiEh4cbDw8P06lTJzNlyhQjyT7YSEnfD6dMmWJCQkKMj4+PiY2NNS+99NJVOziEzZhzLjwEAAD4i59//lkhISH2wQhw7YiMjNRtt92mF1980dml4Cr00ksvaerUqTp48KCkP38zsGvXrjp79qzc3d2dXN2lxz1OAADAwYoVK5STk6MmTZrol19+0bBhwxQWFqaOHTs6uzRcInl5edq6dat+/PHHEgePAEryxhtvqHXr1qpSpYrWrFmjsWPH2i/9zMrK0scff6w6depck6FJIjgBAIBz/P7773rmmWe0Z88eVaxYUe3atdOcOXOKjbiFq9eSJUsUGxuru+66S/fee6+zy8FVIiMjQy+++KJ+/fVX1axZU48//riSkpIkyf6Dum+88YaTq7x8uFQPAAAAACwwqh4AAAAAWCA4AQAAAIAFghMAAAAAWCA4AQAAAIAFghMAAAAAWCA4AQAAAIAFghMAAAAAWCA4AQAAAIAFghMAAAAAWPj/AJ3jGjFFTxgpAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "plt.figure(figsize=(10,5))\n", + "sns.barplot(x=['Seoul', 'Busan', 'Incheon', 'Daegu', 'Daejeon', 'Gwangju'], y=voting)\n", + "plt.title('CSI Score of Voting Model')\n", + "plt.ylabel('CSI')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.4078715882283252" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(voting)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.3248062015503624,\n", + " 0.46608315098458075,\n", + " 0.5763157894736463,\n", + " 0.2852112676055334,\n", + " 0.31884057971011603,\n", + " 0.4759725400457121]" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "voting" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.5106142349456536,\n", + " 0.640202275543952,\n", + " 0.709448778435959,\n", + " 0.45579515959653394,\n", + " 0.453960121993875,\n", + " 0.6218724605270242]" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mcc" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.9005707762557078,\n", + " 0.9721461187214612,\n", + " 0.9264840182648402,\n", + " 0.9768264840182649,\n", + " 0.9141552511415525,\n", + " 0.9477168949771689]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "accuracy" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Analysis_code/find_reason/ busan_trend.ipynb b/Analysis_code/find_reason/ busan_trend.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..1bbc656fd226cec2d9a974801cbe74ab0e372ced --- /dev/null +++ b/Analysis_code/find_reason/ busan_trend.ipynb @@ -0,0 +1,157 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 12, + "id": "26f60e36", + "metadata": {}, + "outputs": [], + "source": [ + "# 분석에 필요한 라이브러리 임포트\n", + "import pandas as pd\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from scipy.spatial import distance\n", + "\n", + "\n", + "# 한글 폰트 설정\n", + "plt.rcParams['font.family'] = 'NanumGothic'\n", + "plt.rcParams['axes.unicode_minus'] = False" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "28456d07", + "metadata": {}, + "outputs": [], + "source": [ + "busan = pd.read_feather(\"../../data/data_for_modeling/df_busan.feather\")\n", + "feature = ['hm','PM10','PM25','multi_class','year','month','hour']\n", + "busan = busan[feature]\n", + "busan = busan.loc[busan['year'].isin([2018,2019,2020,2021,2022,2023]),:]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "84183ace", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['hm', 'PM10', 'PM25', 'multi_class', 'year', 'month', 'hour'], dtype='object')" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "busan.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "5b942b62", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 월별로 시간의 흐름에 따라 PM10, PM25 변수의 변화 추이 시각화\n", + "\n", + "import matplotlib.dates as mdates\n", + "\n", + "# 월별 평균 PM10, PM25 계산 함수\n", + "def get_monthly_trend(df, variable):\n", + " # 'year', 'month' 컬럼을 기준으로 월별 평균, Q1, Q3 계산\n", + " monthly = df.groupby(['year', 'month'])[variable].agg(['mean', \n", + " lambda x: x.quantile(0.25), \n", + " lambda x: x.quantile(0.75)]).reset_index()\n", + " monthly.columns = ['year', 'month', 'mean', 'q1', 'q3']\n", + " # 날짜 컬럼 생성 (월의 첫날로)\n", + " monthly['date'] = pd.to_datetime(monthly['year'].astype(str) + '-' + monthly['month'].astype(str).str.zfill(2) + '-01')\n", + " monthly = monthly.sort_values('date')\n", + " return monthly\n", + "\n", + "fig, axes = plt.subplots(1, 2, figsize=(16, 6))\n", + "variables_to_analyze = ['hm', 'PM25']\n", + "\n", + "for i, var in enumerate(variables_to_analyze):\n", + " if var in busan.columns:\n", + " trend = get_monthly_trend(busan, var)\n", + " ax = axes[i]\n", + " # 평균값\n", + " ax.plot(trend['date'], trend['mean'], 'o-', color='blue', label='평균값')\n", + " # Q1, Q3\n", + " ax.plot(trend['date'], trend['q1'], 's--', color='orange', alpha=0.7, label='Q1')\n", + " ax.plot(trend['date'], trend['q3'], 's--', color='purple', alpha=0.7, label='Q3')\n", + " # 선형 트렌드선\n", + " if len(trend) > 1:\n", + " z = np.polyfit(range(len(trend)), trend['mean'], 1)\n", + " p = np.poly1d(z)\n", + " ax.plot(trend['date'], p(range(len(trend))), \"r--\", linewidth=1, alpha=0.6)\n", + " slope = z[0]\n", + " ax.text(trend['date'].iloc[0], trend['mean'].max(), \n", + " f'월별 변화율: {slope:.4f}/month', fontsize=10, color='darkred')\n", + " ax.set_title(f'{var} 변화 추이', fontsize=14)\n", + " ax.set_xlabel('날짜', fontsize=12)\n", + " ax.set_ylabel(var, fontsize=12)\n", + " ax.grid(True, linestyle='--', alpha=0.7)\n", + " ax.legend()\n", + " ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))\n", + " plt.setp(ax.xaxis.get_majorticklabels(), rotation=45)\n", + " else:\n", + " axes[i].text(0.5, 0.5, f'{var} 컬럼 없음', ha='center', va='center', fontsize=12)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e149d5dc", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Analysis_code/find_reason/ daegu_trend.ipynb b/Analysis_code/find_reason/ daegu_trend.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..391514049ae2121ae22f516cdf848bbc1a0ef872 --- /dev/null +++ b/Analysis_code/find_reason/ daegu_trend.ipynb @@ -0,0 +1,157 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 16, + "id": "26f60e36", + "metadata": {}, + "outputs": [], + "source": [ + "# 분석에 필요한 라이브러리 임포트\n", + "import pandas as pd\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from scipy.spatial import distance\n", + "\n", + "\n", + "# 한글 폰트 설정\n", + "plt.rcParams['font.family'] = 'NanumGothic'\n", + "plt.rcParams['axes.unicode_minus'] = False" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "28456d07", + "metadata": {}, + "outputs": [], + "source": [ + "daegu = pd.read_feather(\"../../data/data_for_modeling/df_daegu.feather\")\n", + "feature = ['hm','PM10','PM25','multi_class','year','month','hour']\n", + "daegu = daegu[feature]\n", + "daegu = daegu.loc[daegu['year'].isin([2018,2019,2020,2021,2022,2023]),:]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "84183ace", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['hm', 'PM10', 'PM25', 'multi_class', 'year', 'month', 'hour'], dtype='object')" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "daegu.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "5b942b62", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ddVVKCgoQG1tLV566SWsX78ezz//fJfXRNrTISMjA6+88gqqqqrCPmsVFBTgiiuu8E/63tra2qV3y8iRI7Fs2bKgr//iiy+gVqsxfvz4iMpFCCHxQAkMQghJMN8No+8hJdi6znzzP8SKTCYLmMzu73//OxYtWuT/9+bNm7Fly5aw+ygrK4tocumysjKsXr06om7sQ4cOhcViAc/zXW7eWZYN+fkEc/nll0On02HhwoW4++67wfM8DAYDpk+fjtWrV/e4FVFLSwtaWlowePBgOJ3OqCfga2pqQmFhITIyMgB4e8hcfPHF2LVrV8Ck5yaTCf/+97/xxz/+sUflJIQQQgghqe+uu+7CJZdcAoZhkJGRgbKysoh6C1x77bUYPXo0du/ejcGDBwMA/vnPf+Lqq6+O+L1tNhvOPfdclJWV4bXXXou67DfddBPuuecefPfdd2ETGMF0fh654447cN111/n/ffDgQXz++echhzYCgClTpmDVqlXdvldeXh6++OILGI3GbrfNyclBfX19TJ5Hpk+fjm+++Qb3338/nn32Wbjdbuh0Opx88slYuXKlvzFZtKxWKxobGzFw4ECIohj184jJZILRaER2djYAYN68efjb3/6Gb7/9NmD4X5fLhddeew0XX3yx/9mFEEKSgRIYhBDSh1itVtjtdrz00ktgWdY/EV1nY8aMwbRp08Lua9OmTUG7PXfkcDjQv39/rFu3LqpJqGUyGb788kvodLqQXecjMXv2bMyePRvvv/8+Lr74YjQ2NgY8KPXELbfcgnfeeadX+3jsscdw9913AwBmzZqFadOm4dxzz8Wbb76JCRMmYPfu3bjuuutQVFSE22+/vVfvRQghhBBCUldRUVHUlf9A4GTeTz31FFauXImDBw/isssui+j1HMfhoosuQmtrK3755ZeQQx2Fo9FokJeXB4fDEfFrbDYb2tracPfdd0MQhJDPI5WVlbj//vvDJnM+/fTTbt+b53mMHTsWK1eujKoXgUwmw48//ojW1lacc845Eb+us1NPPRWrVq3C2rVrMWnSJGzcuNE/TFRPPfXUU3j44Yd7tY8FCxb45+aYMGECrrzySsyfPx///Oc/MW3aNNTW1uLWW29FW1tbXCd2J4SQSFACgxBC+pALL7wQy5cvj2jbc889F5988knI9dH0Cuku0RHMc889h8LCwrAJDL1ej0suuaTbbty+llKCIKCxsRF1dXWorq7G3r17/S2PIvX222/j7bffDrl+/PjxmDp1Kp566qmI9seyLD7++GPcfvvtOOOMM+BwOCCXy3HhhRfihRdeoNZOhBBCCCEkqAULFuDOO+/EY489hjfffBPnnHNOxMMbXXvttVizZg3WrFkT8fBKnVksFphMppDDvwZzyy234PXXX49o25EjR4btFa7X66HX67vdj0aj6dHzyDvvvINdu3Z1m8C49NJLux0y1/c8IooiTCYT6uvrcejQIezduxcejyeqxl4PPfQQHnrooZDrfUMIf/jhhxHv85VXXkFxcTEuvfRSmM1mMAyDM844Az/++GPQYZEJISSRKIFBCCF9yLfffhvRdvfeey8WL17c7XYtLS1hHwbsdjsA7yR18ZCdnY333nsvYNkLL7yAZ555xv+Q4PF4YLFYAHgfXmQyGXJzc9GvXz9UVlYGdJNOFq1WixdffBF///vf0dTUhJycnLh9ZoQQQgghJD3MnTsXt912G9566y188MEHeP/99yN63f333493330XX3/9NYYOHdrj9//LX/6CrKysoHNchPLaa69FNFzV66+/jmuuuabb7SwWS9heGDzPw+FwxPXeunPv7GXLluHWW2/1D3/FcRza29sBAEOGDAHDMMjNzUVJSQkqKysxYcKEuJUtUnK5HA8//DAefPBBNDU1ISsrCxqNJtnFIoQQAJTAIISQPuWFF17An//854i6eZ977rlh18+dOxdLlizpdj8VFRWYOHFixGXsrdmzZ2PUqFEQBAEMw0Amk0GtViMzMxO5ubnIycnp0hW94/wfySSTySJuNUcIIYQQQvo232Tet9xyC4xGI2bOnNnta9577z08/PDDuPvuu5Gbm4tt27YFrGcYBkOHDg2Y62H27Nk4//zzMXDgQDAMg7179+Lll1/G+vXr8f777yMrKyviMv/3v//FFVdcAavV2u22I0eODLv+rrvuwuOPP97tfvLz80NOyh0PU6dOxVtvvRXwPKJSqZCRkQGj0Yjc3Nwuc2n85z//SVj5wmFZFgUFBckuBiGEBKAEBiGExIFCoQDDMEHnWwi2TqlUht0+1HK5PLrL+FdffYXTTjsNL774Yrfl764r+YYNG3DXXXfFbUxUmUyG5ubmiCalY1nW33W9sLCQkgCEEEIIISTlhbrPD0apVAbtRXDttdfi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tSt/HnvsMXR3dyMUCuEDH/hA1PMJYN8rd66//no89dRTuO6663DKKackvMfxSmXC+YW+cH6hL5xf6A3nGPrCOYa+cH6hL2U5v8i9/jcZjhtvvFGddtpp6t5771WXX365+sQnPqF6enqUUkq9+OKL6r3vfa/avn27UkqpQCBQyqaSQVx//fXqxBNPVHfccYe65JJL1Je//GV14403KqWU2rp1q7r44ouj2gWDwVI2lQzi+uuvV6eeeqr6yU9+ok455RT1xS9+Uf385z9XSim1bt06de6557LflSk//elP1bve9S61du3aIe+99NJLvGaWMdddd506+eST1cUXX6wmTZqkfvazn0Xf4/2u/LH1+9SnPqUmTZqkvvSlL0Xfo37lzyc+8Ql16qmnqssvv1w9+eST0dfXrFmjLr/8co5XKgzOL/SF8wt94fxCbzjH0BfOMfSF8wu9Kcf5BQ0YBeKPf/yjWrJkieru7lZKKbVz5041YcIE9fLLLyullLIsS3V2diqllAqFQtHPWZZV/MaSBP7xj3+oxYsXR7Xr7e1VTz75pFq6dKn67ne/q5SK6RSvHSk9L7zwgjr11FNVb2+vUkqpgwcPqt/97nfqsssui94wbc3Y78qPG2+8UY0fP15dc8016o033kh4j9fM8uXmm29WZ555pvL7/UopmQiOHz8+OtChduXNddddp84666zoAui+ffvUjBkz1KOPPqqUEp0OHz6slKJ+5YatwS233KKWLVumbr/9dnXxxRerp59+Ovq+PZbheKUy4PxCXzi/0BfOL/SHcww94RxDXzi/0Jdynl+wiHeB6OjowAc+8AE0NDQAACZMmIAJEybA5XKhu7sbANDU1DTkc/mqzk5y5+DBg5g3bx4aGhoQCARQV1eH008/Hc3Nzbjjjjvw3e9+N6qTnfOUlAe9vb0YO3Ys6urqEA6H0draig984AO45pprsGnTJnzpS1+KambnXQTY78qBcDiMI0eO4IYbbkBvby9uvvlmrF+/Pvq+YRhoamqCUiqh31G70rJ//37s2rULt912G2pqauDz+XDSSSfhox/9KLZv3w6A2pUz69atwxtvvIF77rkH9fX16O/vx9ixY/Hud787Ib/wqFGjAID6lRm2BkuXLkVzczMWL16MY445BrfeeiueeuopGIaBhoaGIX2P6AvnF/rC+YW+cH6hN5xj6Ann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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 월별로 시간의 흐름에 따라 PM10, PM25 변수의 변화 추이 시각화\n", + "\n", + "import matplotlib.dates as mdates\n", + "\n", + "# 월별 평균 PM10, PM25 계산 함수\n", + "def get_monthly_trend(df, variable):\n", + " # 'year', 'month' 컬럼을 기준으로 월별 평균, Q1, Q3 계산\n", + " monthly = df.groupby(['year', 'month'])[variable].agg(['mean', \n", + " lambda x: x.quantile(0.25), \n", + " lambda x: x.quantile(0.75)]).reset_index()\n", + " monthly.columns = ['year', 'month', 'mean', 'q1', 'q3']\n", + " # 날짜 컬럼 생성 (월의 첫날로)\n", + " monthly['date'] = pd.to_datetime(monthly['year'].astype(str) + '-' + monthly['month'].astype(str).str.zfill(2) + '-01')\n", + " monthly = monthly.sort_values('date')\n", + " return monthly\n", + "\n", + "fig, axes = plt.subplots(1, 2, figsize=(16, 6))\n", + "variables_to_analyze = ['hm', 'PM25']\n", + "\n", + "for i, var in enumerate(variables_to_analyze):\n", + " if var in daegu.columns:\n", + " trend = get_monthly_trend(daegu, var)\n", + " ax = axes[i]\n", + " # 평균값\n", + " ax.plot(trend['date'], trend['mean'], 'o-', color='blue', label='평균값')\n", + " # Q1, Q3\n", + " ax.plot(trend['date'], trend['q1'], 's--', color='orange', alpha=0.7, label='Q1')\n", + " ax.plot(trend['date'], trend['q3'], 's--', color='purple', alpha=0.7, label='Q3')\n", + " # 선형 트렌드선\n", + " if len(trend) > 1:\n", + " z = np.polyfit(range(len(trend)), trend['mean'], 1)\n", + " p = np.poly1d(z)\n", + " ax.plot(trend['date'], p(range(len(trend))), \"r--\", linewidth=1, alpha=0.6)\n", + " slope = z[0]\n", + " ax.text(trend['date'].iloc[0], trend['mean'].max(), \n", + " f'월별 변화율: {slope:.4f}/month', fontsize=10, color='darkred')\n", + " ax.set_title(f'{var} 월별 변화 추이', fontsize=14)\n", + " ax.set_xlabel('날짜', fontsize=12)\n", + " ax.set_ylabel(var, fontsize=12)\n", + " ax.grid(True, linestyle='--', alpha=0.7)\n", + " ax.legend()\n", + " ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))\n", + " plt.setp(ax.xaxis.get_majorticklabels(), rotation=45)\n", + " else:\n", + " axes[i].text(0.5, 0.5, f'{var} 컬럼 없음', ha='center', va='center', fontsize=12)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e149d5dc", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Analysis_code/find_reason/ gwangju_trend.ipynb b/Analysis_code/find_reason/ gwangju_trend.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..37a66f6d17d36e0c5ad4fee1fe1a61967639e587 --- /dev/null +++ b/Analysis_code/find_reason/ gwangju_trend.ipynb @@ -0,0 +1,136 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 12, + "id": "26f60e36", + "metadata": {}, + "outputs": [], + "source": [ + "# 분석에 필요한 라이브러리 임포트\n", + "import pandas as pd\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from scipy.spatial import distance\n", + "\n", + "\n", + "# 한글 폰트 설정\n", + "plt.rcParams['font.family'] = 'NanumGothic'\n", + "plt.rcParams['axes.unicode_minus'] = False" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "28456d07", + "metadata": {}, + "outputs": [], + "source": [ + "gwangju = pd.read_feather(\"../../data/data_for_modeling/df_gwangju.feather\")\n", + "feature = ['hm','PM10','PM25','multi_class','year','month','hour']\n", + "gwangju = gwangju[feature]\n", + "gwangju = gwangju.loc[gwangju['year'].isin([2018,2019,2020,2021,2022,2023]),:]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "5b942b62", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABjAAAAJNCAYAAACflDzyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydd3wbVfa3n1GX3Gvs2Om9kO6EFgihlyUvIQklLLAshLZL24Wls8ACoZdl6eVHhwWy9F4TCBDSCKSQXlziuMpWl0bz/qFIsSzJlm3Z0jj34eMP0Z07M/fOV3c0c88950iKoigIBAKBQCAQCAQCgUAgEAgEAoFAIBCkEJpkN0AgEAgEAoFAIBAIBAKBQCAQCAQCgaA1woAhEAgEAoFAIBAIBAKBQCAQCAQCgSDlEAYMgUAgEAgEAoFAIBAIBAKBQCAQCAQphzBgCAQCgUAgEAgEAoFAIBAIBAKBQCBIOYQBQyAQCAQCgUAgEAgEAoFAIBAIBAJByiEMGAKBQCAQCAQCgUAgEAgEAoFAIBAIUg5hwBAIBAKBQCAQCAQCgUAgEAgEAoFAkHIIA4ZAIBAIBAKBQCAQCAQCgUAgEAgEgpRDGDAEAoFAIBAIBAKBQCAQCAQCgUAgEKQcwoAhEAgEPUhFRQUajYalS5cmuykh9uzZww033MCYMWNIT0+noKCA6dOn88wzzyDLcljdhx9+mEGDBkUcY82aNWg0GioqKuLeZjAYePvttxPbmb2Ul5ej0WhYsWJF1O3nnXcekiSF/Wk0Gmw2W1i9+++/n2HDhnW6HVu2bIk4jyRJnHnmmZ0+ZizuuOMODjjggIQfVyAQCAQCgUAgSCTNzc3cfffdTJw4kezsbHJycigrK+PBBx/E4XCE1X333XfR6XQR7yWNjY0x36tibRs+fDj3339/4ju0F71eH/P95rbbbov6XrB27dqwem+//TZ6vb7TbfB6veh0uojzHHzwwZ0+ZixeeeUVMjIyEn5cgUAgaI0wYAgEAkEP4vV6URQFj8eT7KYAUF9fz9SpU/n222+58847WbVqFV9//TXnnHMOt99+O3Pnzg2r7/V68Xq9EcfxeDwoitKhbbGOFY133nkHnU4Xc1vrh3yfzxezPQB3330369evD/vbsGED6enpnW5jNAYNGsSGDRsizvXQQw/Ftb/P5+POO+9k+PDhmEwm+vfvz9VXX43dbo+o29W2CgQCgUAgEAiSg8lkCptstlgsjB8/ngcffDBi4n7EiBFIksRll10W17FfeOEFJElCp9PhcrnCtn399decffbZDB8+HIvFwqBBgzj33HPZuXNn1GMde+yxUSfhJUli+vTpcbXH4/EwY8YMXnrpJf7xj3/w448/snTpUq666iqef/55Zs6cGfZM6/V6kWUZRVHCjhN83o/2XhVrm8fjift5efXq1UiSRHl5edzbfD5fzONfdtllUd8/Ro4cGVbP6/Xi8/niamM09Hp91PePN998M+5jPPnkk4wbNw6z2UxxcTELFiygpqYmop54/xAIBD1F9NkggUAgEOwXvP7663i9Xr766isMBkOofOzYsRxxxBEMHTqUX375hfHjx3f5XNEe/uPF5/NFvLy13BbPQ77T6eTxxx/H7/e3W7e0tJTTTz+9w+0MUlVVFTIyaLXaiO1NTU3Y7XaKioowm80xj3PGGWewZMkS7r//fiZPnsymTZu45pprWLx4Md9++y0mk6nTbRQIBAKBQCAQpAZut5vrr7+eM844Awg8t/7444/cdNNN/Pjjj7zxxhthdYuKinjxxRdZuHAhFoulzWM/9thj9OnTh+rq6ohn5nnz5nHSSSfxr3/9i4EDB7Jjxw5uvvlmJk+ezIoVK+jfv39EO2fNmsW//vWviPNkZmbG1dcvvviC3377jaqqKnJzc0Plo0aN4sQTT6S4uJiPPvqIWbNmxXW8tti9ezfbt28Pfe6IYSBYN9o+bW1rzb///W/cbne79TIyMrjwwgvjbl9rampqsFqtoc+tF385nU62bt1KQUFBm14Tf//733nyySe55557OPzww6mqquLGG2/kwAMPZNmyZeTl5XW6jQKBQNBZhAFDIBAI9mNkWUav10f1btBoAk56HVlVE81IUVVVBRD3qqzOUlRUFPp3NGNHU1MTjz76aFwGjAkTJnTJgHHyySezfPnyduuZzWa2bNlCcXFxxLYPPviAt956i2XLllFWVgbAyJEjmTRpEqNGjeKBBx7g+uuv73QbBQKBQCAQCASpQ3FxMWPHjg19LisrY/DgwZx00klccsklHH744aFtp5xyCq+++ir//e9/Offcc2Mec+3atSxbtoyrr76ae++9N2J7VVVV2HvA1KlTOeSQQ0LPmtG8hrOzs8Pa2VFkWUaj0WA0GiO2BcO6duT9o7WRAqChoQEgZBDqLsrKyqIuVmrJv//977i87/Pz87tkwLjkkkt466232q2n0+n44YcfmDJlSsS2X3/9lQceeIA33ngj5Ik/evRopk2bxpgxY7juuut46qmnOt1GgUAg6CzCgCEQCAT7MWeccQZ33303s2fP5uabb2b06NE4HA6+/fZbrr76ao466qioD7exaMtI8cUXX1BSUhL6PGrUqA63V5KkmNtavrjs2LEjwh27T58+bN26tcPn7Aw///xzm9u/+uorjj/+eE444YSoxguAF198kbKyspDxIkhJSQnz5s3jqaeeEgYMgUAgEAgEgl7MiSeeSE5ODp9++mmYAcNisXDWWWfx9NNPt2nAePbZZ5k2bRqjR4+Ouj3aIqa+ffsyffp0Vq5c2eX2R+OYY45h+PDhHHfccdx1111MnDgRWZb58ccfueGGGxg4cCAnnXRS3Mdry0jxwgsvMHXq1NDnI488ssPtjZb/L8h3333HgAEDQp+jeVZv3Lixw+fsDO2FiPrll1846qijGDZsGOPGjYta56WXXqKwsJBTTz01rDw9PZ0LLriAu+66i4ceeqhdrx+BQCBINCIHhkAgECSByspKzjnnHPr27YvBYKCkpISrrroqYnXOZ599hsFgoKKigrlz55KTk0N2djannnpqKDbt22+/zeTJkzGbzQwePJgXX3wx7nbk5+ezbNkySktLOe644zCbzRQUFHD11VezYMEC3n///Q71a9u2bSiKEvYXnMwfMmQII0eODP11hl27dkX8Pfnkk0AgdnDwL9qKrpYsWbKEWbNm0a9fPywWCyNGjOBvf/tbyFuku1izZg2nnXYaJ554Itdee21YOIDWBF8yonHyySezY8cOdu3a1V1NFQgEAoFAIBCkAKWlpdTW1kaUL1iwgKVLl0YkgQ7i9Xp5+eWX+fOf/9zhczqdzm6bpDYajXz77bccdthhnH766WRkZJCdnc15553HMcccw5IlSzoUJvXrr7+OeP8I5mvo379/2PtHZ5Jj//DDDxHvHx9++GGoLy3fQdpizZo1nHnmmQwaNAiz2cyQIUM4//zz2bx5c4fb1BG2bt3KRRddxLRp05g7dy5ffPFFWOjglvzyyy/MnDkz5InfkpNPPhmHw8GKFSu6tb0CgUAQDeGBIRAIBEngz3/+M0cccQSPPfYYffv2ZenSpVx//fV4PB4e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brqp3fZKktThfAwfffRRXCGfAAYOHEhRUVFY8vSWDBs2LO6ws5dffjnHHXcc1157LX/+85/p06cPFRUVPP744yxfvpxHHnkkYp94PR3S09N58sknGTZsWJvvVn369OHcc88NJX1vaGiI8G454IADeOedd6Lu/9FHH2EymZgyZUpc7RIIBIJEIgwYAoFAkCIEHyCDLy3RtrUmmP8hUWi12rDkdv/+979ZuHBh6PMvv/zCmjVr2jxG//7940ou3b9/f7777ru43NpHjRqF1WpFluWIh3mNRhPz+kTjnHPOIS0tjbvuuovrrrsOWZbJzs7myCOP5Lvvvuv0qqL6+nrq6+sZMWIELperwwn5ampqKCoqIj09HQh4yJx22mls2LAhLOl5XV0dr732Gn/961871U6BQCAQCAQCQepx7bXXcsYZZyBJEunp6fTv3z8ub4ELL7yQ8ePH8/vvvzNixAgAnn/+ec4///y4z2232/nDH/5A//79efrppzvc9ssuu4zrr7+er776qk0DRjRav39cffXVXHTRRaHP27Zt48MPP4wZ2gjgsMMOY8mSJe2eq6CggI8++oi8vLx26+bm5lJVVZWQ948jjzySzz77jJtvvpkHH3wQj8dDWloahx56KIsXLw4tHusoTU1N7Nmzh6FDh6IoSoffP+rq6sjLyyMnJweAM888k4ceeojPP/88LNyv2+3m6aef5rTTTgu9qwgEAkFPIgwYAoFAIKCpqQmHw8Hjjz+ORqMJJaZrzcSJE5k5c2abx1q9enVUN+iWOJ1OBg8ezM8//9yhJNRarZaPP/6YtLS0mK708TBnzhzmzJnDf//7X0477TT27NkT9uLUGa644gpeeumlLh3jzjvv5LrrrgNg9uzZzJw5kz/84Q8899xzlJWV8fvvv3PRRRdRXFzM3//+9y6dSyAQCAQCgUCQOhQXF3d48h/Ck3nfd999LF68mG3btnH22WfHtb/P52PevHk0NDTw008/xQx11BZms5mCggKcTmfc+9jtdpqbm7nuuuvw+/0x3z8GDRrEzTff3KYx5/3332/33LIsM2nSJBYvXtwhLwKtVsv3339PQ0MDJ510Utz7teaII45gyZIlLFu2jGnTprFq1apQmKjOct9993H77bd36RgLFiwI5eYoKyvjvPPOY/78+Tz//PPMnDmTiooKrrzySpqbm7s1sbtA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 월별로 시간의 흐름에 따라 PM10, PM25 변수의 변화 추이 시각화\n", + "\n", + "import matplotlib.dates as mdates\n", + "\n", + "# 월별 평균 PM10, PM25 계산 함수\n", + "def get_monthly_trend(df, variable):\n", + " # 'year', 'month' 컬럼을 기준으로 월별 평균, Q1, Q3 계산\n", + " monthly = df.groupby(['year', 'month'])[variable].agg(['mean', \n", + " lambda x: x.quantile(0.25), \n", + " lambda x: x.quantile(0.75)]).reset_index()\n", + " monthly.columns = ['year', 'month', 'mean', 'q1', 'q3']\n", + " # 날짜 컬럼 생성 (월의 첫날로)\n", + " monthly['date'] = pd.to_datetime(monthly['year'].astype(str) + '-' + monthly['month'].astype(str).str.zfill(2) + '-01')\n", + " monthly = monthly.sort_values('date')\n", + " return monthly\n", + "\n", + "fig, axes = plt.subplots(1, 2, figsize=(16, 6))\n", + "variables_to_analyze = ['hm', 'PM25']\n", + "\n", + "for i, var in enumerate(variables_to_analyze):\n", + " if var in gwangju.columns:\n", + " trend = get_monthly_trend(gwangju, var)\n", + " ax = axes[i]\n", + " # 평균값\n", + " ax.plot(trend['date'], trend['mean'], 'o-', color='blue', label='평균값')\n", + " # Q1, Q3\n", + " ax.plot(trend['date'], trend['q1'], 's--', color='orange', alpha=0.7, label='Q1')\n", + " ax.plot(trend['date'], trend['q3'], 's--', color='purple', alpha=0.7, label='Q3')\n", + " # 선형 트렌드선\n", + " if len(trend) > 1:\n", + " z = np.polyfit(range(len(trend)), trend['mean'], 1)\n", + " p = np.poly1d(z)\n", + " ax.plot(trend['date'], p(range(len(trend))), \"r--\", linewidth=1, alpha=0.6)\n", + " slope = z[0]\n", + " ax.text(trend['date'].iloc[0], trend['mean'].max(), \n", + " f'월별 변화율: {slope:.4f}/month', fontsize=10, color='darkred')\n", + " ax.set_title(f'{var} 월별 변화 추이', fontsize=14)\n", + " ax.set_xlabel('날짜', fontsize=12)\n", + " ax.set_ylabel(var, fontsize=12)\n", + " ax.grid(True, linestyle='--', alpha=0.7)\n", + " ax.legend()\n", + " ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))\n", + " plt.setp(ax.xaxis.get_majorticklabels(), rotation=45)\n", + " else:\n", + " axes[i].text(0.5, 0.5, f'{var} 컬럼 없음', ha='center', va='center', fontsize=12)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e9b71ce7", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Analysis_code/find_reason/ incheon_trend.ipynb b/Analysis_code/find_reason/ incheon_trend.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..b767250447669b29634ff0cb544a63f87e3ac090 --- /dev/null +++ b/Analysis_code/find_reason/ incheon_trend.ipynb @@ -0,0 +1,157 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 11, + "id": "26f60e36", + "metadata": {}, + "outputs": [], + "source": [ + "# 분석에 필요한 라이브러리 임포트\n", + "import pandas as pd\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from scipy.spatial import distance\n", + "\n", + "\n", + "# 한글 폰트 설정\n", + "plt.rcParams['font.family'] = 'NanumGothic'\n", + "plt.rcParams['axes.unicode_minus'] = False" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "28456d07", + "metadata": {}, + "outputs": [], + "source": [ + "incheon = pd.read_feather(\"../../data/data_for_modeling/df_incheon.feather\")\n", + "feature = ['hm','PM10','PM25','multi_class','year','month','hour']\n", + "incheon = incheon[feature]\n", + "incheon = incheon.loc[incheon['year'].isin([2018,2019,2020,2021,2022,2023]),:]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "84183ace", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['hm', 'PM10', 'PM25', 'multi_class', 'year', 'month', 'hour'], dtype='object')" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "incheon.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "5b942b62", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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0wJGeno6zjnnnC67dfvunBJFEbW1taiqqsK+ffuwa9cu5U6kcL3yyit45ZVXQj4+YcIEHHPMMXjwwQfD2p5Go8H777+P66+/HscffzycTid0Oh3OOOMMPPnkk3T3EyGEEEIIASBfhP7HP/6BJUuW4KWXXsIpp5wS9vBGl1xyCdasWYM1a9aEPbxSRy0tLWhoaAg53GswV199NV544YWw1h01alSnvcDT09ORnp7e5XbMZnO3vn+8+uqr2LFjR5cFjHPPPbfLIXJ93z8kSUJDQwOqq6uxf/9+7Nq1C16vN6Kbu+666y7cddddIR/3DRn87rvvhr3NZ599FkVFRTj33HPR3NwMjuNw/PHH4/vvvw86DDIhhMQDFTAIIYTgiy++CGu9W2+9FcuWLetyvcbGxk6/HDgcDgDypHWxkJmZiddff91v2ZNPPomHH35Y+dLg9XrR0tICQP4yo9VqkZOTgz59+qB///5+3aYTxWKx4KmnnsITTzyBuro6ZGVlxex3RgghhBBC2DR//nxce+21ePnll/HOO+/g7bffDut5t912G1577TV89tlnGD58eLdf/5///CfS0tKCznERyvPPPx/WcFUvvPACLrrooi7Xa2lp6bQXhiAIcDqdMT2X7tgbe8WKFbjmmmuU4a94nkdbWxsAYNiwYeA4Djk5OSguLkb//v1RXl4es7aFS6fT4e6778add96Juro6pKWlwWw2J7pZhJBejgoYhBBC8OSTT+LGG28Mq9v3qaee2unj8+fPx1tvvdXldkpLSzFx4sSw29hT8+bNw+jRoyGKIjiOg1arhclkQmpqKnJycpCVlRXQNb39/B+JpNVqw76LjhBCCCGE9C6+ybyvvvpqZGdn48QTT+zyOa+//jruvvtu3HzzzcjJycHWrVv9Huc4DsOHD/eb62HevHmYM2cOBg0aBI7jsGvXLjzzzDNYt24d3n77baSlpYXd5v/+9784//zzYbPZulx31KhRnT5+00034b777utyO3l5eSEn5Y6FY445Bi+//LLf9w+j0YiUlBRkZ2cjJycnYC6NN998M27t64xGo0F+fn6im0EIIQCogEEIIXGl1+vBcVzQ+RaCPWYwGDpdP9RynS6yt/dPP/0Uxx57LJ566qku299V1/L169fjpptuitkYqVqtFvX19WFNUqfRaJSu7AUFBVQEIIQQQgghqhPq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RVEAAPfeey86Ojpw/fXXw+FwYMWKFTjnnHNw4YUXoq6uDs888wyef/552GwkZa4xktIAwJ133om6ujrcc889sNvteP3113HcccfhiiuuQEtLC5YtW4alS5fC5XLluNQEQHVOVCJfnqSbOBgdGNJOPHRdhyzztS+km7VpaGhAZWVl6P+R7SX1UfID6tuICY0nxIXqnLjQmEI8aDwhNjSmEAOrjSckRss1csoTTzyBXbt2QZZlfOtb38IxxxwT+u6hhx7Cs88+i2effRajR48GAOzduxfLli3DmjVrYLPZ8JOf/AQTJkzIVfHzlmeeeQY+nw82mw3HHXdcSB+A6/bcc8/h6aefxpgxY0Lbn332WezYsQN+vx+LFy/GoYcemoui5z3//Oc/AfBBxumnnw6PxxP6juqcdWlra0NxcXHM70g3a/P+++/D7XaDMYYjjjgCQLjzQ9pZlzfeeANtbW1QVRVnnXVWaBUUQHXO6tx666145513cMstt+Coo46K+o76KAMTGk+ICY0nxIXGE+JCYwoxofGEuNCYQkwsOZ5IPf83kS633347mz17Nnv++efZ+eefzy699FLW3t7OGGPs008/Zd/97nfZzp07GWOM+f3+XBaViODWW29ls2bNYk888QRbuHAh+9///V92++23M8YY2759OzvvvPNCugUCgVwWlejBrbfeyo4++mj25z//mR111FHsF7/4BXvggQcYY4ytXbuWnXLKKVTnLMh9993Hvv3tb7M1a9b0+u6zzz6jttLC3HLLLezII49k5513HqutrWX3339/6Dt6z1kXQ7fLL7+c1dbWsuuuuy70HelmfS699FJ29NFHs/PPP5+9/fbboe2rV69m559/PvVRBhg0nhATGk+IC40nxIXGFGJC4wlxoTGFuFhxPEEGjBzxj3/8g82dO5e1tbUxxhjbvXs3Gzp0KPv8888ZY4zpus5aWloYY4ypqhr6na7r2S8sEeL1119nc+bMCenW0dHB3n77bTZ//nz2+9//njEW1ihSNyL3fPLJJ+zoo49mHR0djDHGGhsb2XPPPccWL14cepEamlGdsxa33347q66uZldddRVbt25d1HfUVlqXu+++mx133HHM5/MxxvjAsLq6OtQBIu2syS233MLmzZsXmgCtr69nY8eOZa+99hpjjOvT1NTEGCPdrIahwb333ssWLFjAHn30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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 월별로 시간의 흐름에 따라 PM10, PM25 변수의 변화 추이 시각화\n", + "\n", + "import matplotlib.dates as mdates\n", + "\n", + "# 월별 평균 PM10, PM25 계산 함수\n", + "def get_monthly_trend(df, variable):\n", + " # 'year', 'month' 컬럼을 기준으로 월별 평균, Q1, Q3 계산\n", + " monthly = df.groupby(['year', 'month'])[variable].agg(['mean', \n", + " lambda x: x.quantile(0.25), \n", + " lambda x: x.quantile(0.75)]).reset_index()\n", + " monthly.columns = ['year', 'month', 'mean', 'q1', 'q3']\n", + " # 날짜 컬럼 생성 (월의 첫날로)\n", + " monthly['date'] = pd.to_datetime(monthly['year'].astype(str) + '-' + monthly['month'].astype(str).str.zfill(2) + '-01')\n", + " monthly = monthly.sort_values('date')\n", + " return monthly\n", + "\n", + "fig, axes = plt.subplots(1, 2, figsize=(16, 6))\n", + "variables_to_analyze = ['hm', 'PM25']\n", + "\n", + "for i, var in enumerate(variables_to_analyze):\n", + " if var in incheon.columns:\n", + " trend = get_monthly_trend(incheon, var)\n", + " ax = axes[i]\n", + " # 평균값\n", + " ax.plot(trend['date'], trend['mean'], 'o-', color='blue', label='평균값')\n", + " # Q1, Q3\n", + " ax.plot(trend['date'], trend['q1'], 's--', color='orange', alpha=0.7, label='Q1')\n", + " ax.plot(trend['date'], trend['q3'], 's--', color='purple', alpha=0.7, label='Q3')\n", + " # 선형 트렌드선\n", + " if len(trend) > 1:\n", + " z = np.polyfit(range(len(trend)), trend['mean'], 1)\n", + " p = np.poly1d(z)\n", + " ax.plot(trend['date'], p(range(len(trend))), \"r--\", linewidth=1, alpha=0.6)\n", + " slope = z[0]\n", + " ax.text(trend['date'].iloc[0], trend['mean'].max(), \n", + " f'월별 변화율: {slope:.4f}/month', fontsize=10, color='darkred')\n", + " ax.set_title(f'{var} 월별 변화 추이', fontsize=14)\n", + " ax.set_xlabel('날짜', fontsize=12)\n", + " ax.set_ylabel(var, fontsize=12)\n", + " ax.grid(True, linestyle='--', alpha=0.7)\n", + " ax.legend()\n", + " ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))\n", + " plt.setp(ax.xaxis.get_majorticklabels(), rotation=45)\n", + " else:\n", + " axes[i].text(0.5, 0.5, f'{var} 컬럼 없음', ha='center', va='center', fontsize=12)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e149d5dc", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Analysis_code/find_reason/ seoul_trend.ipynb b/Analysis_code/find_reason/ seoul_trend.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..173def5e11f934b134edfe6cb7c7246a81fa8f0c --- /dev/null +++ b/Analysis_code/find_reason/ seoul_trend.ipynb @@ -0,0 +1,157 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 6, + "id": "26f60e36", + "metadata": {}, + "outputs": [], + "source": [ + "# 분석에 필요한 라이브러리 임포트\n", + "import pandas as pd\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from scipy.spatial import distance\n", + "\n", + "\n", + "# 한글 폰트 설정\n", + "plt.rcParams['font.family'] = 'NanumGothic'\n", + "plt.rcParams['axes.unicode_minus'] = False" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "28456d07", + "metadata": {}, + "outputs": [], + "source": [ + "seoul = pd.read_feather(\"../../data/data_for_modeling/df_seoul.feather\")\n", + "feature = ['hm','PM10','PM25','multi_class','year','month','hour']\n", + "seoul = seoul[feature]\n", + "seoul = seoul.loc[seoul['year'].isin([2018,2019,2020,2021,2022,2023]),:]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "84183ace", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['hm', 'PM10', 'PM25', 'multi_class', 'year', 'month', 'hour'], dtype='object')" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "seoul.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "5b942b62", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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9tln4/bbb8dvf/tb5OXloba2Fi+++CI2btyIv//9736PCbWnQ0pKCl5++WUMGzasx2utvLw8XHHFFdKk721tbX69W8aOHYtVq1YFfPxnn30GrVaLyZMnh1QuQgiJBmrAIISQGPN+YfRepARa1513/odIYVnWZzK75557DsuWLZN+37ZtG7Zv397jPoqKikKaXLqoqAjff/99SN3YR44cCbPZDJ7n/b68KxSKoK9PIL/5zW9gMBjw6KOP4o477gDP80hPT8fs2bPx/fff9/kuotbWVrS2tmLEiBFwOBxhT8DX3NyM/Px8pKSkAPD0kLn44ouxZ88en0nPTSYT3n33Xfz+97/vUzkJIYQQQkjiu/3227Fo0SIwDIOUlBQUFRWF1Fvg2muvxfjx47F3716MGDECAPDPf/4TS5cuDfm5rVYrzj//fBQVFeGVV14Ju+w33XQT7rzzTnzzzTc9NmAE0v165LbbbsN1110n/X748GH897//DTq0EQCceuqpWLduXa/PlZOTg88++wxZWVm9bpuZmYn6+vqIXI/Mnj0bq1evxr333ounn34aLpcLBoMBp5xyCtauXSvdTBYui8WCpqYmlJeXQxTFsK9HTCYTsrKykJGRAQBYvHgxnnnmGXz11Vc+w/86nU688soruPjii6VrF0IIiQdqwCCEkAHEYrHAZrPhxRdfhEKhkCai627ChAmYNWtWj/vaunVrwG7PXdntdpSVlWHDhg1hTULNsiw+//xzGAyGoF3nQzF//nzMnz8f77//Pi6++GI0NTX5XCj1xS233IK33nqrX/t45JFHcMcddwAA5s6di1mzZuH888/H66+/jsrKSuzduxfXXXcdCgoK8Kc//alfz0UIIYQQQhJXQUFB2JX/gO9k3n/729+wdu1aHD58GJdffnlIj+c4DgsXLkRbWxt+/vnnoEMd9USn0yEnJwd2uz3kx1itVnR0dOCOO+6AIAhBr0dKS0tx77339tiY85///KfX5+Z5HhMnTsTatWvD6kXAsix++OEHtLW14bzzzgv5cd3NnDkT69atwy+//IKpU6diy5Yt0jBRffW3v/0NDz30UL/2cc0110hzc1RWVuKqq67CkiVL8M9//hOzZs1CbW0tbr31VnR0dER1YndCCAkFNWAQQsgAMm/ePHz99dchbXv++efjk08+Cbo+nF4hvTV0BPLss88iPz+/xwYMo9GIRYsW9dqN23unlCAIaGpqQl1dHY4cOYL9+/dLdx6F6s0338Sbb74ZdP3kyZNx2mmn4W9/+1tI+1MoFPj444/xpz/9CWeddRbsdjuUSiXmzZuH559/nu52IoQQQgghAV1zzTX4y1/+gkceeQSvv/46zjvvvJCHN7r22muxfv16rF+/PuThlbozm80wmUxBh38N5JZbbsGrr74a0rZjx47tsVe40WiE0WjsdT86na5P1yNvvfUW9uzZ02sDxqWXXtrrkLne6xFRFGEymVBfX4+qqirs378fbrc7rJu9HnzwQTz44INB13uHEP7www9D3ufLL7+MQYMG4dJLL0V7ezsYhsFZZ52FH374IeCwyIQQEkvUgEEIIQPIV199FdJ2d999N955551et2ttbe3xYsBmswHwTFIXDRkZGVixYoXPsueffx5PPfWUdJHgdrthNpsBeC5eWJZFdnY2hgwZgtLSUp9u0vGi1+vxj3/8A8899xyam5uRmZkZtdeMEEIIIYQkh0suuQR/+MMf8MYbb+CDDz7A+++/H9Lj7r33Xrz99tv48ssvMXLkyD4//1133YW0tLSAc1wE88orr4Q0XNWrr76Kq6++utftzGZzj70weJ6H3W6P6nfr7r2zV61ahVtvvVUa/orjOHR2dgIAKioqwDAMsrOzMXjwYJSWlqKysjJqZQuVUqnEQw89hAceeADNzc1IS0uDTqeLd7EIIQQANWAQQsiA8vzzz+PPf/5zSN28zz///B7XX3LJJXjvvfd63U9JSQmmTJkSchn7a/78+Rg3bhwEQQDDMGBZFlqtFqmpqcjOzkZmZqZfV/Su83/EE8uyId81RwghhBBCBjbvZN633HILsrKyMGfOnF4fs2LFCjz00EO44447kJ2djR07dvisZxgGI0eO9JnrYf78+bjwwgtRXl4OhmGwf/9+vPTSS9i4cSPef/99pKWlhVzmf//737jiiitgsVh63Xbs2LE9rr/99tvx2GOP9bqf3NzcoJNyR8Npp52GN954w+d6RKPRICUlBVlZWcjOzvabS+Nf//pXzMrXE4VCgby8vHgXgxBCfFADBiGERIFKpQLDMAHnWwi0Tq1W97h9sOVKZXgf41988QVOP/10/OMf/+i1/L11Jd+0aRNuv/32qI2JyrIsWlpaQpqUTqFQSF3X8/PzqRGAEEIIIYQkvGDf8wNRq9UBexFce+21ePHFF3Httdf6VYqr1WooFAqfibC/++47AMCjjz4a9Ht8TU0NBg8eLP2enp6O+++/H/X19eA4DoMGDcJpp52Gl19+Oez5O/73v/+hvLwcH3/8cY/bKZVK5OTk9LjNpk2bcMkll+Ddd98NqwyhYlkWZrM5pOsRhmFQUlIClmWRnp7er3n8CCGE+KIGDEIIiYLBgwdDEISQ102bNi3o9sGGfTr55JPhdrvDKhfDMEGfpyu3243a2lrk5+cHbSRRKBQwm82oqanpdX8GgyHsuSZmz56Nu+66K6RJ7hiGQXNzM7KyssJ6Dq9wLh5jua947J8QQgghhMRGOPMy7Nu3L+Byb8/jQBYvXozFixf7LFu+fDmWL18eeiGBkOesCAXDMOB5HqIo9jhBN8dxqK+vR05ODjQaTcBtFAoFrFZrSNcjWq0W2dnZYZXV25Mi1Em3N23ahIkTJ4b1HF59uTmtp31FE12PEEJijRFFUYx3IQghhMTG888/j9tuuw0OhyOk7f/3v/9h1qxZAdf9/ve/x8svvxxSI8oZZ5yB1atXh1VWQgghhBBCSHJZtWoVLr/8cnR0dIS0/WuvvYarrroq4LonnngC99xzD5xOZ6/7GTZsWNBGIEIIIYmNGjAIIYQQQgghhBBCCCGEEJJwFL1vQgghhBBCCCGEEEIIIYQQElvUgEEIIYQQQgghhBBCCCGEkIQzICbxFgQBdXV1SE1N7XGSKEIIIYQQQog/URTR0dGBQYMGQaGge6AAusYghBBCCCGkr8K5vhgQDRh1dXUYMmRIvItBCCGEEEKIrB09ehSFhYXxLkZCoGsMQgghhBBC+ieU64sB0YCRmpoKwPOCpKWlxaUMHMdhy5YtmDBhApTKAfGyJw3KTr4oO3mj/OSLspMvyk6+op2dxWLBkCFDpO/VhK4xSP9QdvJF2ckXZSdflJ28UX7yFc3swrm+YERRFCP67AnIYrHAaDTCbDbH7eJCFEWYzWYYjUbqYi4zlJ18UXbyRvnJF2UnX5SdfEU7u0T4Ph0uu92OZcuW4dNPP4UgCHA4HHjhhRcwa9YsAEB9fT2WLl2KmpoaCIKAG2+8Edddd13I+0+E14TOWfmi7OSLspMvyk6+KDt5o/zkK5rZhfNdmpq9YoRhGKSnp8e7GKQPKDv5ouzkjfKTL8pOvig7+aLsfHEchzlz5mDmzJlYv349NBoNRFEEz/PSNvPmzcONN96IJUuWoKOjA2eccQaKiopwzjnnxLHk4aHc5Yuyky/KTr4oO/mi7OSN8pOvRMmOZuCLEY7jsGHDBnAcF++ikDBRdvJF2ckb5SdflJ18UXbyRdn5euutt2A0GnHfffdBo9EA8FyAebu+b9++HTzPY8mSJQA8w0E9+OCDWL58edzK3BeUu3xRdvJF2ckXZSdflJ28UX7ylSjZUQ+MGOp6xxeRF8pOvig7eaP85Iuyky/KTr4ou+P+9a9/4eabbw66/uuvv8aMGTN8lk2fPh3z58+HKIoBu8g7nU44nU7pd4vFAsBzYee9qFMoFFAoFBAEAYIgSNt6l/M8j64j+AZbzrIsGIbxu1hkWRbA8ax5ngfHcRBF0a+HCQAolUq/5QzDgGVZvzIGWx7rY+ptebIckzc7nueT5pi6SvZj8maXTMfUW9mT5Zi82SXTMSVjTt2PCYBPdslwTMmYU7BjAoLnJ9djSsacAh2TIAjS95auInFM4TSKUANGFzzPw+12R2Xf3lAcDseAmrBGpVJJb1JCCCGEEEJiYdu2bdDpdJg3bx7279+P7Oxs/PnPf8bZZ58NAKirq0NxcbHPY3Q6HbRaLZqampCXl+e3z0cffRQPPPCA3/ItW7bAYDAAAHJycjB06FAcPnwYzc3N0jaFhYUoLCzEvn37YDabpeVlZWXIzc3Fjh07YLfbpeUVFRVIT0/Hli1bfC70xo0bB7VajY0bNwLwjEvc3t4OQRBgt9uxfft2aVuWZVFZWQmz2Yw9e/b4HOf48ePR0tKCQ4cOScuNRiNGjhyJuro61NTUSMtjfUxekydPhsvlStpj8ma3bds2TJkyJSmOKRlzCnRMu3fvRnt7OzZv3gy9Xp8Ux5SMOQU6JpPJJGXHMExSHFMy5hTomIYNGwaHwyFllwzHlIw5BTum4uJi2O12n/wS7ZjGjBmDhoYGHD16VFqempqKoUOHoqGhAQ0NDdLyzMxMFBUVobq6Gq2trdLy/Px85Ofn4+DBg+jo6JCWDxkyBFlZWdizZw8cDofPsaalpeHXX3/1OaYRI0ZApVJhx44dPsc0ZswYuN1u7N271+eYxo4dC4vF4pOHVqtFRUUFTCZTv44pJycHALBv3z5YrdY+H1OgnLrurzc0iTc8X/wbGhrQ3t4etTKIogiXywW1Wj3gJqxJT09Hfn6+bI+b4zhs3LgRkydPHlCNT8mAspM3yk++KDv5ouzkK9rZJcKE1eFQqVQ49dRT8cILL6CiogLbt2/HeeedhzfffBOnnXYali5diqlTp+Lqq6/2eVxRURHWrFmD0tJSv30G6oExZMgQmEwm6TWJRw+MzZs3S7nTXYbyOSZvdhMnTgw4R4scj6mrZMkp0DG5XC4pO6VSmRTHlIw5BToml8uFTZs2YeLEidLzyf2YkjGnQMckiiI2bNggZZcMx5SMOQU7JkEQguYX72MSRRFNTU2wWCw+z9f1uKK13FtPGs3lkSi7tz67L8dkNBqRm5srXZ90zcNisSArKyuk6wtqwABQX1+P9vZ25ObmQq/XR6WiXRRFCIIAhUIh24r8cImiCJvNhqamJqSnp6OgoCDeReoTURRht9uh0+kGTHbJgrKTN8pPvig7+aLs5Cva2cmtAUOj0eCTTz7BWWedJS17+umnsWXLFrz55pu48cYbUVFRgd///vc+j8vJycGvv/6K/Pz8Xp8jEV4TOmfli7KTL8pOvig7+aLs5C2R84tFnbCc9bU+O5Q64XC+Sw/4W+t4npfeqFlZWVF7nq7tRAPpZNDpdACApqYm5ObmynY4qUAtjUQeKDt5o/zki7KTL8pOvii743JzczF8+HCfZeXl5Vi9ejUAz7AF1dXVPuvtdjs6OzuRm5sbs3JGAuUuX5SdfFF28kXZyRdlJ2+JmF+s6oTlrD/12ZGsE1b0+ZFJwjvnhV6vj/pzhTO2VzLxvrbRml8k2niex8aNG/26nZHER9nJG+UnX5SdfFF28kXZ+aqsrMSvv/7qs2z//v0oLy8HAEybNg1r1qzxWb927VpUVlZKk03KAeUuX5SdfFF28kXZyRdlJ2+Jml8s64TlrD/12ZGqE5bPt/MoG0i9ImKNXltCCCGEEBJLN9xwA+68805pcsLdu3fj73//O2688UYAwKmnngq324133nkHANDR0YH77rvPb0gpQgghhBCS3KjeMnoi9doO+CGkCCGEEEIIIcnl9NNPxy233IJTTz0VCoUCBoMBL730EioqKgB4LqZWrVqFa665BsuWLQPP81i6dCkWLFgQ55ITQgghhBBCuqIGjAjieWDdOqC+HigoAKZPB2Q65QMhhBBCCCGytnTpUixdujTo+uLiYnz55ZcxLBEhhBBCCElGVCccXTSEVISsXAmUlAAzZwKLF3v+LSnxLPcyGAwxL9cZZ5yBbdu2RW3/a9euTfo71ViWxeTJk2U7AflARtnJG+UnX5SdfFF28kXZDUyUu3xRdvJF2ckXZSdflJ28JXt+odQJx0Ok6oSD1WfHsk6YemBEwMqVwPz5QJeJ2QEAtbWe5R9+CFx0ESAIQsQmBWxpacHMmTNhMpnAcRxyc3PhcDhQX1+P8vJyrF27FkajEW6322eilJtuugmrV68OuM+Ojg5cfPHFeOqpp6Rld955J1Z2OeMEQUBrayt27tyJvLw8uFwu2U7OHQ6XywWdThfvYpA+oOzkjfKTL8pOvig7+aLsBibKXb4oO/mi7OSLspMvyk7ekjW/UOqE586N7HMOxDphasAIQBQBmy20bXkeuOkm/zeqdz8MA9x8MzB7NuBw2GEwGBBs/hK9HkHXdZednY1ff/0Vzz//PBoaGvDXv/4VW7duxS233ILVq1djypQp4DgOhw8f9nnc3//+96D7/O677/D000/7LHvkkUfwyCOPSL/bbDYUFBTEpTdJvPA8j+3bt2Py5MlQKumUkRPKTt4oP/mi7OSLspMvym5gotzli7KTL8pOvig7+aLs5E1O+UWjTvj003sfTipR64QffvhhWK1WGAwG2O32uNUJJ/a7Jk5sNiAlJTL7EkWgpgZIT2cA9LzTzk4gEu8BtVqNrVu3AgBOO+20kB9nsViQm5vb4zbvvvsuZs+ejZQuL9D//vc/VFRUYPz48Xjvvff6UmRCSARZm61wWpxB12vSNDDkDJxGSEIIIYSQZELf9QghhJDoiEadsNHY+7ZUJ9wzasBIQi6XC5deeikEQcDOnTtDflxtbS3KysqCrt+/fz/uuecefPPNNz7LZ8+ejVWrVvW1uISQCLI2W7Fy8UrYTMFvGdBn6TF3xVy6sCWEEEIIkRn6rkcIIYSQYJK1TpgaMALQ6z0tX6FYuxY455zet/vsMxGTJtmg1+vBBOkTpNeHUcgeOBwOXH311SgoKMCVV14Z8uN2796NWbNmBVz33Xff4aqrrsLy5ctRUVERmYLKSLJONDQQDLTsnBYnbCYblBollDr/j3jOzsFmssFpccrionag5ZdMKDv5ouzki7IbmCh3+epLdsn2XU+u6LyTL8pOvig7eZNLftGpEwZOPbX3542EaNQJr1u3DjfeeGNc64SpASMAhgm9286ZZwKFhZ7JWQKNecYwnvVnnsmAZSP3BXLXrl245JJL0NbWBp7n8cknn0CtVkMURSxevBizZs3CGWecIY1L9sQTT+CNN96QHl9XVwe9Xo/09HQAwIEDB1BcXIxvvvkGd999NxYuXIh7770XO3fuxMMPP4zdu3dj5cqVOOGEE3zKoVarodVqI3ZciUipVKKysjLexSB9MJCzU+qUUBvUAddxTi7GpembgZyf3FF28kXZyRdlNzBR7vLV3+yUOiVUOhVsrTZojVqwquMVQ3L5ridXdN7JF2UnX5SdvMkpv+jUCfc+B0Y4BmKdMDVg9BPLAs8+65lZnmF837DejhbPPAMoFCI4jgfLskF7YIRj1KhR2L59e6/bVVZWIjMzE7fddhtuu+02afl1112HE088EVdccQUAYMyYMfj0009RUlLi8/g777wT55xzDl5//XXpTclxnDTpTnl5Od55551+H08iE0URZrMZRqMxItmR2KHsALfNDc7BQZ2q9rmwlQPKT74oO/mi7OSLshuYKHf5ikR2ljoLOus6wWpY5I/Pj3AJSTB03skXZSdflJ28JWt+odYJR7rzSSzrhOfMmYPly5dLjSHxqhNWxORZktzcucCHHwKDB/suLyz0LJ871/O7w+GIWhk+/PBDzJw5EyNHjkRFRQVGjRqF3/3ud7jhhht8xjCrqqoKa78ff/wxampqpIlYjh496tOl6IILLsDevXsjcxAJiud57NmzBzzPx7soJEyUHdB+pB2tB1rh6nDFuyhho/zki7KTL8pOvii7gYlyl69IZGdvtXv25aT8Y4nOO/mi7OSLspO3ZM4v1DrhaIp2nbC3kSKedcLUAyNC5s4FLrwQWLcOqK8HCgqA6dMj38oWyKuvvopXXnkFb7zxhjQWmc1mw1tvvYVTTz0V27ZtQ2ZmJgDg7LPPxtdffx3W/kVRhHisGZHneQiCIK2rq6uTWt4IIYmH1bBAJ8C5aCgBQgghhJCkIvS+CSGEEEKii+qEo496YEQQywKnnQYsWuT5N1bz03z66af4wx/+4DORil6vx7XXXovRo0dj48aN0nLvG+/aa6/F7NmzpeVPPfUU8vODdzv+y1/+gvLycpx22mnSsk2bNqG+vh4rV66M7AERQiLC3mqH2+oGAPCO5LvTgRBCCCFkIBMDDbhNCCGEkJhL5jrhe++9F8OGDYtrnTA1YMSQQhGdl/vcc8/FCy+8gEOHDknLnE4n3nzzTezZs8dnohzvWHMTJkzAkCFDpOVnnnlmjxOvPPbYYzhw4AC+++47AJ4xz26++Wa8/PLLePvtt/Hzzz9H+KgSB8Mw0Ol0STVO30AxkLPj7BzajrTB1emCwAlwdjrhsrrA2eXTE2Mg5yd3lJ18UXbyRdkNTJS7fPU3O87OQZehA6NkYMgzwGV1ye67nlzReSdflJ18UXbyRvlFTyzqhB966CHs378/rnXCNPZPjDAMA71eH5V9X3311UhLS8NVV12F5uZmiKIIhUKBGTNm4LvvvkNGRoa07ejRozFz5kxoNJqg5fzqq698Wt6Ki4tx++23Y9myZXA4HDjppJNw3nnnYcKECbjmmmtQWVmJ+fPn48UXX8SZZ54ZlWOMJ5ZlMX78+HgXg/TBQMxOk6aBPksPa5MV7k63tNzV6YKj3TMPjz5LD01a4M+ARDIQ80sWlJ18UXbyRdkNTJS7fPU1O+93PZvJBoVKgZS8FACQvucB8vmuJ1d03skXZSdflJ28UX7RE+064ZKSEtxzzz14+umn41onzIgDoN+pxWKB0WiE2WxGWlqazzqHw4HDhw+jtLS0x9am/hJFUZqpPRlaHL/++mucfvrp0u+tra1gWRZGo9Fv21i9xtEiCAJaWlqQnZ0dtV40JDoGanbWZiuq11Xjl+d/AcMyEHkRrIrFnBfmgGEYaNI0MOQY4l3MXg3U/JIBZSdflJ18RTu7nr5PD1SJ8JrQOStf/cnO2myF0+IMul4u3/Xkis47+aLs5Iuyk7dEzU/u9ZWxEKg+O1J1wuF8l06cd80A4HQG/5IpN13fqACQmZkZ8I2aDARBwKFDh3wmqiHyMFCzM+QY4OxwQm1QY9icYVCnqMGqWRiyDcgcmimbC9qBml8yoOzki7KTL8puYKLc5as/2RlyPN/plFol6jbUoXF7IzKHZko/cvmuJ1d03skXZSdflJ28UX7y1r0+Ox51wjSEFCGEJKHmnc0AgLzxecgZlQONUQOllj7yCSGEEEKSxX+v+6/0/5EXjYxjSQghhBBCoodqswghJMnwLh6t+1sBADmjcpBakBrnEhFCSHzQMCuEkGQ1AEaCJoQQQggBQA0YMcWybLyLQPqAYRgYjcakmLtkoBmo2bUdaoPACdAYNUjJT4l3cfpsoOaXDCg7+Uqm7KzNVqxcvBI2ky3oNvosPeaumJsUjRjJlB0JHeUuX/3Nzm1z+/wuiiK9D2KEzjv5ouzki7KTN8pP3hKhPpsaMGKEYRjodLp4F4P0AcuyGDmSumTL0UDNLmtEFi547QJYm6xgGAY2kw0te1qg0qtQMKEg3sUL2UDNLxlQdvKVTNk5LU7YTDYoNUoodf5feTk7B5vJBqfFmRQNGMmUHQkd5S5f/c3ObfVtwOBdPJQauryPBTrv5Iuyky/KTt4oP/lKlPpsmsQ7EhzNQMfB4D+OZoiiCJfLRV19ZUgQBNTU1NBkQzI0ULNjGAaGXANyx+QCABq2NuCHZT9g98rdcS5ZeAZqfsmAspOvZMxOqVNCbVD7/QRq1JCzZMyO9I5yl6/+ZufqdPn8zrv4SBSLhIDOO/mi7OSLspO3pM4vhDphOUuU+uzkunKLB0czsH4x4DQF30aTBZz0Dly8HiqVKqJP73K58OSTT+K9994DAPA8jzlz5uDee+9FSor/0DGvv/46rr/+euzduxclJSURLUuy8n7Q5ufnQ6GgNj85oew8UvI8nwXWRmucSxIeyk++KDv5ouzki7IbmCh3+epvdi6rbwOG4E7CSqEEReedfFF28kXZyVvS5hdqnfC0FYA2J+JPH6s6YZfLFfH67HAl0bsmTtwWzxtVoQFU6f4/Co1nvdsS8acWBAEXXXQRjhw5gu+//x5bt27Fxo0bYTAYMHPmTNjtdp/t77nnHnzwwQfIyMgAx3ERLw8hJP4sNRas/eta7Pt0n7TMkOsZGsXWbIt7qzkhhMSDIAiwtdjgtrshgj4HCSHy170HBuek6ztCCCEkpqhOOGaoAaMnvKOHH98vjGA1gFLn/8NqgO4VhoH21wfvvPMOWltb8dJLL0ktaxqNBvfddx/Kysrw9NNPS9sKgoCCggJ8+umn0Gq1fXo+Qkjia9rRhNqfa3H0x6PSMl2WDgzLQOAE2E32Hh5NCCHJibNxaDvUBtNeExjQ5IGEEPnTZepQMrMEeSfk4Yy/nQF9lj7eRSKEEEKSB9UJJxQaQqon6xYEX5c1GRh73/Hf23cCTID2IJEDFJ5uNkrlsZf7p9/6t76d9p+wi/fGG2/glltuAcP4X4jfeuutuPzyy3HnnXcCABQKBW644Yawn4N4XrucnJzk6uY2QAzE7Jp3ecZXzBl1vHuiglVAn62HtdEKa5MV+mx5XOAOxPySBWUnX8mancvmucjgXTxaD7bCWGSMc4kiL1mzIz2j3OWrv9llj8hG9ojsCJeKhILOO/mi7OSLspM3WeYX4TphiQzrhKX67DhKiHeO2+3GAw88gPHjx2PUqFGYOXMm9u7dK62vr6/Hueeei/Hjx2Ps2LF46aWX4ljavmEYBlqtNuAbq6+2bNmCysrKgOsmTZqEgwcPorOzM2LPN1ApFAoMHTpUXh+0BMDAzC5QAwYAGPI8w0h1NsrnM2Eg5pcsKDv5SsbsODsHR5sDAidA4ARYG63oqO0AZ5df1+meJGN2pHeUu3xRdvJF2ckXZSdflJ28UX6RF6s64WjUZ/dF/JtQANx9992oqqrCzz//DK1Wi7Vr12LevHnYsmULVCoV5s2bhxtvvBFLlixBR0cHzjjjDBQVFeGcc86JbsGmf9DDym4nXfpoQGnw34yzAi4zRFGE0+GARqMBc+JrESme2WxGXl5ewHUqlQoZGRmwWCwBJ24hoRMEAYcPH0ZpaSl92MrMQMvOZrJ5Jupm4HdHXkpeCprQJKuJvAdafsmEspOvZMpOk6aBPksPm8kGR7unAUOpU4Kzc+hs7ESaKg36LD00aZp4FzUikik7EjrKXb76mx3n4MCwDGp+qoGtxYYhJw1BSj5d98UCnXfyRdnJF2Unb7LML4J1wj5kVicsiiKcTqenPjuOjRhxf9eIoogXX3wR//jHP6RxuE499VSccsop+PLLL7F9+3bwPI8lS5YAAFJTU/Hggw9i+fLl0S8cq+3hR91tY0Xwn2MBS5OkBNpfH6SmpqKxsTHgOrfbjfb2dmRnU7fi/hIEAc3NzRAEId5FIWEaaNm17G4BAKSXpkOl9+2mOPSsoTjljlNQOqs0HkXrk4GWXzKh7OQrmbIz5Bgwd8VczHt3HvJPyEfBpAJc9NZFKJhcgNwxuTjnhXMwd8VcGHICXGzIUDJlR0JHuctXf7P75flf8P7c97H+8fXY+vpWmKvNvT+IRASdd/JF2ckXZSdvsswvwnXCPe63D2JZJ5wIk37HvQdGY2Mj1Go1MjMzfZaPHj0aGzZswL59+zBjxgyfddOnT8f8+fMhimLA1h+n0wmn0yn9brF4xhbjOE560RUKBRQKBQRBgCiK0g/g6R4jdp9kJdhyUQQDQOSDTIx7bLn3cYH2G/ZzHls+ZswY/PLLLygtLfXbftOmTSgrK4NKpZJep6778R5vuM8bDu8+vD8cx4HnebAsC0EQfD64GIYJuLxrToGW8zzvU85gy1mWBcMwficdy7IAAJ7ngy737ovneSiVSun/vZU9kY+pq2Q/Ju+/yXRMwcre8GsDBFFAVkUWAPiUPX1oOjKHZcrqmELJT4459bY8WY6p62OS5ZiSMafuZQfgtx85H5MuSwdXhwusmoU2U4ui04pQuKYQjVsbYa4yY9CUQT7llMMxBXvvef/f/TkjdUz9/V5ICIksl9V3AlHexQfZkhBCCCFR1UudcDSMGTMGGzZsQFlZmd+6zZs3o6ysDGp194YW+Yp7A4bRaERnZyfa29uRnp4uLT9w4ACcTiesViuKi4t9HqPT6aDVatHU1BSwu8yjjz6KBx54wG/5li1bYDB47rLLycnB0KFDUVNTA5fLBZvNBp7noVaroVar4XA4fC7cNBoNVCoV7Ha7z8WiVmGAUpMFwd4MuI+/MRUKBmAYCLwAUZ0JB6cED8/+BEGA3X58W4ZhYDAYwPM8HA5Hl30ooNfrwXGcT4MMy7LQ6XRYsGABnn76aZx77rlgGAZKpRJarRZOpxN/+9vfMH/+fFitVr9jEkURNpsNHMcFPiatFkqlEjabzediVafTQaFQwGr1HYLGYDD0eEw2mw0ulws7duyATqfD+PHj0dLSgkOHDknbG41GjBw5EnV1daipqZGWe3M6fPgwmpubpeWFhYUoLCzEvn37YDYfv9uorKwMubm52LFjh095KioqkJ6eji1btvjkOm7cOKjVamzcuNHnmCZPngyXy4Xt27dDFEW0t7dj27ZtmDJlCsxmM/bs2ePzusjtmLxYlkVlZWXSHtPu3bvR3t6OzZs3Q6/XJ8Ux9ZRT1YEqWDotcKR4PkfkfkwHDx6U8ktPT0+anLyS6b3X/Zjq6+ul7BiGSYpjSsacAh1TcXEx7Ha7lF0yHBMOATabDZpsDTZt2gRHngMOpwNH1hyBYpxCutFFTscU6L1XUFAAwPMduqOjI+LHNHz4cBBCEoerkxowCCGEkLhSpQGaLMBpAgRn4G00WZ7tImzRokV49tlnsXDhQr+b+59++mksXrw44s8ZT4yYALdTXXnllRBFEf/4xz+g0+nw5Zdf4uqrr8acOXMgCAKmTp2Kq6++2ucxRUVFWLNmjU/vA69APTCGDBkCk8mEtDTPm8Z7N5rNZsORI0dQWloqDWEVdm8IZwvE7mOadaVKg6jJhtvtDtr61ZceGG63G7NmzcKYMWPwxBNPwGAwwO1247HHHsO7776LX375RWqw6bqf0tJSfPXVVygvL49JDwyHw4HDhw+jqKgIOp1Odne4CoKAhoYG5OfnQ61W0127Mjomt9stZceybFIcU2858W4eDBiodWqf5QIvoH5DPWzNNgw7d5jPAIKJekwcx/Wan1xz6ml5MhwTx3Goq6tDfn6+VD65H1My5hSsB0ZNTY2UXTIck9vqRvOuZoAF8k/Ih9vmxse/+RgiJ+KMp85Aemm67I4p0HsPABoaGpCXl+dzEROpY7JarUhPT4fZbJa+Tw90FosFRqMxrq+JIAioq6vDoEGDpHOWyEN/s/v0+k/RUdMBlUEFt9WNyhsrUX52eRRKSrqj806+KDv5ouzkLVHz89ZXdq0TDn8nzYDbEny9Kg3Q5vRt3z3gOA4zZ87E2LFjpTphl8uFxx9/HCtWrMCGDRukOuGuSkpK8PXXX6O8PLTvDN66NZVK1ac5MHp6jcP5Lh33HhgA8NJLL+HRRx/F9OnT4XK5cMopp+B3v/sd2tra0NHR4dMrwctut0On0wXcn0ajgUbjPyGjUqmEUul7yAqFAgzDSD9ewUIJuFybA6aXNyNzrFw9bhPOc8IzKcsXX3yBhx56CFOnTgXLsqirq8O4ceOwfv16v4lavPvx9sjw/h7u84aj62urVCqli2LvxXR34S737i/U5d3zD3V5UVGRtMx7LKGWMVGPqatkPSa1Wu2TXU9llMsx9ZZT1/Vdl4usiJ+e+gmCW8CQaUOQkuc/kVOiHVMk8ku0Y0rm9173fXTPrqft5XBMvS23NlvhtAS56waeCaUNOQZZHFOg7AD55qRJ1aBwauHx50lTonBqITrqOsA7+ID7T/RjCra8sLDQbzuv/h5TPCftI8EpFIoecyeJq7/Zua1uAIA2Qwu31U09MGKIzjv5ouzki7KTt6TOT5sTlQaK3iiVSqlOeMqUKX51woEaLwBPnbBKpQq4LhBv3Vq8JUQDhkajwf3334/7779fWnbjjTfipJNOwtGjR1FdXe2zvd1uR2dnJ3Jzc2Nc0r7z9kTQarURvQA0GAxYtmwZli1bBgDYv38/zjzzTOzatQvTpk0L+Jh9+/ZF7PkHAp7nsW/fPgwfPjzoxT9JTAMpO4EXoGCD38nAMAwMuQZ01HbA2mgN2ICRaAZSfslmoGVnbbZi5eKVsJlsQbfRZ+llMWH0QMnupD+cBFadXMc3ULIjvih3+epvdt4hpHSZOnTUdFADRgzReSdflJ18UXbyRvlFRyzqhKNVnx2uxOm300VHRwc++eQTnHPOOZg2bRrWrFnjs37t2rWorKxMqG5HoejeFT8ahg0bhvfeew+XXXYZdu7cGfXnGwhEUYTZbKbJK2VoIGX33f3f4bPff4amnU1BtzHkeSpOOxs7Y1WsfhlI+SWbgZad0+KEzWSDUqOENl3r96PUKGEz2XrsoZEoki07a5MV29/ZjrqNdT7Lk63xAki+7EhoKHf56k92vIuH4PYMIafL8IxKwDm5nh5CIojOO/mi7OSLspM3yi82olUnHIv67N4kRA8MnuelFrja2lpcccUVuPXWW5GZmYlTTz0Vbrcb77zzDpYsWYKOjg7cd999+OMf/xjnUieuKVOm4ODBg/EuBiEkRgROgGmPCZyDgzoleNc+Q66nAcPaZI1V0QgZUJQ6JdQGNXg3D3urHfocvXSzBVUsxUfzrmbs/NdOZFVkYdDkQX7r3XY3LEctyBqeFYfSEUJI3wi8gJKZJXB1ujBqwSiUnV6G1EGp8S4WIYQQQuIsWeuEE6IB45FHHsEnn3wCt9sNnU6HG2+8EZdeeikAz7Anq1atwjXXXINly5aB53ksXboUCxYsiHOpCSEkMbQdbgPn4KAyqGAsMgbdzjtslLWRGjAIiSa31Y3Ohk6IoojUfKpQiqe2Q20AgMyhmX7r2o+0Y/UfV4PVsLjozYugUMqrZy8hZOBS6VQ46Q8nHV9QHL+yEEIIIYREW0I0YNxzzz245557gq4vLi7Gl19+GcMSRUdvk3iTxKRQKFBWVia7IcvIwMmuZXcLACB7ZHaPYxLKbQipgZJfMhro2bltbvBOXhqfXE6SLbvWg60AgIyhGX7r0oakQaVXwdHuQMPWhoA9NOQk2bIjoaHc5Yuyky/KTr4oO/mi7OSN8pO3RKjPpndOjDAMA5VKFdcJT0jfKBQK5Obm0getDA2U7Jp3NQMAckbl9Lid3HpgDJT8ktFAzU4UPGO6KnWe+0N4Z/zHCg1XMmUniiLaDgbvgaFgFSiaXgQAqFpbFdOyRUMyZUdCR7nLV3+yEzgBAueZA8NcbcaBLw6gfnN9pItIgqDzTr4oO/mi7OSN8pOvRKnPpndOjIiiCJvNRhPWyBDP89i2bVtCTFpDwjMQshNFMeQGDGOREafccQpm3DsjFkXrt4GQX7IaiNmJggjTPhPMR81gNZ55vTgHBxHy+rufTNlZm6xwW91QKBVBh9crnuEZd6XmxxrZz1OSTNmR0FHu8tWf7Kq/r8Z7F72H7x74Do2/NmLDCxtwcHXyjXedqOi8ky/KTr4oO3mj/OQrUeqzqQEjhgRBiHcRSB+Iogi73R73k5WEbyBk19nQCUebAwqlAlnDep6EVqlVYsi0Icgo8x9KJRENhPyS1UDMztZiA2fnYG2yeu6M5QXwTh5OsxOcXT4V48mUnbf3RVpRWtD5LbKGZ8GQZwDn4FD7S20sixdxyZQdCR3lLl/9yc47RKFSowSr9jSa8y6qFIoVOu/ki7KTL8pO3ig/eUuE+uyEmAND7qzNVjgtzqDrNWka6LP1MSwRIWSgEAURJbNKwLt46QKWEBJbLbtawDt5iIIIbboWrg5PxZLACbA126DUKaHP0kOTFv+xQweStsPBh4/yYhgGxTOKsev9XahaU4Xi6TQTLiEk8XkbMNQparAqasAghBBC4iWUOmFDjiGGJUpO1IDRT9ZmK1YuXgmbyRZ0G32WHhe9cxEQhTYMl8uFJ598Eu+99x4AT7esOXPm4N5770VKSoq03d///ne8+uqrYBgGTqcTlZWVWLZsGQYPHhz5QhFCYiZtcBpOuvWkkLdv2dOC5t3NyB6R3euQU4SQ3tlMNvy64lfkT8jH0LOGouL/VQAAfnnuFzRub8TYJWNRcloJfXGNg7GLPK99b+O1lswowa73d6F+cz3cdjdUOlWMSkgIIX3jsnoaMFQGFfXAIIQQQuIk1DrhuSvmRuVacCDVCdMQUv3ktDhhM9mg1CihTdf6/Sg1SthMNjgtTmi12og+tyAIuOiii3DkyBF8//332Lp1KzZu3AiDwYCZM2fCbrdL255//vn45ZdfsG3bNuzYsQMlJSU477zzIlqeZMWyLCoqKsCydHe73FB2/o6sOYKtr29F7YbEHyqF8pOvgZKdKIr46Zmf4Op0IXdMLk68+URkDs1E5tBM5I3Lgy5TB61Ri8yhmbJpvEim7BgFg7TBaUgdlNrjdsYiIyp/V4nzXjpP1o0XyZQdCR3lLl/9yc6nB4a3AcNNDRixQuedfFF28kXZyVuy5hdOnXCkxbJOONL12X1BDRg94Bxc0J/ud7iwGhZKndLvh9WwEEURDMNAqVSCYZiA++uLd955B62trXjppZekljWNRoP77rsPZWVlePrpp6VtS0tLpTecUqnEAw88gEOHDqGurq6Pr87AwTAM0tPTe72DkySeZM+Oc3BoP9IOUQh9HMmUPM9nhbXRGq1iRUyy55fMBkp2ez/Zi8atjWDVLE7640k+8yyMu3QcFnywAKPmj4pjCcM3ULLrrvyschhy5dHIFMxAzW6go9zlqz/ZBWzAcFIDRqzQeSdflJ18UXbyJsf8Ilkn3Nt++yJWdcJd67PjiYaQ6sEHCz4Iuq5gcgFOu+806ffmnc1gFP5hCpwAhUoBURRhtVqh1+vxyW8/8Wt9W/SfRWGX74033sAtt9wS8E1066234vLLL8edd94Z8LE2mw0MwyArq+dJfwnAcRy2bNmCCRMmQKmkU0ZOkjG7ruMrNmxtwIYXNiC9JB3T75oOoPfxFb0VdNamxG/ASMb8Bopkyy7YuKZOixMCJ2DM4jFIG5zms06uc9IkS3ZNO5qw//P9KJhYgLLZZb1unwxj1yZLdiQ8lLt89Sc7t9UNAFAbqAdGPNB5J1+UnXxRdvImx/wiWSfcldzqhEVRhM1mg16vj2sjhjzeNUmie6tbf23ZsgWVlZUB102aNAkHDx5EZ2enz7hnALBz5078+c9/xn333QeNhiYUDQXP0wWBXCVTdt3HV7Sb7HC0O2Dab0LD1gYAvY+vmJLv+TzobOiMTaH7KZnyG2iSJbvexjUVOAFbXt+CstPLEr6CO1TJkF3TziZUr60Go2B6bcDwZmyuMcPR7oBar4bG6Pv9KJpj10ZSMmRHwke5y1dfs8semQ2lVglDngFpg9Mw/a7pUBnkOwSeHNF5J1+UnXxRdvJG+UVWLOuEI12f3RfUgNGDBR8sCLque8tazuicgF8a3VY3HGaHz7ILXrsgIuUzm83Iy8sLuE6lUiEjIwMWi0V6s952221466230NjYiKVLl+Lmm2+OSDkIIbHRdXxFpc4zlqJCqYA+Ww9tuhacnZPGVwxWyebtgeE0O8E5OSg19GeAkJ50P+8ASENDAgBn52A32QOedz8/9zNa9rTg5NtORnpJeqyLPqC1HWoDAGSUZfS6rTdjiIDgEsApORjTjdL6UD5bCSEklsZfNt7n98ITC+NUEkIIISQ5UZ1wYqE5MHqg1CqD/nQfGoJRMFAoFH4/jILx62ITaH99kZqaisbGxoDr3G432tvbkZ2dLS174okn0NDQgJaWFmi1Wlx55ZV9el5CSHwpdUqodCrwTh4KpQKGbAPUBrVUudoTdYpa+sMqh2GkCEkUSp0SaoMaoiCi7WAbRF7s9byzHLXAUm2Budocw5ISAGg90AoAyByaGfJjDLkGKFQKCC4BClYBtUEd8mcrIYQQQgghJHlQnXBioQaMCOHsHFxWl98PZz8+GYtOp4voc44ZMwYbNmwIuG7z5s0oKyuDWq32W5eVlYVnn30W//73v2E2U6VKb1iWxbhx48Cy8hzPfCBL5uxcVhcgAgqVAqw2vOPz9sJI9GGkkjm/ZJes2bk6XWg72AbeyQcdUqqrtELPvBiWGku0ixYxyZCdq9MFW5Mnn4yhvffA8FIoFdCkebpRW5vl18CbDNmR8FHu8tXX7ERR9JnvgnfzOPLdERz86mBCDPEwENB5J1+UnXxRdvKW7PmFUiccabGsE450fXZf0C1l/aRJ00CfpYfNZAPnDPzG1GfpoUnTQKGIbHvRokWL8Oyzz2LhwoV+LXpPP/00Fi9eHPSxTqcTLpeLxqALUaCTnshDsmYnTd6YogaD8CZSqryhEgqlQqpcTWTJmt9AkGzZWZutsDV7hhlS6pQwFhl7fUzaEPk1YADyz847fJQhz9M7LRyGXAOcZic6Gzqhy9SF/fh4k3t2pG8od/nqS3auThdWLl4JVs1i/nvzwbt4/PjkjwCAktNKwKqSs3Io0dB5J1+UnXxRdvKWjPmFUyccabGsE450fXZfUANGPxlyDJi7Yq7fDPJdadI00GfrYbVaYTBEbuzka665Bu+++y5uvPFGPPHEEzAYDHC5XHj88cexfft2vPbaawAAl8uFpqYmFBZ6xkZtb2/HNddcg/nz5yMzM/ShFQYqnuexceNGTJ48GUolnTJykszZuWwuAOjThI3ZFdm9b5QAkjm/ZJdM2Tk7nOio7/AMK6RUQJelQ3pJOhRs71/i5NgDIxmyaz3oGT4qnN4XXtoMLXSZOthb7Wg72IacMTmRLl7UJEN2JHyUu3z1NTtXp+c7IKNgoFAqoOxySc+7eGrAiAE67+SLspMvyk7ekjW/UOuEozGPXizrhCNdn90XyfOuiSNDjqHXN2PX7rxOsxmddXUQBQEAoE5NRcrgwVAc60pl2rULxqFDoTw2G7y1sREizyNl0CBpH95lX3zxBR566CFMOuEEqDQa1Dc0YNy4cVi/fr305mpubsaFF14Iq9UKrVYLhUKBxYsX+03Y0rxjB7IqKqDo8mHSUVMDR1ub9HtqYSG0GZ4KAbvJBLfNhrQhQ3yPVRBga2qCo70dIsfBJQjoaGrC5w8+iIrzz8fIHloBCSGhMeQYoNQqoTVq412UpGZttsb0y0isn4/0/Jrb2+z47t7vwNk4sGoW6aXp0OfoQ+71lDbY04DRUdvhM/E3iS6n2QlGwYQ1/4UXAwbGEiNcnS5wDs8E7Sp9+A3FhBASLd5euN6bWBiWARgAoqcBA/Q1gRBCCImZUOqEo0GpVEp1wlOmTAHLsqirq+tznXCiowaMGOMcDliOHkXGsGFQajQQRRHWhgZ0VFfDWFoK4FhjR4jjlxoMBixbtgx/vvJKpBYW4khdHc4880zs2rUL06ZNAwAMHjwY365aBZVeD11WlvRYy9Gj4LouEwS/cVNTCwuReqyVzk+QcpoPH4ZCqUT60KFgVSo4HA6YVSqcePfdWHPDDbA1N2NSmCfK9ldewea//x2MQgHDoEE469VXkTp4cI+PcVmt+O/ixXCazbjku+981vFuN35+5BHsX7kSvNsNQ14eznjpJWSOGCFt82p5ORRqNRQqFex2O/bodJj4+99j3NKlfs9l2rMHb44fj6l33olp993nt37j00/DfOgQZj/3XFjHHU27V6zAka++wpx//jPeRSFh4uwclLrjjRcuq0taHgp7mx1Va6ogcAJGzR8VtXLKnbXZipWLV/Y414E+S4+5K+ZG5AtLrJ+PhPaa21ptYJQM0orSoNKrpIojr57OO0OeAQqlAryLh63ZJs0/Q6LrhCtOwNjFYyFwQliP65qlocAAkROh0quiOnYtIYSEy9sDQ53iGYqDYRiwaha8k/c0YBBCCCFkQPDWCS9btgwAsH///oB1wps2bYpnMSOCGjBijHM4oE5JkXpXMAwDXXY2WvfsCXtf9pYWOC2eYSk4ux0AMGzYMLz33ntYtGgRPvnkE4wePdqzcaDGBlGEs60NvNNz56nQZewzR1sbOmpqgj53WlFR8GN0OpGWnw9W5XvHYsbQoSi/8EK0Hzzos3zTs8/CUlWFmU89FXB/h7/8EtuWL8ei77+HxmjEnvffx8dz5+LSn38OWgZrYyNW/b//h4zycjhMJr/13999NyxVVVjy889QarU4unYtPp43D5dv2SKVW+A4zPviC6SWlPTa1e3bm2/GkFmzILjdAdfvfvttzHz22aDljYUtL7yAUZddBk2a545g3uUKWl6SmCI1vqLT4sSW17ZAnaKmBoweOC1O2Ew2KDVKKHX+5z5n52Az2eC0OCPSoBDr5yOBX3PBLYBRMGBYBpydgyZFg7RBaeAcHBztjoD7CXbeKVgFjMVGCLwAV6eLGjBiiFWzYNWhDaPS02erN/NojV1LCCHh6t6AAYAaMAghhBASvE44CVADRgwZDAYIHAdrbS2cZjPUqangXS501tZC18u4Y7amJp+hnASOg8ZohD7HMzazpapKWjdlyhQc7NZIAAAdtbWwNjYe34fbDX1uLjRGz0SktuZmaZ02I0MaKioYe0tLwOVpQ4bAUlXlaajRauHiebgsFnz7hz+gY98+zHnjDZ/tLVVVaD9wIOjzbH/5ZZz84INSOSsWLsTmZ55B09atyD3hhKBlO+Whh8Aolfjh7rt91omiiG0vvoirjxyBUuu5g33Iqaei8JRTcOTLLzH0vPN8tmdZFpMnTwbLBq4I2ffRR9Dn5cFYVgaR869Ubt27F3aTCYNPPjnoMcbChieeQMlZZ0kNGANBb9nJjXd8xcbtjXC0O5Bemu43hFQoQwyl5KUA8FwAu6yuhJ2kNlHyU+qUQV+jYA1JkXg+QRDAO3if4Wui8XzRkCjZhcr7mtvb7Wg/1A51mhqZ5Z6/y5yTw9nPnA1dli7o43s67856+ixZDR0lt+wiobexa10dLtRvqYc+Wx/jkoVnIGZHKHc562t23p63XedB8857QQ0YsUHnnXxRdvJF2ckb5Rc7weqE+yPe818A1IARU4IgeIZWGjYMtoYGdNbXQ8GynsaCrCy/4Zu60ufm+s2B4Whrkxo1hAAV592lDh4MXfbxyXst1dVgWBYK9fHux91Zm5pgP9awwTAM9Lm5PvsIRJ2aiqyRI8HZ7eDsdogcB0apxKRbbkHu8OF+2wfreeFV9b//Yc5bb/ksK5wxA0e++ipoA0b26NHIHj0a1d2GjgIAW2MjWLXar9Eoa/RoNGzY4NeAAXgmvdHp/Cuv3DYbfrj3Xiz46itsW748YFl2vfMOKi65BAzDgHe7sbyoCCfdey+2vPACRJ7HiIULMemWW/Dl0qVo3bsXKoMBs597DgVTpkj7OLJ6NdbdeSdcHR0QeR4Vl1yCaQ88IM2bsry0FCc/8AB+efxxAJ4Mzly+HDljx6Lqf//Dd3/8Izrr6vDvCy5A1qhRuPDDDwEAnXV1+PDss2GprgYEAWXnn48Zjz8uq8q23gTLTq4MOQa07G7BwS8PYtSCURh/+fiw96HUKqFJ08BpccLaZIW6NDEbMIDkyy8cbQfb4GhzIHtkNjSp8rvzW27Z8W4erftbPWOIO3mI/PG/ybosXZ/mUwAC/21NdHLLrquDXx3Egc8PoOz0Mgw7Z1jIjws2di3v4vHp9Z/C1mRDWmEahp4xNJLFjTg5Z0f6jnKXr75kF7AHhoYaMGKNzjv5ouzki7KTN8pPvgRBgEKhiGsZ4vvsCaSnxoNIsba1wVJdDVtDA8AwYFUqKNRquG02dFRXw1JVBd7hPzwFq1LB1tSElp07pR9rQwN0WVnSHBWspm+VW462NnTW1KCzpsavEcTR3g5nWxsyKyqQPXo0MkaMgK3LsFXdWaqr0bJjB1p27IBp506YDx2Ctb4e9pYWONrasPqaa/B6RYX0s/2VV3otn6uzEwqlEupurX2pQ4bAfOhQn45ZbTTC1dkJR3u7z/L2Awdg69JDxYvneWzfvh08739B8PMjj2DkkiU+jUvd7Xn3XWnicm+Wzdu344rt23HFjh1o2LABH82Zg/HXXosrd+zAue+8gy+uukp6fPP27fjiyitxxssv47d79+I327fDtGsXfrjnnuNPIorY9fbbWPLjj7hyxw5MuvlmfH755QCA4tmz8ZutW5EyaBAu+uQTqfECAOp++AFT77gDV+3ahcs2b0b111/j0H//G9LrKAc9ZSdnrQdbAQAZQ3vuJcXzwHffAe++6/m368tgyPOcU9Yma5RK2X+Jll/roVaY9pngtkd/6DXezcPR5vl7kMgZBZNo2YXCbXcDoqcSKGdUDhRsZL8ixeJ7RiTIMbuuWna3oHV/K+yt9ojsj1WzUkPI5uWb0VHfEZH9RoPcsyN9Q7nLV1+zS8lLwaDKQVJPQQCYuHQiTrnjFKQNHjg9reOJzjv5ouzki7KTt0TPTy7XavFit/f92ipSr+2A74GhOjbfgc1mi3pLoEKrhSErS7obs23/fugyM6FJTYWlqgpuqxXthw75NWJoMzOh7WWIKaVOB6aHrlisWh1wCCljWZk0pJCrw/einLPboU5Lk+7yV7As1Ckp4Ox26TF2kwkuiwXqtDSfeTGcHR2wNTQgY9gwmEwmpKpUaN2+HTe1tvb2MvlwtrdLwzz5HK9WC7ct+KSrPVHpdKhYtAjf3nILTv/HP6DU6XDkyy+xf+VKlM6Zc3xDhsEXV14Jp9kMu8sF94IFOPHOO6E69j5pP3gQ+z76CJdv2RL0uep/+QWsRoOcceOkZaIg4MS77gKjUIABMPT883Hkyy9RcuaZAICM8nKoDAZYGxthyMvDhr/9DZP/9CfkT5rkKb9ej9NffBGvV1TgxLvvhkrvGdJi6u23Q52aCgCouOQSfHHllXB1dEjLAimaPRtDZsyQ9jt8/nzUrFsXsBcKSQwCJ8B8xAwAyCgL3oCxciVw881A16lsCguBZ58F5s71NGC07m9FZ0NntIucNFwWF3gXj9TBqbC12kIeX78vula+8s6+fcmzNluDDokDhDbc2EAiuD0TPrMaNqK9JjobOrHu0XVw29y44JULIrZfElioDbzhGHnRSNRtrEP9pnp8e8+3mPbnaQEbuOicIoTEQtEpRSg6xXc+wsFTBsepNIQQQoh8xbJOeKCyHau7VXWbJzlcA74Bg2VZpKeno6mpCQCg1+ujMtyDKIpwOp1g2eMVIy6eB+tyQXQ4oM7LgzovDwDQWVsLp9uNcEY6V+fmgoNnkvBA2PR0pKWn+5cLgOPYY9yiCIfDAdbbIqrXw3LkCFw8D6VWC87hgKO1FcaSEjgcDjjdbrBGo9T7wNHluV0uF1w8D5PJhKamJqSnp4PvQ4MDq9EEPCbObpcaEvrijJdews+PPop/TZ8O3uXC4FNOwQm/+x2cXeYZWfLTT9Dn5oLneaxfvRqm117DtzffjDOPDRX1zc0345S//jVgA4vX7hUrpN4XXRny86X/K3U6ZI3ynUhZqdNJE7O3/PorJvz+976Pz8tDyqBBaD9wQGocSR0yxGcbbVYW7K2tPTZgdG8Y0+fm+k2yThKL+agZAidAZVAhJT8l4DYrVwLz5wPdG7praz3LP/wQKD02mbC1UX5398eLwHkquM1VZrg6XdDl6KBUR+fPqCgcD89ldfn8HgprsxUrF6+EzRT8c1efpcfcFXOpwvUYqQFDFdmGKU2aBu2H2gEgoeecSQa8m4el2tNLtK9DfgXCKBiMv2w8tr6+FbU/1+LQ/w5Bl+H/HYTOKUIIIYQQQuQjVnXCchaoPjvUx9lsNqlOuL/znwz4BgwAyD9Wmex9w0aDKIpwuVxQq9WAKMJpNkMUBDAmE9DtDcAoFNA4nX7L7S0t4F2uwPvneRgKCqBQ9j3SjqYmtLGs1OMCAASFAu6aGjjb26HNyIDKYIC5thaAZ3gnweWC1ul7h6+tudkzHJUoQjhyBKbvv0fzf/+LzIoKvFxcjMl/+AMm3XyztP2mZ5+FpboaM5980q9MuuxscHY7XJ2dUKccr6ztOHoUKYWFfT5WpUaDk++/Hyfff7+07Osbb8Sgk06Sfjcca1ACAF1ODmY8+STemTgRZy5fjsNffAG3zYbh8+YFfQ5RELD3/fex6Icfei2Pdx6SQIL1rBFF0XddoA+ScLtqMQxEQQjvMQku2SaJajvoaWTLKMsI+MeD5z09LwJFL4qet8kttwBfveA5nxJ9eKJEyI+zcxAFURpXWpWigqPdgc66TqQUBG5E6u/zadI0yB6ZjebdzQAP2FptYBD6lwWnxQmbyQalRgmlzv/vAmfnYDPZ4LQ4o1bZmgjZhYqzc3BanRA4AQIvSBOkcvb+T5qu0qugy9TB3mqHpcaC7BE9zyOVCOSUXVfmak8DrzpFDX1OZCfcZjUs1Glq8C4erg4XUvJToNIdv4soFudUSOWUaXakfyh3+epLdqIgglH4fido2dMCa7MVmeWZSC0IfvMSiRw67+SLspMvyk7eEjW/WNQJy1nX+uy+NO6kp6dLr3F/UAMGPBNsFhQUIDc3F2539Mc2FzgOLTt3AkEmQPn2D3/Aue+8g5SCAt8VpaVB9/np4sWYetddyBnW84SVX//udxh71VXImzjRb11tQwMKSkt9GjC83pw4EYt/+gn25mZ01tWho6oKjEKBtp07Ma3rXAzdyqlSqcCefTbw178CAHb83/+h/ueffTa3VFWh/cCBgOVlGAYFU6eiZu1alJ1zjrT86Jo1mP7wwz0eazhcHR04+MknOPmhh/zWKZVKVFZWwlxVBeZYA5H58GF01tTgjS6TiFsbGgAAh7/4ApesXYu69ethLClBeg+5hSJv4kTUrluHgsrK48/V2Ah7UxPSy8tD3k9PQ4wlK292yaTt0PEGjEDWrfMdNqo7UQSOHgWqUYgzn8oM2osjEcQ7P02aBvosPWwmG1xWl9QDQ8EqwGpZuDvdcJqdERtKquvzcU5Pxbkh1wCFUiENI6XP0kOTFvqcR0qdMugd/97niIZ4Zxcqn4wtnowFlwBH+/Gef+G+5oGkFqbC3mpHR21HwjdgyCW7QKTPx6GBG3j7S5OqAQTPBLp2kx2GEb4NFdE8p0Ih5+xI31Hu8tXX7FbfthrmI2ZMv2s6CiZ6rhd3frATdb/UYcrvp1ADRgzQeSdflJ18UXbylsj5xbpOeCBRqVQRa7iiBowuWJaNWougKIowm80wGo2AWo0NDzyAjqNHA05m4mxrQ1p2NtTdhib66rrrcPjLL6Ey+N/Zp01PR3ZJCbQ9DGcEAK6GBjAuV8Dths6cKf1/zZ//jMOffy6VT+F24+OzzoIhLw9pxcVILy+HSq+HYDb77es/F1+M5m3bwAZ4DgXLYsrtt/ssm/nUUz2WeeJNN+GHe+/F4FNOgSYtDXvefx9uqxVDTjutx8f1ROB5qaGmo7YWX1xxBSbdeit0x4ZUEnge1vp6pBYWQhRFNBw4gPW33IKxxybXPuH663HC9df77POH+++HyHE45Vhjze4VK1ARYPiocE28+WZ8eOaZKDz1VORPngy3zYavrr0W42+4AcowJm/XZWXBUlWFjDAaPeSu63mXLN0AWw/0PL57fX1o+2np1CFrWGKP8Rjv/Aw5BsxdMRdOixOWGgvWPLAG6lQ1znrqLLg6XVjzwBq4Ol3Y9+k+VF7f/y9jhhwDLnrnIjTvbEbakLSAx9zXMfZtLTawGtZTARsD8c4uVF0ztrfaYWuxQZepgz77+N37kZjXIK0wDU3bm2CpsfS3yFEnl+wCkT4fe5gfqL9SC1PhaHMgrTDxJsqVc3ak7yh3+eprdm6rG7yLB6s5ft3qvZki3g2pAwWdd/JF2ckXZSdvcsgvmnXCcpYo2VEDRozwPI89e/Zg8uTJcJvNaN6+Hdf1dJt0AKY9e3Deu+9i0Ikn9r0gIb7ZZjz+OGY8/niP2+z4v/8LuNy0axfmffEFjCUlYRYusGEXXYSOo0ex4qSTwCgUMOTn4/99/DGYYz1YeLcb/1m4EGe8+KLP3BKAZ/LyQMMz/fzIIzjwyScQ3G4odTpMuPFGjLr0Umm94HbjkwUL4LJYwCiVsDudqLzuOkzsNheFz3OpVBCOvb6cw4GDn3yC6cuW+W2nMhh8cmDVarDdJrNh1Wooji3LHj0a57zzDr6+8UY429shCgJGX345TrzrruPbazRgux0nq9FI+wCASbfcgi+XLkXKoEGY88YbnucN8Jjuy+Ss63mn7Mfwaolk6s1T0XqgFXlj8wKu795xK5hQt4unRMjPkGOAIccAzs5BbVAjtSBVGlt/xn0z8O3d3+LAZwcwuHIwBk0e1O/n42wcfnrqJxiLjZjz9zl+Q0T0hbPDKd2ZPqhyUEy+dCRCdqHyZoyh0XsOb2W3HBow5JRdd+oUNfS5emSWR27+i+4UrALpxelR239/yDk70neUu3z1NTtXp2eYw649LL0NGN75nEh00XknX5SdfFF28kb5yVeiZEfvmjhQp6WBYVn8c8yYoNtMu/9+jJg/32dZVkUFPl20KGAPDACYdPPNGHf11T0+d8bw4fj8N78JOrFzyRlnYObTT/dyBB4Klcqv4h0AskaPxgennx6wBwYAGEtKMPfTT0N6Dq+JN92EiTfdFHAdq1Lh//373wHXDZ42DRd/843f8pPuuQcndR/6qgulVoslP/4IAOA4Dhs3bsQJkycHHF7Lq2uDgt1kwimPPAJDbq7fdjd3dvr8HmiS7wWrV/v8XnTaabi029BbXf12716/ZVd3m4x75OLFPs+VUV7u99yjL7sMoy+7LOjzkPhLG5yGtMHB7/ydPh0oLPRM2B1oHgyG8ayfPh04+NVBtB9ux/DzhiN1EA030BPOyXnGwE89XlmQPz4fIy4cgb0f78Uvz/+C8185v98TQB9ZcwQAkDo4VWq82PzqZtRvrsfJfzm5TxWnTsvxeYpcna6Y9cIgx8mpAUPOxl82HuMvGx+wd2u0iBDDmp+GEEL6QxTF4w0YKf4NGN75ugghhBBCkgk1YMQBq1Lh2qqqsB93xksv9fu5Zz75ZMDJsvti1JIlGLVkid/y8//1r4jsX85SBw/G+GuuiXcxSIKwNlt9KpG7i8QQNV4sCzz7LNCt/RPA8Y4/zzzj2e7g6oMw7TEhZ3QONWD0YtCkQVj44UIIvO+djeMvHw9rkxWls0phrjYHfXwoGYuiiKq1nr8NxacWS8vbq9phOWpB867mvt353aVu1WF2UANGAKIoYud7O6FOVaPs9DIoNZH9epRWmIbUwlQYi40QRTFhu03HQiQ/D2P52dqdzWRDZ30ntOnahBxOihCSnHgnD5H3NNJSAwYhhBBCBgpqwIgRhmGg0+kGdKWFXFF28pUI2VmbrVi5eCVsJlvQbfRZesxdMbfXiraqtVWwmWwYXDm4xwqzuXOBDz8EfvMboGuHn8JCT+PF3Lme31PyUmDaY4K10RrOIcVMIuTXnYJV+PzOqllMvHpiRDJu2dMCW5MNSp0SgysHS8tzRuagcWsjmnc1Y9icYWGVl7Nz0Bq1EAURlmqLZ46HDB04e3THyE7E7HrCO3n8+s6vAICy2WUR378hx4DzXjwv4vuNhmhmF8nPw+77CtQwFOq+wuE9d9w2N5wWJwRBgDZDG/VzKhRyO+9IZFDu8tWX7Ly9LxiWCTgHBjVgxAadd/JF2ckXZSdvlJ98JUp21IARIyzLYvz48fEuBukDyk6+EiE7p8UJm8kGpUYJpc7/I5ezc7CZbHBanL1Wsh386iAatzZCbVD3esfv3LnAyy8D3tHIKiuBH3/09LzwMuR5nq+zsTPAHuIvEfILRdeMAYBR+FYqhJpx1RpP74vCkwqliggAyBmVAwBo3tUccpk0aRros/SwmWzgnBxEXoTACXBZXLCb7GBYBvosPTRp0emNIZfsvBztDgAAq2Gh1A7sr0bRzC6Sn4fd99VR1wFHmwOGPAP02fqw9hWK7ueUwAkQOAFOsxP2NjsYJrrnVCjkdt5F29tvv42bbroJRUVF0jKNRoP169eDZVnU19dj6dKlqKmpgSAIuPHGG3HdddfFscR9Q7nLV1+y6zp8VNeKBJrEO7bovJMvyk6+KDt5o/zkK1GyG9hX6TEkCAJaWlqQnZ0NhULR+wNIwqDs5CuRslPqlD6TLXYVysWmKIpoO+iZiDljaEZIz9l1ahSXy7fxAvD0wACQsD0wEim/XR/uQvOuZgw9aygKpxYG3IZ38bDUWqA2qJE9MtunYqG3jAVOQPX31QCAkhklPuuyRmSBUTCwNdlga7FBn63vtbyGHAPmrpgLS40F6lRPJce2N7ZBn61H8anFUKeqozq8TiJlFwpvA4bGGN3KZ1EUIbgFnwaqRBOL7Pr7eRhoX97h3VQGlbTvSFbkec8p75BVoijiy1u+hNvmxvS7piO9JD2q51Qo5HbeRRvHcTjnnHPw9ttvB1w/b9483HjjjViyZAk6OjpwxhlnoKioCOecc06MS9o/lLt89SU7hUqBQZWD/BqBC6cWwpBroCHtYoTOO/mi7OSLspM3yk++EiU7etfEiCAIOHToEARB6H1jklAoO/lKxOw6GzvRdqgNohDeJLO2FhtcHS4wLANjkbH37W1A16l26uv9tzHkJnYPjETKz7TfhLoNdbCb7EG3UeqVYFgGrk4XOuo7wtp/46+NcJqd0Bg1yBuf57NOpVMhvTQdANC8O/ReGIYcAza9vAnrHloHiMDMB2di6k1TkX9CPjKHZka1ojWRsguFw+xpwNBl6KL2HAe+OIAPL/4QG1/aGLXniIRYZue0ONGytwVuh7tf+xEhwm3z7EOlV0WiaAEZcgzIHJqJzKGZyCrPwqDJg6A2qOG2uaN+ToVCbuddPG3fvh08z2PJsbncUlNT8eCDD2L58uVxLln4KHf56kt2aYPTMOPeGTj5tpN9lmeUZaBsdhmyR2RHupgkADrv5Iuyky/KTt4oP/lKlOyoBwYhhMSQucoz0bNSp0RqQegTZ3t7XxiLjWBVvd+9vW+f51+VCnC7geZmgOMAZZdPfe8QUrYm24CfWLg3ro7jQzYEw6pYpBeno+1gGzpqO6A1aoPeZd5d/vh8zPzrTDjaHX7zbACeYaTaDraheVcziqcXB9iDP2uTFR21HWAUDFIKUkJ6zEDlaIt+DwyVQQXOzsFSY4nac8hNy54WAEDbgTbkjsnt8354Jw+REwHG0+AXK9kjs1G/qR4tu1sw4vwRMXte0n9ff/01ZsyY4bNs+vTpmD9/fo9/D51OJ5zO4xPHWyye85njOHCcp8ePQqGAQqGAIAg+F3re5TzPQxTFXpezLAuGYaT9dl0OADzPS/+Koij9eJd7KZVKv+UMw4BlWb8yBlse62PqbXmyHJN3XzzPJ80xdZXsx+T9N5mOqbeyJ8sxdV2XLMeUjDl1PyYAftvL/ZiSMadgxwQEz0+ux5SMOQU6Ju//uz9nJI6p+zY9oQYMQgiJERHHP9TtJntYDRitB1sBAJlDM0Pafs8ez7+TJwO//ALwPNDYCAw+Pje0525hxjP0kaPdEdW7z+XO2eGpsOptfHtdlg72NjscrQ60HW5D7qjQKmUZBYP88flB1+eMykH95npo07Uhl7lhawMAzxBU3oYUZ4cTDVsbkFmeGdb7L9l5e2CE8/qGK22wZ1gPasDw5+090efH2z2PV+qUMW2IzRnpmZ+mZXdLzJ6TREZdXR2Ki30bg3U6HbRaLZqampCXlxfwcY8++igeeOABv+VbtmyBweC5KSAnJwdDhw7F4cOH0dx8vNdcYWEhCgsLsW/fPpjNZml5WVkZcnNzsWPHDtjtx3v5VVRUID09HVu2bPG50Bs3bhzUajU2bvT05hJFEe3t7RAEAXa7Hdu3b5e2ZVkWlZWVMJvN2OP9YnDsWMePH4+WlhYcOnRIWm40GjFy5EjU1dWhpqZGWh7rY/KaPHkyXC5X0h6TN7tt27ZhypQpIR2TKIpIT0/3Oya3xQ21VY3S4aXo0HZQTlE+pt27d6O9vR2bN2+GXq9PimNKxpwCHZPJZJKyYxgmKY4pGXMKdEzDhg2Dw+GQskuGY0rGnIIdU3FxMex2u09+cj+mZMwp0DEVFBQAAA4cOICOjuMjTUTimKzW0IczZ8SuzSRJymKxwGg0wmw2Iy0tPuOC8jyPffv2Yfjw4VKrUzxYm63S+M2BxHv85kSUKNlFykB6DyRCdq0HW/HBgg+gTddCqVOifuPxsZzyJ+aDd3oaDxZ8sKDHxok1D65B3YY6TLp2EoafN7zX573/fuCBB4Df/hb4/HOgrg7YsMHToNFV26E26LP10jwJiSQR8vNadcUq2E12nPX0Wcgs982pa8Zqgxq8m0fTjiYIbgEpg1Kgy9CFlHFP+tJD5vvHvsfR749izKIxGLt4LABg7V/XovbnWoy7bBxGLxzdp7KEIpGyC8Wm5Zuw7z/7MGrhKIy/LDoTlHFODh/M/wAAMPeduXGd7Lkn0cyu+7lSu6EWEIHUwlSkDUqDy+oK+Vzpui+n2QlLjQW6LJ30uHD21Vecg8PnN32OrBFZmHrT1JB6x4Uj3L/X0T7vEuH7dDjeeOMN3HPPPSgqKoLJZEJ5eTnuvPNOnHTSSVi6dCmmTp2Kq6++2ucxRUVFWLNmDUpLSwPuM1APjCFDhsBkMkmvSazvyBMEAfv378eIESPAsizdZSijY/JmN2zYMKjV6pCOace7O7D333sx4sIRGHfZOGn50R+O4scnfkTumFzMemQW5RTlY3K73VJ2LMsmxTElY06BjsntdmPfvn0YNmwYFApFUhxTMuYUrAfG3r17UV5eLt3RL/djSsacgh2TKIpB85PrMSVjToGOSRRFHDhwAEOHDpWyi9QxWSwWZGVlhXR9QT0wYoRlWYwcOTKuZbA2W7Fy8UrYTLag2+iz9Ji7Ym7SVGBHQiJkFykD7T2QSNlxdg6iICJ1cKo0jFRnXWfI47W3H2kHEPoE3t6G94oKYOtWTwNGoHkwMspC2188JFJ+0hBSqcGHhOLsx/9Ap+SloP1IOyxHLQADMAje+LDhHxvAqlmMuGCENC9Jd+E2XoiCiMZtjQCA/AnHe3YUTCxA7c+1qN9SH9UGjETKLhQj541E0SlF0GZErweGUqOEPlcPW5MNlhoLckblRO25+iMW2XU9VwTOM6m5y+ryWR7OvhxmBwRO8MxBY3X5PUe0KLVKnL/8/Kjsuy9/r+V23kXb/PnzcdFFFyEtLQ2iKOKzzz7DBRdcgPXr10Oj0cDhcPg9xm63Q6cL3htRo9FAo/FvfFQqlVAqfS+rvBd13QVrXAq2vPt+Ay0fPXp0wOVeDMMEXB6sjOEuj8Yx9bY8WY6pa3ahHBNv5yG4BTAM47NcrffciMK7+LgfU1fJklNXDMNArVb7ZNdTGeVyTMmYU6DlKpXKLztA3seUjDkFK+OoUaMC7lvOx5SMOYWbn5yPKRlzCrS8p2uM/hxTsG0CoUm8Y0QQBNTU1Pi0YsWa0+KEzWSDUqOENl3r96PUKGEz2Xq8228gSoTsImWgvQcSITtNmgb6LD04Jye9rtoMLVQGFQReAOfkoM/S93o39nkvnYcznzwz5DuJd+/2/FtRARzr8RewASORJUJ+gGeILd7luUtAk+qfU9eMHe0OONodEEURSp3Ss72IoBm7rC4c+uoQ9n68N6RhdARegL0t+ETiXq0HW+HqcEGlVyFreJa0vGCi583QsrtFquiNhkTJLlT6LD1yRuVEfVittMLEH0Yqmtl1P1c4BweBE+C2uj2/h/h52H1foiBCoVJA4ATpHAxnX4moL3+v5XbeRZvBYJDu5GIYBueeey4uvPBCfP755ygsLER1dbXP9na7HZ2dncjN7ft8LPFAuctXX7JzdQaek4tVH7ur0cX7PYZEHp138kXZyRdlJ2+Un3wlSnbUAyNGvIHn5+cHbOGKJaVOCbVBHXBIEs4Z/TsW5SaRsosU73sgkGR6DyRCdoYcA+aumNvvYbtYNetTEd0Tnj8+iXdvDRgte1tQtbYKaYPTMOycYSHtP1YSIT/A08jAalgIbgFKnf+fzWAZd/2MDZbx0fVHIXAC0orSkF6S3mM5ajfUYv3j65E5PBOzH57d47be+S9yx+X6TAqekp+ClEEp6KzrROP2Rgw5aUiP++mrRMku0aQVpqFhc4MsGjCikV3Xc4V38dj8ymaY9psw8qKRSC9Oh7HEGPIwhpH6bI0EURTR2dAZlQawcP5e03nXO573TJY8bdo03HbbbT7r1q5di8rKStm9dpS7fPUlO+/NByqDbw9easCILTrv5Iuyky/KTt4oP/lKlOyoAWOAcpgdMO0zwVhsREpuSryLQ+JMhNjjEDekfww5BhhyDLA2W9F2sA36HH3UxmQHgOpqwOEA1GqgtLTnBgxLjQX7PtmHvBPyEq4BI1HoMnRY+OFC8C4+6FBO3oyD4V08LLUWaSJnr6q1VQCAkhklvZYjJT8FnIODaa8JAidAoQz+5SH/hHy4OlzIGuHf6DVo0iDsq9uH+s31UWvAkJud7++ESq9C6azSkId164vsimx01ncibUjizx8QLV3PlbOeOgsbXtyAPf/eg5HzRqJ0duB5B0LZV7w4zA58eu2n4BwcFry/QKpEJPFXW1uLvLw8qWv6Rx99hC+++AKPPPII8vPz4Xa78c4772DJkiXo6OjAfffdhz/+8Y9xLjUhPQvaA+PYHDyCm+5sJYQQQkjyoQaMAaq9qh0QAfMRMzVgDHAOiwMdtR0h391P+q5xeyN+fuZn5E/Ix2n3n4bG7Y1o3tUsTbAczLa3tsHV4UL5nHJklPY+Z4V3/ovhwwGWPd6A0dDgv21Knuf8tzZawzqWgaivFZMddR1Y+9e14F08znn+HCi1nj+99la7NE9F8YziXveTVpgGdYoark4X2g63IWtY8HM2a1hW0PX5E/Kx7z+eBoy+TA6ebAROwPa3tgMAik/tPYf+KJ5ejOLp0X0OuUkvTgcAmKvNfXq8w+wAo2ACDu8WC5o0DVg1C7fVjdYDrVGZ20TgPfN70I0G4fniiy/wxBNPSHNWjBgxAt988w0Kjv1RXLVqFa655hosW7YMPM9j6dKlWLBgQTyLTEivpAaMbj2zWI3nO0oy9aQmhBBCCPGiBowYUSgUyMnJSZiuUl0vgqkCq2eJll0kiaKI9iPt4B082qvapcrsZJFo2XW9a87V6cJ3938HkRdRPKPY7878rqrWVsHaYMWQk0O7W77rBN5Azz0wDHmeu5dtzTaIgghGkTifBYmWX19p07XgnBxsTTZseX0LKm+oBABUf18NiEDWiKyQzj2GYZA9Mht1G+rQvKu5xwaMnuSNzYNCqYCtyRa1YW/klJ00BBHT8yTtA0WsshMFEWAAY5ERwLEbK/pg7yd7sev9Xai4qAITrpoQwRKGxnte1qyvQfPu5qg0YLTsaYHACcgcmul313VXcjrvYuG3v/0tfvvb3wZdX1xcjC+//DKGJYoOyl2++pKd2+qZL4t6YMQXnXfyRdnJF2Unb5SffCVKdvTOiRGFQoGhQ4fGPXCvrpWUnIPu1OlJomUXKZyTg7na7LlrlQHsLXY4zckxebdXomXX9aJTk6ZB/gn5AICqNVVBH+OyumBt8PSOyCjrvfcFEHoDhrXZCke7A26HGw6zA3Wb6tB6sFX6sTbHt1dGouRXu6EWax5cgz0f7+nT41V6FU68+URwTg67PtyFvZ/sRevBVuz5eA9cVhcyh2eG/Hp7K0ebdzUH3abm5xrUb6kPOg62UqvE9Lum48J/Xhi1SasTJbtQONodAACtURuzxnynxZmwf3tjld3B1Qfx/tz3sXvlbgCArckGt733iey7az/SDgAw5MZvKKnsimwAQMvulojvW+AFuG1u8E5eusM6GDmddyRyKHf56kt22SOzkT0yGxqjb68zbboWk66dhInXTIx0MUkAdN7JF2UnX5SdvFF+8pUo2VEPjBgRBAGHDx9GaWlp3EPn7BxEUYTACVAZVHDb3RAFEZw9MStT4i2RsosUzs6Bd/HoqO2AUq+ELlMHa6MV7VXtSB0UnQrNeEi07Lw9MLwTLxbPKEb9pnpUra3CmEVjAlaeth1qAwDoc/UhD5ESrAGjoQEQRYBhPI0XKxevhM1kg7naDMEtYNVvVknDGwGAPkuPuSvmxm2M+UTJz1xtRt2Gun7dnZ9SkALzUTM66zrx8ZUfI60wDfY2O9xWN+wmOza9tCmk1ztntKcBo2VXS9Dec9ve2AbLUQtO/svJKDqlKOB+Bk0e1OdjCUWiZBcKh9nTgKFJj80QRN/c8w0atzbilDtOwZBpiTcHSayyc1qcEDgB2nQttBlaONocMFebkT0iO6z9eBsw0kvSI1/IEEkNGHuCn5d9ZTfZIbgFsDoWvIuXGiYDfWeT03lHIodyl6++ZHfKX04JuFypVWL4ecMjWTzSAzrv5Iuyky/KTt4oP/lKlOzoXRMjgiCgubkZghC/br2aNA30WXpwTg66TB2MxUbos/Xg7Bwc7Q5wTg76LD00afEZRzpRJUJ2kdL1PWBvs0PgBEDwjJvLsAwEtwBXpytphlFJtOxcVt+JFwtPLASrZtFR24G2g20BH+NdHs6k37s9NzRLDRh5eZ5/3W7AZPL832lxwmayQalRQpWigkKpgFKj9FQmpmuh1ChhM9mOD68TB4mSn7fhqT9j7DstTig1SrBazx3UbpsbmeWZyB2fC12WLuTXO7M8EwqVAo52BzobOv3W20w2WI5aAAbIG5/X5/L2V6JkFwqpB0a6NibPp8vUAQAsNZaYPF+4YpWd93XXGDXSMFLhzoPhtrtha7IBAIzFxsgWMAyZQzOhUCrgNDsDnpd94f177TA7IHACFArPee/9CfSdTU7nHYkcyl2+KDv5ouzki7KTL8pO3ig/+UqU7KgHxgBiyDFg7oq5PVaQadI0cbvbmkRf1/fAtje2ofr7agw/fzhGXDACnQ2dWPvgWoiiiNqfajHighHxLm7S6ToHBgCodCoMmjIIR78/iiNrjiCz3L+RwtsDI9Tho0wmoPnY6EIjjkWoVgPZ2UBLi2cYqewuNzgrdUpoUjTg7Tyg8J0UkiaC9HB1+ObWV4yCQXppOsxHzHBanOBdPHQZOml9KK83q2Ix/LzhUBlUUGr8/4Q3bPXM1J5Zntlrg8vhbw6jam0VRs4dibxx8WvsiLdYN2CkFXrmu0nUBoxYkXq+pGlgLDaicVtj2A0Y5irP9rpMXdwm8QYAVs0iozwDpj0mtOxpicjQbIYcAy565yJ8duNnsJvsmHrzVOSOyfXZhr6zETKw9NbDq2lHE3gXj9wxuWDVPQ85RwghhCQCa7OV6ihJSKgBY4Ax5Bh8Tn7ezaP9SDsySjOgUFKHnIHA+x7gnBzUBjUGTRqEzKGZyByaiak3T8XGFzdKleYksqQ5MLo0EpScVoKj3x9F9dpqTLhygt8k2q0HWgEAGUNDa8DYu9fz75AhQEqXeaELCo43YIwd6/uYtMI0pBWmQaGiz4BAnB2eL1SR6J2m1quRkp8Cl9UFlV7Vp330NFFxwxZPA0b+hPxe99O0own1m+qRVpg2oBswvHP/aI0xasAYTA0YwPHJ07VGLQomFKBgYkHIDbVe3uGj4tn7wqtsdhnyT8gP+xh6IrgF8A4eWqMW5WeV+wzxRwgZeEz7TPjmzm9gLDHirCfP8lv/7b3fQnALuOD1C6iyhxBCSMLrOqx1MPEe1pokDroSihGFQoHCwsKEGOvtwBcHsOfjPSidWYr9/90Pe6sdZz51JrKGZcW7aAkpkbKLpI7aDgBA6uDjd4qWzylH6qDUuA49E0mJlt2oBaNgPdXq09OiYGIBVAYVWA0Lm8nm84dZ4AXwbs9456EOIdV9/guv/Hzg11/9J/IGPHf1J6JEyS9SPTC80grTAAZgENkJo0VRlHpgFEwo6HX7gkkFOPTVIdRvDvCm6KdEyS4UIy4YgcFTBvtNiBotaUOON2BEer6ESIhVdt6GI41Rg/SS9D7NYdFe1Q4gvvNfeJWfXR7xfXrP5+xR2SE1XsjpvCORQ7nLV7jZuTpd4F28ZwjYAFg162n4PDZXDokeOu/ki7KTL8pO3gLl13VYa6XO/7suZ+ekYZapASN+EuXcowaMGPEGnggsNRZ01HTA1emCscQIe6sdrftbqQEjiETKLlJcVpdUedR10m6GYZB/gufO7WToypdo2Q2a5D9xMqtiMee5OdBn6/0qMhWsAhe8cgGcHc6QK8+DNWB4J/IO1ICRqBIlP28PjEjNDROJCmt7qx3Nu5uRPz5fem+0H26H0+yEUquUJhXuSf4J+WAUDCxHLbA2WyN6PidKdqHQZeqkeSliISU/BYyC8cw/1eYI+Nzx/PyNVXZSA0Y/ejbln5APURBDanTneWDdOs9nYEEBMH06wCZm260kszwTw84bFnKvDjmddyRyKHf5Cjc7qSdvkO+ErJqF2+qmBowYoPNOvig7+aLs5K2n/JQ6pc8oFV3RsNbxlyjnHjVgxAjP89i3bx+GDx8ONs5XzJ2NngkmDXkGsGoWDZsbYNpvwjAMi2u5ElUiZRcpHXWe3he6TB1UOv9hbKzNVny48EO07GuBNk0bsDVcDl355JJdb69hOGO797UBw1JrgcvqQnpJOpTqxPjTkCj5eSsC4jnGfnff3P0NLEctmH73dBRO9XyZaNrZBADIHZsb0pCAaoMaWSOy0LK7BfWb61F+VuTuIE+U7BIRq2JhyDegs64TlhqLXwNGvLtSxyq7nNE5sJls0vHXbqiFaa8JxTOKYRwS2pBQhVMLpfd/T1auBG6+Gaip6fLYQuDZZ4G5c/tU/ICcFqdnDozBqdJQYf2RPSIb2SN6b4z0ovNuYKLc5Svc7KS51IJU8njnvaAGjOij806+KDv5ouzkjfKTr0TJLjFqqQYAURRhNpshimK8iwJrkxUAYMg1QJ+tB+AZU5UElkjZRUrWsCzMXTEXjjZHwPVOixOth1rB2Tg4RAeycrPAsMfvGpdLV75Eyk7gBdRtqIPKoELu6Fy/uS4AzwWny+rymdg5XOE2YHB2zx0NnU2d4O08NKkaaNI00vJ4SpT8zn/5fPAuPiLzBAV7XcN9vXNG58By1ILmnc1SBe7w84Yjb1weRD7016tgYkFUGjASJbtQ7PpoF1g1i9KZpREbJqw3JTNK4Op0BRy2Kt5dqWOV3cl/Ptnn9/3/3Y/6TfXQZ+tDbsAIxcqVwPz5QPfDqa31LP/ww8g1YmxavglVa6owdslYjLlkTGR2GgY5nXckcih3+Qo3O6kBo4ceGAA1YMQCnXfyRdnJF2Unb5SffCVKdtSAMQBZGz0NGCn5KdIdPJajFnAOjiaIHEA0qZoe7yjXZegguAWIvAhrixWZZb5zMFBXvvC4Ol1Y9/A6AMDFqy72m/+gam0VNrywAQWTC3DybZ6KvW/v/RaiKGLi0olIL07v9TmcTuDgQc//e2vA0KRpoM/Sw2aygXNyYEQGAifAbrJDFDx/mPRZ+ohMXJ0MvJUCfdX99Q4knNc7Z1QODn5xEM27mqVlDMOE9D7pqmBSAX5951c0bm2EwAkRaaSRE1EU8evbv0LgBBSeWBizBoyxi8f2us1A60ptLDKiflM9zNXmkLa3tdhgb7XDWGQM+t2F5z09LwJ91xZFgGGAW24BLrwwMsNJZY/MRtWaKjTvbu594140bGuAglUguyJ7wJ2XhJDAXFZPA4bK4N97GqAGDEIIIfJlb/MMbQ/Gc7OeWh+b6zIiH1RbPcC4rC5p/FRDjgFKrRK6LB3sJjtaD7Qid0xunEtIEgWjYGAsMqL9SDvsLXbY0m3QZ+rjXSzZ8p53Sp0SCta/MiqlIAVumxu1P9WCc3BQKBVo+rUJAidAqQnto/rAAUAQgLS04w0WXt0bMAw5BsxdMVcaZ3//f/djz6o9KDyxEBN+OwGAPOY5kYvur3cg4bzeOSNzAABtB9vAu/g+N7BkDs2ELkuHtCFpcFqcMZ0LIhG4bW5pMlStURvn0vgTRRHWZisYBQNDdvKci967d7rOB2Ms9vS68E7M3ZuqdVXY+vpWDDl5CE65/ZSA26xb5ztslH85gKNHPduddlpIT9sj73lp2mvq9wTt29/eDtMeE6bcNAVDzxja/8IRQmSPemAQQghJVtKIBKKnRzo1YJDuqAEjRhQKBcrKyuI+a7u394XGqJHuWMwclolaUy1M+03UgBFAomQXSRtf2giFUoERF47oscJUpVchdVAqOmo70H6kHZoUTb/vRI+lRMqut4vOzPJMpBSkoLO+EzU/18A4xAiBE6AyqGDIC63isuvwUd3rzbo2YHjvPDbkGKT8B08djENfHYLL6kLmUN/eNvGSCPl11Hdg8yubYcgzYPK1k/u1r66vd38Z8gzQZepgb7XDtM+E5t3NaD/SjuHnDkfOqJyQ98MoGFzw2gUBG9X6IxGyC4Wj3TOMnlKnjNhnW6iTRbusLnTWdyKzPPD5JnACWva2wGXxfHZoUjUhN2b2Ryyyq/2lFj8s+wF54/Nw2v2nAfD0wAAAS7UlpH2Yqzw9NdJL0oNuE2zOn75u1xtjsac3iNvqhuWoRTqmcLmsLpj2eob2zD8hP+THyeW8I5FFuctXuNml5Kcge2Q2UgtSA64fft5wDDl5SNi9MUn46LyTL8pOvig7eespP87OwdnhlG4sc5qd0KQmxrDWJHHOPWrAiBGFQoHc3Pg3DvBuHull6T7DlJTOKkX2iGwUTCjo4ZEDV6JkFymiKOLQV4fAu3gMO6f3idtTB6XC0e6A2+pG26E2ZFVkxaCUkZFI2Xm7/QdrwGAYBsUzirHzXztRtaYKQ6YNAQBklGWEfBdvsPkvgOMNGDYb0NHh6aXRlbeiraOmA6IgBpyjI9YSIT+7yY66DXVIHRy4siBeGIZB9qhsHP3+KJp3NaP6+2q0H27H4CmDkYPQGzAARLzxAkiM7ELhNHt6xGjTI9P7ItTJol2dLny06CMAwIIPFvgNgeS2udFR2yH9npKfAoUqNl8YY5Gd03LsAqXLx4x33gtHuwNOi7PX4dS8PTW8PTcC6d4Trb/b9UbBKpA5PBNN25vQvLu5zw0YjdsbARFIHZwaVqOnXM47ElmUu3yFm93oBaMxesHooOuLTy2ORLFICOi8ky/KTr4oO3kLlF/XYZal6wMADrNDqjehYa3jL1HOPWrAiBGe57Fjxw6MGTMmrrO2Z4/Ixpxn5/gsG3LSkLD3Y222RmwolESXKNlFiq3FJk1IHMqd/QzDIGNoBpp3NINzchBcQgxKGRmJlJ23B0awcYsBz1iPLqsLVeuq4LK54LK6oE5Vo/VgK4DezytvA8aEUc1Ah+9dzAYA40qBTivQVJ2GtDG+ldwpeSlg1Sx4F4/Ohk6kDop/hX1/8ovUZ5Szw7MPdWpidWG1NluhTdfCZXVh/2f7pXkDNEYNWg+2hnx8XV8nh9kBlVYFVnP8te7rZ3kinXs98fbAiEQDRqiTRUuvOeP5XDj641GpolvgBGx/ezs66zuhUCqgSdMgozwDKm3wz41Ii0V2UsNRl2G7lFol9Ll62JpsMFebe+wRKgqi1FOjpzuNp0/3NCDV1gaeB4NhPOunT+/bcQSSMzIHTdub0LK7BeVnlfdpHw1bGwAA+RNC730ByOe8I5FFucsXZSdflJ18UXbyRdnJW6D8ug6z/PWfv4a9zQ7Ac11w9t/PBsMwSVW3KFeJcu4lRAOGxWLB3XffjTVr1oBhGBgMBjzwwAM4/fTTAQC7d+/GddddB7PZDIZhcM8992Bu11sZZUAURdjt9rjP2h4J1mYrVi5eCZvJFnQbfZYec1fMTYoPmmTKDoB0V68h39Drndddu+ylDkmFWqcG7+Zl05UvkbLzzoERrAeGtdmKr2/7Gk07msA7edT9UgcAMB81Y9cHuwD0fl7t2QNkpzZjcfFi4HuT3/oVNwJOB5C5JwsoXwFojzdiMAoGaUPS0FnfCZvJlhANGH3NL5KfUd6Gp54mvI817/F1NnTC7XCj/XA77K12sBoWn1z1CYDQjq/r62RttMLV6YI+V+9zrH39LE+kc68nkWrACHWy6NOnWfHxZZ7XvKO2A5yDw6fXfip9LnTUd4B38hBFERqjBsYiI0RelHpwAYj6528ssvO+7t3vpkovTg+pAaOjvkOa+yUlPyXodizr6f0yf37wsjzzTGQm8PbKrsgGALTsaenzPhq2eBowwu0ZK5fzjkQW5S5fkc6us7ET9lY79Nn6pLgGS2R03skXZSdflJ28BcvPkGOANl0L3s1DbTheV6JL10GfTXOwJoJEOfcSogFj4cKFmDFjBrZs2QKFQoFNmzbh/PPPx48//oi8vDxceOGFeOWVVzBjxgw0NDRgxowZKC8vx7hx4+Jd9KRhbbKiZU8L0kvTpWEcgnFanLCZbFBqlFDq/N9CnJ2TuoDRl+fEY6n13LWaNjgt6DZdu/JxzuOVZd670QHqyhcuaQ4MQ+AGDO95pc3Qwt5il5YbcgxQapW9nlei6GnAyNVbkKoxAQoNwPpOyOwQAKfbDrhMgNvi04ABALMengWVXtWviWcTQSQ/o7y9E4I1PMWD9/jUKWroc/SwHLVAoVRAl6WDNl0b8vF1fZ3UaWpwDs+57q3MHwif5Q7zsYp0Y/8+y0KdLPqH/x1/zTVGDQROgEKlkF5z3s3DUm1Bekk6FEqF9P4TOAGuDhcYBQONUSP7z1/vcXV/3U+48gRMvHoiUvKCN0oAx+e/MBYbex3ubu5cT++XJUsAh+P4cr0eeOst36G9IiF7ZDam3jJVasgIV2djJzrrO8GwDHLHxr+rNiEkcay6YhUgAqc/dnrAxtud7+/EodWHMO6ycRi9MPhQU4QQQkgisTZaAdHT80KXpUNHbQcsNRZqwCA+EqIB45tvvsF7770nTQgyadIkTJw4EZs2bYJSqcSECRMwY8YMAEB+fj7++Mc/4vXXX8czzzwTx1LL0+o/rYbb5saJt56IrGHH5zLY9uY2VK2pwthLx8J4cWhjNit1yqCVsV0rvUli8fbA6GlM/65d+boTRRHVa6vBu/ikrdSMhoKJBdKk6D1JyU2BUqOEo81T06bL1EkNCj2dV7W1QGcnUJAKaDTwNF4ou+XDAnYX4HYHHlop2PksV5H4jJJ6YCRgZbFSp4TKoALn4DxDwuUapOMN5zNYqVMiRZMCR6sDnJ2DyqACg97fc8lg2JxhyD8hv98NVKFOAt3U7PlXqfM0YDjNTrg73VCXHX9+BavA+cvPhy7reANk3cY6bHp5E3RZOsx+dDa0Rq2sP3+9DUddh5AC0OsNFF6hzH/R1dy5wJAhwP79x4fzUqmACy4IvcyhUhvUKJtd1ufHN25vBODpyaHSxW7oMEJIYhNFEfZWOyDCZ6jHrpQaz6V9sv/tJoQQklzcNjdSClKkG/Q6ajtgrjYj/4TwhlMlyS0hGjBOPPFEPPXUU3jggQcAAGvXrsX69evx0ksv4fHHH5caL7xmzJiBZ599Nuj+nE4nnM7jFXQWi+eOc47jwHGeL3QKhQIKhQKCIEAQjo/p713O87xP95hgy1mWBcMw0n67Lgc8Y4UBni+dw4YNg0KhgCiK0nIvpVLpt5xhGLAs61fGYMt7OyaO49Be1Q633Q1GyUAQBOmYjGVGCN8JaNnbAlEUez4mzvMaiKIIQRTAMAwcbQ6wahZKvVJa5z3uaB5TpHMKtNybXbIcU/vRdgiiAEO+ARzHBX3vGXIM0GXp/I6pdV8rdq/cDTDAoBMHIXdMbtyPKdj51DU7nufjmlNqUSpSizyNFxzH+ZXde14xKgbGYiPSitIAERAh+uyP53jp9ela9p07RQAsiotFMDj2XoUI2OsBdwfE1HJotZ7ndLsBjueAbp+H8cop2PkUSn6BcvK+lgDAuTi0HWyDPlsPXbZOqpgXRdHntQx2TE6LEyJEsDrWZ11fjymS7z1RFOEwO8C7PM+lNqghiIK0TnoNQvgsVxlUYFgGgluAq9MFlUHVr89yhmGk7DiOS9jPCGWKEhnDMqRt+ppTbq7n/OtNbg5Qdex1VWqUECGCc3DgXTwYFeM5VgZQG9XIKDteLkOBATs/2Am33Q3exUOfrfd7DSL13mNZFsOHD5ey63qskcrJ3maHIApQGpQBPw97O6bCEwuh1CqRWpga8POw+zFxnAKHDokAGDz2GIdvvmHR2srgxx+BadMS63Ov6LQipA5JheAWwvrc8+6noqICgO95H6ljine3cRIYy7KoqKig8cBlKJzs3DY3jn29C3pzhkLluRlQcMtnvjq5ovNOvig7+aLs5K2n/LKGZ+H85edDFEWYq80Yu3hsjyOGkNhKlHMvIRow3njjDcyZMwc//fQTRowYgRUrVuDtt99GYWEh6urqcMYZZ/hsP2TIEBw6dCjo/h599FGpMaSrLVu2wGDw3LGYk5ODoUOH4vDhw2hubpa2KSwsRGFhIfbt2wez2SwtLysrQ25uLnbs2AG7/fjwLhUVFUhPT8eWLVt8LvTGjRsHtVqNjRs3+pRh8uTJcLlc2L59u7SMZVlUVlbCbDZjj3cWXgA6nQ7jx49HS0uLz/EajUaMHDkSdXV1qOkyZkVvx7Rr6y601HvGZN5zdA/KDeXSMTW7mmFuN8P2kw0nmE/o8Zh+/fVX2Gw2uBVusG4WBq0BrQdb4Xa5oc3TgtWx4G2ex0X7mJIxp2gfU/Xeatjb7ahuq4Z5i7lPx5Q1JQsHVx/EZ3d/hoo/VqCgqIBy6ucx2WpssNls0KZrIfCC1PAKeCql9Co9eJ7Hr7/+Cn2b3u+YVq+2AihFdrYZDqcTOjXgcDjBmg8DAJxuLRQKz3jqTodnP05Vm88x7dq+C7++/CsczQ5U3FqB8uHlsszJVmMD5/ZUyLUcboGj1QFrqxVGpRF6vR4MGDgcDp/XMtgxOSwOT6+jxmrYNx5/DeL53jty+Ij0GQwGngbJHAM6rB0QeAG8nYfb5kZHRweykBXyZ7k6VQ1HmwNt9W3QZGvA23lwNs/rGO4x1dfXJ9TnXrRz0mqbkZs7AU1NagCBhjQSMWiQgMmVwF6HA26LG4yKAcdzUKlV4F08bDYbOBsHt82NX3/9FScOOdHnmMTBIsybzDj87WGklKRE9Zja2tqwb9++qOXUqekEn8njYMNB1G2s88mp4ZsG2OvsKJ5bjGmzpgU9JrfBjUOHDqFmY02vx+R2DwXPM9DreTQ2bsTkyeVYvTob//0vkJ0d+feeu9ONrI4s2Npt4Eb6NnyGk1PbvrY+fUbs3r07KufT8OHDQRIPwzBIT0+PdzFIH4STnXcuNVbNglUHrkDwLqceGNFhbbb69U5vM7VJ/6eJZuWBPjPli7KTt1DyYxgG6cU9b0NiL1HOPUZMgNupBEHACy+8gFtvvRU8z2PRokV49tlnkZOTg9NPPx1/+ctffBoxBEGQ7kgLNFZ7oB4YQ4YMgclkQlqapxUv1neD8jyPrVu3YuLEiVAqlXG5a7d5XzNW/2E1tEYtLnzjQp9jcjvcWLloJURBxP/7v/8HQ7Yh6DG17GvBR5d8BG261nOXLiei7XCbNCmnSqeCJk2Di/99MTLKMmTdW4HneSm7E044ARqNRvY9MDiOg9PihEqvAqti+/Tec9lc+Pymz9HZ0IniGcWY9sdpcc+pK+8xuVwuKTulUhnXnBp+bYDACzAWG6FJ1fiVve1gm+e8ytBCbVD73enK2Tg42h2Y++5cZAzN8Cv7734HvPiiAo/etR9/mbYQjDoDIqsDWo9VQKWUoaY5C/t22VCU347Sy98FUob6lJ3jOHx0yUfgHBzmPDcH6cXpcb0T2e1295pfoJy8r6UuQwd7mx0ddZ5h0wZVDgIDBm6bG/Y2O+b9a570WvZ0TLzL8znQtcIgnj0wmvc146OLfT+DFawCYDy9btxWNxztDiz4YAGyyrNC/iy3NdtgPmKGKkWF7JHZ0n4Wfrgw7M9yl8uFLVu24IQTTgDLsnH/3AuW065/7wKjYFA0vQi6dF2/cvr3vxksXKhA9wYMhvGU//33Rcya0I73578vveaCW4CCVUDBKiCIgvSaz/vXPGQPz/Ype/2meqx9aC106Tpc+H8XenpYBTim/r73BEHA5s2bMX78eOn1i2VOn13/GTrqO/4/e+8dJkd15e+/VZ27J/TkrJyzQCJICJGzjRHBX4PT+odtHGEd1nFtw3qd1vaCveuEw9rG2BgQxphkkskGhCIKKI40OU/nWF2/P2qqp3umu6fz9Ej16plnRtXV1ff2qXur6p5zPofN39hM67rWvPTpr38VueYaOO00mddek/jjHwXe/34dK1bAzp3575Ozw8kTn34CnVHHNX+4BlEvRl8r5BwRiUTYtWsXq1atiouQypedPB4Pdrsdh8MRvZ8+1XE6nVRWVk7rdxIOh9mxYwdr165Fry+J2DSNNMnEdiNHR3ji1iewVFt412/flXCfvffvZffvdjP3ormcdetZBWjxqYtnwMPWG7fiHfICY5JeXh8W67jUq7XGypZ7t2hOjBJHmzNnLprtZjaa/WYuhbRdJvfSJXHWvPe97+XQoUM8/fTTzJo1i9tvv51Vq1bxxhtvYDKZ8MdWXQR8Ph8mkylpoVmTyYTJNFmvXK/XT/qy1Ye6iSRLjUm2PZkRY7er0kyCICTcP9n2ZG3MdLt/0I8oiJQ3lcd9jk6nQ2fTYZ9tx9HuYPjQMLZaW9I+6fS6aD8EQUA0iNQsqsHT58HR4SDoChJwBujf04+pwpSwjoLKxEiVTPtUCDsl2i7LcvSYhbZToftkMBgw1MTramfaJ6PVyMbPbeTxWx/nyONHqGyrpGV9y6T9VPsWy06xqAs/qu0mLsRNpNB22vWbXQwfGubcr50b912pbY+OK/VfkvlNp9clnMfUYOmFC8ToewVBBEOFUrBbALNZ2R4KgV6nhwnH0ev12GfbGT44jLvLTfXc6pR9ypedkp172dpP/S4ByhrKcHe7QSDuexUEIeF3magtepMefZLL5XTM5eqioyAIiIIIMcNZ7aP6k6yNED+Xi4JSSNqBg5AnhCzJccfIpk+q7WLfN91zeSyCILD/z/sJeUK0rm/NeY64/npYtgz27Yt/vaVF4K67YMsWgeEjxH3nonH8eKIgRl+LPYfVtrec3oLFbiHgCNC/u5+m05oS9inXc09dFJ9oOyiOnexz7Hh6PXi6PcDkPnkHvfTv7adqXlXCmhmJ+vT228rvJUuUY115JYgivPUWdHXpmDUrf33yDHiQJRlk8I/46Xy5E/sce3Q/9bqY6DhHnjjC0MEh5l08j/rl4wW807VfOByOyk4lOn6udkp2XdKYfiY6mzRmDunaTq3JZbAlr42jBlqo0pIa+SPgDOAd8ir3hBbFER0SQ5grzIoj2BfGO+Ql4AxoDowZgDZnzlw0281sktnv6S8+jRSSOPNTZ2KfY+fAwwdwHHew+gOrJ9XM05geSmHsTbsD4/Dhwzz22GMcP36cykrlQfS3v/0tH/zgB/nJT35Ca2srJ06ciHtPR0cHra2t09HcGY2nX1kMsNUnvqmqWVgTdWC0nd025fH8Dj+DBwYxV5kpa1AK7lTNrWLk6AhhX5hXvv8Kvi/70JuTn2ZapMrMxVJjwdXtwnnCyWMfe4yKtoq4KFPQ7BuL+uA5VaHssC9x2n+y7SqqGsm8+YAbkFSZkAjIYQh5sBgtWIw+QqHkx6mcVcnwwWEcJxzJd5ohhH1hZGQiUgRkCDgCiAZxyu9yppDtuZJqf3O1GYPZQNgXRgpM/01KIZFCUlSSIx83xm+8oTgvdDr4wx/gpptAkuCll2D27Ph9s7GdqBdp29jG4ccO0/58e0IHxkxAzQBIthheOauSrn92JZ2Denf18tqdr1G/sp4Lv3VhWp+pzo9j5SGoroazz4aXX4ZHH4WPfSyzPiQjNkLX1eMi7A3zyEceiTu/Ul0Xj79wnIG9A9QuqY1zYGhoaGhE7yPLkt9HqkW8NQdG4dBb9NGaY7qQDoPNoASToEl3aWhoaGSDLMsMHxpGCkroTIoj/tCjh3D3uJlz3hzMqzQHhobC5HCuIuN0Omlubo46L1RWrlzJyMgIGzZs4Pnnn4977fnnn2fDhg3FbOZJQdSB0ZDEgbGoBoChQ0Mpj2OqMGGtseIb9ClyFyN+/KPKT9gfpqypjPIWpVhx0BNEb9Jjtpsn/ehN+mikikZxOPL3Izz/H89z/IXjOR8r4Awg6kX0Vj2CTkDUiZp9U6AulCZ78FTHVTgQjo6n2J9wIIy1xoqpYnJ2mcsFXV3K33MXVoCpBiIBCI2CFIRIGMIuzOIoZkOAPkcNPilxep6qOTl6fDTXLk8bcd/lsB9kiIQjeIe8U36XE3nxWy/y6g9fJeAqnfM4l3NlquMYLAYQlPGdyfc0Ewk4FJuKejFlRGu6/OAHyu/3vAfe/W6iUf3q2ITcbTfnvDnoTMn1z2cCw4eGue+a+3jyM08mfF2dg5I5MBzHle2xWQ1ToWZgLF48vu3KK5Xfjz6a9mGmJDZC11pjRdQrWTXpXBdDvhCDB5Q6ZY1rGvPXKA0NjZMCg1WRd7TPtSfdp3phNSvfu5K5588tXsNOQeSIzMjhEQLDpXNvqKGhoTFT8Q37kIISgihEA3wq2pS1CkfHzA+q1Mgf056BsXr1asrLy/nv//5vbr31VkRR5MiRI9x999386le/Ys2aNXzta1/j+eefZ/PmzfT29vL973+fe+65Z7qbnhE6nW6SJnGxMdvN2OfZE0ouADSva+acL50TdWQkw1Zn45o/XMNjH3sM34iP0285nebTm+P2MVWY6Hqji2e/8ux4pEo4gqBX5HFUZkKkSinYLl8M7Bug+/XuKW2cLoIgUDWvCp1Rh6ls8oLbdNu3VGwny/KUqf+2Ohtb7t2SkeSaihpd3NAA9sY6sN+ryEZ1Pw4dW5UXGy9CN+vdvPdjMOCo4PWP1JHoGbhyljI/lEIGRrb2U79L74CXxz75GJZqC0DcXJVOoUUpKNH5qlI49/SPnp5FDwpDLudKIY6TiFIZe6lQ6zaZKpNLUqZLezs88IDy92c/q/xua4Njx+DECVBjLnL9zmuX1LLlni0pMxtzpdC28zv8yJKMHElcgi06Bx13RKU3YxltH1X2m534XmYisjw5AwMUB8aXvwzPPgs+H1gsmfUjFXqLHp1Rh3fAixSU4jLvkl0X+/f0I0sytkYbZY1lWX3uTBh3GvlHs/vMJRPbNa5pnNK5WT2/mur51flqnkYSfMM+/CN+JaNwDqANvRmFNmfOXDTbzWyS2c/d4wbAWm+NKnpUzqqk+/XukliT0CidsTftDgydTsejjz7KV77ylWixT6vVyve+9z02btwIwF//+lc+/vGP43a7iUQi3H777Zx55pnT3PLMMRpTS8cUmuU3LGf5DcuTvm6ttWKttaZ1LE+fBykoYau3sfRdSxNGg9Yuro0uPMiyzNDBIcxVZsqbyrPrwDQy3bbLF84uJwAVLfkrNKk36aeURZpOSsF2UkCKLtalSv231dmyWixWF+eWLh3bYK5TfkQD6G1QsQjm/38IlgZ8ehh0QU8PzE0QoKcuCrq73UghCZ1hei9S2drPVmcj7A9Hz83zbj+PqvlVGUkFqU4nQRQwWHOP0M8n2Z4r6RzHccJB1+tdtJ7VmtNnlMLYS0WsAyNX7rpLkYu66CJYs0bZpmZgTFDBzMl2giAU1HmhUkjbqc6bZN97eUs5gigQ8obwDfkm3ZdkmoExOAgjIyAIsHDh+PaVK6G1FTo74R//gMsvz7grKTGUKdlMUkDCN+yLOlKT0buzF4CmtblJg5X6uNMoDJrdZy6a7WYegjjmWBeUbM6p5neN0kMbdzMXzXYzm0T2c/cqDozYAB416NrZ6SxOwzSmpBTG3rRLSAHU1tby85//nN27d7Njxw5efvll3vnOd0ZfX716NS+//DK7du1iz5493HjjjdPY2uyQJIlt27aVROGTfND+XDsAbRvb0pKy8A37CLqD+IZ9U+5bapxMtnN1uQCiEl/5REYm5A8R8qUosFBkSsV26kK4qBcLIv2SKLpY+eAxObiGC8HSAEDT2NpYT0/iY1mqLViqLVTOqYxK7EwXudpPvRmyz7PTdFpTxnUOVNkoY7nxlCpeu+t3u9j12110vNKR9TFKZeylwu9QHBiWqtwWHkZG4O67lb8/97nx7aoDoyP7rzElo8dHCzLfFtp26rySbDzqDDrFiaETcPe549/rCkTvI9RMjalQ5aNmzYrPshCEwshIqYiiiLXGCqKSkTEVPTuUSTkX+aiZMO408o9m95lLvm0X9ocZOTYSzVTTKAyWagu2RhvhUBjvsHe6m6ORIdqcOXPRbDezSWY/V4+yRhXrwFAlpJwnNAdGKVAqY68kHBgahUeW5WjhzFQ4Ohzs/fNejjx1JOk+UlCi42VlRSZdjVVTuRJpGfKGlIK6GkUn4AoQdCkL6YXIgnH3uunf3R91kmiMEysfVYiF8KQODL+ip45pXDJsKgeGIAhc/X9Xc/ldl6edkVWqRKM5GrKTY1HHS6qsmZORptOVk6R7W/c0t6Sw5CsD4xe/AI8HVqyASy4Z397WpvyemIGRD176zks8/snHo9fimUT0e09RW+X8O87nhgdumFTIWl2Us9ZblXotaZB0fiTegZHGLVLG2OfZqVtaF9fWSHjyPZB30Iur0wUCNKxuyH9DNDQ0Zjyv/eg1/vKBv3D0maNJ9xk+MswTn36Cl77zUhFbdmoR9oWVGo9mPbIk4x30EnAFCPtKXxZZQ0NDoxRRn9lj16jUDAz/qL+kalFqTC+aA+MUYfjwMPdffz/PfOWZKffb/fvdHH0q+c1x1+tdhLwhrHVW6pbXpfX5OqMOnVkH8vhirkZxUR0L1lprQSRI1BoYAWcgLWfZqYS5ysy6j61j5Y0rC3L8KTMwhrdBz1PA1A4M4KTJNvD0eQDQmXQcfeYox549ltH7YzMwTiXUOiGDBwZP6vl63kXzuPi/LmbZtcuyPkYwCD/6kfL3Zz+rRPWrJJOQygdV86oAaH++Pf8HLzBTSUiBcp1SNXBjUR0YuRbwVrngAjCZlBom+/enfci0ERDiJBZD3hCOEw72PbAPV4+L4SPDDB8ZpndnL8ZKI7Z6G+5eN8NHhvEMePLfIA0NjRmLb8SHb9iXtH4QEM3ylYJadHK+MVWYsNZYCQfC+Ef9SEEJGRkpKOHucRMOhLHWWFM65zU0NDQ0JmOuNGNrsMWphOjNeqz1SjClq1sLkNVQmPYaGBrFwdPvQQpIREKpsx9qFiqR2iNHRohIEUTd5AWEirYKFly+AFu9La2FTjUiRW/SE3KH8Ax4EPWiFqlSZNT6F/mWj1LtKI/9C/vDeIe8ccXaT3XMlWYWXrFw6h2zIByGQ4eUv+McGBEJgiPK391PgOkNaLo4LQeGSqICujMJVX5Gjsi8dudr2BpszL0gvawxGHe2qhlkpwq2ehsVbRU4O5z07uxl1jmzprtJBcFcac5YVmwif/oTdHcrjsH3vCf+tUJKSM0+dza7f7+bvl19+EZ8OctgFRNVuiub7372ptnY6m0Z1aRJlYFhs8H558MTTyhZGMuy92XFkez+xjvsBRkOPnKQN/73DUyVprg6Q7Isc//19wNgrbGy5d4teal1o6GhMfNR70lSZYVqDozCYauzseXeLQzsG+CV779C1fwqys8sRz4us+z6ZczZPAdThUmbszU0NDQy5PSPnM7pHzl90vYLvnkBlipLUer/acwMtDOhSOh0OtatWzdtVdvVSGRbfeqbqvKWcgxWAyFvCGeHM2GUo322nfUfXz/lZ6qRKt4hL+FAGFmWiYQj+IZ9UTmFmRCpMt22yxchbwi9WZ83B8ZE+wKIOpGQP4Sn14O5yjzt9j1ZbJeKY8cgFFK03VXJGkBxXsRmwoSVxXzVgdHbm/yYjhMOXv6vl5EjMlf+75X5b3Sa5Go/NR21fnk9J144gW/Il5FTJuRV6gucahJSoMhIOTucdG/rzsqBcSqMPVmG739f+fvTn1Yi+WNRHRhDQ4rElC2PaxpljWXULK5h6O0hTrx0gsXvSJBekCWFtp19jp2wPxynczuRoCfI9ru34+pxcdF3LoqOWbPdTOuZrRl9XqoMDFBkpFQHxuc/n9GhJ5Houhj3epkJi92CwWog4AgQdAepnFWJudoc5/QP+5RAgIAzkNFi2Kkw7jQmo9l95pKJ7UKeqe9JNAdGYbHV2RiQBxAQ0Bv1vOvr78JkM6E3aksqMwltzpy5aLab2WRqv0LInmtkR6mMPe1qW0SCwSAWy/RESaqRyLaG1A/CgiBQtaCK/t39DB0cykimYSJqpIoqF+Ed9PLMl55B0Alcftfl6Ey6GROpMp22yxeL37GYRVctmjILJ10m2heg/R/t7PnDHqoXVbPx8xtLwr6lYDtXjwvvoJeyhrIpnYiZosqeLF4MYmzClByG6tMg5ALXIZACEAnT1KRM+6kyMEwVJhztDhCUh+BCFB5Pl1zs17S2CUu1hfqVio5+JBwh4AykHfm95OolLLxiYULN+pOd5tObefsvb9OzvSfrTJxSGHupePuRt0GGWefMwlKdeTufegr27FEcEx/96OTXKyqUH6dTycJIlAGQC7M3z2bo7SGOP388rw4MKKzt1nxgzZT76M16jj9/nEg4gqffk30dmyAcHVPETObAuOIK+NSn4KWXYHQU7PasPgpIfF2ciKnChOOEg3uvvJdIKKJIj/jDVC+ojhtniRwg6VDq406jMGh2n7mka7toBoZNc2BMJ6PHRwHFGS+YhLgsOo2ZgzZnzlw0281sJtpvpis+nEqUwtjTamAUCUmS2L1797RVbff0p5eBAeMyUkOHhia9tu+BfQzsH0i7xoGtzkb1/Gqq51fTckYL9rl2apfUYqo0UT2/etoXt9Nhum2XTwRByOtidKx9q+dXs/CKhRhtRrx9Xsqby6fdvqViu/bn2nn2y8+y74F9eT+2Ko+ydOmEFyyNsOp2OO0H48L8YXdaElKmSpNS90EGR4cj721Ol1ztt/ZDazn/9vOpbKvEbFecFr4hX0bH0Bl0aRcLPpmoW16H3qwn5A1FM/gyoVTGXir2P7Cf7XdvjxaVzhQ1++Lmm6GqKvE+hayDMeucWSDA0NtD0WyjfFAKthN1IuWtStSV44QyB/lGfLz1p7foer0r7eMcOQKSBGVl0NyceJ958xTnkiTB3/+ec9MnXRcn/tjqbJjtZsqbyylrVhwz/hF/XvR9S8F2GsVHs/vMJRPbZSIhJUsyEenUC74oBmotpvK28qjtZFnGN5zZ/aXG9KHNmTMXzXYzm0T263ilg63v3crr//P6pP39o37e+MkbvPjtF4vZTI0ElMrY0xwYpwjqAlQ6UYzVC6sBGDoY78BwdbvY9dtdPP2Fpwk4kkcXJkMQBK766VVc8eMrqGipyPj9GqVPeVM5tgYbkXCE/rf6p7s5JUM6D53ZkkrfHVCcFzqlAFasA6O/X6mfkfgtApWzK4HxxcOZjqVWiRbwDnmnuSUzA51Bx0XfvYhr7702pdTPTEWW5WgthlTFpCciSfCPf8B3v6tkYAgC3Hpr8v0LWQfDUmWhYXUDACdeKoCHpADIspx2AETlrLE56LgyBw0fGmbPH/aw6/e70v68WPmoVMFdV44p5T36aNqHzgu2Oht1y+uw1lkxV+VWj0VDQ+PkRQqO1zFM6cCIyQbIV8a1RjyOduWapF6j3H1u/nbL33j8U49rTiMNDQ2NDHH3uAk4Agkzj0WDyOHHD9P5SmdU2lnj1EaTkJoBeAY8U8oRpIp0l2V5PANjCgkpgJpFSgaGu8dNJBxB1Ct+rvZ/tAPQdFpTNJo5U6ZTiuZUxtPv4R/f+Af2uXY2fn5jQT9rzQfXoDfrqV9RX9DPmUkEPYoDw2DLfyR/UgeGHAFhzEdtKIOwB0IuamtBp1MWYvv7k0clV86qZOCtgeji4Uwj5A2BQFy9nZHDI3gH03dg7PrdLryDXhZfvZjq+dWFamrJUjUvSVpBgcn1mpcOQXcQWVIW0tOVFNu6VXFWdHaObzObYccOmJukNrxal6YQGRieAQ9tG9poOq2JumV1DB8Zjnu9FCT8JuId9PLIhx/BUm3hnb96Z8qUcftsOyc4EXWiqlGv9tn2tD9vSgfvGFdeCT/4ATz+OEQiE+T4CozRZsQ499Srs6OhoZE+UlCidmmtUs/OkvzxXWfSsfS6pegMOgRRk+TIN0FPMHofWTm7Eg6AtdZK0BUk6AoysHeAhlUN09xKDQ0NjZmDKnWfKGDOaDNiqbbgG/bh6HBQu7i22M3TKDE0B0YRyabgiWfAw9Ybt6aMGrbWWNly75akCxVSUKJxbSOefg/WWuuUn2mttXLZjy6jsq0y6ryQZTnqwJhz/pyM+5GoTYJOQNTNjCSg6S5WkyvOTifODicU4Vkmm4K/haQUbFeoDAxZTrFAt/8HMLId5t8M+nKgD8JudDqor1ckpHp6kjsw1EXC6c7AyNZ+hx47xK7f7mL+ZfM54xNnYKkZy8DIwIHR9UYXjnZHXua8mU42+qTTdc1LB1U2ylhmjF7nUrF1K1x3nTLmYvH5lO0PPABbtkx+X6EkpAr9PRVq3gw4AsiSjCxNfT6pWWCq3nis7ni6TFXAW+Wcc5R6JQMDsG0bnHFG2h9RcpTCNU+j+Gh2n7mkYztjmZGLv3fxlPsJgpBWnSGN7FDvia21VoxlRnQ6HaJOpPWsVo4+dZQTL5/QHBgzhGznzGIE2WikRrvezWwm2s/dozgwkhXsrphVgW/Yh7PDqTkwpplSGHuaA6NI6PV61q9fn/H7As4A3iEvepM+YcRN2BfGO+Ql4AwkvVjqTXrO/cq5aX+mIAhUzY2PvB08MIi7x43erKf1rNbMOjGBl77zEl2vd3HBNy+gblldTscqBtnarpRwdjkBTjnprlKxXcijpDymKryYDQMDMDKiSKMsXDjhxeAQhNwgmmD+/weyBGXzAGhqGndgJENNjVcXDaeDXOynRnOo0fULLltA65mt0X6lQ8g9ZrcCSH/NFPY/tJ8jfz/CqptWZeScnM5rXjqoDox05KMkScm8SKV8dNttcPXVSnZTLIWSkCrk91TIeTMT2S51rLo6XcgROZoNpjo20kF18E7lwDAY4JJLFEfUo48Wz4ER9iXW8Uu2fSpK5ZqnUVw0u89cNNvNLARBoHFtI+Yqc5zt2ja2cfSpo3S+2sm6W9ZpBWlLnGzHXbGCbDSSo82ZM5tE9nP1KDXgkkkWV7ZV0rezb9qDKk91SmXszYzw95MAWZYZHR1NW/t5InqLXpEZmPCTKo04n6jZF60bWtGbcvxMQdFlnSk1EnK1XSng6lIuDOUtiT3b+Wbo0BA7f7uTrjfSL7ZaCErFdoXKwFAX5+bMAYtlwouBQeW3qQbsK6BqNRgU+6dTyLtydiUVbRXULKpBjkzP95eL/aJ1f8ZuhqrmVtF0WlNaWWgqAZcSYWUqT79GwsmGb8iHq9NF95vdGb2v1K95ah2ndOoOvPhivGzURGRZcVC8mKC+XCGLeIPyPenNenwjPhwnHBhshpy/p0LOm2rUYjoOjLKGMvRmPZYaJXXc2ak44tPNwJDl8QyMqSSkoLh1MEwVJqw1VsKBMP5R/6SfcCCMtcaKqSKzuadUrnkaxUWz+8ylELbz9HtwnHAgBbUit/mmdkkt599xPmf/69lxtmtc3YjBZsA/4mdw/+B0N1NjCrIdd7HBI2a7edKP3qSPBo9oFAbtejezmWi/SDiCd0BxCCZ1YKg18To0B8Z0UipjT3NgFAlJkjhw4MC0VG2XQlLGJ5p30Ms/7/onz//H80TCEU68qKy+zD0/idB3BtQvV2ojzBQHxnTaLl8UOwOj67Uu9j+wP+r4mi5KxXZqBka+a2Ds36/8Xrp0wguyDIEh5W9TzaT3pePAMJWbuPInV3LOF86ZNh3lXOzn7lUyMNKp+5Pws4MSUkD5XGP5qZuB0bxO0Rjr3d6b0XWkVMZeMtQMjHTqX6QaJ1PtF1sDo1D3e4Ig4OnzKBrcY87SXCik7VTHUToL84IosOXeLbzjF++I1iwxWA1pOyEHB1NkqCXg8suV32++mb7Ns8VWZ2PLvVu4/v7rk/5kE8FZ6uNOozBodp+5pGu74y8e5y8f+Auv/ei1KY/59Bef5rFPPBatG6RRGGJtJ+pFWs5oAeDEywWKWNDIG7nOmWqQjagXiUiRogeWnspo17uZzUT7efo9ICv1m5IFlVW0KetXWgbG9FIqY0+bZWcQckTGO+xF1ImYq8wIaRY02H73dtqfa2fV+1ex+B1T6CigpEc6u5y8/bASuth6VitSUEI0iBhsBjwDnpzSItXizoP7B4lIkRlTB2Mm4+osbgZG45pG9t63l76dfVlp559srHjPCvyjfmz1+UsnliR46inlb5tN+X9UvibkhMiYBImxGtzt4DwAliaoWp2WA2MmI0fk8WiOBiWaIxwIc+KlE/hH/Cy7btmUx1AXggVRwGDNf/H1mULd8jp0Jh2+YR+jx0aLWtg77FdkkAwWA5bqiSlGuTF782yqF1anlVGojpds9mtpURbQAwFF8q2+PsOGpoEgCpjtZnxDPgKOAKay0s0YUiWk0i2crjMok5r60FI5uzLt64maoTZ7doIMtQQ0NMD69fDGG/Df/w1r1yo23bRpsjRYPrDV2TSJCQ0NjbTwj/rxDfsIeUNT7qszKhOWloGRX2RZJugOJs3KbdvYRvtz7XS+0slpN592yj/7nAr07eoDoHZZbUnfe2lolCqRcISG1Q2IejHpnKlmYMiSTCQcSat2ocbJi+bAmEFEwhFGj46CAM3rk1TeTYC7z03YH0ZvntrcsdqOjuMOIuEIT3z6CfQWPZFQhAfe/UDO2o6VsysxlhkJuoOMHBmhZtHkCHGN/BEOhKOFiytai5OBUbukFr1ZT8AZKPqiZyky/5L5eT3e1q2KJr8qa3P//fDqq3DXXWOFhINj2RdGO4h6GN4GR38LjRdm7MCQZZmQN5T3+h2FxDfsIxKOIOiE8WhtGV67U4lcXHjFwimdEqp8lLHMeEo/hOoMOhpWN9D9ejfdb3YXdSyHvCFcXS6M5ca8OzBM5SZMi9N72Ny0CVpboasrcRaFICivb9o0+TWjUVkE7+5WZKYK4cAAJbvLN+Qj7M+udkKxiGZgpCEhFUvbhjau+MkVGfUv3QLescydqzgw/uu/xre1tsbMrRoaGhrTQLSWWhpSpFEHRkhzYOQT/4ifv3zgL1jrrLzj7ndMer1pbRPzL5ufc61IjZlHyB3SHBgaGllQOauSC755Qcp9TOUmrv3TtTNqLUKjcGjuqyIhCAIWiyWnhbBIOAKgeCjTzL6AGC34hsS6crFM1HYU9SKCXonutNZZ86LtKAgCdcuV4t39e0tfRioftptOAs4AlXMqsdZai6blL+pF6lcqK3U9O6YvzH+m2y4RW7fCdddN1uTv6lK2b93KZPko/djYDyuySuk6MDpe7eCBGx7g5e+9nHI/z4CH4SPDSX88A54MejhOtvaLykfV26LyV3qzPirhlar4nkq0bskpLB+l0ny64jDveTP9sZyPsRcOKovV6mLMdKHTKQvYyZwXAHfemTxKP1ZGqlCoAQrZFn+OpZDzZnlzOXUr6tKSM/QMeGh/oZ1HPvIIj37yUaSghCAKac8ragZGOvUvQJk7//znydvj5tYS52S85mlMjWb3mUu6tlPvSdKRItUyMAqDKsmlM+kQdeIk2+mMOs74xBk0n96sjcUSJ19zphqMIeg1excL7Xo3s8nWfprzYvoplbGnZWAUCZ1Ox+rVq7N+f9gXJhKJEAkrP907uqlZUBPVaE+GLI9LqWQiX6O36DFXmQm6g0RCkbhJIxzIfYGkfkU9Xa910b+nn6XXTBTwLy1ytd10Y6uzccWPryh6wZ3GtY10v9FN745ell07tWRPISgF24V8IYYPD2OqMGGfbc/pWJKkZF4kMqUsK4upt90GV++woKs+DayKHm+2Dgyz3UzYH8Z5wpl0n9isrWRkm7WVrf2M5UbmXzZ/UqSipdpCyBPCN+Sjsq0y5THql9dzw9YbSj6ivRiodTAG9w8S9ATTuonMxzUv4AwQCUfw9HkwWA2YKkx5WaAHOPT4ISKhCG0b2tKqqbBlC5x7LrzwQvz21lbFeZEqOn/WLHjttcI4MNTvQ44oadVBd5CAJ4Dky37hqpDz5rLrlqUl4abOK+5etyIfJSi1lWJvmqeaVzLJwFDn1kTEza1XF0ZOKl+UwjVPo/hodp+5pGu7aFBFJhkYmgMjr4weHwXAPscOaONuJpMv26lSNrKkFZQuFtq4m9lMtJ8mCTVzKJWxp50tRSISidDf308kEsnofaYKE9YaK+FAmMBoIOrACLlCuHvchANhrDXWpAUx/SN+5QZWIO3ClyrqIpV/xI/f6c/ovVPRsKqBljNbMpLCmi6ytV2pUWxvadNaZZV8YN9AXpxe2VAKtnN2OHn2y8/y/O3P53ysF1+cnHkRiywrMjUv7lkBq26HBR9RXjCMOTBCSi0U1YHR25u6sLCqOekd9BL0JC4OPDFra+JPLllb2drPPtvOGZ84gzUfWBO3XZ0D08nAAEU+qVhZS6WMrd5Gw+oG5l44N22HTj6ueUFXMHrNc/e68Y/6p7zmpcv+rfvZfvf2tLODAgHYuVP5+8c/hnvvheeeg2PHppYWmjVL+d3RkX17JxL7PflH/YS8ISJSBCko4Rv05fQ9lcK8qc4rhjIDol5E1ImEPCFMdlPa84qagZGOAyPtufXFDDtSZErBdhrFR7P7zCVd26n3YJoDY/pwHFdqManBSMlsN3RoiB2/2aEVUS9hcp0zw74wQc/4PWrQEyToCeYtyEYjOdr1bmYz0X5P/OsTPPS+hxh8ezDl+/r39vPsvz/Laz9+rRjN1EhAqYw9LQOjSEQiEY4ePUp1dTWimL7fyFZnY8u9Wwg4A3S+2smOX++IvjZ782xWvXcVpgpT0ghET7+yOGOttWbs3YxNUzaY81vEtmpeFed+9dy8HrNQZGu7U53ylnKstVakkIS7xx2NWCompWC7TB46pyLdotuT9puQgdHYqPw3FIKhIaitTXwco82ItdaKd9CL44SDuqV1ST9Tb9EnjczP1oGVb/tFHRiD6TkwNMaZSp90Ivm45r3wzRfGFwzm2Nn0FaXIRKprXroERpWF73SLST/1FDidSlHuj38cMjkdVQdGPjMwYr8nlee++hxSUGL9J9ZTObsy6++pkPOmLMsZOdMNFkP03iXgCFC7eHyySjWvBIOKcwnSk5DKem4tMUrhmqdRfDS7z1zStV00AyOdDEjNgVEQVIdE5WwluCeZ7fY9sI/OVzoR9eK0PPtoTE22c6YaPOId8uLudeMb9gEQdAXxm5Rgz3wE2WgkR7vezWxi7ScIAu4eN1JAmjJgUJZk+nb2UdY0tSS+RmEolbGnOTBmALY6G7Y6GwN7BzDajBisBkLeEI52B1XzqlIuBqgODFtD5osYok6kdqmyWDDdGuQa2fPMV54h6Aqy/hPr4xZ/Co0gCFz8XxdjqZl+rbzpJBPd4qlQMyemorkxTNz0PsGBYTRCTY3ivOjpSe7AAKiYVZGWAwNARsbZ4SToCVKzqGbaLm7uXrcSpW2Ov8RZapRC0L4h35THOPrMUfp29dF6VittG9oK0k6NxKjXvFj5woAjQNXcqmhNk1wIB8LRTBKzPT0Hxv33K7+vvTYz5wUUrgaG+j2pXPP7a0o6DVsKSdx//f2Yyk1c+bMr09ezFYAM1RmOHFFkocrK0ps3051b091PQ0NDI5+UNZQRcAawVFum3LflzBbKGsu0xfM8IkeU+1tgyu911sZZdL7SScfLHax676pT+hnoZCM2eOTNX7xJ9xvdALRtaGPNv6wB8hNko6FxKuAf9Sty+MLUUvcVrUrtPHevGykoaWuTpzCaA2MGoUZyt57dyokXTyiLiscdKW+kTBUmWs5swT43+T6pKLR8iqffg7vPTcPKhoJ+zqmKLMuMHBkh5AlNWswtBpnKlp2MhDwhID8ZGJs2KZr7XV3JCwq3tsIm66fhpWFY+Q2oXDLuwJCCEAmBaKCpadyBsXJl8s+snFVJ7/beaCR8KnyDPtw9ipMk4AxgsU/9oF0Inv7i0/iGfFzyw0uoWVgT3W6tST8DY3D/IO3PtVPeXH7KOzA8Ax4CzgCyLONod2Cym7BUjdu2EA9rUlAi4AjE/d/d66a8uTznY6vHFQ0iesvU82IgAA8/rPx9/fWZf14hMjASUcrOC1DmBFmSCTgDGKzpO3SrF1QzfGiYyjmp69bEElvAO521o7Tn1k1pN0FDQ0Mjb5x121lp7zvvwnkFbMmpiavHpSyamXSUNaaOAG5e14yoF3F1uXCccORc/06jtJgYZHPWZ85iznlzNEeVhkaGuHuVNQNr3dRKMeYqMwabgZAnhKvbpTnoT2E0B0aREASBysrKnC5us86ZRUVLBbYGGwFXgO7Xu+l6vSvlAG5c00jjmsaMPyuZhmM+tR0H3x7kqc89hanSxDW/v6ZkL/z5sN10EXAGlAV0Acqbcl/4yxZZlpEjMqKuuAtspWC7TNL+p0Kng7vuguuum/ya2sU77wQxNAhhHxjGbK63wfIvKr/HSh81NcFbb00tiaI+eDlOTO3AiK2TEfaFwT7lW1KSjf2koBTNsJgYzdG8rpnz7jhvyodPgIBLWeQ2ludut5lMbJF2T5+HoDuIpdqCuWo8cyFRMeVcx55oELnqF1fhHfCy49c7GDkywmj7aF4cGL4R5fww281pte+ZZ8DhUMbMhg2Zf57qwOjtVaSNjCV+ShVq3lQdR6YKU0bHtlRZaDq9CUGX/nsyKeAN8XOrICR2Ytx5Z2kX8IbSuOZpFB/N7jMXzXYzA1EnsuCKBciRcRnEZLYzWA00ntZI9+vddLzSoTkwSpB8jDtXt1JXsGpuajUMjfyizZkzm1j7qUGP6TyXC4JA5axKBvcPKo5hzYFRdEpl7GkOjCKh0+lYunRpTseobKuksk2JQGxZ30L36910b+tm+Q3L89FEIF7bMZm+dL60HavnV6Mz6gg4Ajg7ndG+5YIaKZyMbCKF82G76cLZqaQ7W+us05Zq99af3uLw44dZ/cHVzD1/blE/uxRsl88aGKAUDL7/fiUSPHaRrbVVWWDb8k4vvDQmkWQayz4QBKjbGHccVQplKgdG9YJqWs5sicrJpcI+207IGyLoChLyhdLsUXKysZ9alFlv1k+ap6y11rSzglTH06lexDu2SLul1kLYHyYSiUSll8K+cLSYcuzcmuvYEwSB8qZyypvKsc+xKw6M46N5yYZRF9KLIR8FikSb2Qx+vxLhP7dA06Crx8XrP36dSDjCxd+7OOvjFGreVK/NpsrMx1Smzu9MCnirbNkCDzwAt946uaD39743dbH2UqAUrnkaxUez+8ylELYL+ZT7MJ1Jl3adJ43UlDWWsf5j6+O2JbOdZ8CDfY6d9ufaOfTYIVrOaIl7XZMYmn5yHXcBVyCaYZ/O4qtG/tCudzObWPu5ehQnYLpBthVtFYoDo2PqoEqN/FMqY09zYBSJSCRCd3c3zc3NedGFb17XjKXGgn2uPWVRzKA7iMFmSNtTlqgw6ETydeMl6kVqltTQv7ufgb0DOTswYiOFk5EoUngq8m27YqJGh1S0VExbG8KBML5hH707e4vuwCgF20UzMPLkwAA4+2zFeSEI8NvfKhr7mzaNRQd7hpSd9DbQJX9wTdeBYZ9j59yvnjtlm9TsLHOlGf+In4AzQNATzClrKxv7qemotkZbThECQVf+7TaT0Vv0GMuNeHo9SAEJvVkfXVRO5OzO59hTC2amkwWUDn6HUmgxHQdGMAh/+Yvyd6LMp3QQBGWMHjqkyEgVyoGhN+vp39MPglJvQmfIzmldqHlT/d4zcWBkmw2qZmCkU8A7li1b4Oqr4cUXlbnxl7+EZ5+F556Dz30us2NNB6VwzdMoPprdZy7p2C7gCvD4Jx/HUGbgih9fMWUtqP0P7mfvfXtZeNVC1n10XSGarUFi26nPop4BD6Pto/S82UPvzt6463E2z6Ia+SXXOVN91gB48xdvIogCZ3zyjHw2USMJ2vVuZhNrP3UcpesErJyV3+dBjcwolbGnOTCKRCQSobOzk8bGxqwN3v1mN1JQom5pHdZaK1f/5uqUC3SyLPPQ+x5C1Itc+bMro/rvUzGxMGghqV9eT//ufvrf6mfBZQtyOlZspHAiXfNkkcJTkQ/bTRdqBoZa+Gg6aFrbxP4H9tO3sy+ls60QlILt2ja0YauzUb+iPm/HVBfn5s2D971vwovBMQeGqTp++8hO8PVC1WqwNKXtwJgK37CPgDNAxBYhHAgjhSQi4QhBVxD/qLJgmW3WVjb28/QpGRhlDYlvhtqfb8fd62bBZQtSRiZGHRinuIRULHqTHr1ZT9gfJuBIXUw017HX9XoXQ4eGaFzdyJzNc2g+vTkv8lEArWe1UjmrMq0F/mefhdFRaGiAc87J/jNnzRp3YBQKs92M3qIn7Avj7nVnHRRQqHkzVkJqKnLJBpXl7DIwVHQ6OO885e9162DpUnjsMXj5Zdi4MeVbp51SuOZpFB/N7jOXdGwXdAfxDfsIeUNTOi+AaMa1FJDy2tZTmZFjI5Q3lcfVE0xkO/VZ1GAxYLabCfvDSkbwWDZvts+iGvkl1zlTlb6xVFs4+tRR9Ga95sAoEtr1bmYTaz/7bDu+Vb60a/VWtlViqjBhsKRfR08jf5TK2NMcGDOIXb/dxeixUc67/TyaTmuaciHYP+InEo4gR+S0pTKKjbqo2/9Wf94Wt/UWfdJ6A8kWQk5WXF1jqXl5WvjLhtqlteiMOnzDvlOymF3T2iaa1jbl9Zgp9d0DqgNjguTTiQdgZBcs/UzGDgxZlvGP+JEjcpwEkxSU2PmbnVTNq6LljBbW/Msa5IjMtp9vo7yxnIVXLERn0hU1Xd7dN5aB0ZD48/b8YQ/uHjf1K+pTOjDUGhinuoTUREwVJsL+MEFvMKUDI1e6Xu/iyJNHEASB+hX1ef0sU7kJ0+L07BorH5VL/QO1DkZHR/bHmApBEKhorWD40DCuLldeZBnzSTTzJQ1Jk1yyQQcGFKeTIMDChVk3F1De/6EPwd13w5e/DP/4R3pFwTU0NDTyRaaZvFEHRkhzYOQDKSjxxK1PAHDN769J6xqmt+ipXVKLqBcnPdueas+iJyvlLeVUzq6k85VORV41HJmyELGGhsY4y65bxrLrlqW9f+PaRrb8YQbouWoUFM2BMYNQtfQNtnGvoxyRGXx7kJqFNZMumupCnqXWUvTiyelSs1hpt2/Ih6fPkzcdSRkZWZJB5pS+mbA12Khoq4im3E0HOoOO+pX1Shr1jt5TzoFRCFI7MAaV3xMdGPqxsRVS5oVMHBh77t3D3j/tZcEVC+I0gHf+306cHU7KGsvY+G8bo9HQl37/0nS7knemysCw1Fhw97ijhb4TIYWkaOTidGVgSNK4jE1TU4xE2DSjM40tjAQLuzDiHVSkAK116WUOFoJQKHf5KJW2sdIdhczAAMVZPXxoOJp9V0rY6mzUr6xP+3qUbTaoOj/Ong2WPPi9/v3f4Xe/gxdegKeegksuyf2YGhoaGumiau0bytKLOo06MAp8nT5VcJxwgKw4zTPJJs5WxlGj9Jl97mxmnzubiBThvnfdB0DIG8pLjVANDY3ETHfxaI3SQHNgFAlRFKmrq8sp3Ua9gVUjcGRZ5rFPPoazw8mF375wkkTNVAt5pYDepKd6YTWD+wfp39ufNweGp9+Do92BucpMzcKanI6VD9tNF6d/+PTpbgIAjWsaozqwS96VoSh5DpSC7QbfHkRn1FHRUpG3QuopHRjmeqg+HcomSLKpDoywMi/EOjDUehrJUDN4YjUne3f2cvCRgwCceeuZBblpz8Z+LWe0YCw3UrMo8bhXpfRS1crRGXS8+6F3KzWErMVPU926dXIh4dZWuOuu6S8knK40Ra5jz9OvnKfqAvaJl07Qva2bto1ttKxvSfXWKTny9yOEfCHazm7DVp98gfy552B4GOrq4Nypy8CkRM3AKLQDQ5ULVOsfZUOh5s0Fly3IWSoyHVT5qEzrXySjrQ0+9jG48074ylfg4otLNwujFK55GsVHs/vMJR3bZZ2BoTkw8sLo8VFAqccVu4CW7rhTg+pKNZjwVCRfc6aoE6PSnUFPUHNgFAHtejezUe0nh2WkiJT12kixZck1SmfsaSO/SIiiyPz587M2uCzLhLxjDowxeSRBEKheoOjcd73eNek90QWgFAs0pcCy65ax8YsbaTkjt0WpWNSbxIgUyf1YOdpOQ3FgAPTv6S/qA1Up2O6FO17giU8/EVfwLVcOKn6DxA6MhvNh1Teg5Yr47YYxGbFwfAaG1wuuKdY6o0WzjjuQZZmAK8A///ufACy4YgHNpzfH7S/LMt4hL6Pto2n2KDHZ2G/uBXM54xNnULukNuHrqgRWqgwMUDK3zHZz0W+Otm5Vov1jnRcAXV3K9q1bi9qcKOrDmSAK2BpsmKvNKYu05zL2ZFnGOxCfgdG/t59jzxxTilTnyNt/fZsdv9wx5SL/Aw8ov7dsyT37pRgSUjDubMwlA6MU5s1cSOngzZIvfQlsNti2bTwrpxSZ6bbTyA7N7jOXdGwXdWAkkcediObAyC+O40rwjn2OPW57Orbzjfjo3dHLyNGRQjZRI0PyOWeq41IdpxqFRbvezWxU+/Vu7+XP1/6Zf3zjHxm9/8DDB3j4/3uYvX/eW5gGaiSlVMaeNvKLRCQS4ciRI0Qi2S2oh7whkJW/YyWkmtcrC4fd27onvUeVkMpXVkOhaDmjhVkbZ+VFa9437MPZ6YwuOsphOedj5mq7YuIZ8DB8ZJjhI8MMvj3I0OGh6P+HjwzjGfBMS5uksETFrAqa1zczeGCwaG2abtvJshy9oY0dt7kQCMCxY8rfGS3Q6cccmWMODJsNysd8GqlkpDwDHqSgRNAbxN3rpmdHD8/f8TyODgfGMiOL3rFo0nu6t3Xz8Acf5pUfvJJBAydTCPtZahRNGVWiqJSQJCXzQk4wbanbbrtN2a9YqMWUw4Ew/lE/IW8IUS8ih2X8o37CgXDCYsq52C7kDRH2K44R1eGkSs+pkZC5oBaXT1UbKhyGhx5S/r7++pw/smgSUhWtFZirzJgqM7uexl07Dg2y89mdDB4azOs8LSc6sQtALgW8k1FfD//6r8rfX/1qccdgJkz3NU9jetDsPnNJx3ZaBsb0ogbjVM6Olz9Mx3Y6o45IKELAGSjaNVBjanKZM8OBMA/e+CBPfuZJwoFwVNpNVcrQKCza9W5mo9rP1aMEkWW6PiJLMt5+b5wqhEZxKJWxp0lIFYlIJMLAwACzZ8/Oymul3rzqjLo4Tc2m05oQRAFnhxN3rzvOWaFKSJV6Bka+GD48jH/EjyAKCHqBSDhCOBCO1g5JFik8Fbnarlh4BjxsvXFrVBrHP+rHP+LHVGGKLtpaa6xsuXdL0QoqT2xT56udkzzmhWzTdNtOCkjIEeWBJd0Hz6k4cgQiEcX50NiY6EODoEvwWVEJqfFMkKYmJfuipyfxYl+s/RwnHERCER78fw/iG/YRCUcobynnr//y10n2U4sHuzpdRKRI1mnzmdov6AniHfRS1lCG3pz48paOhNTggUEOPXaIqvlVLLm6eJJnL744OfMiFllWIvhffBHOO684bcq2mHIuY0/NvjCWG9GbFDuqkY+O9txuWOWIHO1LqkX+f/wDBgehthY2b87pI4FxB4bTCQ4HVBaoLFHVvCqu+d01Gb1n4jwtyzJerxer1RoNBsjHPP3Q+xSP0MX/dTHlTeVZH2cq1AyMfElIqXz2s/C//wv79sG998L73pff4+eD6b7maUwPmt1nLunYzmAzUDGrAltDevNvWWMZ8y+bH83I08iNZBkYqWynPnOqTgspIOEd9GqSJyVCLnOmu9dN0BXELbvRm/TR5zstA6M4aNe7mY1qP8Zir9MNtPYMeJTnN0F53u/b08fwkeHo64meRTXyS6mMPc2BMUOYWP9CxWgzUrusloG3Buh6o4vF7xhfhWxY1YDerJ/WAs7pMnxkmO5t3dQtraNhVUPG7w95Q+z63S7FwWPSIepEIuEIckSORtsCCSOFTxYCzgDeIS96kx69RU/Qrci96G16zHYzYV8Y75CXgDNQtAl+YpsmMh1tKibqzayoFwtS/2LSc1AkBC9eq2RbnPWr8awLSOrAOHgweQZGrP1MFSYCjgB6s576FfUEPUF0el1C+9kabOhMOqSAhLvXTUVLRR56PjV9u/t46VsvUb2wmkt/mLiQuOrM8w0ml5BydDhof66dgCtQVAdGOgXVM9kvX0wspjx8ZBhXt4v65fVYqvNQJXkCarR/bAFv9TrmG/YRcAWyztgLuAJKNqNAymuBKh91zTWgz8Odks0GNTUwNKRkYaxcmfsx88XEeVqWZUJiCHOFIqGWj3k6Eo4QcCiOo0LWlQkE4OhR5e98ZmAA2O3whS/AF78IX/ua4kAeHFTm0U2bcpcZ09DQ0EjEwssXsvDyhWnvb59j54xPnFHAFp06BFwBfMPK/WI6z9Nq1qp3yEs4oDgxBL1AxB/B3efGUmU5qZ9FTwXcPWMKF03Kc9U5XzwHnUGX8DlXQ0MjMaq0djoBTbGBVpFQBMcJBz3be+jf05/XQCuNmYE2084QrHVWNnx+Q8LXWta3MPDWAN1vdMc5MJbfsLxYzcuZ9ufaefvht5l/2fysHBhv3v0mQWeQeRfP45wvnUNEivD3z/wdgKt+fhWCqExup4J3Vm/RY7QZkWUZUS9iqbRE9TnVm+npalMkEiHoCmIsM0aj8qerTcUgVj4qX1FXKfXdA2ORCJEg6Kzxr1UuheVfBNN4bYjYQt6p0Fv0mCpNhDwhZFnGVG7CVG5SaiAksJ8gCFTOqmT40DCO446iOTDUrLNU0Rz22XbO/4/zo9JEiQi6FLvlQ9YuE1R75Gu/QrHtp9sYenuIc750Dm0b2vJ+/Ka1TVz1i6viCoUbrAas9VYlbfi4g/oV9Vkd2z+iOLRN5aakmUHh8HitkXzIR6nMmqU4MDo6iuPAyLTAnTpPB9wBZGQMNgOikJ95OuAay+ARCjuuYjPUCjFOPvlJ+Pa3ob0dLrlkfHtrK9x1l1IvRUNDQyNXotGmSTgVnmdKAUEQWHvzWnxDPgyWqZ3vibJWjz9/nN337KZ6QTUbv7BRs90MR5W+UR0Y5srkcqQaGhqJSeeZXSU20EpXqcPd60aOyBitRnQm3UkfEKsRj+bAKBKiKNLa2pp1uo2p3MTsc2cnfK15fTM7f7OT/j39hP3hpNIppUz9ynrefvhtBvYOZPzejlc6OPb0MRBg01c2Ub+8nkg4El20L28qz0m+J1fbTReSX1n8K6XzYXD/ICFPiKp5VSkXkPPFdNsuU93idFAdGIsml56A4JDy21QzOT3DVAN1G+M2pevAADBXmCECxor0+hJ1YJxwZL3Inan91GiOVDILerM+WlQ+Gepiq7E8f3ZLh02blIXQrq7EdTAEQXl906aiNmsS1jorQ28PpayLkMvYE/Viwogc+2w73n4vo8dHs3dgOMYcGPbki+gvvggDA1BdnV+prrY22LGj8HUw3n7kbQ48dIC5F8xl1XtXZfTeSCTC4IFBpLCEVC0hmvMzd6rZF6ZyUzSgoBCkzFDLA08+qUiATaSrC667TsncmU4nxnRf8zSmB83uM5dEtpso65eIVNGmckQm6AkSCUUKkiV5KmEsMybNxE027iZmrRrLjBx46ACefg/lzeVpOUI0Cksuc2Y0A6PEa4yerGjXu5mNKIo0NzVzbEAp6JnJOFIDrYxlRqU+sMC0B+meSpTK2NNGfpEopMErWitY/YHVXPjtC6MyNWF/mIBrZhQM8wx40Jv1BD1BBg8M0rOzJ+0iz75hH6//z+sALL12KfXLlUUtUS8y69xZzLt4Xs7fQakM1kyQkZFCigNDNJZOu81VSpRKsQooT7ft1PorhXBgJM7AGFR+x2RZpCITB4apwkTlrEos9vQehtVih7kUXc7YgdE39lDRkNtDhep4KnYGhk6nRHGnmrLuvHP6pWrUB/NU47gQY88+xw4CUTmHbFAX0lMV8L7/fuX3NdeAIY/rDLNmKb8L7cCQIzLeAS/OTmfG7w26gxABnaiLRkflg3TqjuSDQhTwVpEkuPXWxK+pY/a226a3wPd0X/M0pgfN7jOXRLaLjTY12834R/y4+9yIBhGz3YzepI9GmybC1eNi641befTjjxarG6ck6Y67soYyyprKkCWZ/j39RWqdRipymTPVDAw10KZnRw+v/eg1Dj9xOK9t1EiMdr2b2YiiSLWpGiIgGsSotHMmqHJtYb/mtCgmpTL2Sic0+yRHkiQOHjzIokWL0GWx+uQ44cDV7aK8pTxaIFdFEASWXbcsblvHqx3884f/pGldE+d9/bxcml5QYqOMnB1OpKDEA+9+IOpNBSXK6LIfXZawhsDIkRGCniC2RhurboqPNN34+Y2T9s+GXG03HciSrOi8Azp96bTZWmPF1eki4AoUxVM+3baraKlg1ftW5XXRLrUDYywDw1g9+TU5AgOvKDUwGi8CUR91YPT25q15UVStYMeJ7IsuZ2q/dNNRu97oYuToCC3rW6iaVzXpdVVCKp+Op3TZsgWWLVMKBU/kc58rDYkaNXsqlQMjl7G39/69SAGJuRfOjcvEWLplKctvWJ5TVlnT6U1c/P2LE8pHSZJSvPsPf1D+n+/vWnVgdHTk97gTUSXbnF1ZODDGzv2wFI46nPNBNPOlwA6MQhXwBiUzp7Mz+euyrNj2xRfzm7mTCdN9zdOYHjS7z1xS2S5WflUOyxgshrSiTdXnJSk4jd7Uk4SeHT1YqixUtFYg6uPvGzIZd/MvmU/AGYjKDmlML7nMmWq2t2pLZ4eTo08dJewPs+CyBXlvq0Y82vVuZiNJEocOH2LOhXNAJiuJbaPNiBSUkkoBaxSGUhl7mgOjSMiyjMPhyDob4PiLx9n7p70suGIB6z+2fsr91YU8S1Vppw7HRRlVm6OFddXo2LAvjLvXzSMffkRJFUuALMn4R/z4RnwF0b3L1XbTQSQUAUDQCQWV68gUvUmPscJI0BnEO+QtuG7odNuuorUir7VohoZgeKzMxcJE9RxVB0bCDAwB9n9PWWWrPROMVRllYGRK1bwqllyzBPtce9bHyMR+sixH571UElIAR58+SucrnRhtxoQOjOmSkALFcbFvH4gi/OlPSj2Gv/0N7r0Xdu4senMSEnVgDCR3YOQy9o48eQRPn4em05riHBj5cCgZbUZqF08eH1u3KtH1sQvUH/kI/OhH+XNktI0pqRU6A6O8RfnO3N3ujOtgBF1BZGRMDaa8nv9RCakCFy4tZAZGuvNkIebTdJnua57G9KDZfeYyle0ikUj0nn7iAnoyVAdGJBTJ+BqgMY4sy7z8nZcJeUNc/j+XY59tn/R6uuNuYqChxvSS7ZwpyzKVbZUIghC9P1XvTdXsbY3Col3vZjayLBPQB1j/yfXo9dktRZc1lmkSbtNAqYw9zYExQwh5lMX7VAs4PTt66Hilg0VXLopKqUy1kFcq6C16bLU2AqMBwr5wXAaG36k4J8wV5mjKmIyMgHJDHvaFCbqDkwr3yLJM2B9G1IkJszdOVsK+MIIooLfqEQQhKmMU9k1fml3sZxvLjPiH/bh73KeUXfKBGl3c1ga2REM7KiFVM/k1QQC9DUJu5ScDB0aycyfVOWWpsrD2Q2tTHziP+Ef8SrShwJSOTGvN2AJ8En3p6SriDfDznyu/3/nO8QLSZ50Ff/wjPPWUUqR4/vyiNysOa93UDoxskWUZ35Av7nMKzdatSv2Cifdj3d35rWtQLAmpsoYyRL2IFJTwDnix1ad3HxDyhfA7/ESkCIIoEPKEEAQhL9cOs91M/ar6hA7DfCHLhc3ASLcoeCGKh2toaJyauLpcyJKMzqRLO/sw9t46Eopo99pZ4h3wEvKGEPViNLNR49RGEAQ2f21z3DaDTdEaVZ+3NTQ0NDQKh+bAmCGkUwz40GOH6PpnF9YaK57+MSmVHLXgi4ka7WmptkQdFFJQwj/iR2fQYaowKYXPBBh6ewhrnTW6EJkolfrF/3yRrte6OONTZzD/kmle8SsCpgoT1hprdFFWzb7xj/qj+1hrrAWPgE3WpqiNZEWjPeQJEXAEqGipKGqbiomrx0XYH8Zaa83LYnhK+SiA8gUg+cE2K/Hr+jLFeRFWHJyNY7WsR0bA7wfzhISYhPabQLHPqWSIBpFV719F0B2cMkpRzSBQF8oncukPLyXoDmKwZl4AQZIUCZmeHmUhc9Om9GtWeDzw298qf99yy/j2uXPh0kvhiSfgF7+A734342blFdVB5BvxEQlH0o4KTQf/iJ9IOAICCYuP7v3zXrq3dbPyxpVTFmNPxNFnjhJ0B2k5o4XypvJoXYNEwSSyrPj9brsNrr4699ojqgOjs1M5TwqVfSuIAmVNZTg7nDi7nFM6MNRx7upxIQUlBEEgEozgHVQ01nUGHVVzq3Ia57POmcWsc5LMS3mivx9GRxWbLSiAisOmTdDaqhTsTnS+CILy+qZN+f9sDQ2NUw81Cx3APtuediZFrMMiHAhrDowsUWu4lbeW5+U+JxwI0/9WP6ZyEzWLEgQaacxItAwMDY3MCDqCSEEp4wyMbAIqNU4+NAdGkRBFkXnz5mVd9CTqwLAld2C0rG+h659ddG/rxjeiLMzNlAwMAJ1BR0VbBcZyY3x2xZikRdAdZNQwis6gQwpKhLyhlBJE6uJjrhERudquWNjqbGy5d0vSon6gLFQVQmYr0zbt/M1OOl7pYPHVi1l548qCtWm6bffWn96i/dl2Vn9wNcuuzT19fEoHxqzrlJ9k6MccmmMOjKoqMJkgEFDqYMyZE797rudU0BNk9NgoOqMuq4e1TOxnKjex/Pr05LrUgmHJajiIejFlkedkJJIham1VCnOnE8F/333gcMC8eXDxxfGv3XKL4sD49a/hjjsUu00XpkoTp3/09JQZEtmOPdUm1hprQm3T0eOjDO4fZPjwcFYOjEOPHmL40DBljWWUN5UXta5BU5PitAiHoa8PmptzO14qylvKcXY4cXW5aFqbOiUgdpxLAQl3n5uwLYzrLRd77tmD2W7miv+9oqjXjmxQ58c5c8BSAPVMnU4Zy9ddpzgrYp0Y6rrinXcWzjGVDtN9zdOYHmLtfvSxx3j1jjsIeTzIsszsiy5i07e+hcGqzNe/X7+edz7wAJWzZwOw/cc/JuBwcPZXvxo93sRt919yCZv/67+oX7066zb+avFibnrtNcx2e3TbC1/6Egfvvz/6/3O/9z0WjV0s9/3hD/S9+Sbn//CHcceRgkHevOsujjz8ML7hYeRwGDkSoWLOHFZ+6EMsvfHGrNs4HaQas85uJ8hgrjZndE8i6kQEUUCOyFH5KY3McRxXaripNd0mkul8u+/+fey9by+zzp2VtzqNGtmR7bVSjsiTpJnVtRlVLUOjsGj3OTMbURQZvH+QB3/8IBd884K0nuUmBlSGA2E8vR4EnUBFq5IdVyoBlSczpTL2NAdGkRBFkfr6+qzfry7Cq2mKE/EMeLDUWAh6gvRs74l73/CR4aIvXGdLrN45gGgUMZYbkUKSMljk8aJ09jl2JSImydpqviIicrVdMbHV2bDV2UpK81ZtUyzrP76e0z96+qSC9Plmum2XTuZUJkzpwJiKCQ4MQVCyMI4fVzIGJjowILH90uXo00fZ8csdtG5oZdOXMg9LLpT9ppKQyoZkMkRdXenLEP3sZ8rvj35UqYERy5VXQkuLcrytW+E978lb0zNGEAQWXbUo5T7Z2s4zMFa/qTbxCrR9jp0TL5xgtH0042PDeDFpdTGomHUNdDrFhidOKD+FdGDULKwh4AikPffEjvO6ZXUASGslTjx/At+wj4G9A5Ouz5lQ6GuSJMFf/6r8XVtbuAyXLVuUsZzIUXnnnfkv/J4p033N05geVLuPHD7Mc//6r1z35JNUzplDRJJ44/vf56lbbuGK3/0OgEgoRCQ0vtDmd/jw9rsYPjIc3ebpcxFwuqLPD1IwGPeeiTz3mc9Qv3Yty9/3vvFtn/0s9WvWRLdJgQCRcHyU5Lnf/jbnfvvbCY8ZCYWQgpPv3x+96SYsdXVc/dBDWOvqotuH9u/nqVtuwTswwOm33prq60qL3XffzfYf/QhBFLE1N3PpL39JeUtL0v2DLhdPfexj9O/cCbLM4ne/m7P//d+VjDZJ4t4NG5AC8Q8sjqNHueq++5h3+eUT+jCM+9goYd15iNZV2Gpt0edAOSLh3P87QqN7gOuTtqfv+S9iX/nhlMW+i839l1zCWV/5Cm2bN0+9cwmg3mfY59gTvp7pfNu4ppG99+2lb1dfST2nnYpke63c8esdtD/XzrIblrHkakWrMna9QbNr4dHuc2Y2giAgOZRsb1URYSomBlS6ul384+v/wFhm5NL/vhQofpDuqUipjD3NgVEkJEnirbfeYsWKFVlVbY/WwEiQgeEZ8LD1xq14h7w4O51IAWWBHwH+9pG/AcqC3ZZ7t8y4gW2wGDBXKQtNtgYbeoOekDeEIApTelmjmpQ5OjBytd10sOPXOzjyxBGW3bAs7aj0YlLenP1CWCZMt+1SjdtsSOnAiEggh0CXIkrPMObACLmjm5qaxh0Y+UYteKhGsWVKJvYbbR9VpHMay6aUS1AzMHyDvkkPGwFXgDd/8SbmSjOn3Xxamu3MXYbozTfhjTfAaIR/+ZfJr+v1cPPNcPvtSp2M6XRgpEO2Y0/NwEh2rVIXElRph0yQZZnAqHLzqzowil3XYNascQfGWWfl55iJWH7DcpbfkN3cH2u7xVcvZudvdrLvwX3MvXBu1g/mj3/6cfwjfs7993MTFlHPhYmZT2+8oThj0818ypQtW5Sx/OyzcPnlyvh/7rnpr00D03/NK3UOHDjA6tWr+fKXv8zXv/51AHp6erj55pvp7OwkEonwiU98gltiNfxmAKrdzUeO0LppE5Vj0QiiTseKD36QP55zTsL3eQY87P79LoJOB0deGs+ECPbvJNj/NHt+/SCiXkSI9KX8fDkSQZak+G2SxOG//AXn8eMABBzj9wEHH3yQF77whaTHu/B//ifpa6OHD7P+3/4tznkBULN0KQuuvprRI0fitr951104jx+flMmRimNPPsmuX/yC97z0EqbKSg78+c88vGUL733ttaTv+ftHPkLtypVcec89SMEgj9xwAzt/+lPWfvzjiDrdpPeG/X5+OX8+DWecwa5du1iyYAF/ufpqLrn7bqqXreP+a3/N0GvfRG9pIehRIkxlyY+v/W4EfTmCICd9DhrYswedUWLJ9RehN03Po76rq4sTzzzD8ve/P7ptKkdYqaHeZ0ws3q2S6Xxbu6QWvVlPwBFg9NhoQWtCaaQm22ulq8cVldZUUR0YsiQjBaS0a9VoZId2nzOz8Y54GeofoqKiIu0afRAfaGWpskTXVqrmVWlOwyJRKmNPm2GLhCzL+Hy+rKu2qwuhiTIwAs4A3iEvepMea50VT+9YBGuNBbPdTNgXxjvknVTkupRIR9NOQEBn1KWt5ZqvDIxcbTcdBByBaAHzUiccCKf9gOUZ8GQkZzTdtstnBkY4DIcPK38vShT87j4K2z8DtjZY/5PEB4lmYHiim9It5J0Natq9q1vR1s9UhzkT+735izfp39PPWZ85i7nnz025r5qBIQUlQp5QnH38I36O/+M4xnJj2g6MfMgQqdkX110HE9Zlotx8M/zHf8Dzz8P+/bB0aVrNKwjOLicjR0coayhLKA+W7dhTC4Mni8pRFxJcna6M62+E/eFoBp8qP5jXugb+AQg5k79uqGDWLMW4HR1pN7souHvdvPSdl2hY1cDK96+M2m7BZQvY++e9uDpddL3WRetZrVkd3z/sJ+AM5H0xLa3MpyumtgvmJIMuCTqdIvO2ahXs2AG7d5eGA2O6r3mlzq233soFF1xAKGYR9dprr+UTn/gEN910Ey6Xi4svvphZs2ZxxRVXTGNLM0O1+9yzz+blr36VY08+Sdvmzbi7unjhS19KKqsUcAYIeUKEBl9Acu0cP17Ijal2DYaaTUghCYv+sSnb8NJXv8ob3/9+9P/e3l7WfPKTzL3sMgB2/mT8vmTRtdey6NprUx7vrf/7v4TbL/jxj3nqox+lecMGaleswGC14h8ZofvVV/ENDnK5WkhqDOfx44yqN09psvvnP2fjHXdgqlTuYZbccAPb77yT/p07qV+zZtL+vuFhul5+mSvuuQcAndHIud/7Ho/ccANrP/7xhJ9x4L77mHXhhZgqK/EdOkT73/9O/dq10eyE6x/8ELt+EWb08Nuc9VUl08Lb10PvtnLqVp/GY++5Mukz3f5772XNLf/CmZ8+M6N+55ORQ4fY/YtfxDkwZhKRcARXpwtInoGR6Xwr6kXqVtTRs62H3p29mgNjGsn2WunuUQLAyhrHa4zqTDre+at3YiwzojNpC+qFRrvPmdm4e9xEpAiWakvW9Zmiz+0yhLyhvAWKaqSmVMae5sCYIay9eS0BRyDugjkRvUVPmaUM36APQSdQs6gm6pEspRTiWNIpEmyxWwi4AhkX7lEnt1NRk1Jd5DdVlq4WYESK8OoPX6XrtS6u+vlV0UXlZMRmGiWj1DKNUjkeM6W9HUIhpdD2rES1cINDym9dCvH3xouhag3Y5kQ3FdKBYa4yYywzEnQHcXY6C/qw5u6b/FCRDJ1RxwX/eQHmKjN6S/xlMOBSxo6xPP2boVxliBwOuPde5e9Ugb+trfCOd8DDDytZGHfemXYT886xZ4+x78/7WHDFgrwWo1z9/tUsvHJh0ptaa50VvUVP2BfG1e1Kqk2dCP+oIh+lN+ujEXKxdQ0mklFdA/8AvHIjBIaS72OqYcmce4E6TpxIu9k5IYWkqB56Kgb2DTByZATREO8QMlgNLLxiIfvu38e+B/bRcmZLxpFOckSOjqt8XpPSyXy64ysDXFN5I0IwtV3YcG/GTgyANWsUB8bOnXDNNRm/XaOIPPjggzQ0NDBv3jzCY1JGu3fvRpIkbrrpJgDKy8u54447+MlPfjKjHBgq1ro6tjz6KG9873u8escdmKuqWHT99Sx///tTPnBaWi+gcun1eIe8yj358Sfx9bxG2LkdyS/h1w1O+dnnfPObrPjgB6P/f/a22zBXVVHeqjg9xQST6Pb/+R92/+IXAOhMJtZ+4hNxx0hE6znn8L5t2+jftYvhAwcIe72UtbSw6T//E3sCL2ImmRcqx595hst///v4z928mfannkrowOj4xz9oOuusuD5WL1qEt78fT38/tgSSC7t//nPO/e53x4/xzDO0bt7MyNERQIkqXXLdFTy85ZdUz69Wjjm/mtYNy3G0tyed02VZ5sAf/8i1TzwBwJ5f/Yq+HTvw9PQw/Pbb6E0mzr/rLqRAgBf+7d+IhMPULF/OJXffjdGm3DtHwmFe/vrXOfCnP6EzGDCUl7PpW99izlhxrhPPPcfOn/4UY3k53a+8onw/mzZxwY9/jN5k4tlbb+Xoo4/i6e3lt2vWsO4zn4k6Mg5u3cpzn/kMciSCqNNx3g9/yOwLL5zaKNPAOV86B8cJR8p6X5nSuKYx6sBYumUao1A0MkaWZTx9SgBYWdP4s4YgCBlFkmtonMq4e9N/Xk+GzqhDZ9IhBSSC7qDmwDjF0BwYM4RZGxOtWE7GYDMgGkQEnTAj0hjTKRIsBSWe+PQTKZ0ciQr3qJNZrhkYMxFV572UixmJOhHfsA8pICl6otelLnIdm2k0cdEZKMlMo3xmYKjyUQsXTq6PAEBgbIHBlEKepWIREJ++UUgHhiAIVMyqYHDfII4TjoI5MCLhSDRyv6whvRuihlUNCbcHXYrNTOXpj51cZYh+/3vwemH5ckii9BHlllsUB8Zvfwvf/nZhihWng5ohkawQerbojLqUtRYEQaBydiVDB4YYbR/NyoExcRFdrWvw/veDZzw5KbO6BiGn4rwQTYmdiJIPAkPMbXNSLAfGE//6BCNHRrj8R5cnjSBVGdg/AIzXv4hl8TsXc+AvBxh6e4iBvQPUr8hM/zTgCsDY2mk+r0npZD65hp24h4Yor0xtF0LOrBwYa9fCb36jODE0Shev18vXvvY1nnrqKX4xtmAO8PTTT7N5gh7/pk2buO6665JqmQcCAQIxtQycTiW7JxwORx0joigiiiKRSIRIZLyIsrpdkqQ4h0Ky7TqdDkEQoseN3Q5KOr/623XgAM/85jcIgKDXY2tuxmS30/vmm/S+/jpSMMjaT38aWZaRwuHoewWDHV/Xffi6XiMSkXHqRQR8lC+6DkPNRvyjfmwGV7Qfifqkbo9tpyzLHLz/fvq2b0eWZfwjI0jhcPR7fXvrVg4++CDX/+MfmCoqCHs8PHTVVdhaWmg7/3zlu4hEot/HM5/6FMeffjp6fIHotBKHuv20225j5c03K9sEAZ1Ol9QesduDbjeiXo/RZouzh625maG9e6Pfd6yd3F1dlLe1TbJTeWsrjqNHMVVXx20f3rcP/8gIjWefHT2Wq7ub2RddzD//+5+MtI9w1mfOoun0JkaPHp30vcd+TiQSIRSK8NJLAj09UDH0MubqairnLcDr8CJFZPbcfTfXPvkks847j6FDh/jrNddgqavjmscfx1pby2vf+hZvfP/7nPmVrwDw4he/yOihQ3xg925Ek4n+nTv56zXXcM3f/kb9qlUAHNq6lfN++EMu+vnPiUgSf7v2Wnb99Kes/uQnOfcHP2DuO9/Jq1/7Gje+/DKyLBMes33/jh1c/8wz2Orq6HzpJR5597v50OHD6AyGjOwUuz3f40mleX0zzeubJ23X6/XKOBo7viRJSds+cXvdyjoicoT+t/qRghKCXihqn5Jtj+1TsrZPtX267JRtn2JfS6dP7n43oYAiY61K0ZZan05GO03sEzBp/5nep5PRTsn65O51IyNjbbBOumfKpE+mchNuvxvvsBdzjXla+3Qy2ilRn9S/J35mPvo0cZ9UlPbq9kmETqdjyZIlBdcLExCoX1Efp81Y6qRTJHgqJ0eiwj22BhutG1pzLhRdLNvlk4BjTOe9MkU9hBJg3oXzGHhrgKNPH2XptUvTiuzVW/RJPe0THVzTabtIOELYr7QnHw6MgweV30kLeKuR36bMouEL6cAARfJncN9gVjUL0rWfZ8ADsrL4rdbMyZZsMjBUGaJUi6ltbYlliGQZfvpT5e9bbhmP+k/GJZco+v7t7fDnP8MHPpB2M/PKVA6MQo49+xw7vkEfUkiaeucYovOiffI5smUL/OEPiiTRBz+ofK+bNmVRCFpnAX2S61kkEC3cXQwHhqgTQVYk3KZ0YOwdd2BMtJ3ZbmbRVYuQI3Jc1GG6qNduY7kxr7KG6c5ZoTBT2iVb1q5Vfu/cmfUh8spMvF8pBt/61re46aabaFYH4Bjd3d3Mnj07bpvFYsFsNtPf309Dw2RH97e//W1uv/32Sdt37NiBbSyCva6ujvnz53Ps2DEGBgai+7S2ttLa2srBgwdxxNSEmDdvHvX19bz11lv4fL7o9iVLlmC329mxY0fcg96qVaswGo1s27Ytus08fz5n3XQToVCI3bt3c+Kzn6Xl/POpXL+e0V//ms6XXuLIs8/i7+xkz549VAcCtJW1IZStxrhyJe5jSlSkqBOZddYsfH4frmEXIW8Iy4JGBtxumiFhn8paWnj+i1/kpf/8z+h2yeHgnX/6E6N1dfh8Po4+9RQ7d+5k5VlnYbfbeevZZ9EtXsyesZubVatW0bxxIzsef5y+8nL62ts5es89nHj2WVovuIDK97+f5e99LwCunTtx/e1vXHDPPRw4cACAlzdv5qLXX2f16tX09/dz9OjR6PdTWVnJ0qVL6e7upjPmQm0aGWH3l75EMBgkHA7T9i//Qvny5QgGJWs21k69vb1ERpTsiIl28vX1oTebJ9lJMBoJuN1xdgJw/va3LHn/+6Pbw+EwQ52d9O0eYuCQHl/ER5fURd9bvUh+P7IsMzg4yNExZ4a/pyf6sP+rXw3z1a+W09+vOIev4U9IlTfSe/kjlAV6qFp0hLJVqxAXLACgPxwmIMvUX3YZbx09yjwUSa+/fvjD6C69FMnnY+fPf86733wTo83GG2+8gSRJ1G3ZwpNf/jLX3X8/UiSCsbaW0BlnRPuw+D3v4e377yc0Vtxp9O23cY9FBDgcDg4cOIDL5aJpyxYOd3ezuq4O46JFSKLIyw8/jHXOnKR2mo7xBLBu3TqCwSC7d++ObtPpdKxfvz7ap3A4zI4dO7BYLKxevTrOTonOPVmW8Ua8CKMCgwcGcdvcJdcnlXT7NBPsNLFPIyMjUdul26ej/zyKY9SBscZIb39vXJ/6X+zH1+Nj7Q1rWXTWIs1OBezTkiVLqK6ujtruZOjTyWinZH3y9nnR6/UMeAein51NnwxlBpyHnex8fScVjgrNTkXoU0tLC0uWLOHo0aN575MnNoJwCjQHRpEQBAG73Z7Ve4OeIP17+jFVmBJGR05kJjkv0iUdJ8dEquZWselL6QiXpyYX200HsixHF+pKWUIKoG1jG9t+tg1Xl4uhg0N5L+46nbaTZZlV71tF0BPEYM1dQiplAW8Yd2AYUzgwgqMw+haIBqhVtJEL7cBQI+QdJzIv5J2u/dSUbmu9NW15m4H9A/Tt6qNqXhUtZ7REt6tZM5lkYKgyRKkkvT/96cSL4S+9BPv2gdUK73vf1J8livCRj8CXv6zUzZguB4Y6H6uZLxPJZuxFwhFe/5/XsdZaWfH/ViStb7H+Y+unlERKRP3Kei75wSVKiG4CBseSmC67LHmtklxpHhtvxaiBUd5SztDbQzg7U9R/QHHaOTuUfeqW1iW03doPrc26HdHrUZ4zAtPNfDLE3ul6T0DYO5aNlrszZSwYmY4OGBqCmvypqWXFTLtfKQZHjhzhwQcfjFvsUBkdHWVxgouq2WzG6008t33pS1/iM5/5TPT/TqeTtrY21q5dS0WF8hCtZiXMnTs3zkGibl+0aNGkiDyAFStWTIpeA1i7Nn78qdvXrVs3abter2fdunV0VVWxZMkSWteuRf/Tn0Yj8p75xCc4feNGbA0NONod6PQ6zGYzfoOSoVa/XMmwMpvMiBUi/oifK374M2oW1iTtU+vnP8/pn/lMwijD1rGIvF0mE2vWrKFsrK7E5k99igcvvZQ5ixdTs3w5++++m8Nbt3LtU09R1tLC3r17sb73vVz0v/8LxEfqdXg87EB5+Fa/g1cFgRUrVgBQW1tLdUzWg3pf0NzcTGNjY1wb115+eVyUoXdggD1jNVJi7bTr9dcZGrtITLTT9hdewNPXN8lOhwIBjDZbnJ1CHg+/fvBBPrh3L6aq8azUnsoqjvz9bQxVqznvY+cx/7z5hDwe/mkyIQhCXJ8c7e0c0OvZuhU++tGaqIyeSJiVPMiPHG/iffYAl53mY2l9I56FC6POu0WLFrGztpYz3vEOqhYtQhRFXF4vFp2OdevWMbBrF2/PmkXTwoXA+LnXKss88/GPY7FY0Iki1fPmxfWr0+Ui5HBEt3V4PAyPOfRUOx0rL2f5+vXMjrFTVVsb8xoaaF23LqWdoLjj6cRLJ+h+vZv6FfWTxllsn1TUtqdz7rV+o5Wy+jLss+3UyXVFnyMsFkve+xTbxumY9zLtU11dHTUxF+x0+iQdkui399O4sjFuPMmyzPN/ex7XQRc6t27a+nQy2ilRnwRBYOHChQkzAWdqn+Dks1OyPolrRBBg1uZZUTWEbPpUPb8anUnHitUropnhmp0K3ydRFCkvL897n9Rs5nTQHBhFQvXyr127Fr0+s6/d1e3ixf98EWutlat/c3WBWqiRjFxsNx1IAWlSodpSxWAx0Lahjfbn2jn2zLG0HBhyQtGAxEyn7XQGHctvWJ63403pwFA13lNJSHnaYd93wTaraA6MxrWNrPvYOqoXVk+98wTStV+0/kWa8lEAfbv62POHPcy7eF68A8OVnezXNddAbe34IriK2Qx+P/z4x4pE0UQpbLV49403QmWayWIf+hB87Wvwz38qkd8JJLkLjqoJHXQFCQfCk4ozZzP2vINejj1zDJ1Rx8qbVibdLxvnBSiygqnqdai2S1ZEPR+o421gAHy+wkqAVbQoi6nOrtQ3hYP7lY6Xt5ZjqjDlfd6MShrm2aGeTgH25iYoi50WfL3K78AgmDKTwkpERQUsWACHDytjcbql3Gfa/UoxuPXWW/nmN7+J2Tz5fshkMuH3+ydt9/l8WJIMTpPJhMk0+VzW6/WTvnP1YW8iyTJkkm1PZkt1e6zdIz4fr9xxB+XNzRx75BHaH4svwF01fz7ljY0IY+0SBIGgO4jgvA9B6mJk2/hnyREZWZK5b+PXeP+ON6loa8u6TwKg0+vHH6QXL+bGl19m3z338JerruK873+fG199FcvYoqJOp0MQxej+al//ev31jBw6BMDvYh6Kq5cs4Zfz5rHuM5/h9FtvjbbxzbvuwnniBOf/4AdJ2x67vbyxkbDPR9DtxhgzeXi6uylva0vY1/K2NnrfeGOSnVwdHVS0tcVt3//AA7RsPJeAU0fA6UQKS+zdtxd3v46gr5uqJRtpWdeCXq/H0dMzXkMkpo3q8ZQaQOPXw0X8nX6WMkorEofYt09g7QUgxLxXlXQwWq3x7RUE5Rw2mRQZsgnfu06nQ1TtJwiIohj3fkEQkGU5bn/1GMLYsVW5CvX7U/skjr2eyB7J7BRLPsaTZ8ATl+n/5k/exDvo5ezPnU3t4tpJmf5q39RxN7FPqdredkZb3HGKMUeks12YYAeVTO1RrHkvne3J+hSJRBJeK1P1yVplpfm0ZmqX1saNJ1CCnkRBjNbl1OxUuD6lus+ZqX3KZvtM6lPs/FrWUkbAEcBoM+I8rjyfqPNrJn0667azEu5brD6lu30m2Wmq7eFwmDfffDPpM0YufcrkmUV7uikiE/XC0iXdQsCZFrk+FZBlmbA/jN48/tCUDdnabjqQQhLN65sJuoPoTKWfjTP3wrm0P9fO8ReOc9rNpyUt3qvi7nHj1XkxV5kJOoNYaiwpizfNJNulYuoMDLUGRooQYP3Yw3jYHd2kLqj290M4DPle86poqYgupGZDOvaLFtXLoCCYql/rG/bFbc9GQgqUxcvBQWVB+qGHYHhY+W5XroSzz4ZDh5RC0U8/DcaxQw8MKLUXIHXx7ok0NCiSR3/+s1LMW5WgKiYGqwG9WU/YH8Y76E1o40zHnipHZam1pD1fJ9OpzwY1S7Y210SwwCAER5SaCjoriOPnUkWFsqDuditR+4sWpThOjpS3KLVEXF2ulPsN7Jtc/yKZ7Qb2DbDvwX2c/uHT0x5vBquB+lX1VM3Nbw0cNfMpVQH2r341RpYtEhrfIeyBPPlT1qxRHBg7dky/AwNOnmtePnjiiSfwer1cmyQ9rrW1lRMT9Nx8Ph9ut5v6BIWXSxnV7nqLhcVjNTwS8ci7382S97yHirbxRVT/iJ+I9QbKmsriitGGfWHCgTAW8Td4+/vj3pOIv1xzDes/9zlaNm6c9Nqlv/oV5qr4OaC8pYUzv/AF/vkf/8Gqj34UT28vg3v3MnroUJJiX/DO++9P+vlv/d//0fPaa3HbnMePM3r4cMp2xyIIAk1nnknnCy8wL6aQe8fzz7MpRiIrluazz+Yfn/0sEUmKFvIefvttdEZj1AGhsv1/fkJIvJj7r1f6IcsyrhEXUp8NMbyLiOFsHrrpIbbcu4XO55+necOGhJ8ZCEDnhICJtdzLDm4EQEKHzw8dxyPUZnA7U7VwIZ7eXjy9vdhiIjK7Xn6ZhglRlKlIVLS9VPEMeNh641a8Q8o9iByRGT02CsCzX3oWQSdgrbGy5d4tk9QAtPl25pKp7VrPbKX1zNaEr6lBT6di3c3pQBt3M4dJ86ss4/V6OWA9EH1+Sza/apQepTD2NAfGDGCqQsCmChPWGmvGRa5PdmRZ5s/X/plIKMK7fvsuLNXTVO22yJjKTWz+2uapdywRGlY1YK214h300vlaJ7M3zU66b9AdxDfkQ9SLygN3OIKgE1I6MJIxMdpqIonqqmRC0B3EM+DBXGnO+dxzOsczJJIueFafDuYmMCcuTg0kdGDU1SnrBJGI4sSYIBFedGLtIoUlvJ1eRqpG0OnHopwS2KV5fTN6sz6jLI9kNRzWfXQdq967KmOt/r/8Rfl9+eVw6aXxr/31r3DmmfDii3DbbUo2xosvwi9+AcEgrFsHp5+e0cfx0Y8qDozf/x7e8Q5wOBSHSVZ1G7JAEASsdVacHU68A4kdGJniGRiTAhuzTSpe+cEr9O3sY9NXNlG7JD2PQ/s/2vGP+mle10xFa3x7IxFFAgjykIHh6wbJrzgxjHYoHx+0ggCzZimyYYV2YKg2cXW5Ujp69GY91lrrlBKVngEPb/zkDQb2DSgSeTetins92ZzZtLaJprVp6j1liFqA/cYblQU9FbUA+6UXAy+NbYytdRFKP1V5KtauVdqgFfIuPY4dO0ZnZydrYtLUenuVLJwnnniCH/zgB3z+85+Pe88LL7zA+vXrE0ajzQQEUeSV22/H1dGR0Ikhh8OYx2TGTBUmLNUWRo+NIni24nUcxnvQiKgTULX2BJ2AbfksKufMmfKzI6EQUiiU8LXZMd695//t3zj2+OPjBbKbmrjvvPOwNTRQMXs29gULMFgTXwceefe7Gdi1C12CjBpRp+OML34xbtv5P/zhlO2eyGmf/jQvf+1rtJxzDqaKCg78+c+EPB7akmgLVs6ZQ+P69bz+3e9y1pe/jBQK8cIXvsDaT30qbr++7dvxDw0j18zBYNajt+iJSBFGOkYQLasQXc8g0o53aD4jR07wxve/z5X33JPwM6VI/P8NeFnM4/yFHymvo9wIuJ2RjJzyepOJ1bfcwpMf/jBX/fGPGMvK6Nu+nTd/+EOue+qptI9jrqnB1dkZ59QpVQLOAN4hL3qTYpOQN4SoFxENIpYaC2FfGO+Ql4AzkLcFts7XOjn+wnHmbJ4TlwWsMTNR12jUoFMNDQ2F2PlVZ9QRDoXRi3rMFWalwHMB5leNkxvNgTEDCHoUB0ayDAxbnS2rItcnO4IgoDfrCYaCBD3BU8aBMdMQBIFlNywj7A/TsDL54ru71x3V2zdXm9EZdbg6XfiGfZjt5owyjSZGAyQi12iAnh09vPK9V6hbUcdF374oq2OoqAW86+shqbz5go9MfSDVgSEFlWhk0YBOpxy3txd+8xvYuDH/i+CODgeDBwaxz7FHdbQTkSxK46D1YMoojbqlddQtzWzV2VqjubYLewABAABJREFULI74huIzMES9mJX0murAeNe7Jr+2ZAnce6/iaPjpT+GPf4TR0fHXjxxRikdv2ZL+551/vuKw6OmBK68c397aqkSlZ3KsbFn9gdUAVM3LT2S9Or7TGXMBRwD/qJ/R9tG0HRiHnzzMwFsDWGoskxwYIyOKEwNyrGPgH4hzEBL2KtH+0vh51tamODAKXci7vFnJwAi6gwRdwaRBDCv+3wpW/L8VSSO2YXxsOjuduLpd9Gzv4cCDBxB0406R6Yqg2rJFGQvt7Yq02vnnx8xhavKJ5FMcGPLYdUJfp9hJmiwflCnq2nipFPLWGOdjH/sYH/vYx+K2feMb3yAcDvPNb34TWZYJhUL84Q9/4KabbsLlcvH1r3+dz372s9PU4tzxj4wwsHs3t8QUZEyG+vwwfGiYv3/oz+iqP41omcP5d5xPWZNyv5DR80Oa2XCbv/c9Nn/veyn3eev//i/h9qF9+7j2iSfScqhky8JrrsHV0cG9Z5+NIIrYGht518MPR2W3pFCIR264gYt/+tNolsJlv/kNT3/sY/xm+XLkSIQFV1/N+gnn0e5f/pIlN/0LB54U0Fv0GG1GIpEI5gYzuKFq2ecY3fMbIkEfT36ggo23307TmWdOap9oMGAwx8/ny3mYdjbiQwnkUB0YtjI9ugmSZzqjEdEw/kwpGgzojOOBQBvvuIN/fvOb/G7tWkSdDpPdzhX33EPNkiXj7zfGBw7pTKa4Y9QsXUrj+vX834oVNJ11Fpf/5jdpvW86UW2iOjBMFaZogFSyAMFs6X+rnxMvnEBv0msOjBmAquhgsCRei1HPEy0DQ0MjMXqLHikoMXJkBFkvU9NUgygo19Rs5tejTx9l9z27aV7fzBmfOCPfzdUoYTQHRpHQ6XSsWrUqqTZYKlRvfqoo82yKXJ8KGMuMBF3BnG4ocrHddJBPSZVisfDyhSlfD/vDbP/VdkS9iKBTHFORUIRIOELAEcA34lMiwidkGiWz3cRoq0mfl4dogOi4zbCWQiKmlI9KF71NWWCQZWXxzljF1q3jkedf/aryO9+L4IceO8Shvx1iyZYlKR0YE+0iI2OqMCHoBATyG6WhSkgF3cGozFy2HD0Ku3crC6axzoRYrrxSiRL/wx/inReg/P+665Qo7nS/84ceSly3pKsr82NlS7JUeshu3oxmYNRNnYFhn2Ond0dvRsXh1WLSiRxUav2Lyspxia+MMFSAsQZGd0EkDHoLhH2AF0Kjyj6mGjBUMGuW8t9COzB0Rh0tZ7ZgsBqQQlOn/KrXjUS2U8emyW4i4A4Q9oYJh8KU1yhOklRjs9DXpGBw/Lu85ZYJxb0NFcr3HhgCZLC0KL9FA4TGzp0xu2SLqqpy4AB4vZAkcLwozLT7lenAYDDEafP/5S9/4SMf+Qjf+c53kCSJm2++meuvv36aW5kZsXYXKioQdDp+M1YoOREbvvENFo9pr5XVl1FWX8bs89ez796fImPgyQ/aJl0TT7/1VlZ9+MMp21G1aBGPf+ADGMvLE74+5+KLOf+//zutPokGAzrD5MXCmuXLuf+iixJmYICSDbHlb39L6zNScdqnP81pn/50wtd0BgPveuihuG2W6mrecd99KY958U9+wvCRYQ48OS6DJYgCdbPrEMfqfVSd/lX8o36uuf96qucnziotb2nh4yeO8L054zWA/FTwDF+N7iOhw2KGtddcxuqb4rOMrv/73ycdL3abqNOx4etfZ8PXv57w81s2bODdzz4bt61106a4YwiCMEnua+LnAtzwzDMJP2M6CXnHpJuTLFar5DLfNq5p5O2/vE3vzt4Z+dw208nUdkF3kK03bsVsN3P1b65G1Mdn6GkSUsVDu8+ZuUgBCQEBc5k55zlPjsj4hnyTAhE1CkepjD3NgVFEjFlGmKgZGPlYCD3VULNWcr2hyNZ208GBhw7w1h/fYv6l8znt5tOmuzk5I8syr//P6/gGfMw5fw4bv7gRc6UZWZZ58rYnCXlDnPuVc6mcU5kwUjCV7dRoq0TkGm0VlX7LQt5qIlM6MKQAIINuiswBQVA0+cMeCLnZ+rcqrrtucgHcfC+CV85SqlM7jqe32KzaRQpKYAZRJyKMyVlMtIsUlOjd1UtZYxkVrRVp3xDF1XAYGpdAevMXbwKw7LplaWdtqdkXmzdDdRIVK0mC559P/JosK6a57Ta4+uqps18kSSnemY9jFZJM501Vzisd51TlbOWcGm0fTfv4/lEl2t5snzxOcq5/Ya6DFV+FPbeDzgBL/g32/ieIelj3E8Uohgow1xXNgQFw7lfPTfl60B3EYDNMGjfJbGewGLDPtjN8aJiAI0DVnKqo3FqyOfO5rz3H6NFRzrztTFrW5z/S9NgxJXvGZoMYyXYFcx1suDe1ZNSYXbKlqUmpS9PXB2+9BWdMcyDYTLpfmQ6+8pWvxP1/9uzZPPnkk9PUmvyh2l1nMPDR48czfv/FP/sZutob6NvVx1mfOYu558/N+Bjn/+AHnP+DH2T8vkQsu+kmlt1006Tt7/jTn/Jy/FJCEAVVsSttJtYAOsB49IQgwLBczRnXz6Jq7FqpkT5SQK0nM/UySbbzbf3yekS9iHfAi7vHHc2Y1CgemdjO3aNk1gqiMMl5ATHrDR7NgVEMtPucmYn6nDCVczgdNKfh9FAKY29mCrzOQCRJYtu2bVkVPlEH5lRFvDUmk4/JLRfbTQd+h5+wP5zxw9B0IwUljj13jNd+9FqclMmhxw5x/PnjCKLA5q9vpvm0ZqrnV1OzoIbmdc0YbUaC3iDV86sTFtebLtvl0/E4pQOj/3l48XrY+52pD2ZQZCGkoJtbb53svIDxbbfdpiyW54p9th0gs2h5d4DeXb10buvE0+dJKm/j6nbxwh0v8PS/PZ1RNIcgCOOFvGOiN44+dZSDjxzMyIGVSj5K5cUXIZWihywrNRFefHHqz8vnsXLBP+rn+IvHOfHS5JX4bMae6sBIpwaGfY4dUBwYqaSPVCLhCEGXMiYTOTDUDIyc6l/0PadkObW+CxrOVf4WTWBpgPL50UVy1YHR0ZHDZ+WJV3/4Kltv2krna+Mn1FS2M1eZ0Zv1yGF5Ug2ZRPhH/AScAXSGwnjT1Pq8CxYkUbAx1ynff+yPuQF8PWBty8l5oaLKSE13HYyZdr+ikR+ytXvAFeDFb7/I4ScPI8ty1GnvG9YiGouBZ8CDu9fNSP9IWtexiWzZAr/61eTtra3wvQfn89HfbWTWObPy0NJTCzVjUTSkXibJZb7Vm/XULlUiJnp39mbeSI04PAMeho8MJ/1RM3xVMrWdu1dxYJQ1lyV8vXldM+/81TtnVA3KmYp2nzNzCQfCyMj4w/6srnmxGMuV9ZWAK7mEvkZ+KZWxp2VgzADmnDcH+2w71QvSL1CroXAqalKmkkkpZVzdLl7+zstIIYm65XXRBUpZkpGRWbplKfXL6+PeU7esjp43exjYN8Did2SnrxT0BBENInpjfqfDaAZGHhwYag2MpA6MwNjqqyGNCK55/x8Q4ZUdLWkvgiepW5k2agaGd8BLyBvCYJ3aGasWHpbDMqPHR3H3uePqVgwzDCgPfkFPEEuNheEjyrZ0Nbs3fH4DepMeW4OyrxSSFOcfYCpPXC9gIv398PLLyt+pHBiJ5J6y3S+fx8qF0eOjvPK9V6hoq8jLIsmlP7gU75AXS9XUmS+VbZUgQNAVxD/inzJbRq0RJYhC9KY3lpwzMNxHYfhNZQW99RpFoshQBiE3BEfjxmZbm/K7GBkYoDhvAq7ApO9VlmUG9g0Q8oQyqhElIGBrsOE47sA37KOsIfEDvYp6TUpWgyNXDh1Sfi9YMMWOh+8GQQ+t74SdXwBfH6y6Hapzz1RcuxaefFKrg6Exs+jd2UvnK524ulwsuHTBuFNfc2AUBU+/h6AniLEh+/vEsbIUUZ55RskG1dRVssc+144UlPKSQZ2KxjWN9O/pp2dHDwuvSC2lq5GcYtQ1dHUrBbXKGhPf7xgshrxElWtonMyoz9hTOYfTQX1OV4PTNE4dNAfGDCCbArUaCurisVqP4FRAXagzVRZmsagQeAY8PPLhRxjYN0DQHeThf3k4LgpblmR237ObhVcsjC/evEwZF+qNZTaMHhsl5A1RvaAac7U5KlWUK/nKnIpE0nFgjBWxMKZRfbjubAA6+9L7/HwsghvLjFiqLfiGfTg6HNQunnqV2FZvIxKOoDfqkV0ykl9SJKgEeOyTjxEJKxWX/Q4/vkEfgwcG6dutdCrdB5WJ+tLRmyAhfbs98ohio9NPH1+YTkScLn8K0tkvn8fKBXWMege8edFw1hl1lDelJ6OgM+ooby7H1eVi9PjolAvwqnyUqdKUsJ05Z2BYmmHBhyEwAJYxHSNj1ZgDYwRs4ydHrISUKvlVKPr39vPsV56lvLmcK38SX6DF2eEk5AmhM+momptZIXZzlRnfkA9zlRmZ5FFUsiwX/JoUm4GRoiHQ8wRIQWi+DOyrwfd3GN6eFwdGqWRgaGhkQu8OJfK76TTlYqFlYBSPkC9EwBVAjijzZ8gTQhCUWl+ZcORI/P/Xrx93XsgRmYgUKVj228lG7HevM+iQghJSUMrYJungGfBgqbEQ9ATpfKWTwYODUTlGSD8Q51TAM+CJ3kckwjfkK3hdQzUDI917VI38EnsOSGEJb6eXkaoRdHplbtPGS+kT8oUIeUJKcGJEzvqap6IGowXdQa2O0CmG5sDQOKmpXlBNwBWgvOXUueHwO8YW6goU7VoI1AKxlhoLYX+YcCCMwWJAZ1JuTMK+ML4h36Sbz5rFNbzj7ndEI+gzJRKORIv1DR8epmFVQ07FnGPJVwZGV5dSGFavh7nJJKlVB4YpDQfGGMVeBK+YVaE4ME6k58CwVFkw2U04Rh1UzK3A0+/B2eEkHAwTdAcxV5rRW/QEvUFEvYip0oTZbs7pQSXWZuneCKUjHwWwaZMi66AW3JyIICivb9o09WdOdSxQ7JbOsXJB/X7D/jAhT6jodZrqV9RjqbbEPfTHEvvAM/DWAEFPEFOVKWGmTs4ZGDqzEtkf18DNEHIpjowYWsdqn/t8MDSUw2emga3OhizJuHvcyBFZ0VofY2Cf0umaxTUJNZ1ToTfqow7kVATdwegCXaGyAlUHxsJUAawhh+K8EAQw1UH16dDzdxjZnpc2qIW8d+9WZPe06GeNUkeWZXq2KxEKjWsVp2vUgaEVxSwYpgoT1horrh4XkWAEBKXmgn/UH73vsNZY076HV+c/FacTyssV+dVtP91G2zltnPOFc/LdjZMK1SbeIW9S+dBMbDIV0YyBQS+jx0cR9SL3X3d/3HU414yBk4V0sisMFoMS8GQvXF1DV89YBkZT4gwMKSix+57dBD1B1n98fdL7Uo3MmXgOyLKM1+vloPVg3JypjZfSRJ1f3b1uIqGxa54/+2te9LhjGRiyJBP2h7UMqFOIknBgSJLEhg0bCATivetHjx7lvvvu4/LLL2f//v3ccsstOBwOBEHg3//939mSj+qyRUKn07Fu3bqsqrb37uxF0AlUL6jWBmeGLLhsAQsum0pXIjW52G46mKkSUgCWGgv+ET9SUGL48DDVi6qx2JUH6kQ3nzqDLmk6L0xtO++gNxrJD+Ab9WEqN+Ul2mrOeXOomlsVlcLKFrX+xfz5YEg2/IOqAyONlVBPB3iOs2lNI62tC/KyoJ4O9tl2+nb2pVXIW/3+ZWSsBivhQBhzpRlRJyqRoYJSXNFgNRAYCSgOjApT9MEl3QcVR4eDjpc7MFWYWHjFwqiOZiKJoUS43fDUU8rfUzkwYgtuCkL8d676Su68M72Fz1THUgkE4MABWL5cWVB98UUlm0Z1bORjOtMZdZgqTIoDctAb58DIdN4cOjTEwb8dpHZxbdpSCmd8Mnm15EkPPBEZKSTh7nVz//X3A/EPPHmpgTGR2e9OuNlkGi/63NFRWAeGtc6KaBCJhCJ4+j1x86XqwJjoiEhlu2RzY7LtqgPJYDNk7CRJl7QkpPxjKWfGaqWwetVqEERlPvT3g7k+xZunZsECpYi4x6NkzC1dmtPhsmam3a9o5Ids7O7scOIb8qEz6qLynPUr6jn/P87HVq8tAhUKW52NLfdu4ejTR9l+93aq5lVx9ufPRtSJ0cWcTKKJJ2ZgOJ3Q0jIu0aEWpNZIjmqTgDNA0B2k89VOTHYTLetbovskskm2860atKU362lY1RAXWAD5yRg4WYh+V0myK0K+0KT6FumQqe3UIt7JnjkFUeDAQwcAWPPBNWnL0GpMzcRzQEZWatkJiqSpNl5KG3V+dXY6Of7CccK+MIuvWZz1NU9FZ9RROacSg8WAFJS0NdIiUCrPGCXhwNDpdLz22mtx2/x+P/Pnz+fss8/G7/dz9dVXc/fdd7N582Z6e3vZvHkzCxYsYNWqVdPU6swJBoNYLOnrTKv887//iW/Yx2V3XUbVvMxkHjTyQ7a2mw6ieuMzSEJKRS2srN4oylJuBZ4gse3UaICBfQNxDgz/iD/6mblGW827cF7W741lygLeMF4DI50MjL5n4cQD6Fqv5q67FuRlQT0d5l08j+Z1zdjn2pPuY6owIYUk/CN+RepHFIhEIoji+MJnWUNZ1NEQGyWqN2V+OXN1u9jzhz1UL6xm4RULoxJS6T54PPmk4iiYP19xFEzFli3wwANw663xRbhbW5XvOhOffLJjNTWBKCrZGeecA5//PPz0p5M/7667Mvu8ZFhqLQScATwDnknOukzmzZGjI7Q/207QFcyLFvRUD70TH3iyzsAIjsJb/wEt71AyLtLM3Jk1S3FgnDgxHr1fCARBoLy5HMdxB84uZ9zDd//efoBJtYVgsu2SRajKEVnRcLcZsdXZJs2Zha5/EQxCe7vyd8oMDP+YgVVHhd4GFYvBsV+RkWq+LKd2iCKsXg2vvKLISE2XAwNm1v2KRv7I1O49O5Tsi7rldeiMyoXeXGmmcU1jQdqnMY6tzhatsdC4phFbmw2LxZKVBEYiBwYQlY1SC1JrpMZWZ8NWZ2Po4BCHHj2EtdbKyv+3csr35TLf6i2Fyxg42VC/KyksEfKECLqDBD1BAqMBQt4QOrOOitYKpJDE6LFRIlJkSvntdG0nyzItZ7bg7nEnlZAS9SJ6s56wX8kS1xwY+Uc9B2RkJElCp9NFZZ+18VLaqPNr09omZFnG5/Nlfc2L5YofX5GnFmqkSyk8Y5SEAyMR9913HxdeeCF2u52//vWvrF27ls2bNwPQ2NjIZz/7WX79619z5513Tm9D00SSJHbv3s26devQ6zP72vNZDPhURJZlIqFI9AEtU3KxXbGJSBHqV9bjd/hnZAYGjC1QOwKYq83Ros2pcPe62fHrHQTdQS781oVxryWzna3OxjX3XMNfb/4rIU+IylmVOE44mH/pfJZdtwwoHT1N1YGxaFGSHaSAorMP6Tkw9GN9CrvzuqA+FfbZdpideh9RL1I5q5KwL8yGz2/APs/Onj17WLlyZVTn1Dfk42+3/A1QorrNVWZlISCL+VGt4aA6QjLNwFDlo665Jv06Blu2wNVX5ycjItmxHA646ip49VX4ylcmv6+rS8neeOCB3G1sq7MxenQU70B8en+m86b6/tjaN+kS8oXQm/UJb4SjDzwT5JMg/oEn6wyMrkfAeRD4m+LAiEWOKA4OWQJz/IFnzYI33ihOIe/yFsWB4epywenKNu+QF2+/FwRFQiqWRLaLjVCN5bmvPYe7x83pHz2duRfMnTRnigaR+lX1ac3l2XD8uFKDxmKZQu4uoDhrMDeMb6s+XXFgjOTuwADFEfXKK0oh7xtvzPlwWTGT7lc08kc2dlflo9T6FxrFZbR9FICK2RU5jVlVQkqnU7Itow6MsWceLQMjM6IyvPapF6DzOd+qtaTyVYfvZCToCTK4fzAqSwnEBaGBkgmh1jyLSJGkUk6Z2E4QBM74RPKMXxVjmTHqwNAoHO4eN0PtQzQub8RcMTPXOk5ltPvUmUup2K5kz5qf//znfPe73wXg6aefjjovVDZv3sxdd92V8L2BQCBOjso5djcXDocJh5UFC1EUEUWRSCRCJDJ+8VO3S5KEHBOSnGy7TqdTCtCE4z2/amqNJEnR37IsR3/U7Sp6vX7SdkEQIKIsssjICCblcwRBQKfTJW17sfo01fZkfUrU9kL1qW9XH8/f/jxVc6q4/EeXZ9Un9ViSJJVEn2LbmMhO5/77udG2x75WynaSwmPjAxmdUUftciUMOiIrx1Jv7KXw5D7pzDpOvKKsAnpGPJjKTXF9Un9PbLtnyIMsy1hrrSy+ejE7frWDiBShYnZFtI1AVn2KRCI42h0YbAbKG8sRRTHr8XTggAiILF5MYjtFQkSaLkUOjCDLRphqjtCXISMTCTqRw2He+U54xztEzjpLZPt2+NznJL75TRmdDiKR4s4R+/+yH0EQaDqtiXmXzCMcDmMZtlAxpwK9Xo9Op2MwMhidR/VmPdULqhEEQXFUypHoa2q/U9nJWGkkIkfwDnuRQhJzL5hLw2kNip7mWN+StT0S0fG3vwEIXHVVGPWrSHc8nXNO/PZwOPvxdO658dsrKuDRR6G5WYffP/lhWCkcLXPrrXDllVLUeZLNHGGpsRCRI7j6XJOuT7HvmapP7n43ETmCudpMOBxOa96TZZknPvUEzk4nV/3sKipaKsavuTFzim/Yh2fQg7HciNlujqtzo84pAwM6QKC2dvKYTzqeIn7ErkeVaLDmq5XVo1g79TyD8PZdULWGyIpvxPWptVUARI4fjyDLQkGvuRUtFciyzOiJ0ehnRCIRlt2wDN+wD8EgxN0bKedI/HFEUcRWZ8NcbY6zx7wL53HgoQOMto9iqjLFjRtBEKicW8nm25X7t3A4nPf7iAMHZEDH/PnKmE867/n7lHnPUIOs9tW+BpF7iAzvJBIMgKiLt1+G897KlRFAx/btyniejmtu7LwXS77u92LfqzFzkWVZWfgTJjswjr9wHFePi3kXzsvKoayRHo52RU7TPsfOqGc0q2O4XOP1m5Ytgz17EjgwtAyMjJgOGd6B/QOEPCFql9YmzcjQGK+pJepFTHZFNlbQCfgd41r6ok5E1ItEwhGkgIRoLV4tCoPNAIMQ8oSK9pmnIo4OB0Rg8MAgrWe0TndzNNJk5OgIerMeU7WWnaSRGyXpwNizZw8jIyNsGhNf7+7u5uKLL47bp62tjaNHjyZ8/7e//W1uv/32Sdt37NiBzaZEB9bV1TF//nyOHTvGgHr3B7S2ttLa2srBgwdxOMa12ufNm0d9fT1vvfUWPt+4bMmSJUuw2+3s2LEj7kFv1apVGI1Gtm3bBigPC6Ojo0QiEXw+H7t3747uq9PpWL9+PQ6HgwMHDkS3WywWFs9eTDAYxOvzsmvfLmVBoLKSpUuX0t3dTWdM2HSx+6Sybt06gsFg2n1avXo1g4ODcfYrVJ88xz2MDo9iqFR08bLpk2q7Xbt2ccYZZ0x7n05GO3k7vXi9Xgzlip2cDmfcQolFZ0GWZfbs2YN1ZPyBet26dchGGb/BT2AgwItbX6RmVU20T/v372d0dJTt27djtVrj+tTzVA+OUQeNCxspby7HH/BzZNcRjNuMOffJPeJm11d3AXDDgzdQ21CbtZ327FkLmFi8mOR2qrpBsdObb05tp/IyvF4vo57DdHi3Rfu0bl0r27fD0FAPO3Z0JrSTSrbn3gt/fAHPcQ/Vp1VT1lIWd+5Jfom37n0LOShz7nXnMjQ0xJEjR6L2s9vtLF26lP6+frxeLyExhC6kw2g0YrPZ8Hq9BINBJJ9EyBuiv6+f2oW1Ke3k9XpxupzIkkz/iX6a5jex/+h+pU9HU/fJ4VjP6KiOqqogev12tm0rnfEEsH17BX7/MpIhywKdnfCrXx3ktNOccXbKZI6wn26nxliDq8HFtm3bon3q6emJ2k4QhCn71Pl2J45RByeGTuDZ5kn73BsaHcI76qX/YD+2RlvUTt5OL16Pl5AnhH/Uryyeu3WEDWHEgIjVYEWSpOic0t+/HtBRV0fadpqj20Fj2IMzXMH+Y3po3xbXpxM9TuyOUQKet2n3b4vrkyxXAnPYtWsYh0Nf0Lm8vKWcYDDIwTcPIm+To31a/b7VdHZ2xh2/rq6O2bNn4/P5oraL7dPEc69qiSJruf+Z/YgbxWidi2Jdn557zgvMobZ2mIMH+5OPJ/8gXq+XEydGcQyO2amlhdbFn+bwgIXh7Tui+2c775lM+4GVbNsm8cYbb7J+ff6uuR0d3Tz6qJPBQQO1tSEuusjEokWTx1PTWBrK4cOHcblcOfdpop0WJU0F1JhJCILAhf95IQFXYFL24t779+Jod1CzsEZzYBSQK35yBY7jDsraymBPdsdQ5aNqa6GtLYkDI6g5MDJBjd4vqgyvPFanKyDB9Cd+lyymChOVsyvRmXTR+ohBTzCaGRqtxSUqmRn+UT+yLOdc1zDgCqAz6OKCXxKhzqVaBkbhUAMaVcJ+TTpqpvDaj15j5MgIG764AfIkT739l9s58dIJVt64kvmXzM/PQTVKnpJ0YPzsZz/j5ptvjv5/dHQUszk+EsJsNuP3KxemibIRX/rSl/jMZz4T/b/T6aStrY21a9dSUREfXT137lxmzx7XNVG3L1q0aFLULsCKFSsmRa8BrJ0gYq1uX7duHaBEse3cuRNRFDEajdHtsVRWVsZtFwQBT69HWaCrsrF+/frodoDm5mYaG8e1aovdp9jtFosl7T4B1NbWUl1dPWl7vvvkbHLS+/teGLuXyKZPqu1Wr15dsD55BjyE3CGGjwxTq6ultmpciF1wCHgET1p2kmU5mtI1lZ0kCV56SeCPf4TGxko2bFgXjcQutp1GqkY4aD2IHFL01C36eG29sF+J7F65ciVV88frwKh9WnbuMo4+c5R6oZ5Va5W6OJWVlZx22mns3LmTNWvWRL8XtU/BJUH6NvVhrjJjsVswm8wYBEP0+8mlT54BD+32dkS9SHVd9SQ7qW2fyk4+H/T1KfstXpync8/hwmq1YrGW0XDaeF/nj133/f5m1q1rTGiniW3PtE/G40aGtg/RfGYz89cqH6j26cBDBygzlVExv4KWM1uQZZnKyspJ9qtvqMdqtaIz6jAYDCArDzB6WY/eoCckhTBYDdQ31E9pJ1mW6ZvXh2fAgz6oz6hPt96qHOeaa/SceWb8a9M97wEcPpyeDEFFxWLWrZOjfc10Lp+/bj5zT5s7aXtTUxO9vb2sWbMGnU43ZZ/METOV9krWblxL/Yr6Kc+9Ra2LCDqDuOe66ezrZHDXINWzqplfpZxXg32DbBvZRjgSRtSL2NvsVLRWoKozhL1KNsDKlSsxN1fh8ynHra2F8vIEdvIP0Fzuo3FswZ5IGN2ev0PYQ/ncLaxrmBOViVLbPmvBagSnHQwGateti+vTxo3wox+B211DZaVyyEJdc10dLhZctIDqRdUsWrcozk6Jzr1IJEJZWRmrV6+OtiHZuScIAvur9yMPybQZ2mg6vSmu7WvWrIm7R8v3fYSabLtuXRWLFtmT9gnhK1gW3MJCwRiV0RNFEcQ25tdLzMvDvdF11y3l5ptlHA4DTU3r8nZvtHUr3HprC52d45GGra0yd90F73pX/HiKRCL09/ezYMGCuCJ7+ZrLPZ7Mi6VqFIdsiiom0mm3VFtwtDvwDfsSvEMjXxgsBmqX1MZlpmWKKh81fz6MPd5qDowcUSWk0s3AyEcxU51ZB25Nx38qDBZDwkK9oihiqjQR8oaU7zCiODB8I77o9S5RXcN0bbfrd7s48sQRVr1vFctvSF7wzmBT2hb0aA6MQhEriWertyHoBNCmuJJHlmXcvYrcdVlTGbqh/HgwQt4QviFf1PGsUXimu4A3lKADw+PxcP/997Nv377oNpPJhN8ff2L6fD5MJlNCzWuTyYTJNPmmXK/XT9LrUtPqJ5LMOMm2J9MBU7fr9XrOPPPMlPsLgjBpe9AdRBAEjGXGtNterD6lsz1Rn1K1Md99stqtiIJI2BtGjshZ9Wmi7fLdJ8+Ah7++/694h7yT9lGx1ljZcu+WhDUZYtty7LljvPG/b9B6disbPrshaZ+UBZHYugcCra36SYV9i2anaiu2WhveIW9SvV5rjRVrtTXhd9+wqoH2Z9sZOjAUfV0QBEwmU5ztYtuot+uZe56y8Br2h6ldWkt5Uzki41HE2fYp4o8gCiKmMlP0vdmce+3tityP3a5o8yc890JuRFGPqJ/8sJWw7foyBAQEyYsYc6x5YzXH29tF9Pr49+RrjqiaU0Xfjj5cna44OwmywOG/HUYURJZft1zZlsR+Frsleq7ESgXGYqu1RaOzpjr3bHU2fIM+fEM+3n7kbVzdLuacN4faxfHVnGP7JMvw8MPK39deO/n7mu55D5Q6JunQ2qpjYlPzMZcbjcZJtku2vyzL+IZ8iIJIRVNF3Ock6mvsnOkf9eMb8jH09hC7f69EugdcAfzDfqSQhMFioGZxTdLFCJ1ex+io8nkGg7IIJAgT2ugfgFduRAwMEd0acirbRR3i2yOIx++FDffG1brQWWqV4iiSG1EUlErPY32aO+bz6egQovVTCnXNtc+xc86/nRP9f9gfpndPL3VL6zCWGSfZQxRFzjgjsd5zInu0nNnC4ccP0/NGD21ntsW9tu3H2+je1s3aD61l3kXz8tYntZ1qssKiRWLUAZ90PFnqmLw1f/dGZWX6qIzLnj165sxJvn+642nrVqVejSzH3+t2dQljdWxEtmyJ75Ua7JKPPk3cnmvBRY3CoNfrU9p9IiFfKOFCIBCtV6M5MIpDpraLRc3AmD8fysqUv1UHhqnSRPP6ZizV01tsc6YRlZCyT+3AyMV2QFxmQCQcIeAMYKow5ZwxcDKS7DsJ+8KIBpFLf3gplhrlXD+w9QCHHj/EnPPnsPJGpRD7xLqGmdhOXXidaixpGRiFJewLI4Uk5LCM0WrEVmdDCkraeJkBBN3BqLRaZUsl6+dlP2/GotasVGtYahSWXK95eWvHdDdgIn/605+44IILqK0dXzxqbW3lxIRKlx0dHbSmu0JTAsiyjMPhoLKyMqMHwGgBb00TMytiv7egJ5gw2mwqsrVdugScAbxDXvQmPXrL5CEZ9oWVxVpnYMqi0gFHACkgxRU4m8j4gkj89nwW9s2UZAViY0lVVLtumbJoOHxoGCkoRSPP0rWd3qznkv+6JIcexBMdt1kUlo5FLeC9eHGKItHt90DXozD7/8Hcm6Y+qH7sKTfsjtusOjCSKPPlhcrZSqi544Qjbnv7c+34hn1YaizMOW9OdHsi++V6rkxElcjwDnnper2L/t391C6pneTAiGXbNmW8lJXBBRek9TFFZ9MmxYnR1TV5rINyPrW2KvvlQiQcoePVDryDXpa8a0nUTpnMmwFngEhI0WNPp9hz7JxpqbHELTiE/WFG20eJhCLozDoqZ1ci6sVJEXGxDzyqAk9tbZJxFnJCYAhEE+gsgAy+XhD1YGkGnVl5PeSML9ZtqFAOKMsQcoBpPLK+bWydv6cHQiHFeZIIScpPwfdYBg8M8sIdL2BrsPHOX75z0uuZXvNaz27l8OOH6fxnJ+s/vj6uWLpvxEfQFVSi5AqAGoG8cGGWB5Bl6H4Uht+ExbeC0Z5Te9asURwYO3fCO96R06GQJCXQQB2/OsJIY7ftSh0buO02uPrq8XOi0PcrGqVJJnb3Dnn564f+Su3SWi745gVxARswvkiXKqhGIzf2b92Pd9DL3AvmUjW/KusxqzowFiwA75i5VAdGeVM5m7+2OfEbNZISLeKdhoRUtvOtqcKEtcaKd8hLOBBGCkpRB4YaSZwoY+BUJPa7Um2jM+ri7jOsNVbsc+3R+/6G1Q0cf+E4siRTPb864XEzsZ27ZzxyPBVrPrCGVe9dVdT6KacCsedAyBtSrlkycVH32ngpbWKdgDqjjtHR0bzcp6rrekGX5jQsBqXyjFFyDoyf/exnfOc734nbtmHDBh599FE+8YlPRLc9//zzbNiQOMK8FJEkiQMHDmRctb2yrZJ1H1uXcGFbY2pEvYjOpEMKSIQ8oawcGNnaLlP0Fn1SR1W6acXR1OckkUMTF0RiSbYgUixsdba0F50nUtZYhtluxj/qZ/jIMHVLlUXEZLbbv3U/UlBizvlzKGtIfUOaDepiaT4dGEkJDCm/jVUpdorBWAWLPgmGsnGjM+7A6OsDt3s8mi+fVM4ac2Acj3dg1C6pZfZ5s6lZVBO3mJLMfrmcKxNZ9d5VrLxxJdY6K8eePQZMbbe//EX5ffnlYC7R5xSdDu66S3FKqmvoscgy3Hlnfsb5K//1Csgw57w5WKqUxa9M5k1zpZkbtt6Ab9g3aTEtFXqLHpPRhPOEEzkiY7AYMNqMlDWXEXAGqGyrJOwLJ00tVh94BscWgerqEu42js4SlR+ifAH4+8DaBpIfIgkcaoIIBjsERyA0GufAqK8HoxGCQejuhhgVoCiTM+UUp9PETLl0kCMynn4POpOO/r39wLjjdyKZXvMaVjZgsBkIOAKMto9SNW98LlKdS4V4sAyF4JgyZFmwIMWO3k5o/wPY5sLsG+JfEwToeQrcR2FkBzScn1Ob1q6F3/8eduyYet+E+HzQ3w/9/ezYqaezcy3lOPkG3+AwC/gpH4/uKsvQ0aE4uM47T9lWrPsVjdIiE7v37uhV9PaDUsL5VnVgaBkYhePESycYPjRM/Yp6KuZUZD1mYyWkjh9X/lYdGBrZsfZDa/Fc5aFq7tT31NnOtxMDcYYPD/Pyd1/GUmPhou9cBGQWiHMyE/tdPX/H8zg7nJx565nUr6iP7jPxu7I12NBb9IiG5PeT6douEo7g6VekE8ubylO2Vct2KgwTx4sUVurXrVixgpHDIwy9PcTq96/WxksJozoBbY22vN6nallPxaVUnjFK6ulm+/btDA8Pc8GEkNbrrruOr33tazz//PNs3ryZ3t5evv/973PPPfdMU0uLh63exsIrsg0t1AAlC8MX8M2IyU36/9k77/A4qrPt/2Z7UVl1W5Zc5N474ALYlNCbTCCBJC8kfBBSSEghvUDyhlQSCOFNIIFUQnVogYQABhxjigvuDXfZsnrdXub742i2actsk9bW3te110q7s7Mze+acOee5n+e+PX56m3qxjrJisKQe/A5mIsfJ/li7NjIYFo3YAZHsZwBnG5IkUT2nGnurXWRyJ4Asy+x5bg/ODicVUyoiCIyALxCUnckEyrWm6KGmi5QIDGOFup1qjVB7waCXbTYoK4OuLhEUnD07pUNVhdJ6QWC4e9y4elzB67R0bGlcybNco7g2tCBRMjiSEZ0KgXHllTk6qCyhsVFUVEUHwRVkI9Ch0Wkwl5txdjhxtDmCBEaq0Oq1aZGJGr0GJJA0El6nVxAY1UXoDDou/OWFQUmBWFAWveEVGKqhLxWPZDCUCQLD0xV53BpRhbF/Pxw5MpjAyHal3Lv3v8uB/xxg9vWzadspTjgegZEqNDoNy7++nJL6kkEVNMnuSZng8GFxfzKbobY2wYb2I9D6XyhpG0xgAJQvFARG56asEBggKjDiH49dlP20tcGYMeLgN2+Gv/0Nwoy3JddMYD59FPMK53GYGCwX4t5cQAFq0bxJXDCjF4yO+b4yZhYIjNxADsjBJA7beFtG+wqvwOgauMVE39cVD4BCRZY62MbZsI2z5fx7whNxLBUWDFYDfrcf2zhbSokcIwHKb6XRaDBYDVTNqIpbWQFCVvjqx6/OyjVvb7WDLKo+TGV5mrE0AhDeX3w+H5YuC+ZyM6899BpyQGbG1TOG+QgLSASlAiMZCZgqChJSIxN5RWD8/ve/59Zbbx10w7FarTz33HN85jOfob+/n0AgwJ133hlTX7uAAqIxeuFoPHYPWmOeRd1joG1nm9BzdPnSCi4p2Qnxsl3VBjoOHhQERjYzgHONpV9Zqmqy2nOkB2eHE61BG5HBs/PpnWz981YmXjiRxbdmpu+XbQmpKVMSfVmKBEYCNDTAxo1CRioXBIbOpMM6yor9hJ2eIz2YZufXYkAhMJQJUSzs3Qs7d4JOBxdfPFRHlj4aG0VFVTgJ+cYb8P3vw623ioDr3LmZfYelyiIIjHYHFVMyvw5TgYSEqdSE3+MfVKlorjAnXOQqaG8Xz0krMNJB9Zlgmw2Gwb+LQmA8/rgIxCvkcC4q5RSirudID517OwGonJ4KY5MYo+aNGvSaLMuhe5IKOY5UEZ59HMPyIgT3AENlqo79fvkCOPKkIDDCqtLSgehLMm0H++nd3EqJqxUWLACjEZ54AtavD2m9AKxaJQiM6mpx062pEX9XVdH3rgX+DCDxEvEHm9Gx49AFFDAIckDmxPsngAQExkAWsauzYIqZC/Qd7xNSp0YtRaOK8AfSc6B1u0XCEYgxUJkvKgSG1+HlHx//B36vn2uevgatPv/XQCMVxlIjFdMqMJeb8TrTUwsYCUi2xlWQTbKur1kkFRSNLkq63+5D3Rx87SDmCjPTrpiWtWMoQECpHFSil+ZyM2POGEPTW0188NIHLPr0ouE9wALiItiPRmVX3qEgITUykVcExgMPPBD3vblz57Ju3bohPJrsQpIkzGZzyjfVnqM9uLpdFNcWq9IGL2AwTr8tM6Ir3bZLFYoOKpB2lkcy7Va1gY4vfAFeeklk+eaTV0YixGqfWG2nZB9Wz64OemWAmBDLARl7iz3jYymfWM60q6Zhm2BLex+yrKICI+ALZXYbUwhG9uwSlRu2mRHSUxMnhgiMXKF0bGmQwAA4+NpBZqyaQUldyaBth6LvuXpcfPDSB3j6PfhcQqot1uJRqUR68EHx/8qVomrlZIBWG6qoAjjrLHjnHdHHr75aeHqUqigmiAdLpYUOOrC3hfpOKm33wb8+oH13O2PPHEvtwkSp9LFha7Dhc/oiNJFTQUoVGAEXuLtAZ1FXgTH26pgvr14N774r/v7Nb8RDIYfLy1OvlEuG4jGCwDjy3yMgi+owRdItGtnqd16Hl4BPVMTlogJj3z7xnFA+CoTUF8QnMEqmgc4sPEz6PoASFVWvsiyIiJYWIfs0cybIMmUP/pQ/FDfj7XPS/10oqUUwVXV1MGECFBcHCQqqqkT5CIhKjDFjIr4iHR+boZqvFJBfUNvunfs78fR50Jl1ccnm0vpSVv5wZWHNkSN0H+oGRPWFpJGQ5PT67MGDYlywWsWQUjIwhVIIDI1eE1xT+D3+AoGhAj63jw9e+gBjqZHxK8YnbZNsjbeSJGXVh+9URPgaORuSlGrbLuh/oSLw2t/Sz+5/7KZiakWBwMgBeo708NJtL2GbYKP2k7VIksTkiybT9FYTB187yLwb5qEz5VVos4ABjDtrHNYqKzVza7I6TzXZTBTXFUeoKRSQO+TLGqPQy4cIWq2WuWmkue55bg/7/7WfWdfNYvZHc5ASXUBSpNt2qcLRJrIyTTZT2iV2yeQ6kgVEQAQ7+/rgySdjvz/cXhnJ4HV4QQK9WR+z7eLJJyjyNUqZYyaonlUdUd2RDlpboadH/NZxA3SebtEgGp26YKqCDx4UgbrZ34WKULVJLo287W123L1uJqycwMQPTcRcYeadX71D28423L1uFn160SD90qHoe363n21/2xZ6QRos/RWrEum998Tr+UTiqYVGI3T6FywQWew33CDOJd35iNJujvZQZnkqbXdiywmO/veoWJSkQWBodVq0xekPRClVYPj6wXFUGHSn0ufCkEweSpEhSga1FXX2NjsBXyDCyLxsYhldBwT5Ga0fnW6/a97UzK5/7KJmdg0zr5kZzJbUmXQRZHG2oNrA2yU8PzDGGZM1OrDNhfa3hQ+GQmDIsogGtraCxSIIhqNHRedpbRXEBYjI4c9+JjrQ5Mk0zZrLM+ur0S6s5qZvVInqC4DFqVX2KT42q1YNfk/pq9E+NkM1Xykgv6C23ZX5T83cmrgyNTqTjlFzB1dUFZAddB0U464iH5Vunw2Xj5KkGASGTsgrIgsCg4I8fFI4O51s/sNmdCYdE1ZOSLp9YbwdOijzCY1OoypIvfVvWzn61lFmXTuLcWcNll9U23Yl9SU0fKiB8knJq3kVH8uTQbL6ZET34W6QQWfUBduuZm4NRaOL6G/u5/Cbh5n4oYnDe5AFxMTo+aMZPT8Ud8nWuFk6tpRL/+/SrOyrgOTIl3tegcAYIgQCAdrb26msrESTUOsgEl67F8hcimakQ5ZlZL+clq5oum2X0nf4AjjaHUiShNFmjAg0+ZzqDLwByieXYywxxjUSCzf2jYYSEHnsMdixQ0jMxEM6GcBDgXd/8y77/72fxZ9ZzKQLJw1qO5/LR9t2kW49emEUgTGQXWNvsSPL8rCzy0r1xbhxoSTdQXAPRF4N5alFn3UDmUS+SLImVwSGvc3O6utW4+gIBbh9bh99TaKk1NHm4MibR2h8tDEikDoUfc9cbg4u8kGMteFtHy/Y3NOTn5VIalFRIY59+XLh6fGzn8Fpp6XndWOpEpm6CgkLqbWd8rlUDfjijY2pjJmQQgWG3ymy9GUfIIHPHno9HgJ+8PaIz5iqk8pDAWzapO641VTUKX3P3m6n+0B38PXug90cflO4vloqLBF9L91+5+xy0vJ+C65uFzOvmQly4kBpplBfgTFAYMSqwAgEhHh8ZxU4fdC5EY6MhjVrxIXhGbgXL1sGn/iESHeurxfsn1JJUR2238ZG2A6b18Pag3BThomijY2waJGokgpHXZ0gL6LHnqEYMwvIP8RrdyVxQMHB1w7isXsoGl1E5/7OglFwCoj+LaOh9rfsPtgNEKzQTbfPKgTGxIF4XTSBIUkSWr0Wv8ef1BuuAAFXd+Iq9mhke7yVZRm/21/IIo+BcPkoNeszV7eL3iO99Bztifl+orYL7+uGIkPQi7Rzf2fwGGL19YKhcG6heAeVjC2htbU12HaTLprE+w+/z74X99FwfsOwr98LSIzCPPXkRb60XeEOOUQIBAIcOHCA8vLylBpcCWQrrH4BqeP9P73P7tW7mb5qOnM/kTprmG7bqYWxxIjsFwSL1qTFa/fi7nGjM+mCkiiWCouqktllX12WdBvF2PeGGyL8QiMCIl6vumPPN/NQk80EsvASUQiM8LZr3d5KwBfAUm0ZVG5orjAjaSQCvgDODieWyvTlE/pb+pEkCVOZKe2y/b17xXNCA2+dFUZfIORsUoF+gMDwxiYwlIVxtuDudePocKAz6oI+BT2He9DoNJjKTBiKDDg6HLh73YMIjFz2PRDZXKZSE65uFyvuXEHR6FCZeC68CPIJixeLPv+Zz8DXvhb5XipeN0pfCa/ASKXtlM8pREgyGEuMWCosODoc+NyxyQq1YyaoqMDQlwiPGXeHICMCPpC94O0OO6gKsd2gnb8FO38Ktlkw727Wrk0sD6WgpESMz2qlg+JB6Xt6kx69VY/f7cdUbsJabUVn1OFz+gb1vXT73ZjTxiBpJHoO9dB/op/i2mLO+eE5qj+fKlRXYDhaoMcDR+2gqOb8+c9iBx0d4POBzwlLXVBrAKtFsCJLl4aknpSLo7wcPv7xhF+nyshbJdxu2LVL/P3QQ4I/SUQwDsWYWUD+IVa7x0occPe68Tq8vPPLd3jv/vcGkZcKmt5povtgN3Vn1GVsNH0qINZvGY14v2U0FKlX5XdNt8+GewDBYAIDQGsUBEa8+2QBkVCC1iabOsnDbI63h988zDv3vsOo+aM469tnZbSvUxFBQqFEXTxEqaqPJwscr+0y6esKgeG1e/MiEe5UgyK/VzK2JKLtGs5tYOtfttK1v4vODzqpmDy0XnwFJIa7z03nB50U1xZTVFNUmKeexMiXtisQGHkOhcWPljQpQD00Og1yQI6oasgnmGwmKqZWYK2xctrnT2PrX7bi6nZx5rfODC5wsp0l19gIjzwCL7wgiIz/+Z/IgIhar4x8Mw9VjM/bdrbFfN/Z6URv0TN6wehBE0uNVoOl2oL9hJ3+lv6MCIy3f/k2bTvaWPa1ZYxdPjatfST1vwCw1sPUz6W+82AFRuTEXiEwDh4UicnZvjfpzDoMVgNdB7vw9HvQ6DTYxtmQZXlYF9jmSjOubhcBXyBCvi1ZsDlfK5FSQXUcVZ1UvG6qpldx5rfPTMucLeAL4OwUFQxq+5y1ykrjo41ZyYYFFRUYpipY+qiovtj5Y+jbD5NugYoww0B9idguGorHzIBXjVrS95OfFASSJMUmMaKlg5JBZ9ZhKDbg9ruxVFiwlId+62z1PWOxkapZVbRubeXo+qNMv2p6VvYbCz6fGKdgoAJDqaTwemHUKBHF+8tfoLkJtr8n2Mjav8L9S0GvF9G+WbNCFRRVVWCzgmHgmlmwMO1jmzdPPO/cKQgIYwZVGGvXgt0u7rWf+lRG/uIFjDDEShwID8zGIi8V7H95P8ffPY6pzFQgMIj9W4Yj0W8ZjQt+cQGuHlfGiWnhElIQSWAoCRZKAk2hAkMdUq3AyCYMRQb8Hn/Q7LaASJSMKWHhpxeqrk5R5qOpygKH93WtWYvf5Udr0AYTChP1dSVWE/AF8Hv86IyFMFs20X24GxCyQT2uUGWNscTI2OVj6djbEVQuKSB/0L67nTfvehPbBBsX3XdR1vf/6rdepa+pjxV3rijMV0YICiNrniMoIZWnFRiKsW06siNDhXwv6dTqtVz6u0s5tOYQ066cxtF1R+nY04HerKd8YnLNTQWpZnvs3i2eP/7xwcHXdMxD8wGVUytBEhk3zk4n+pJI4m/ihyYy4ZwJeJ2xJzhFNUWCwDjRT/XM9D0slGstE+k3VQRGuogjIVVfDzqdUE05fly0cS6gSAZpdBr0Fv2wk4uWCgtdH3RFVBCA+mBzvlUiqYXfLypIYiGVChOTzUTd6eldLM5OJ8gDlTAqsx5BkBjZInVVeWCYqsTD7xaVTxULoViF1q7BJp493YB60veKK8T4Gu29UlwMf/xjerJl5nIzeosevSV3CRH1S+pp3dpK0/ompl05LbsZiD6fqJiwWDjcWsxE324u1v2HugfboKNdXNDTp4uL1mwWpMac+XDu+VBmgropYoADuPLK7B1XFOrqhERbR4eQY1ywIP19vfSSeL7wwgJ5UUB6UBIHYiEeeanIkCrkcgEC6fyWsRDPpy4VxJOQ8vnA5RJDoNaoTfnYRjKS+QjmEkr1r/1EfsjY5hus1VamXDJF/fY1Yn4YrwIjGXRmHVq9lvYd7SBB7aLaYJvE60+KcoIckPH0ewoERhbhdXpxtIo1Wum4UtgT+f6iWxeJ37/Qb/IO/c0i1hCucJBNuLpcODudCZPaCji1UBhZhwiSJFFaWprywJqNQGiuEMvYNhXZkaFCeElnOki37VKBtcoqNMMRMiodezoGBVOToWVLC2/+4E2qZlax8q6VCbd1uUI+B9NjJMmGe2VkKwN4KKC36LFNsNF9oJu2nW2MWTJmUNtpdBqMxbGzq0bNH4WpzJRxYFS51qIrp9QSfn4/bN4s/nY6xf8xf2t3J2jNoItnkhEHuoHziyIwdDrhubF/v7g+ckVgFNcW09/ST8XUxGW+Q9H3QMiHAWz4vw2YbCbql9YDJ28lklrkssJEbdvZ28Ti0lxpHpaFRyAgAs2gxgPDFaykwKyy0ZUKDJ8d/B7OPNOgmhzWagWRsXatqIT5zW/Ee+neX62V6sa1TPpd3Rl1bPzdRtp3t/P2L9/m+IbjzLh6BtMbVVZj+P2CUaqqEiVgr74K27aJMpmODvGjXXMNH/jORUKmvFKDNHtWqIpi1ID5sF4Pn/98yscPgKdHVNSkeT1KkqjCePVVMY5nQmC8+KJ4vkhl0tpQjZkF5BeStbuMjKPdgbHIqCqD2VIhKrScHQUCIxacXU78Hj/WGisSmfW1dPqs3x+awysEhtUamq/39AgCo2pGFUWji9CbC1X8aqDIe6mtwMjmeGutsoIkDNddXa64XoYFqINSgeHsdOJz+waRCWrazucSRIXWqFXVxpIkobfq8fR5xDqwoGSUNSj+F+ZyM6YS06C2K4xx+QulCkrpk9mepxqKRZzP3VcgMHKNfFljFAiMIYJWq2V6rEhxAsiynLcm3vGMbVORHRkqKNlS6VZgpNN2auFz+QYtJmPpyauBq8clzPr8yUvF9+4VgTubLRTviYbilRFNUhmN8Oij+dO+0aiaURUkMMYuHxtsu1gT2GjMWDUjK8cQi3hUS/itXg233Sb6EsBXviLIopjE4K6fQvcOmPl1qErufxJEnAoMEDJSCoFxVo5keEvqSigeU5z0BpjLvheOcOmi1u2tQQLjZK1EUotsVpgc33CcniM91C2po3h0seq2UyQbhstItqtLjIWggsBwnhDP+qIQCZgMWgto9BAQnhlaU3VccljpDuHksFYryKN58+B3vxN+CPv2qfB9yACZ9DtLpYXyyeV07uvk0JpDsTfy+aC/X9yAZBkefxxaW8Wjo0M0yA9+IEgJpxNMppBpdnU1jBnDB3+C3Uxnw+nT4Zq0TzUSsgzvfx16dsLiB4REX5qYPz9EYKSLQ4dEpaRWC+efr+4zQzVmFpBfSNburi4X3Qe6QYLRC0cn1S4uVGAkRuc+YearM+lSytZ//0/v032wm6mXT2X0AkGCp9Nnm5qEWp5eLypnQfC9xcVCQqq3V8ztz/jiGSntd6RDmY+orQbN5nir0WmwVFlwtDroa+4rEBhR6DrQhdfhpaSuRFX7GIoM6K16vHYv9lY7pfWlEe+raTuFwEjFVP28n5yHzqTDXFZov2xCZ9Ix4bwJ6M36hG3nc/s4/t5x6pfVD3uQtQABhcBQJJqzPU9VklI9ffmptHIqIV/WGAXnlCFCIBCgqamJQCA1HdIF/28Bcz4+R7UZ6VAgmbEtCAUHv39IDysuMpWQSrftkkEOyLz0hZd44643IsgKJZiqZCarhVL6rOZaUUxBp09PnGTa2CiCKGvWhPTY3e7YVRv5gqrpIR+M8LZ762dv8fzNz9O8Kbd6PwFfIDjpVa49hfCLznZXCL/Vq4nYTiEvYm7nahMa/H37of+AyOz29odec8X2/4iAbTZM+RzUXTHorVwZeUdDzcQyV31Pgb3NTuf+TsomllFcV4zH7sHj8NC5v5PO/Z24Ou3ce69yvJGfjRVsPtmQzQqTXf/YxfuPvE/HXlHOoLbtxi4byzWrr2HZ11Ig4LIIxf+itFQEgxLCMgYW3QczvqH+CyRpkA+GQg6PGRO5aV1dfPLfZgtVwTz7rPqvTweZ9Dt7m53yyeWU1lnx9/bhsXsIHG+m/57fYf/W/+L54lfhc5+DX/xCfECSxMCo0wmW5qMfhdtvFycMcOml8OlPw6pVgimcOhWKiti3T7yt6L/HRdPzwkS9473kB+9uF+Opzw7H/xkaU1MZWweg+GBkYuStyEctWRL6OZIh12NmAfmJRO0uB+Rg9mrR6CJVxotK8DSRke1IhRwILX6cXakRPC1bW2je2IzXEaoIT6fPKvOzCRMi5x+xjLwLUI/ZH53NWd89izGnjUm+Mdkfb5UAX6q+DSMBO57cwavfeJXDaw+r2l6SJGwTbJSOLw2uycKhpu0UueFUsvtL60uxVlnR6AohtmzCNt7GGV84g4U3L4zbdgF/gH9++p+s+8k62naon68VkFsovj5KBUa2x818l4o/lZAva4xCBcYQQWnwUaNGqXZtlySJyRfnMM0yTZxsxraKjE+mBEYqbacGR986Sv/xfjx9nohM/UwqMEBd5lA4gZEMSgbwihWCyHjmGbj/fiFnko+omlnFuLPHUT2rOth21ZXVtGxpwefyJf19Av4Azg4n1ur0MsLD/RwMVkNSwk/xGViyBD7zmcTb3fWtNq4qvQ7JM6B5039AvLn5KyLLG8BYIQyHYxkKK7CMEY8YUAgMRZ4gm/A5Y+vGxns9V30PRKB19XWrgwGa/pZ+vP1eug93s/XPWwEho9H4aCNPPWXl058OBbtBBJt/9av8rURSg2xWmATHrQF/k1TaTqvXoi0dHhZIlf+FAo0eiiak/iWGMnC1huSnENeNIg+l1kPqiivglVcEgfGVr6R2CKn0PdVtp1w0kgR79uD677vs+OnL6Ho6GO/rx+cZy05pFu8eOoLD9R5OXTGBsgpO/+EqzNPGh/aT6skAH3wgnpNWovRsh7a3oDRJdZ2rDd66ThAV7g7o3QkfPBi5jZqxdQDz54vnLVtEQUk6w5dCYFx8sfrP5HLMLCB/kajd+1v68Xv8aI1aimuLVe1PITBcna6sH+vJjvAqZ3ePG5kYN88YkAMyPYcEkWSbYAvtL40+q4x/inyUggKBkRlK6kooqStRvX22x9ui0UW0bGkpEBgxoOjbp5LQed7d58V9T03bKQSGzlwIl+UT4rWdRqth9KLR7P/Xfva9tI/qWel7WRaQHciyHPShUTwwsj1uKmNCwQMj98iXNUZhRC4gZZxsxramUhPVc6pTMojNNWRZZseTOwCYctmUiPJUJRDobE8ts0sZuNWUs6dCYITjttsEgfGnP8H//q/6rNChhKXCwtKvLAXA5xPBufZd7fhcPoylxoiFYzQ8/R5WX78aOSBzzdPXoDWkHlQN+l9Y9EgaibWvqyP8amsT71eWoa+zl/6ODopLjSKYKmlBAoyVCPFcpwi+eXtVBdliQVkQZ5PAMJYYsVRYcHQ44prfWSosQ1pp5u514+hwoDPq0Jl1ODud+HV+TKUmTDYTPqcPR4cDd6+bxkYrPh9ce60ImD74YPJg88mARF43qVaYpFs5NtxQSKmk8lGZoGq5CKCbaiJeVshhtbjiCmHrsG6dUFuqVrE2y7jvKewpwIYNgu1qaxOP1la45RaYNg0OHEDevAWPw0dfyTg8ReUcb9Ki8Wvw14xmp3kVPqcPn9vHnBkLMU8sV3/iMaC6AsPVIp6NSX4sb68YOw1l4O2BgF/4YCiFyimOrVOnCg36/n6RLZ2q5JfbDa+9Jv5W639RQAHR8Hv82FvsSJJESX1JBGEZj9SEkC+Uq8dFwBcoZBMPwOf0IftlrNVW+o73EfCJhBc1HEZfc58gkgzaYKZ9ulAqMKLHv2gCY/0962l6u4mFNy+k4byGjL6zgNyjclol7h53SiTKSEGQwIjjYZhteJ1ePL0eAj5BWCrJaYnGTYCj64/Svqud2kW11MypSbhtAeogyzI9R3ooGVOS9F405rQx7Hp6Fwf+c4CG8xoGzW2NJcZhk6wdiXB2OAl4A0haKUKuOZsoVGCMPBQIjDyGu89N96FuTDbTIO3G4cTJZmxrLjdz7v+eO9yHEYGWLS10H+hGa9Qy5dIpEe8V1xYz+/rZWGtSu8GmIiG1c6d4TpXAWLECZs2C7dvhkUeE0sfJgBObhXb96AWjE0oX6a16tEYtPqcPe6s9rUWEzqRj2lXTUHwds03keX0I425JAkkniAzF0wIgoCIDIeCFnh1CKiXKOyMXFRjWKiuNjzYmzI4YrkmlzqxDb9Xjc/rQ6DTozfqgb054wFcJdM+enR+VZdlCPK+bsjJ46CH1FSZK26VaOfbu/e8S8AWYec1M1dnB2URKFRhNz4PsFYSEKYXMrvor0zm0wbupF1YQmzbBCy/AJz+Z/DMp9T2XC957D+nECao3bED6979FJOznPxfjzSuvCNOQAR8K5s2DigGXyosuwjnldHa89SQmmwm9VU//seNodCLgoPgPxSNRUoHPBwcPir+TEgOuVvGstr30paCzgN8DcgD0YdekmrF1AFqtuFe+956oWLzqqtRIz7VrwW4X86i5c1V/bQEFBGEoNuCxe5D9MjqrDjkgBzX+FcQjL40lRlb+cCWWCguStqAjHk0Ea/QatAYtfq8fZ5cTvVmfNAmj+1A3AKXjSpE0mf2mCoGRrALD7/UL4jiGhE4BkZBlmd3P7MZkMzF2+Vi0+qHPUGk4t4GGcwtEUyx4ekVwMteJTkpf72/pD/Ybn8uH3x3SxU7U15s3NrP/3/vRW/QFAiNLcHW5eOlzL6HRa7j68auD6+to2NvsvPbN12jd0Yrf5eeJxicwlUUmdSqV9QUSY2igM+s4/Yun4+nzoNHmJhHCUmWhuK4YY2n+yO0XkFsUCIwhgkajoaqqKqVym449Hbxx5xuUTSrjwl9emMOjSw2nurFtNNJpu2RQqi8mXjBxUDaJsdjIrI/MSnmfioRUsgHc5xMm3gAzUvSsliSRAXzLLSIoc9tt+ZmFLssyvUd76T3WS1V1FXs27wGEeWUiSJKEtcZKz6Ee+k/0p0VgmMvNzP/k/OD/aom8n/4U7rgj+XZ6ZdT2D2QaaAxxt40Lvxu2fEf8fdbqkPwUIQKjtVVkDxcVxfh8GrBWWVOeMOai78WCFD4bjjMxVoiofCFms4lwOaOf/QxefFFUm6Qij2WpipSQUtt2R986iqfPI0i/YUBKFRjHngdnMxRNSo3AyCKuuEIQGM8+q47AgKi+19IiGOzwKor6erjpJnFz+Nvf0JSXU6LXIzU0CCdYv194VNxxh2otJKUSDUCjz27/PXpUGNgajWKuERd+F3iF9m5K7aW3gX9A8kufXvLI6tWhRIH77hOPujpR8aSmXynyURdemNinKhpDNWYWkF+I1e7tu9qpmFyBpJFYedfKYFVFOOIlDkiSxKi5o3J6zCcTYhHBPpcPrVEbTIpJloShEBjRVcDp9Fm1ElJKFbHfkyemhHkMT7+H9x9+H4BxZ45T9ZnCeDs0kGU5LQmprgNdrL9nPTqTjg/9/EMR78VrO6Wv9x3r48i6I3j6PMz4cORiOVFfD2aD2wvZ4NlCzxEhvWettqLVawkEAjHbTqmst1RYsLfY8bl9GG3G4BovvLK+QGAMDQxWwyBSNtvj5oSVE5iwMg153wJSRr7c8woExhBBo9EwMXqmmQTKzU/JBs4XhMuOxIIs56exrTzAtqgxDw5HOm2XCB37Omjd2oqklZh2ZfaCdrbxNlHanuSmfPAgeDxC3mKcujl6BK6/Hr7+dZGh/9JLwmM139BzuIeXPv8SOpOOS/7vEt499C5IMGpe8gV50agiQWC0ZEeDVi3h94UviCBXou1qR4cRCrJCYKg3lwtCZw1pBvn6QybDCDPj8nLo7BRtPGdO6rvPFrLd9xKhZGwJ3n5vXKm5U5nAgJCcUXOzIDA2bUrt89HePWrazufy4enzRHx+qKG6AkMOgHsgm9+c4kUQ8A/IEnnAnFlQ8Mor4Xvfg5dfFhn61ljD/YEDcOSIICdaWsTzxRcLo50DB0TJTUWFqKSYOVM4wYLY2f33I+l0xORzUpiw6q16ikYVIWmlrE90FfmohoYkh6RUX+iLRFWFWhjKxWfd7cIrSEptjF29WsyPosfxY8fE6/GM2sPx4oviOVX5qKEcMwvIH8Rq97rT65j10VmYy8yqTYkLiA+FCLa32uk73oelykLJGPVJLt0HuwExVw9Hqn1WluNLSJUO8K0FAiN1KFXseqtetWRaLsZbWRaVUsZiY0G6bQB+tz8o5ZQKgaEz6eg53IPWqEWW5Yj1f6K2U/q6mjVjNDL13SxgMMKr1yB5v7NWW3H1uJB9MrJPjkjszEYVcAGZoTBPPXmRL21XuDMOEQKBAPv370/JtV25+Sk3w3xCYyN85zux36uvF1mi+YR/f+nfPH7l47Tvbk/5s+m0XSLs+6eIvow7e1xcssHeaqd5c3NKRm6Lb13Mh37+ISqmVCTcTvG/mDo1PWNRqxU+9Snx969/nfrnhwKl40rRW/V4nV7e+O0byLJM+aRyVf4gRaMEQ5CuiZ67z4291R4sPVYIPxicSRvuM2AwJN/u298Oe09rElnFelvqBylJoB0I6HkHn2cujbxTQbb7XiIUjyqmfFJ5XILzVCcwFCxeLJ7ff18QnWqhEBCePg8+l09V2ylkh96iHzaiXnUFhrtdEBEanTBzTgWd78H6/4FdP0/rGMMxezaMHyfT4NrB5nvWwBNPiHK4730vFLV65RV4/HGh9SdJ4kM1A1IGixeLgfuuu+Bzn4Nrrgk1uiSBTpeVfichUTq2NKUAn1qoNvBW638RDX2JGFuLJqZMXvj9goyORUIrr33xi2K7eDh0CHbvFveO889P6euHdMwsIH8Qq911Jh3zb5yfdqLMifdPsP2x7bRsa8nWYZ4SaHqniTXfWcPWv24FIOALqJJO1Bq16C16yiaURbyeap9taxPVsZIU4p4VDKrA0BcIDLVQW8UejlyMt8/d9BzPfOKZYNZ5ASH/C61Bi9aoPjvSWm0V9oBuf5CgUpCre6VSgRFehVpAZghWrw2Qv8naTtJIWCtFfKVAJA0vTmw5wYn3T+DuC/W/wjz15EW+tF2BwBgiBAIB2traUmpw5eaXbxUYChwD8/ULLoBHH4XnnhOT56NH4e9/H95ji4Ysy8gBOa0bWTptp8DeZqdzf2fEY+IFE5l65VRqF9XGNbx9/0/v8/p3X+fo+qMpf2cypGvgHY7PflaQHy+/HNpfvsDeZqfrQBfWGiseu4e2fW2MXjiaimkVdO7vTGoyXFQjCAx7S3pmxPv/vZ/nPvUcG367Ifia4jMQneVdVxeZjatsN2ZM7O0uuCDsRV0JWMenL2WjHyjl8A0mMHJh5J0OMul72cZIITAmTgSbTZgIb9+u/nMGq4GzvnMWF957IRq9Jm7bhY+JzZub8dg9SHop+NpQm4CrrsBwDlwAphqQUpw6KRVOni71n3E4YOtWQUY8+qhgOR94AEkSVRi38Dvcjz4FO3aISNbMmaEI+cc+Br/5TSRJobCSOl1S5jqf+l0sqDbw9vaBRpveGGkdH1GZphZr10Z6yURDlsUcae3a+Nso8lFLl4q+mAryve0KyA3C293V7QpWHGeCpreb2Pa3bZx4/0QWjvDUgVI1aCw2cnzDcVZfv5r196xP+rllX13GqsdWUTUz8maTap9VCNy6OiGjF45BBIaxQGCohRLgVpPopCAX4625TEi9pZtEdSpCb9Gz6NZFzPn4nJRUFDQ6DZYKkVwT/Xsma7sT75+g52gPciC1sVSJ2RQC59lD9+FuAGzjbIC6flc0qoiaOTU5SaIpQD22/GkLa76zhtbtrcHXsj1uurpdvPj5F3nu/z2Xlf0VEB/5ssYoSEjlMZSbn8Lm5xv+9S/xfOONQi8dhLTQN78J3/2uiJkY8uTQg5qUQzihsLfZWX3dahwd8TOz4plJRcuxJEMq8liKLneq/hfhGD8eLrtM6LDff7+IleUDwn9zV5cLR6cDtoOjzoEkSWz87cakBl6ZVmAEpd+i+m1jo8iovfJKkTX38MOxTV3D/Qiam0XAPLjdgJw7fmfsL4/3eizoioGWmARGvlRgDAV8ztjlxNGvjxQCQ5Jg0SIRN9+wQZhGq0W4TIlS7h+O6DHR3evG0eZAt0tH+07BJAy1wZ7qCgznQBDPlIYElBII93aLCLYyTnd1CV0hReaptVVUS5xzjoiC/+Y3oNcLqafq6qDhwxVXSlx5713oW0to/o4GXfRMzjI8clwK1PapdKEE8JISGKPOgZoVwgtDLTIcW5VxIpPtFAIjVfmoAgoI+AOs+d4atAYtS760hOLRxck/FAfmchFIdXakMK8YAQhfm5WOLcXr8NK6vRV3rzupvE2qEraxEE8+CgoVGJkgnQqMXMBaY6VjTwd9zX3JNx4hMBQZmHxxspLL2LCOsuJod9B/op/KaWrMzkAOyLz5gzfxe/xc8ttLUgqCFzwwsgs5INN7RAxoioSUGijyeQUML5RYSiZzkWTQGrX0HBIVaz63D52xEN4+1VFo4TxGvEBoPqCpSWTnajRw3nmh12+7Tej4HzwIDz0kMvXzAcOREaGYSemMOnRmncji0KDKTCpVAqPncA8vf/lliuuKuejexFGPbFRggGjrZ5+FP/0JfvSjkPbucCL8N7dUW3D1uggEAphKTUgaSZWBV0l9CWPPGhvM9EgViYjHroEE7KlThd9APCh+BIOgLxHyNe4OQTxI2sHZ4MYKsV0y6OJXYIwEAsNYYsRSYcHR4YiriWqpsGAsMeLzidgynPoEBghFoVdegffeg5tvzt5+o8dEn9uHRqfBWGzEZDMNi8Ge6goM1wCBkar/RXMzNB+DDW3Q5YZ3fwbXfFRoLb72mihj0+lCJIVicjNhAvz4xyIFPyrotXw5aMtttHfCW2/BWWeldki5Qip9KhOolpACMT6q8b8IH1sDA6XuckB4l/jsYB4DpsqkY6va8SHedm63uCygQGAUkDo+eOkDug90o7fq0Vsyk59VTL+dnQUCIxzhczxrtRVbg43uA90ce+/YILNSBdH6+5lAITBiyVBHExjWGiuV0yux1hQMa5MhWIERxwdtqKAE+goVGNlB0agi2ra3pfR79p/ox+/xozVoUw68FjwwsotM2qKA4YXH7glWLCrJobmAzqRD0krIfhlPn6dAYIwAFFp4iKDRaKirq0vJzFKRkMpHD4x//1s8n3aa8AJVYLUKb4zPfhZ+8AO44YY4JqNDjEw0KdNpu3DozDoMVgM9R3twdbsoHVsaLFGOF+RRgneONnUEhqvHhd/jJ+BNXNIly0JbGzInMFauFKolO3bAI48IXe98gc6sQ2/WC0Y+IMqI9WbRj5IZeBXVFLHsq8vS/u5E3jVKsDRptnc8mKpg6aPg7YWNXxSBtTnfF8E1BfoSsV0yKBJSCTwwlIXycCHTvpcI1iorjY82BrV1Y8FYYsRaZeX4cdF3tFoVge5TAIsWiecNGxJvF42OfR20bmuldFwpo+aPitt2ypio0WmCBIZCMg+1wZ76CoyBlPloE26fD44fFwxXW5t49PYK6SaA3/1OkBgdHVCigVFhcgTnnisG0rKywcY3er14PQZ0Orj0Uvjzn+GZZ7JPYKTb71LpU+nC7w8Rq0krMFJB+NiqIOCFLd8ETzc03AC1FyUdW888UxTKHDsW2wdDksT7Z54Z+/Nr1wpz9tGjYe7c1E8jl2NmAfkFe5s92NcCgQCmThObH9yMz+Vj6lVTM866D1ZgFAiMCAQJjGJxz6pfUk/3gW6a1jfFJTA2/N8GTrx/gtnXzWb8ivER76XaZxNVoEUTGA3nNsQ9pgIi4eoeqMBIgWDPxXhbNDqzKvBTEX3NfTg7nBSNKgom+KlFsKq+JfL3TNR2iudCSX0JkiY14tE23saF912IsXh4K3lOFehMOuZ8fA5epzfYFsn6nVLt6+4RSVPGYiOWKkvWqoALUIf+ZtHnjKVGdKZQyDnb46YkSRiKDLh73Hj6PSmPEQWoR76sMQoExhBBafBUMOGcCZQ1lKkueRxKKPJRF144+L2bboJf/EIEGe69V0hKDTcyyYhIp+2iIcsy9jY7sk9WpU2cagWGkjmUrPT52DHo6xOB2EyDP5IEn/88fPrTQkbqttvSMwXPFSSNhEanAZ9YmCgERq6RqAIjYwIDRABNP1DuorNC2YIQGZEKRn0IyuZDyWAmSyEwDh0SAcNomauhQjb6XiJYq6yqgqmK3EtNTX5d47mC4um8bRs4nWA2q/tc88Zmtv1tGw3nN1C7sDZp29nG2iitK0Umc732dOBwhLycEhJTbjeYrgRpGrzngP88Ii6Giy+G7m743/8V21ksooqiqkoQGzod3HKLYPF3fRWcx2HeJWCrF9unanAQhiuuEATGs8+K+22WknuBzPqd2j6VLo4eFebyBoMoYkmIrd8X1RcTbwJjefKdm6oGExQTPgb7H4H29TDh40l3odWKec/VV4s2ib7dyzLcc0/8MVWRj7rwwvTaNNdjZgH5gVgSpfYWO55+D1qjlvd+/R47/r4jIzk+RTu+QGBEIjjHGyDd686oE14hm0/gc/kiAjUKug500d/cj6Qd3KlT7bOpVGAUoB5TrxDehKlUq+RivA0G3JsLBIaCA68cYOcTO5l8yWQWfXpRSp8trS+ldHxpkJBVkKjtFAN1xTQ6FeiMOsompO6fVUBsmMvNzLxmZsRr8douugrY1e3C1SUSPDV6sXjLRhVwAeqgkLAKKasgF+OmoVgQGOFm4QVkH/myxigQGEMEv9/P3r17mTJlClqV0cAxp42J0BTPF/h88J//iL9jERgGg/AO/djH4Kc/FQHuchWxg1wiEw+MdNouGu4+N7JPRqPXqDKIs1SJhaOr20XAFxCB+AQIarcmuSkr8lGTJmXHn+RjHxO+J/v3w09+IrwxIjwbhhkV0yvoaelJuXw+4A/g7HCiNWpTMvSDUJVPzggMAE+neNYaBImRDsrnx32rrk7EXj0ekVyeNFCYI2Sj72UDI8X/QkFdnYjPt7TA++/DkiXqPqeMW/Y2u+q2kzRSUFZvqKH0R70einVOODxQRaH4UZxxBkybJnSaHntMbFxcLAiKmhrxf3k5fOMb4rVY5YbKRWMsFwRGKkbeCXDBBWAyiUSBHTtg1qys7BbIn34XC0r2cUNDknuM3wOdG8Xfk29N/wtHXwiHnwBHE3S8A5VnJP1IYyM89RR84QuRht4KoXH4cPzPvviieE5XPiqf266A7CFajs/d58btcKPVaSmbWIaElLEcnxLw8/R5ghIeBRAMkCgVGKXjSrGOsmI/Yad5UzP1SyMnTLIs03M4fkA01T5bIDByg+LRxSlL1ORivFWOwdHmULX+GwlQKs3SCTzXL60f1CchcdspFRipeC4UMHSI13bRVcDtu9tZ/4v1WCotnHv3uUDmVcAFqEc8/4tcjJvGYiN99AUlqwrIDfJljVEgMIYIsizT09OjKvs+3/Huu9DTI+I2i+IkQnz0o4K82LpVBLZ/8pOhPcZoFNcWUz2nmpI69UZcCrLRdq5OQTCYbCZVOrjGEiMavYaAN4Cjw0FRTeIMe+VmnUy7NRsG3uGwWoV8yXPPRVba1NWJLNTGxux8T7rQmXToSnWkGh995953OLTmEHP/Zy4zrk7tx4rOzgtH1ggMd4d4NlRkN/V6ADqdIKM++EAESIeLwMiXcXOkERiKkfc//ylkpNQSGOHSd8nazuvwZqzRnhJkGfr7QwRFWxvyhjYMXE9llRHp9w8JJgDEwFZdLSovQDiZNzQIkiLaIFujEZ0lGaqWQfHk1D004sBqFf5TL7wgZKSySWDkS7+LhX37xHPSCkL3gGmNzhzy+0kHOgvUXgxHnoQjT0HF6arG3MZGUSWzdq0YP0aPhj17RELHt74lkj9mRiYVcuiQkHjUauH889M73HxuuwKyD0Uus3N/J0hQVFuEtdKKx+7JWI5Pb9WjNWjxe/w4u5xJ56EjBbM/OhtHuyNo7CtJEvVL6tn9j90cXX90ULC0/0Q/PpdPaLjXDg6Qp9Jne3tDsodqCIzjG47z7q/fpWxiGWd/92z1J1lAUvj98PrrsG6djmXLhG9dNuI5pjIT9cvqsVRZ8Hv9BQKDzAiMeEjU77oPdwPpVWAA7PrHLlxdLqavmp5yElwBkWje3EzRqCKKRhUF4yeJ2i68CthabWXjbzfic/ooHl08tGuOAuhr7gMG+18ku+f5/ZFzZzVJsUpCQaECI7fIlzVGgcDIY7TtbENn1lFaX5pXExhFPur88+MPKBqNUNW47DJh6n3bbTBmGItJxi4by9hlY4flu2XkoLZqdAlrPEiSxLwb56G36FWZuAclpFRWYGTqf6Fg9Wp4/vnBrx87JiQ0nnpq+EmMdKBUbERrpqrBhHMmYG+1B7PRw5G9CowBAsNYkXi7hPvoAftB0BigdDBJ09AQIjDOHuHr3pFGYICQkfrnP4WRt1qES98lmtx4HB56DvZgLDVSMbUiexUYsiwMBJQKitZWcZO65BIxI/7qV0OaPiUluLqqseCgstIoos2XXx67kkLfB54XobsBLBekd2xjLs3s3GLgiisEgfHss/Dtb2d993kJ1QbergECw1idOclbdzk0PQO9e6BnB9jUsUVarQhqKTj7bNFWL70En/gEvP22qP5RoMhHLV2akbpYASMMfp9fVLLppGBQPRuQJImVP1wp9MMrCprSCsadNW7Qa+NXjEdv0cfM9O4+2A1AydgSNNrItZzfD2+8IbFuXQV2u5Q0CK5UX1RVhciKcEQTGLIs4+x0Bg3ZC4iPvS/sDbZhLBmwcKxerVTYaQFxM8pW4pYkSSz/+vLMdnKKIRsEhjInTZZE6Pf46T8u1n62cba0vmvPs3twdjgZd9a4AoGRAfweP298/w3kgMyVf7pSdQxFgbHYiKXSgqPdQfehbqpmjAATwzzClEunUDW9irIG9ZJqobE19JqasbVoVBEl9SWFStERggKBkaeQZZlXv/Fq2oN2LpHI/yIcl1wCy5bBunVw551w3XWpsamnClydLrwOL5JWQtJIeOwiQz+ZmdTUy6aq/44BCalkE6VsEhh+v7jJxIpTyrKIGX3xiyLINtRtrfy2sizjd/rx6r1IkqTawCuoQZuGid6sj8QPbimZcxkbQbsHJKQMGWizdW+DnT8B20yY9+NBb+eLkXc+YKQSGJCakbdCYPjd/oRyff3H+wn4AkBIcg2Sj4mAGFz6+kKG2W1tMG4czJkD27cLQx4FpaWhNFWdThhr22yiAxqNbPgbdP8BFlYh9hH3gA/AsRcF0VebJoGRA1x2mRhnN2wQk/08kCXNOVRXYCgEhqk68y812GDUeXD8JVGFoZLAiIYkwe9/L6plNm2CH/0Ivve90PsKgZGufFQBIxM6g46qGVV0tnUi6bJbkVk1vRDwUYOyhrK4QZqug0I2MDqbO50geCL5KAgRGG63eGj1YvLt92Zm6H6qQw7IbHxwI8gwesHohATG6tUiQSt67XOyJ27lMxRZmHQJjLV3r+XEphMs+/oyahfWJt5YgmVfW0bvsV5MZemRD3qrHmeHM7jeLyA99Db1IgdkDMWGtNvCNsGGo91B14GuAoExxCibUJaSH0wmY+vC/7cwgyMt4GRDgcAYImg0GhoaGlS7tvvdfuSA6MGKAXU+oK0tFNC6IEkcR5Lg7ruFxNBDD4mHguGSGJJlWZWEUzhSbTsFiplUx94OAr4ABpMhmEWiIFtmUiVjSqiYWjGoTC8a2SQw1q6NZMijIcvCcHXt2sgs1Fwi2sBLlmU0Pg2ublew3dX85opUgr3FntXjy6sKDMX429sX822FwDhwIP2vyBTp9r1sYyQSGIo84O7dgi8oViENrTVoMZYacfe4cXW6BrWdscSIwWqga78I6GiN2mB1moJg/+zvFyYcJ06I5xUrhG7h44/DmjWhD5SWCkOfOXOElNMttwiCoroajFH9PEpnSSEUk/ZH5wnxnIn8U8Av/C8CHrAkWUCrRE2NkPd66y0h4/eZz2Rlt3nT72Ih5QoMU012vrj+KtF29ZlNWmpr4YEHhMzmD38Il14KCxeKYONrr4ltMiEw8rntCsgdJEmi2FY8bH5CIwU+l4/23e0Yig2UT1SXQKLo6YcHctIN1CjjXzwCN/w+3dcn7rEg1pQFxIe7zw0DbaFIkcTCUCVuybKMu9eN3+Mv6PWTeQWG7JfxuXwRa7p490qtXhuzkioVZOK7WUAI4V4k4bGbVOY5tgk2jr93PEgkFzD8iNV++ZwUW0AI+bLGKBAYQwSNRkN1tfpMQOWmp9Fp8qoc6j//EQPJ3LnqgnlKgCgaQ52p0t/Sz79v/zcAqx5dldJnU207BYqZVNM7TTStb6J2YS01cyODKYnMpFzdLroOdqEz6ZJmwc39xNykx9PeHmqPadPUnUMiKEHdbG2XDUQbeMWCGgMvhQiyt9qRAzKSRl1QIOAL4OxyYrAaBmlt+nzQNTB/ypjAKJkOtS4onZl823hQdOF9satM8oXASKfvZRvKNTxq1PAex1CiuhrGjoUjR2DjRvUkpKXSIgiMDhdjJkbqBlqrrEy8YCIavYZRC0ax+OYFSF0daNpakfp68Z22VPTP//uFuEmAmLWWl4ubTnm5MNaeOlWQFAOVFEEUFwu/CpVQCMWkFVHOgQvAlMEF0LUZtt0JRQ2w6N709xOFK68UBMazz2aXwMiHfhcNvz+UgZy8AqNFPGejAgMEeTXti1nZ1bXXigDmk08KKal334Xf/laon5WXZ+Znkq9tV0BuIUkSxmjCNgto39NO86ZmbONsGQf1TgX0n+hnzXfWYCw10vjXyMVLwBeg6e0mTmw5weLPLA4G3ErrS3G0OyibKAiMTAI1ySowtFqhgGi3Cxkp20AFRsAbSPucRwIUGV5DsWGQzFc4hipx64OXPmDD/22gbkkdZ37zzPR3dApAIXMgfQIjVlV9Lu+VigdieIVxAakjnhdJKm1XNqEMQ5Ehr6TYRwJcPS6a3m6ipK6E6pmRbRWr/fIxKbaAwciXNUaBwBgi+P1+tm/fzqxZs1S5tisEht6qT7liIJdQKx8FoUl6LAw1m6oz6YIlqKkEpCH1tguHtcrK1EunMvVS9XJQCo6uP8qGBzZQe1otZ38ncxMCpfpi3LjBEu/pQG02+lBnrYcbeKXbduZyMxqdhoAvgKPdgbVa3Q/W29TLS59/KebitqsrtGAtz0D5CYCqpeKRCZIQGMoCeTgJjEz6XjYxEiswQFRhHDkiqu7UThgXf2YxGp0GS42FLVu2MGvqVLSdndDWhsPu5/iG4xTp3Zxp/zeWXz4DgYHAisUC11wkbgYf+pCoqqipEUxKuFHA+PHqTLNVQHUFhkupwMiAwDAMZN96u9PfRwxccQXccQe8+ir84Q+i32Yq0Zgv/S4aTU3g8YjLoT5ZLFX2g0abPQJj0P7ltL01JElUYbz5JuzcKYjR/oFhuLMTJkxIv0I1X9uugNwgXC6z395PkbUoJbnMZGjb2cb2R7czfuX4AoFBaG0Wy5tOlmXeue8dfE4fDec1UDlV3FjmfmJuRJJRJoGaZAQGCBkphcCoqBBjQKaG7qc6lEpQky2xTM1QJW4paw7FBHckQw7ILLx5Ie5eN8bS9AiMWL6G8e6Vh988LBIHZ1YFiYhUUajAyA56DvcAg71IUpnn1C+tp35ZfV7F0kYCOj/o5L3736N0XCkX339xxHux2i/TsfXElhNsemgTJfUlLP9awUMoV8iXNUaBwBgiyLKM0+lU7dqu6CaqMXAeKgQC8PLL4m81BEY+sanhkxCP3YOxWP0kKNW2yxbCDXETQa0xWbYNvM88U0iBHTsWO5NMksT7Zw5j8lC6bSdpJKw1VvqO9dF/ol81gZFocatke5eVCTn+YYdCYPg9EPCCJrJiZMIE8dzWpl5CKNsYrr4XeQxCxQhGHoGxeLHIFE9q5O1yiQultZWK+nqorsC3bh2Vv/sdktEIA6Wm7f1lyP65lM0fi+W0ypDUU02NkIJSxrAzzsjtiQ1AdQWGKwsSUgqB4ekGOQBSdrLBtm8X44nPBzfdJF7LVKIxH/pdLCjyKQ0NKsbQmV8Xv7Oc5cxjx3E48rgYPyf9v7R3U1kJN94IP/5xiLxQkEmFar62XQHZRSy5TI/Dg8ubmlxmMij+e46OxPPQkQJ3XyhTPxpavZbaRbUcWXuEpvVNQQIjGpkEapJJSIEgMJqbBYGhHVWowFCDYIZ/kgD5UCVuFY0eqAI/YU9L+vhUgkarYfLFyTQjEyNWBUa8e+Xmhzfj7HBy3k/PS9sDKEhgFDwwMkK4hFQ4UpnnpJKwWkD20N8s+losafNY7Zfp2CoHZEF4FZo7p8iXNUY+hNEKiAGl7DCf/C+2bBFS5EVFsFRF8nc+SQxpdBq0Rm3QXDYVAiMT7P3nXqqmV2GbYEt5AqpUETjbnQm3c/e6ee6Tz2G0Gbn8ocvj3qyzTWBotSJIdvXVIu4Yayz71a9OXq3ChvMa8Dq8mCvMqj+TiHjMmv+FLIOjCYzloLWknQWMzhpqOF9/KMA6gNJSqKiAjg5RhTE3uUrZKYmODvAOVIEPiYSUqw28vfHf15eAaWiM6BQj7/feAxwOaG0Vj0WLBCnxt7/B5s2C4VLw0Y8KUqKqiv5ZswiccQaa2lrkyiq2fXMt9PYx/Zq5sGD42SBVFRh+D7gHPGcykZDSlwz0t4DwnTGUJv9MEow0M1E1wbsISJqsEUVB9O6FpudBq4fyxaCPYnZV9k+/H/7619jvFfR+C0iGaLlMv8/Ptm3bmD17NlqduGDUyGUmg0JgODsTz0NHChIlqQDULanjyNojHF1/lLn/Mxevw4vOqIuQL0k3UONyhZLCklVggCAwdGYdpeNL0ZvzZy2ZjwhWYJQmrsBQErfiJedlK3HLWm0FSXiuuHvcSStDCkiMoCxwEkLI0+/B2SHGutKx6c/RlNhNoQIjfYS3RXQFRroY6WTgUEIhCxUyNhkyTYpV4nre/oJs20hAgcDIUwQnyWmWL+YCinzUOecIdY9kyDeJIUORAafbOWSalPY2Oxt/uxEkuOovVyWdGEdDqcBQjNzieaG4e8T7PocvYaZBtgkMEMGxp54SUmHRE/of/ejkDp7NuHpGyp8Jl36LRtYIDF8/vDcgdn/m06BNc4yQJEGA+OzgHUxggMh0HukEhkKwVlSoG/cygqsN3rouFDCPBWMFLH00NySG0ykICo8HJk9m4Vwfd/ALqg+24rq1H5MyhDU0iAt57FjBdFVXB0kLu13myOpdBAjQd9ZZguzQ6ZCAi359Mcc3HGfU/PwwE1FVgeFuE7NprUkEp9OFRic+7+kRZt4ZEhgj0fBu3z7xrJrAyDZcbbDjf6FnO/jd8OaVgkgOh8r+mU8VqgWcnAiXy/T5fFi6LJRNLEOXxRJPhcBwdbqyts+TGcocL14SVO3CWjQ6Df3H++lt6mXv83s58J8DzL1hLtOuEOZz6QZqDh4U2xcVJb5nhRMYplITF//64vgbFwAIvXZIXoGh1YpKx+9/P/b7sgzf/W7m91ytXoul0oKjzUFfc9+IJjCcnU76jvdhrjBTPDq9UnClit7r8CZMYlQ8FyxVloziL5MumET90vrg+FlA6tDoNCz72jL6W/oHeUqmin0v7mPX6l2MO3sccz8+QhezQwyFwFDbZ8OTYuMhUVKsUhWZyAO1gFMHBQJjiKDVapk2bZpqvbCyhjLmfHwOlipLjo9MPVLxv4D8kxgyFBlwdjhTzohIte0UNL0tohNVM6pSJi9ABMF1Jh0+lw9Hu4Pi2tg3AbUT7507xfOM1OPyCdHYKIJka9eKYO+f/gT//rdIzB5upNt26SJRdp6S7Z1UriYZlOC2vjh98kJBww0iQ9lgi/12g8i+V+uD4feHroPRozPX4h/q9ouFIfW/8PaK9tUYQRtj4eN3ive9vekRGLIs9Gra2oQRTk2NaNwnnwxphYEoNbnzTmyVOrw19bzWMoulC6tZcsWA3JPCZMQYvB1H2nj/kfexVFk4+56zI9pOo9VQd3pd6sedI6iqwLCMgeWPgbsz/WonBYayEIHB+Ix2lcsAeD70u1hQKjAmJ1OT6NkF+/8ApTNg4iezdwDeXvB0gLEGXMfB5wRrMUgDv1MK/TNXFar52nYF5Ba5anclAOd1ePG5fOhMI3vZmKwCQ2/RUzO3huaNzTStb6L7UDcBXyAiAJ1uoEbxv5g0KfGtKJzAKEAdJp4/kcpplZjLEgec/X5R+Qghs3QFipTjb34D116buexq0agiHG0O+k/0py1ldCqgeXMz7/zqHUbNH8XKu1amtQ+dUUf17Gp0Zh1+tx+KY4+ZiudCtGRRqrBUWoJJiAWkB51Jx9jlY2O+l879zt5ip+tAV7YOr4AkUPx7YklIxWu/xkbhD3frrYP3d9NNiZNilXuy3+NPmPRbQGbIlzXGyJ6JDiEkScJms6ne3jbehm28+u1TRaqBxp4eeOst8fcFF6j7jkQSQ8rkeyglhoIlnSlqUqbadgqa1ovoUt2S9AJ2kiRhrjDTd6wvIYHh7hnQbk2gddzfL4JZkN0KDAVabShINnOmIDCeegoOHxam4cOFdNsOhJ6io8OBu9dN+UR1rttKdU+szJ2sVWB4BggMY0WGOwJqE7ORqRh5r149uBInUy3+TNovWxgWA2+tWUh8xUIgSXaJLItVdWsr1NYKsmHNGjGAt7YKHQqA886DD38YzGZBSsyaFayioDpkfNxy7nW8+Cgs7YMlKvqysmhzdbkoLS1FkiR6m3opGlUUIaMx3PD7hWEyqCAVddb47ZEK9Dbx7Ml8EZVLicZ86HexoLoCw9EEvXtCPj/ZhqkSfL3gd4HfESktlqx/DiBXFar52nYF5Ba5ane9WY/OrMPn9OHocFAyJoMqtFMAiapsQVRel44r5fCbh9n34j7srXZ8LlEd3bm/Myjr1dgIjz8O11wzeB8XXxx7zqTGwBsKBEY6sFZbVXnd/f73sHWr8LLbvVskhinr6Lo6WLYM3n9ftOvzz2fmd1c0qojWba0Rvg0jEZ6+gaqnDP18zv3RuRH/xxozlQoMtfGXbCdtFaAOKcfUJohtuw925+R4CoiELMvYTwh2N5aEVKL2Mw9wyNOnw3e+A++8I+II//gH/Oxnoug/FvQWPZJGQg7IePo9heqnHCFf1hj5E004xeHz+Xjvvffw+XzDfSisXg3jx8PKlXDddeJ5/PhQVkksvPaayCyZMkVkZauFIjE0Zkzk62VlQ6/PXTG5guo51SmXhabTdu5eN63bWwGoX1Kf0veFQ6nAsbfZ426jxnxu927xXF0N5epi8Wljzhw491xh+v7rX+f2u5Ihk37Xfaib5z75HG98/w3Vn1Fj4p0xgeEeiLoaskBgJIHS15MRGIoWf3RGuKLFn2hsSYR8GDeHhcBQ4GiCrveFyXo4ZFlUSyisJAg/irvvhi99Cb78ZfjJT+DQIfGeySTkni6+GG65RcwKL79cvDd6NNxwA1xyiTC9GD8eLKHMsUWLxHNSI+8BmMvNQrvZ6+OtV9/C4/Kw5rtreP7/PR805MsHdHWJMQqEPNiQoGop1F8FlsyrUHIp0ZgP/S4agUAogJe0AsMl7r2YqhNvlzakkKG780Rae1AqVONlUksS1NenXqGaj22XKfr7+7n//vu59dZb+epXv8qLL7443IeUd8hluxd8MEIYu2wsc2+Yy+gYHk72Njurr1vNO796h+aNzex5dg9H1x2leVMzL932Ek9++ElWX7c6OJ9fuFB8Tq+Xueuu/fzkJ34AXnoJNm0a/N1KBZpaAqNHJJPz4udf5Nkbn8XRXjBizwTd3fDtb4u/v/99sZ5avtzHpEnvDTzDCy+IANy//gWf/axYN7/+Ovz97+LZ71f/faMXjmbqFVNHdPUFhK1xMyQwohFrzFTmqGo8FxLFUpydTnY8sYOdT+/M6jGPJBx6/RDHNx7H6xws+53q/U4hpJwdTtx9BYmhXMPV5cLv8YNETB+uRO33xkDI5fLLhaXiz38uyIz2diFNHg+SJAVjL4U2zh3yZY1RqMAYQvhTmLn0HuvF7/FjrbZm1QcjXdPPf/9bPKuVjwpHuMTQr38tjmHJkqH3R1hw04K0P5tK2wEce/cYyGBrsKnK6omHqZdNZfyK8VTPih+IUSSkEmmk5sL/IhFuvx1efRUeegi+973MS6kzQaptp8BaI9rN1e1SLZ1QOa0Sn9tHxdTBEdHsERhKBUYWmChnM7hawFgNltpBbysEhhI4jIVca/Gn237ZwrARGH43tB8HbTHYJOj1wJrj0NELz/0QAkbQ68WgqpS41dbCvHmioqJ6QO4JxIC7ZElahxFh5K0CGq0GS4WF/rZ+XB0ujvz3CI42B8ZSY9wqsuGA0h9tNvEzxsWhv4O3B0ZfCEXjM/vS2osy+3wYci3RONz9LhrHjoHbLTJax8ZWFQjB1SKec0ZgICrg7Icg4BFVF5rUgiu5rFDNt7ZTC6vVSmtrK1ZraM7U3d3NokWLsNvtLF++nObmZh5++GFOP/10nnvuuaz6PZzsyFW7L7tjGVqjNqO57KmCmjk11Mypifmeu9eNo8MRlJHy2r10H+pGZ9ZhLjMHq1jcvW6sVdZgRdmUKXD++W0sWjSO998Xwe5bboG3347s/+ESUokQXYHhaHPgtXvxuU8dUjPb2P+f/Wi0GmoX18b1R7jrLjFvmD49UuIkvN8tXiza76qr4MEHRZWNQiRBalXJY5eNZeyyZDe7Ux/ZJDBkWSbgDQTlZcLbTpbloIRUsgqMZLGUR3/jQn5xK6YyEzNWZVm3+SSDvc2e0JdAqUoLhyzLbPjtBrx2Lxf9+qKY7ZHK/U5v1mMdZcV+wk73we64Y3gBkUin7UAkcZ7zo3NwdbniVt7Ha7/XXxfPiqqHTidIjEsuEXPiT38aJkyIfTzFY4oxlhqR/TEWRQVkDfmwxijM/PMU7//xfY69fYxFty5i8sXJ0g3VId1AoyyH/C/UykdFQ5EYqq4WN/6XXxYZsGWDfYNPCRxdLzKjM6m+ABhz2pik26iRkFIIjGz7X8TDRRfB1KmwZw88/LC47k42GKwG9FY9XrsXe6ud0rHJNVHHnTWOcWfF1tnJuoRUNiowjq6G4/+C8dfD+I8MelshMA4dEuNHrGDaqW5Gm1MCIxAQOkYWi3js3AsvtEF/F3T2gdsOk2S4Rgc6H7j8UGOApWfD+HmR2kcf+1gODhDmzweNBo4fF4/awTzXIJgrzfS39ePp9rD7DVH+NfXyqXmlSarK/wKgbS3Yj0LlGTk/plSQKACuIJ0AuN8Pb7whsW5dBXa7xIoV+SGJoAT7JkxQIcvhznUFBoBGSEdJWuEjlAaUCtVY0nu/+tXQJ3kMN5xO56CF0Q9+8AMqKyvZvHkzxQOZEMeOHeP888/n5z//OV//+teH41BHFMoaTtGJeo6gM+swWA14+j1odBpMpaZgIlo4iRCqqAgN3vfcAy++CBs2wG9/K7L4FaQrIaU1aPHavSIjtoCYeP/h9/H0e7j4gYtjEhh79oQqyn/5y8RJD1dcAZ/8JPzhD5HkBSRPFixgMLJFYDS908Tb97xN+eRyzvnhOTG3Oe/H59F9qJviMfGTbdTEUr77QwPfn0/KnpunGpSqNEdH/OovS4WFxkcbIwLhzg4nXrsXSStRUpcd2cKyhjLsJ4QPRoHASI502w7EPadmduq/8ZEjcPCgWHMsWxZ6/aKL4Pzz4T//ga9/XRDDsXD+T89P+TsLODlRkJDKUwS19OMYxaWDVAKN4dizR3gZGI1w9tmZHcOMGTB7Nni9Qs/uVETAH6DrA6FxXndG7g1rrdVWKqZVJNQmVgy8h6oCQ6MRZBiIIFsekLVpQTGfSqRBa2+z07m/M+5DkQvIfgVGFggMRSPeF/v86upEsNDrFQuvWMilFn8+IGMCIxAQja+sdv7zH7ES/u534XOfg299S4gmg/ih/TKMMcFCGS6wwDkD0QqLDlbVwznlcN5ZgllIpEGTJVitIeJzw4bE2yp9AUncw5pfbqZ9VzsBf4DK6ZUJpfCGGkp/TOh/Icth2fyjEmyoEgEfuNrBEaczpYh4Eo1FRekFSBRJhPPO0/K9703mvPO0SeUlhwqqDbwhJCFlzCWBAVjqwVwLUqISnsRobBQE8Zo18Oij4vngwZEZ3JJijGWvvfYa3/zmN4PkBcCYMWO46667+Otf/zqUh1dAAbTtbKNjX4cqMkCRPolXvRtLEmrUqJBMxje/GZp/+P1iXIjePhaiCQyNXiz1CwRGbAR8gWCg2VQau5L9y18WclCXXJI8kc/vD6kWREOZBn7xi+rWRe5eN+172vF7R27bKXIwmRIYhiIDXoc37npOkiRs422MXzEerT5+1oaaWMqh4wY6OiHgDYzofqdUpemMOkw206CHzqgLVqWFQ5HyKq4tzpp3XtkEQcR3HSwYeatBum2XCRT5qAULIpU7JAl+8QsRW3riiZAnbwEjF4UKjCGCVqtlzpw5ql3bFaPpeEZx6SDdQKNSfXHWWSKYlSmuvRa2bRMM6ic/mfn+1OLAKwfY/PBmahfVsuRL6uVUUm07jVbD5X+4nPbd7ZSOS561nwg+l4+2XW34nD7ql8au5pjeOJ3pjYmZiaGWkAL4xCdEbPbgQXj22eEJyKTadtGw1ljp2t8Vd8IbnaEQ8AWQNBKSJhSIUTIU2tpE50lqGJwMlUvAWAlFSVaxaqAYE8chMLRaEdD84APhgxFLuiWXWvyZth9kbrKnisAIBIRxdnGxICGeeUYYZre2iki5zydqYIuLRemZJIVMs6urhdg9wNyZ0FcN3n7wIMy8jU7o2iKMg1OUqckWFi+G7dsFgaFYZ0QjvC84Ohy4ul3B90w2E8/8zzNxs3WGA6oqMDyd4PeIDHtjFnSoe3bAlm+DtR4WP5D5/oiUaFy9WnBjEyemR16kIy85VFBt4B3wgXuAncpVBYY/jhdAvNeTQKlQzQayMWYOF+QYKa0nTpxg6tSpg14//fTT2Z9I23CEIZft3n2om6NvHcVcbmbShck64KmNN3/wZjBTv7Q+8fxeoxGBt3iB1xApK0W03S23wB//KGQbv/QlIUl09KiYWhgMIm8hEaIJDJ1RLPVHciA1EYIBOAkMxYOTBv/1L/jnP0Uyzz33RL4Xq99lsyr5hVtewNPviSujMxKgRmVADZSENEebg4A/kPaYqSaW4kWHe+CyKhgKh6rSYiGWtF0yM/V02q58cjnlk8vzSsr2ZECqbQdw5L9H8Dq9jJo7Kqb0ZLz2UwiMWOPi7NnwqU8JafLbb4f16wWhUcDQIl/WGAUCYwhhMKivpkhkBpwuUg00KoG/Rx4R/3/oQ9k5jmuvFUZor74qgkgZB3TVQgJPnycttjiVtgPQ6DQJfSvUwt5m5/Xvvo7eqo9LYCSDxxMqPR9KAsNiEVqFP/qRKLkeruBXqm0XjmAFRkvsAH94hoLOrKN9Vzt+j5/yKeXozfoIzeP2dnETz7gCY/T54pENKBUY3r64m0ycGCIwYk0qcq3Fn0n7rV4dW55FrQaxLIcRGFU+cPtFKdqxY2JwbG0Vg1h7u2B3vvENscrduRPKy0XpgkJSmAYy+665Jv4X6kvAUAb9h0D2g9ECni7hwUBABGSNFWK7IcSiReI+kMgHI7wvlNaXYio10XusV2S1jbMR8AYi9L+HG6oqMJwDjW+qBk0WJmuGASkWT3fm+wqDEgCfNk0QGFu3CmWycpU2Obn2sckGlGBfUgLD1yfIJm9v6PfOFvQlov+5O4TvBbIgTGQ/aAf69zD0z2hkMmYOJyRJGlSFUV9fj9c72MQTQgHiAgRy1e69Tb1s//t2KmdUjmgCQ5blYHKZmrVZSX0JlmpL3G3Dx7TwttNq4Xe/E/fdxx4TyUBKFXWNClWOQgVGagj6CJaaBo0/Xq8IlgHcdpvwK4lGdL/LZlVy0egiOvd10n+if8QSGDOunoG9zZ5Q1kkNzOVmNHqNmIu2O4THaFjb7X95P16nl7rT64Jrv1hQF0uRsNoMgAePvUBggBg/uw52obfoKRpVhET86nE1XiSp3u9qF9ZSu1CFBm4BMdFztAeNVqOKANr9zG469nSw7OvL4npnxWo/hcCIp/Zy112C0H/3XeGvOmNGZGLinuf3sP/f+xm/Yjwzrh7Z3jO5RD6sMQqz/yGC3+9nw4YNqo1PghJSWTTwVgKNiRRHdDrxUKQkVq4UwRAQCcTZkJKYNAkWLhRBk6efznx/aqH8lqlqUqbSdrIsx8wiTBeWSgsgrgelHD3WdybCvn3ity4uVqdfn0189rNCK/a//1VvApxNpNrvolFUk1xCCsIyFCRBXhmLjBisBnRmwRG73dA/sIuMCYxsIomEFCQ38la0+OORF5CZGW267adklEdnwikZ5THHMr9fVFMAbN2K85G/c5PjXn7Itxj3s88J8x4Ah0No6+l0MHcufPSjYqcgTvp734PPf16wtStXwsyZSZyiB2Cqggk3Qtk8qL0QznoBFj0A5QvFY9kTsPRRsd0QItzIO9nwphiWSlqJgBzAWmPFVGoK9oV8gaoKjGzKR0EooO7tg0Ds8TwTjBolSAxZHiwFmQjpyksOFfz+kMqa05lEesNQBmf8AZY/kX15NVOV6H/LnxSPuT8WZEnp9NBrw9A/w5HpPW84Icsyl1xyCeecc07w0dTUxO7duwdtu3nzZsaPHz/0B5mnyGW7K8E3Z2d6FUanCrwOLwzc/9QQGFq9FmNR7Kxxv18khQA0NAxuu/nzRcAc4LLL4CtfEX8fPUpSWb9CBUZqCGb4l4q28vuFkezf/y4qYHbvFvOE73xn8Gdj9btsViVba0Twr685fpLRqY4J50xg1rWzsFRYMtqPJEnB37P/RP+gttv7z71s/v3mYPZ/PCSLpUiSKKqunSDm/CPdB0OBp8+Ds91J75FeuvZ3IQfiLyYUCal4KhYn8zznZITP7aO/uZ/ept4g4ZsISsykeHRssiNW+x07Jkh9jQaWL4+931GjQioAP/whXHedWGIr90Sv3UvP4Z64SacFZI586Xv5FVEoABCLOK8j+x4Y4aaf8eDzxc+Ubm3NnpTEtdfCxo0iu+jTn85sX2qh/Ja5nEyc2HyCd3/zLhM/NJFZ187KeH96sz5oJO1odwwqWZdlmaeueQpDkYELfnVBTP3WcAPvHMvlD0JtLXzkI/CXv4gqjEcfHdrvzxSV0yqZfvV0KiYn95vwuXzIfjEhi9bs7B6Q3NRqoTQTVTG/RwRVjeUh+adMoFdPYCiL7VhYuFBMOpTYv4LKSmFEOdTVN4kyyiXZjyxpRUZ56etoW5tFNLu1FTo64GtfE7OhAwdwbN6Lh2p2mRagv6E6JD49ebIgKXJz9KAvhgn/A6VToLgBDv4R/C7RgYchODpnjuBfOjqEH5KauGHxmGI8Gg/F5flZrp1SBYY5Sw7uuiLQ6ETWvqdHyIJlGStXioDL66+Ligk1yGcfm+gqqq99TVSZJK2iytXNzlQV6oOmKjEO+z1gqQPt8Ei8nSr461//GrPaYsGCBYNeCwQC/PCHPxyKwxrxUAgMV6cLWZZjepWMBChrB61Bm1Aj3+eMLasR/vrRo6I6WpGEUgj1cCxaJJ6j4wTJZP2UOaZCYBSNKsJj96A1nHyyckMBJSBnLDXGrNoFWLUKbDZ1+8tmVbISAEyWRFWAOhSNKqKvqY/+E/1UzgzNvwL+AL1HRYexjbMl3EeiWEp40pZxrQFHiz2YkDrSEe7j4uxw4vf4KRk7uFo1lbZI9zj8Hn9WE4RPdQS8ocW9o8MR1ysIhPeTQgonqmSKhlJ9MX9+/DjJ6tWCWI6Gck98+OsGjAiyrIBTGwUCIw8RnuWjt2TPAwPEZPfXvxbeseGor4cf/EDIOv3lL7E/m00piWuugTvugDffhOPHh6YyYCgIjKPrj+JodeBod2Rtn+YKc1wCw9Pvwefy4XP54l4rQ23gHY3bbxfX1JNPwk9+EpL7PxlQ1lBGWUNyGRJZluk6IFgKQ4lhEIHRNUBgVFZmGFezH4RNXxGSNmf8IYMdDSCFCoxEBMavfiXIi3POEVlq3/ym0Kf87GeHRzpMySgvoo8zeJsaWqihhSra0OLnDvlnHD0KRx79LxPG+oXE0/z5Ipqt6O5ceSXbbVfy2/thylggTQmslNHwP1B7Eeht4n+NDsrmQvs70LUJirPgfZIijEZBYmzcKKow1CY+68w6tMb8DJqo9sAAMGepAkOSwGATRt6erpwQGCtWwP/9nyAw1CKXPjaZIN99OdCXCLLR2wfO41A0YRgP5uTHddddp3rbK6+8MncHUkAEFALD7/HjtXuzmlh1MkEJisTySQCh0W+psODocMTVBrdUWDCWGPlgi/i/oSH2Wsrvh69/PfZxJFuLRVdgpOL5NxKh+HV9cNTErXfHJh0efFDIKKu534QHuCUp9v7UViUXjVZXBX6qwuv00vlBJyabKannjBoEZYGjfs++430EvAF0Jl2wSiMRGhvhq1+Fn/408vW6OtG2jY3QNf90IH4W+kiDEgTXWXQEPAGsVdaYMlKSJHH+z8+n53BPzLbw++GNNyTWravAbpdYsUJ9PGrHEzvY9ug2plw2hQWfGpwYUUBs+H0h8ilZTKS/WfQtY4kxpRimsmaJ5wukRur2gd8b+OJp4O7LnrF4AfmJAoGRh9BoNcz5+By8Tm9OMmaU4FNDgyjBCtePGzcuPoEBqZmPJcK4cbBkiQhyPvVUqFQ6l1AM0b12b9ayyOxt9qCnhizLHHjlAB67h9K6Ujr3d2IsMWas926tstJ7pDcmKaKw3HqLPm5G2HAYeIdj/nxxrbz+uiCtLr88PTPlfIa9zY6n34Okk2Le3DvDCIyM4O4Qz0aV4vbJYKqBiTeCPv7CIBmB0dUlTLVAZEevWCGqbtavFzqVOUd7u6g7PXFCPFpaMLROAq7HiJvLeW6AvqhhPxNppRrBEEu8fe63mHBd/HFAlYG3Aleb0N2PB32J+uqJaPPhsgWCwOjcBGM/rG4fWcbixYLA2LABPjxEh5CpAXsiqKrAmHobNHwyu9n8+rIQgZEDKNqxW7ao98HItY9NOkjbl2P/w9C7C+oaoWoIAnfmWvDuAcexAoFRwCkJrUGLociAp9+Ds9M5cgmMJN6E1iorjY82JvTZU9YEyTx9MjGCVggMh0NU1etUrPTD1zKJjvtUxNhlYykaXcIFlxsTSmSmkrzX2CjWttHVHKWl8PDD6on3YMC9eWQSGD2He3jtm69hrbFy+e8vz3h/FVMqsC+2U1IXmfmveC6UjitVHRtobRXP9fWiLzY0wN69oeujbEKWPbhOYvicPtz9bgK+AFqDltKxpWi0mmBVWiyCrnRcaTAxUBl/QhVSWmAykJqvoclmQvbLdB/sTrrtSB4Tw+Fz+vA6vQR8AYwlxmBFUbxKQ6UtraNS+22S+V+ouSc2tRno6ISygmybKpzM13jGBMbevXt57LHHOHLkCIFo/RDAZDLxwAMPZPo1Jz20Wi2LFi1S5dquM+mYec3MnB3Lnj3ieeFCId0ejqGUklCCnI89NjQEhrLoCPgC+D3+oC5sMsRrO3ubndXXrcbRIYgFn8tH37E+JI3Emu+vQZIkLBUWGh9tzGgAUHwwHG2DCYzw0ud4GG4CA+CMMwSB8dhj4gGpTTrSRSr9Lh6cnU76jvdRUl8Ss2zS5/Jhb7Wj0WqwjbOhMwy+rroGErmzRmAYkktaqYK+GOoTN4BCYLS3i4y+kqiK3//7P7DbhRXE+QPe4ksG4oZvvx0KNqaDYPsdPSpKtdraQnJPl10mygK2boXHH4eyMuFwOWUKhtFTAeiggtu4D+KYxY2uTXxgqgkMVxu8dV2ofWLBWJFYH7//AEh6sMYoUSofyBTq3QU+B+gy0wJOB4qchVovG0mSKLWpXwxGI1MD9mRQCIykfVKvvgRaFQw28ZwjAqOmRoz1u3aJCb8aGSm1kghDSTinHcDr3w89u6E2uU5vVmCpg9494Dw2NN+XBNm4550saG5uZvRQlwXlKXLd7qZyU5DAKB2beSb0yYhkBAYIEkPNfD+cwIjVdpmsxYrDEr77+sTUKBGi1zKxkI21TL7CUmnh3e0WdrbE3ybe/SZRv2tsFPfftWvhz3+GRx4RCV2pzF+U7H17qx05ICNpRpZ8mxJcM5ZkR55xwsoJTFgpEg1kWQ62XdBzQeXY5vfDCy+Iv7/8ZUFu9faeOkl52UJ4VRqBUCJpuMSP3qzniaufQG/Rx5UmslRYMF7XyEc+Zc2oItc2wQZA98HuhImsI31MhMi2c/cI8snv9ePqdiEHZLx2L7bxtkF9UyEwEslHRY+bzc2C/JOk+IlSau6JHoy4XQUJKTVI9xrPlzVGRgTGCy+8wHXXXcell17KxIkT0cVI8zAaC5rACjweD2azebgPI0hgTJ06+L2hlJK4+mpx01+/XuiqjxuX+T4TQWfSUTapDL1FL0oZU7g0Y7Wdu9eNo8OBzqhDZ9bR19yHRqfBVGbCXGbG5/SJgb/XnR0CI0EFRrzJnd8fau8ZM9I+hIywerWQjorGUMmAZNrv1v1sHW3b21jylSWMP3t8zG0kScJQbEBr0uKxh26cSoZC5wCBkTDbWw08SgVGlggMFSgpEUHe9nY4eFAQFQpcLrjvPvH3V74SCnbOnQsmkzjvvXtjjzUR8PvFhgo50doq/v761/H4/ZiffVYI+9tsQu5p3DgoGpgcLV0Ky5YJnaMBzPdD3Q/g2DEpo4xy1QSGt1eQFxojaGNca36neN/bG5/A+OBB6N4B074Ao86LfM88Cooni8/6+oeFwFCMvDduFHJhGk3s7ZRrXkZG9stIWgkJKW62TiwMhXSQIiGVcZ9MFZVLwFIPReNz9hUrVggCIxUfjMZGUVnzxBORrxcXi8DLUEs1pR3Acw2kRZpqsno8cWEe0L905AeBAfkz10wHTz/9NA8++CBtbW3MmzePr3zlK8yIMXnp7e2lrq5u2I0E8wm5bHdzuVlUAidY7J7qsI23Me/GeZhs8fW/1UIhMCaLJOJBbZfJWsxgEPMvl0sEVY/9ezuH3zzM5EsmM+WSKYO2j17LRCNba5l8RiaEUaJ+p9WK+/GYMeI++tZbojLGonIKZ64wM/WKqVhrrMHs9ZGEbBMY0VDaTjHuto23qfrcW2+JNVFZmfD0/OIXxf+Krw1A++52Wra2YJtgY8ziMTk5/nyHmqq0nU/t5L8/+i9+lx+NVoPOJMYgU6kJjV5UadjbHdz9TTeyPHj8SUXe3DbOBpK4rlxdrqA8YjQKY2Jk2+1/eT8HXz1I3dI6Jl84mTXfWYOzy8lZ3zlr0Pn3NfcByaXTwsdNpfpi3rz4XkNq7oluDBhNBQJDDTK5xvNhjZERgfGFL3yBRx55hFWrVmXreE5Z+P1+tm7dyqJFi2ISPeFQLipTqSnu4JoJEhEYQyklUVsLZ50lBq4nnhB6krmEJElc+MsLU/5csrbTmXXCaNvhRaPTUFRTFDSHiqeDmwrGnD4GS5UlZjlqcHIXpwLj0CGxiDEa1evWZxNpy4Bk7fvV97t4KKopom17G/YW+6D3jCVGSsaUBBcV7u7BkzRLhYVmh2ifzCswBpgQQ5YkpAD6D4K3RwTI4xiDNzSIyfn+/ZEExl/+Ai0tooT62mtDrxsMosJr3TpBUE6diijTOHQoRFC0toro6A03iIvh3nvFBVFRIUiKKVPwu1xs3bWLRZ/4BLriYuEkHQ3T4GBCtjLKU5KQAkFexDNXDyTQ5OzZJcgLjU7IRcXCgl/kzphYBWbMALNZBET27Rt8/4jW/5ZlGYfDgcViCWY5KfrfiTAUY4bDIR6QoE/aj8KBh6FoIkz4WHpfFAujz8/evuIgHR8MgB07xPMdd/jZu7edZ56pYezY4fGZSCuAJwfAPcBMGatjbp91WOrEc55UYGTjnjdcePrpp/noRz/KJz/5SS6//HI2btzI4sWL+djHPsavfvWriAWTLMvIifReRhhy3e6LblkEEqdssEYNSupKBknPpIt9+8TzpEmx2y7TtVhJSYjAcPe46D3ai6srcVWazqwLrl1k5Ah9+mysZfIVB9ccxHRcxsRoXCRec0ffl9T2u0mTYOxYOHIE/vtf4aehBpIkseCmkavVnwsCQ5ZlIfmrl4Jtp0hIqSUwnn1WPF9yiah61evB6xUqtmPHivdatraw9S9baTi/YcQSGJC8Km36quls/N1G3L1u3D3uYGKmucwcHI+62n2cOBH/O9TKm2sNWorHFNPX1EfXwa6kMTZlTIweD+HUHhMVKG1Xfms5i29dHHx9wrkT+OClD9jx5A7ql9Wj0YYy2mZ/dDbjzhyHuSL+bxs9biprlXjyUaDunlhVa2TMRBPGYgMBfyDiuAqIjfD7fjRiXeP5ssbI6JtbW1tZvnx5to6lgAEce/cY79z7DqMXjmbF91dkff+JCIxE5mO5kJL4yEcEgfH447knMHIJn8OH3+UHDRht2c0UKZtQFldLU5GQild2qchHTZ06PKWtmej45gvimb4F/AHVmsdfu1NM3jImMHJRgbHjR+A8AfN/CqWxdcYaGoSfRbgPRiAAv/iF+Pv22we4he5uEfVvaeGWslbm0UrLMwvhhiUi5fCBB8SFWFUlSIrqgSCjTgf/+78i9SL8QvUN3DxLStQJOYehsVEY7EWPK+Eme8mQMoEBgAyuFmGQrotfQhuBo0+L55pz4vubDCN5AeLnnz9fZJ69997g+0d0X/D7/Gzbto3Zs2ej1Yk2VaOnORRjhiIfZTBEym1EwHEEOjYIg+ZsEhhDgHR8MHbtEgSGXg9f/arMxo1HeOGFarZvl9i7F6YMTtzNKZTFSrxrIWYAz90JAT9otNnzCUqG4kkw7iMF/4ss4Cc/+Qn33HMPn/vc54Kvff/73+emm27i9NNP54UXXmCsEh2CrPiYFaAO2QrcFyDmTvv3i7/jeWBkuhYrKRE5Ir29YBlIsPF71FUrdR/qxtnlpHpWdVxvvVMJ2/++HefxfibVnMeOVnNOkvckCc47T/hfvPKKegJjpCMXBMYLt7xAf3M/5/0iVOl80X0X0XOkR5WElCzDM8+Iv6+8UrTt6NGCnDp+PERgKFJz4VX5Ixl9x/swFBkwFBsi7t2SJGGyCeWKvuN9yAHRAcOzwn0quQI1lVRlE8roa+qj+2A3tQtrk27vdXrp2NOBqdyEbaxN3YGc4pjz8Tkc+e8Reg71sO/FfUy9LLQgNJebU06+ViowEpJPKu6JP7/PQGPjVSl9dwECfp8fjU4ziKjLV2RETa1YsYLHFEH7ArIG5WanaAVmE729BFnseAEJxXxsTFTCQF1d9uV+Vq0Sg9LGjaGS6pMRklbCWmPFUmFBE09bJQcwl5mpnF4Zd9I13P4XQ+mpkitYa0TAtb8lRGC4elz889Z/sv8/+7FUWiifWB73Ya2yqtfbT4agB0YWg3NKkN0X3yQwwsi7pQW2bWP9D19l3p7HuMN0H//vyoGs5xdeEKvqxx9nkWk7EjLv7xgYx6ZNEyTF/ffDnXfCZz8LF18c+pKKiqyzbDVRKjKLFwsZLLVjWFoEhqcb7EcEiaEG9iPCoFuSkvqRIMtCqsbTk8IBZQ8LF4rnv/1NZPdHq7dYq6zB675sYhmWOgtlE8si+kIyDMWYEd4f48ZAnQM3SvOo9L8oFgJ+YeJtP5rd/YZB8cGQZXjzTXWfeeop8Xz++YJHLC31s3KlWCE8/XRujjMRtFr4xCdivxc3gOcekI8yVoI0RPdhUzVMuB6qlg7N953C2LVrF41Rg/PYsWN5+eWXueaaazjttNN46623hunoChjp6DnaQ8e+Dtx9CaopVeDYMXC7RVJAGB83CJmsxRSvst5eghXCajOG7a12At5ATN+9UxHuHjeSBN/+gQiSR88JspW8d+654vmVV1L7nNfhpWNfB10Hc+Oblc/IBYGh7Cu8ql5n0lExpSIoX5QIO3cKAtJohAsuEK8pa4TweWmQwCgYCiPLMi99/iVWX78ae+tgNQMQShKVMyrRmrQYS40R5Kna/DU1a7WyBpEQqqY/yci0727H7/FjPxH7uEcijMVG5nx8DgDb/rYtmEybDlpahEJ0Iv8LBfHuibW1uZcjP9XRsbuD5g3NeJ3e4T4UVchohffAAw/wyCOPcOutt7JmzRr279/PkSNHIh4nEtV8jTCoNTxRYxSXLpTqi5oaKE2QaNDYKNRe1qyBRx8Vz6kE/tSiqio0qXv88ezuOxbe/tXbPH3d0xx641BKn0vWdjqjDts4W9xKiUxx4v0T7P/PfnyuyAXIxA9N5Pyfns+0K6fF/NxwExhD6akSD5kaDUVXYMiyzLu/fpf+5n72PLuHgC+QdB9ZIzBGXwC1F4V017OBaAIjEAiSFLz6Kvz971zY/AgwQGDccw/cfz8t/7eaaexm6Vk6ikwD1+VFFwmS4je/ofTeu7ifz/PEgUX09SFm+5WV8c0T4iCT9tu+XTzPny+eT5xIbQGaFoHhT3Eid3S1eK5cApYkZea774F3Pw2tb6T2HVnA6tWCuAD4179g5UohS7d6dfzPpNN2QzFmqPK/cA3MXUxZHpz69sDbN8L2H2R3v1FQMpnUykg9+aR4/vCHxbNWq+Wqq4aPwAgE4KWXxN9FUYVMcQN4Q+1/kacYbnO9dFFaWkpHR0fM97797W9z//33c+mll/JEtFFLAUBu293eamfr37ay44kdOfuOfMfWv27l5S+9zOE3D2e0HyVZa8KEUGAuXtuluxaLRWAEvMnnqkr2MzAiJNr8Hj9ehwjYXHWdiaeeChUGK0hGGKntd8pad/Pm0JpADQ68coCXv/QyOx4feX0vFwRGeFJaOmOmIh917rmhuUntwJLs+PHQdkHD6gKBgc/lC1aAxVOMADBYDNTMqaFiaqTKQFERjBoVP+FIkoSUsZoKqaoZVYw9ayyj5yef27u73GLclKBm7sidV/77S//m5a+8HEE+TbpgErYGG167ly1/2gKAs9PJlr9s4eCag0n3qfQ9pfpizhx11eLh90TFS+illwrkRaaonlXN6AWjVZG4+bDGyEhCymazsWDBAh588EF+97vfxdzGbDZjtxdYS51Ox+LFi5NvCHjtYjKVSwIjqakuIfOxXOPaa+HllwWB8a1v5fa7fG4fnj5PQsmfaKTSdrnCup+uw9PnoWJyhWqNTggRGMNl4D2UniqxkGnb2dvseB1ePHYPnkMe2ve0c/Stoxx87SAanYa5N8xVVWKfNQKjPkulkT6fOKjWVth4Ag4eg/a34eqVorF++EOxnV4PVVVUl40GZA4ckOChz/HOjiJWPWjDYJA49EdAmQdWhCadtbUhzd933w0t3lJBpu2nEBgf/rBYNB49Khb0JSrUMJxOoYgFKQbLFa8LrbLgCkD/AfG/Oyo45+6A4/8UWfnlp4GrLb7JN0BRA7S8Dp2boO7yFA4qM6Rjqp1u2w3FmKGqPzoH2KtsV2AYBkhuT26zKVPxwdizR/CVOh1cfnmo7caNg899TlRIHjo0tD5K//iH6LNFRSLgt2uXIBRHjxZtH5w/u9rA2yv+djSBzgySDvoGNFr0JYn7VDbg7gT7YVH5Ya3P7XclQT7MV9LFsmXLePnll5k9e3bM96+++mrq6uq48sorueGGG4b24PIcuW53Z5eTHY/twFJlYeY1M3P2PfkMJRBpLM4smBpt4J2s7dJZi0UQGNXqKzDCZabCyYxTFcpaUKPToLfoaWwUXl8XXyzmGX/5S9T9Jgqp9LuaGpg9W9xrX3sNrrlG3TEWjRZRcsUcdySh4fwGKqZUDApoZwIlKc3Z5mTx1YvZ9+I+ug93M37FeKqmJ58rKATGFVeEXlMIjEIFRmy4ukVil9aoTRogjSVhI0nwne/A9Z+L8YEBqK2QqppRRdWM5O0sB+Rg4mJJXQk648nlKZYtBPwBOj/oBBk0+lACoqSRWPTpRbxyxysceOUAky6chMfuYecTOympL2HCyviyquHjpkJgJPK/iIZyT2xoEOv85mYxtgK8+5t3advZxoKbFqgiqQoIQdIkl4/KlzVGRr3x5ptvpr+/n127djFx4sS8YGTyFbIs09PTQ2lpaVLd3mAFRhxTlUywd694VkNgDBWuugo+/Wkxqdu5M7fBdmVCoZBEapCs7eytdjxWD3qrPtL0zpk9gydLlQVPnwdHu0M1gSHL4veE4avASKRZqCCbnirRSKXfRcPeZmf1datxdDjoOtAFMjx2xWPYW+zIARlzhZnXvvEajY82JpXGUQKmCTO+sw23W6SaK4/WVli+XEQhX345NAu37wW9HSYMBFRHjRKmFjU1QktGkjAfAe4RQUx/bT0/vk1s+vGPJw7uL1kiCIy3306PwMik/SBEYJx5pjitEydEqepppyX/rFI8aDSKn0EV/E7w9YHsExe7zz4QYO0Btw/eul5UvCjn4nOIrHGtAd7/qvA2Wfpo/IBr+QLY/zD0bAO/R3wux0jXVDvdtsuWAXsipFaBkSMCw+8SD238bLRMoCwGtm5N7oOhyEedd57YTmm7qqpSzjpL4vXXBYn1pS/l5FAHwe8Xi1UIDUXRcnCA6FtvXTeYGOz7AI49L/5O1qeygaNPQdPzQgJu4o25+x4VyHTMHE58/vOf5w9/+EPCbc444wzWrVvHxeHygwVkpd39fuEtFIsotFSIVEdXlwtZlk+6aysbUNZmmcr7KgSG4n+Riz4bQWDUqavA8Dl9QfkWZ4cTT78Hj92T1bVMvkGRPjGWGIO/fcuA+ueMGcmJo1Tb7rzzxFr3lVdSIDAGAu72E/YR1/fqTq+j7vS6rO4zvKq+u7ubI+uO0Lq1lfJJ5UkJjOPHRUIWwGWXhV5X1kHhFRhKDCeVeMOpCsWY22SLP9+NN84or19wgZir3nADoqp/ABqNSIDNdga+s9OJ3+1HZ9FhKDZEeJmcymNiNDx9HpABaXAlVNX0KmpPq8Xr8OLuc3Pi/RN47B60Bi2d+zuB2N6H4ePm66+L8SydhOm6OrHOD/fKc7Q56D3Si7PTmfoORyCS9bto5MsaIyMJqZdeeolf/epXTJkypUBeJIHf72f37t34o0XDYyCXHhipVGAMFcrKQjqSP/kJ/P3vsfXVswFlQpFKRkS8tjOWGDFXCNOpjt0d9B/rx9XtCj58bh+WCktWSl8tlWLx6GiP1KR97qbneOaGZ+g5OlgTv7lZLF40mlCm13AgnmZhaWnuNQtT6XfRcPe6cXQ40Bl1lNSXUDquFHevG0kjYSwzYq2x4uhwJK3mkeVQwDSjCgxvn/BL8IVVtDkccPiwcFV+8UX405+E9gqIKO8PfgC//S3885+CfVCq4U47Db78ZdHh7rwR/mcKnDVwkej1wq+irCwYMR4zRmRne73w7W+HDOy+/OXEh7xkiXhevz69U86k/Xp7BXkCMHNmiBhVqpKSIVw+Kuk9Wl8iAqUBN3j7IeAb+LsbNDrQF4NGL3wxXCdAawG9TUiBlc2BokmgGajQULLJY8EyVnyP3wM9QyMnkIqpdjgyabvGRnjiicG/e7Z8mJJWYAR8IjgOYM5yBo/WFCItcliFkYoPhiIfpZBG4W23apV4bShlpP7+d9FPy8qSjDHeXtFnNEbRn6IfavpUNmAeuLk5j+X2e1Qgk3433Fi+fDmPPPJI0u0mTpzIu+++yzPKjSgJ7rvvPubMmcPcuXOZNm0aH//4xzl2LNRWu3bt4uyzz2bevHnMnz+f1Yl08fIUmbb76tUit2HlSrjuusESgSabCSQI+AIpVTCfSvD0ZacCY98+8awQGLnos+EEhrHYiKXagqE4dsKDscSIpcKCz+3D3eNGo9dgLDGi0WmyvpbJNyiZ4UZb6NyUuZ+SVZ8IqbbdeQO+0an4YBTViIC71+ENXoMFpA/l9+xr7mP37t10H+oGwDbOlvSzzw/kRZx+emTyViIJKa/DOyLk2BJB6WexCIzw8Sc8hhIrltLYCOecIz53/vltWCwygYBYG6QCOSDTe6w3wtsyHI42Bz6nDzkgYyox0XO4h9YdrfQc7Tnlx8RoBMfIYiMabWTY2N5m5/Cbh9n/7/08//+e54273qB5YzO7Vu/iyQ8/yZMffpLV163G3hapxKOMm83N/mCibTpV9Uq7h69RlfvcSJ2nqEV4v+s52kPbzjZ6jvQkjWHmyxojowoMs9mMx1O4mWYbQQmpHFRg5COBASGT4D//WTxADEz33pvdAHc2SzqtVVbO+tZZvHHXG+gtej70iw+h0UUO7rGY53SgEBjhNwFZlnF2OAn4AoNKMv1+EQQCMclSa4CVKzQ2igzttWvh978XWvpnnnlyaBbqzDoslRZ6j/ci+2W0Ji2VUysJeAP43ckH8P5+UIbJtAgMl0ukhO36J2z+I1RMgZv/KsiL228PbWe1CvFep1P8rZS9VFUJHZbwaHBlZehgeovFcwITb6VYA+DHPxbPJpMIMiaq7lEIjLffDmXrDxV2DMT3x4wRgdAZM0TZvjJZSoaU/C9MVSLL29MDGz4jAuBz7wZTWIO3vgGbvgwBj5CUKpoQacbus4fkp+JBkkQVRvN/oHMjlM9XdzIZYChMtWNh4cLIqg+tVlTPKJqnmSBpBYanW5AMsi9UMZFNGMqERJWnO/sESRhWrBB99PXX4corY2+zbx9s2SJ+31jbXHUVfP7z8NZbQtYrmojONrxe+N73xN933JHYqysIrRl0ce6zyfpUNqB41ziGn8AYKSgtLeWy8BTYBLjsssu4+eabMZlM+Hw+7rzzTi699FI2b96My+Xiiiuu4KGHHuLss8/mxIkTnH322UyaNIk5c+bk+CyyA78f3nhDYt26Cux2iRUrUqtQUycRqMFUasLV7cLZ6UyoY36qIlv+hNEVGLlAOIExdvlYxi6P7xZurbLS+GhjwoBPttYy+QYlMzw8SKMEodUQGKnirLPEeuzgQeEpp6x9E0Fr0GKuMOPscNLX3DcigqYg1rit21oxlhgpHZe9bN9gRUurHW+fF1ePC42koXRs8slGLPkoiG3ibSwxcs6PzsmJHPjJhmAQvHTwtZvq+KNU1l92WRtlZRU88YTEs8/CGWeoP54tf97Crqd3MeWyKSy8eeGg9w1FBho+1IBtnI35n5rPzid3sv/l/TSc18DMa2cOOqZTGcEqNdvgtnP3unF2ONEZdejMOlzdLjQ6DSabCZPNhM/pCyZ6xvqt1q4VfXrWrPTiI7EIDCXBoCDdlhjh/W77Y9s5+OpBJl04iemrQkGdfL7GMwpr3nLLLXz729/mscceQ6/PfrXASMWEcyZQMbVC1c00FQQC+SkhtXo1/PrXg19PpK+eLoKmWvbsDGyt21sxWMWNrnJqpgYH8aEMIOEVGF6HN2ggHb6YXL1aSL4oA/qxYyKTLttkUKpQNAstFkFgvPWWuCZT9HQePgQASWTp6Aw6PF5115CS7W02Jwi+2u2RUk+TJolOumEDPPSQ2Kb/AHg7YM5AWZ/FAjffLO76VVWDdz5xorrzss0RsifW2HqV8YIbLlfy/jlvnpBg6ugQgdIpU9QdUjagTHJnzRLPSgVGTggMECSGpBVZ31oTVCwU1RfhsNQLOSm/C+yHhJyUJsXFTflCQWB0bUrtc2liKEy1Y0FpvzlzxFjW2SnabtGizPedtALDVAnLHgO/Izesm8E2QGDk1gdj5crkPhiKfNQ550RY2AQxZowgItevF74Un0ugQZwN/PGPIrBTXS2Ik5TQvUVUOhVPET4YQwXzQKTLdUL42WgKFcn5hAkTQvc2nU7HnXfeyX333cfx48fZsGED8+fP5+wBzbVRo0bx5S9/mYcffphf/epXw3TE6hGa72kBUUWZSvJPKhKBpvIQgVE2IQfEbh4j4AsEJRUyCUjK8tATGGpgrbJirbJy4NUD2Fvt1J1eR1nDqd/Go+aP4uzvn43eHIph5JLAKCoS99O1a0UVxs03q/zcqCKcHU76T/TndK2ZT/D0e3jtW68BcO0/rkXSZWcuZqm0ULu4FnOVma6jYg5mHWVN6s3Q1wevvir+jk72iFWBodFqqJk9co2fwxGswIhDfCvjTzLY7WJ+CDBxooOyMpknnhDE0t13qz+e0nEivtZ1IPYcvHpWNVc+ciV+jx9DkYHq2dUcXXcUOSBTPlGF0/QphETVMwp0Zh0avQav3SsIjFJTMAk7kffSm2+mLx8FIQIjrKA2lKhcqFZLCqXfyX4Zg9VAzZyak+b6zmiF5/P5WLduHePHj+eMM86gNEaqnMlk4oEHHsjka04JSJKE2WxWlUEw8UMqA48poqlJJGfr9TAhdqxyyJGuvnq6SKcCI17b+b1+jq47CsD4s8dnfnAJEEtCSskc0pl0aA3ix0nHbHeoMX++COZ3doqM6lx6nqTS75KhpK4Ec4UZnTm1YVMES2XGlffD/lZBULS2iohhcbEoOVq3LvSB4mJBRkydKkiIm24SBEXv89D5MowN0/5eODhzJPUTmyweMZCofypI1D8NBnGIb70lqjBSJTAyab9oAkOpFMkZgQEieNpwg6imiCYvQLxW1CCkpZzN4DgKRSmO97a5YmC0H01u+p0FpGuqnWnfU9pv9mzhX/Lyy0IpLRsEhioPDEmKn9WfKYbIyFuND4ZCYHz4w6HXottu1SpBYDz9dG4JDJcL7rpL/P3Nb4pCMtWQveB3iwonaYgJBGOV8KPxe8DdmtOqmmTI5j1vqDF37ly8XvV64SaTiU2bUidyHQ4HkiRRUVHBK6+8EiQvFJx99tnce++9cT/vdrtxu0PZor0DUWKfz4fPJxbrGo0GjUZDIBAgoMg6hr3u9/sjZEXiva7VapEkKbjf8NdXrxb9Vmweau9jx2SuvhoefzzAVVeJfel0OmRZjij7lySJtWu1qiQCX3/dj7ncTPeBbhztjojjyeY5AYOkCeK9Hu+ctFrtoN893utq28nV4yIgB5CQ0Fv1aZ/T8ePgdOrQamXGjQOfz08gEMBoNAa/PxvnVFIiMoN6egL4BhKd1LTTgVcP0LK1BY/Dw6jOUdTMqhkUKcjndkr2enQ76Yv1VM+tRqvVBo/x2DEtIFFT40eWNQnPKbzt/H6/qnM65xzR7155RebmmyVV52SpsiDLwlT4VOhPatrJ3esmIAcwWA0ECBDwBbJ2Tmd/92y8Xi+v/OYVkKGkviRu+ynH+OKLATweDZMny0ya5CcQCB17dbUM6GhvB5crgMl0aox7yV5Xe06lE0qZeNFEqmdWDzr2VM5pyxaQZR3V1TK1tToWLfKj02nYtUtiz54AU6eqO6fi+mJkWab7UHfMY5ckCVkjozFp8Pl8mCvNyIj+p7b9TsZ2ivW6vcMu+uGANFP4Ofl9oe/xOX3IiL81Rk3wdVmW8fv8EXMjSZIwmUxBA+/ly/0EAlLK51RXJ+Y9R4/K+HzimPRFemRknD3OiPM91dspk3PqP9GPLMuYKk1J57CyLGM2mwkEAqrmgamcU/Q2iZARgSFJErfeemviLxhu7Zo8gVarZe7cucN6DIp81MSJwy8ppCAVffV0GdpwmMvN2BpslIwpUf2ZeG3XvKkZT78Hc7mZ6lnVmR9cAgQJjLYQgaGU9RlKxE1lqMmgdKHXi1LPNWvgv//NLYGR7X4XnqU1CLIsZJ0UgsLphBUraG+HH/FNprg64acD29pssGCBICuWLBEmDVVV4mE2h/ZZVgaLF4u/dwy4lhljpEnnCNnon0uWCAJj/Xr4xCdS+/5M2i9eBcbBg6Jpwn/mWEiLwNAXw9hVSTaSwFwHxur0Aq36Imi4ESx1oM9ulV4shJtqS1Ls8SWWqXamfS+8/fr7BYGxYUPau4tA0gqMXKPidBHkLlKhH5EBqqvFdb9zp/DBiM4aPHAANm0SbXfVVaHXo9tu1Sr4ylfEPtrakhA/GeDBB8V4U1cHt9yS4ocDA4FvSUd4MHdIIEmiCqP/EDiahpXAyIe5ZrrYtm0bkydP5hOf+AR1KkStTabUZYx27NjBHXfcwfe+9z2MRiPHjx/n/PPPj9imvr6eA0qaZwzcfffd3HnnnYNe37x5M9YB1q2qqoqJEydy8OBB2hTGFKirq6Ouro69e/fS0xPyLmtoaKC6uprt27fjdIbMJ6dNm4bNZmPz5s0RC72ZM+fwxS+aB5EXALIsATKf+5yP2trNGAxaFi9eTE9PD7t37w5uZzabaW5Wd62sW3eARQEx/zy8+zDtpe1ZP6c5c+ZgMBjYEDXQL1q0CI/Hw9atW4OvabXxz2nu3Lm0t7dHtGFpaSnTp0/n+PHjNIVNatS2k9/lp2h5ERWlFWi0GrZs2ZLWOW3eXAzMZPx48PmcEee0ZcuWrJ1TSYlIjGhq6uXN5zZx5MkjVIyp4LKfX5awnQ7vPIy72807j7xDUVERl/z6Eg50Hzhp2inWOaXaTocPzweM9PTswu+fpuqcNm3apPqcamuLgFm88kqAQECr6pz6K/uZ+OGJjFk85pToT2raydvrpbenF4MudA7ZPKeuri56j/bS09ODOWBm7969Cc/p0UftQDGLFzezceORiHPq7u5BpzsNn0/Dzp2dLFhQyfbt2zn21jE8HR5sc23MO3PeKdlOqs9pAdQtqsPpdKZ9Ti+8UAVMZPZsicrKSg4c2MS8edPZsKGUP/6xk7vvrlR1TgFfAF/Ah2SX2LR2EwGzCNAeWX2EyQsnM+/D8yLOydXqIuAP0Heij/feey8iQeSUa6eoc2o72IYTJ20O8f3h5+RocuByuTBjRjJJ6Mp1yH6Zflc/er8eo2TE5/Wxbds2LF2WiHPyekvZsUMQxMXFmzl+fFTK51RXZwPg8GEfGzZsBMCmtyHLMof3HsawIVQteaq3U7rnVFJSgr3FjsvtYv+J/TRtaEp6TnPnzmXXrl1ZPye74tOqApI8ApyFent7KS0tpaenh5IS9YHrbCIQCNDe3k5lZSWaBJo5CiNssBqwVFmymkV3//1CkuGKK0ImvMONv/9dGAYmw6OPwkc/mvvjiYV4bbfuZ+s48uYRpl4xlQU3LcjpMbj73Bx79xhFNUVBsqTpnSbW/nAt5ZPLueCeC3j9dSEZkgxr1mSHDMoE3/2u8Jf++MdDnie5gNp+Fwud+zt58sNPYrKFSiGRZXQ+JyZPL9qeDvqcOs5//jbKDXa45x5BYCioroa77uIvf5X47SfWMfd0Mw88VS2if8Y0NGw3fRl698Ksb0FlCmKfyRDwisBbwA22WRFvZaN/Pv20CH7PnQvvv5/ioWXQfjU1gkdSsvZlWfz0HR2webOQt0qEiy6Cf/0L/vAH+OQnUzvumOjbD//9sDAXjpXZ77OLyozlT0JxbqrwMkG0NB0If4KHH45d1ZVJ24Fony1bhGmi3y+C77Nni2qCTFFVJUiMbdtCBFcEPnhIVMjUNw7qEycbPvtZeOAB0XbRijg//Sl87Wtw7rmRpqKx2m7RIti4UZAM/+//Zf847XahB97aCr/7nUppjfA+JXvF+KizQOlAmw1ln9rxY2hbB5Nugrorkm+fI2Ta75Ihl/PpNWvW8NBDD/Hcc8+xfPlyPvnJT3LllVdiMGSuIf7Vr36Vv/zlL7S0tHDTTTfxu9/9Do1Gw3nnncfXvva1CBIjEAgEM9VizcFjVWDU19fT0dER/E1ynZG3dq2Wc85Jvj545RU/Z58tJ6zAUDNvfOUVP6fNdEAAjGVGNPrQtXWyZBnmQ+bkww9L3HKLlgsukHnpJfF6IBCgo6ODiooKDAZDVs7p+ec1XHklnH66zHOPtPGfr/4Ha5VVyKLEOSefz8dTH34Kv9ePsdiIp9/DWd86i1GLRp2y7XR03VF8Lh+j54/GWmXF6/VTVKTF65XYv9/HhAmJz8nr9QbbTqvVqjonrxeqq7X090ts2gRz556cWbu5bqdj7x7jjR+8QcWUCs776Xmqz8nvh//+V6K5GerqtCxfLgODz8nR7eClO17CdczF0q8uZeyZY+Oek9+vobpaprtbYs0aH8uXDz72iRO1HDkisW5dgKVLxeuvfO0V2ne3s+yOZYw7c9wp2U5DeU5f+pKGX/9awxe+IPP1r7dQXl7OAw9ouf12LWeeKfPmm+oqmgBevv1leg71sOwby6g9rZaWrS28/t3X0Wg0XHTfRRTVFQW39Xv8PH3t0wBc/sfLI6SwRnI7de3v4umPPI25zIzeog9WYABISHgdXpxdTlY9toqyiWXBYwT44x97+NSnypgxQ2bLFn9a59TbK2Gzif97enxYLNC6pZV37n2HimkVLL1jacrnBKdeOyU6dle3i+dvfB4ZmaufvDro5RvvnAA6OzspKyuLmB9n45x6e3upqKhQtb7IOA//4MGD/OMf/2D//v24XK6Igwb1ElJOp5Mf//jHvPDCCwQCAVwuF7/5zW8455xzAGhubuamm26iqamJQCDAZz/7WT796U9nevhDhkAgwIEDBygvL0+4qPT0e/jXbf8Csqv5CKEKjKHUoU+G4dJXTwWx2k4hmgDGnT0u58dgLDbScG5ktm7QfG7AFGu4zHbTwfLl4jlcOSkXUNvvBsFuR3PkEDX2A/RravFgY3TnDurbN6ORxSAs+wIcMw8ExcrL4YILBGmhVFIMZIe2tcFbLGP8RCB5Uml8eDrFc7jxczbg7oBNXxISKGc+HfFWNvqnYuS9bZvQkC0uVn9o6bafUgQjSSHpKEkS2ehr14qM9GQERloVGP0HEBUWtaCNQ1L5nam9nidobBTk99q18Mgjgnhcvjy+JF3afQ/w+YT5NIjiJCV+uWOH4AgzMfL2+4WcEiSowOjeKki92ovjbHDyYMUKQWCsWTP4vSefFM/h8lEQu+1WrRIExlNPZY/A8PvF9dTcLI6vtVWQGDfemOqOnOIxMDbjs4deHyqMvgAqFkNpDksKVSCTfjfcWLlyJStXrqSnp4fHHnuMX/7yl9x666189KMf5VOf+hTz589Pe98/+9nP+NnPfkZHRwff//73ufHGG/nTn/6E0WjE5XJFbOt0OjEajXETiIxGI8YYSQg6nW5Q1bmyqIuGsnhT+3r0fk+ciLnZILS2aoMV15IkDdrPmWcKXf7+/tifVyQCV6zQotUmvnlnek7pvB7rnCD+757q69k+p4MHxf+TJklCpVCnw+fzcfjwYaoGStuycU7K2r+vT8JgNqCRNAS8gYTH7uv3IftkNBoNVdOrOP7ecext9lO6nfY+u5fOfZ2c9Z2zKKouoqdHh6JiV1enC1pgxTsnjUYTbDvlu5Idu04n7ssvvCASB+bPT3xO9ja7KoPjU62d3L1uNJIGs8086JjindNzz+kGJdrU1Unce6+OxsbQb3ngPwfY/vh2NGM1nPuDczGYDPQc6gn+ltHH/vrr0N0tUVUFZ56pi6g4Vo599Gg4cgRaWjTB143FRjSSBr/bH7yfpNNOaq+B4e5P8V7va+7DYDWgLdbGvcbUXHs7dojXZs4McOjQISorK7nqKi233w7r1km0t0Nlpbr+ZCwx4rF7OPbuMczlZt7+2dv4HD4mXTQJ23jboPOwVFhwdjhxtbsoqigatP9870/xjjHV18PPSavTBq9rSZKQYlQ/S5KEVqeN2JfP5+Pf/xbzrhUrIn+jVM6ppCQ0f2lp0TF5MtQurOWqP18VYw/qzikcp0o7JTpGZ5tYJ1mrrRhMg5OForf3+XwcOHCARYsWxdx/JueUimpTRgTG008/zXXXXceKFSuYN28e1dWDZXTUlHj7fD4uuugiVq5cyVtvvYXRaBzEHK1atYrPfvazXH/99fT19XH++eczduxYLr745A8whEPxZtCZdEEWLFtQCIx8MvBOpq8OUF8/WF99uCFJEhfffzGdH3RSPml4DG8MRQYqp1cGzRRPBjJIwRlnCPPuAweEJnAuzPKSwukUEbOODmHMIUkiMrttG9jtWJ1eZtgPsU06g/aAiQ5vCR7TTJy6Ylz6Ily6YkyVxZxRYhRi7RdeGPNrsiJXIwfAPRB1zbaElH4gKOH3iIc2dANL1/8gHLW1og8fPSqqIQY46ZxCmeQ2NETq6E+fHiIwkiEtAmP/H6BrK0y7HUZFnai+RLSdu0NUu8SCsUJspwa9e6D9HahaNmQVG1qtWHhbLILAeOedkDxdNvHBB+DxiLYbN06MFaNHizbZvBmWLUt/311doCSTxDKtRpbBORAdzJUUUMAvCEm/E6xjc/MdAwj3wejoCJ3zoUNCkkujiZSPiodVq4QvxWuvid+wLEN/11gVPQCXXCJkBlUhvE95eyDgEw9vd2ibVPpUJihPP7heQCRKS0u55ZZbuOWWW9i1axd/+tOfuPTSS6murubGG2/k+uuvpyJm502OiooK7r33Xmw2G/fddx91dXUcOXIkYpujR4+qkrAaTmRrvvfOO4nJC4gtETjS4Ox04uhwYC43Y6lIn0EfCgNviDTx1hoHMh09/gSfEIE9AHOZmaJRIkDn7MjvxIpMoUjxRieCVVWFEidygfPOCxEYX/1q/O3sbXZWX7caR4cDn9tHwBtAb9VHkKuWCguNjzaqMkE+mRBM0itRV7GezAPysT/YcT8qfktPv4f+ln7kLTLPb30++HvG+y2ffVY8X3pp/LEwlpF3Or6b0Qi/BuIh36+Bl7/8Mp4+Dxf/5mJKx6YnfSvLoQrs2bNDjTxunEhIe/990aduuCH+PsJ/S1e3C2eHk/bd7bx777s4O51IWnEdzLth3qDfsnhMMRqdIKMKiITPGdu7IN7rAJs3i5tUlAVZSlBiELt3i7XE5Nh2ngUkgM/pw1weuuefLMiIwPjWt77Fz3/+cz7/+c9ndBB/+ctfKC0t5Xvf+17wtXDmaOvWrfj9fq6//noAiouLueuuu3jggQdOOQLDaxepH3qr2hW8euQjgaFGX/3007O3eJIDMi98+gU8/R4u/d2lGIvTkPIZgCRJVEweOj+C9j3t9BzuoWpGFSV1JdQvrad+aX3w/WwEm4cKJSUwZ46YcKxbNzgDOCuQZejrw3jsmIi2TZ0q0rfvu0+URYSv2u+5JxQtramBmhr0NTWMwUJl/KSXYNZLImSFwAj4YPz14OkQcinZhNYS6ny+ftCGCLlE/TOV4MaSJYLAePvtoSEwov0vFCg+GMkIDJ8vZPScEoHhahXPpprB75mqYOmj4O2N/3l9iXpT7qbnoPVN0RBDLDk1b55QQWtvh/37sx+MUdpv5kwRYAchYfT88yLongmBofRHmy1OoNzbA36X+F1NOfI26j8gqp5MlXDGI7n5jgFE+2AoZIVi3n322WKbZJgyRUh4bdsGzz0H//M/6R9TvEADCKnLFSviV/ZEILxPHfwrtL4BYy6NlHBKpU8VkHeYPn06P/7xj/nRj37Ev/71L/74xz/y7W9/mwsuuICbb755kH+FGrjdbjweD36/n6VLl/LPf/6Tz372s8H333jjDZYuXZpgD8OPbCT/uN1w003i75UrYd++6MxlcX9X+qK7z82e5/bgc/pyLpuabzj61lE2/m4j9cvqWf715WnvRyEwch1oiSAw9GKCplRgxIPisWepsmCpEiSNQmqcqlCC5IokjBJ8znVS1XlCEYm1a8HlChZsDz6+XjeODgdao5bepl5kv4yl0oLOJOIjPqcPR4cDd687b4PX6UKpOFDMgxNBjQfknd9y8/kaB3qTDq1Ri6PDQYAAJptJSJzE+C39fjFv+tvfxL4uvTT+MSjXTLjKgSI/nAmBoVwDOqMOnXlw2C7fr4GAL4CnT5y/QhSmg5YWMX9XqunD13FXXCHiCc8+m5jACP8trTVWdGYdWp2WvuN9aHQarKOsuLpdMX/Lc354TlZl3U8WvPL1Vwj4Apxx+xmD/GONJUYsFZYgwRoLlgrLIBKysxM++EDcYzIhMCCSwCggdYxeMJor/3QlcuDkcpTIiMA4ePAgV199dcYH8dhjj/GFL3wh7vuvvPIKZ0dd4WeeeSZXX301siwPGlBi6dOCqPRI5q6eK72yQCBA8YB2SnR1CYT0ypw9TgJyAJ1Fh9/vz5oGm8ulQUkymzjRh8+XPxpsl18OTzwhcfvt2ogByGYTepNPPQU/+1mA22/PvJ38AT+OTgc+lw9HtyOYHZHonJS2U47X5/YRkAPBCpmh0srb8eQOmt5uYsHNC7CMssRsp3vukbj2WqVyJ9QvJEns75e/BFn2E960w6X/t3y5hvffhzffDHDVVaHS9pSuPY0GenrwnzghIpJVVbBzJ7rnn0duaUFyOBjX2wu7duH/xjfQms0EamqQZ85ErqyEqiqk6mq0Vqs49rPOijhGq0aDOck5RY8p0efa3q4FJMrK/Ph8kddkzHOK+boG3bhrQu0U8GW1nbRaC5LPjt/Ti6wtidi+sVHDE0/4uf12DU1NoWuqrg5+8Qs/l18uB6+neOd0xhlannhC4q23Avh8oe9Vc+0pfS/eeBjrnLZu1QAaZs0ioj2mTpUALTt3knDcE0EhHVqtTGWlWAAlbSc5gMbZigaQTdX4w67h4DkZKgjoyga/Hn5OPp+q/kTpPKSWN6BjI4y7fkjHco0GFizQsn69aNPx4wdfe7IsB9vOp/KclGOP1X4LF0o8/7yW996TgfTPSUiv6KiqGnwvliQJrbMZGRlZX04gIEHAl33dU10JkiyDu4uA14tWp8vpPXfFCnHNv/ZagMsuE8f5xBNiXFq1KrJPajQaJEmipKQk2HbK66tWadi2DZ56KsD11wcSnmu8aw+0YYGGWItBmS98AS65xI9Wq2KM0JWBrgzJUo9knYDGNpuAdUJkewQCuZ/vyTL+zveRnMeQq1eC1jQsmruyLFNaWhrRdmmfU4xjHy7bPI1Gw8UXX8zFF1/M22+/zbXXXss//vGPGNdXJDweD62trcGKiu7ubm6++WauvvpqysvLufrqq/nud7/LG2+8wdlnn82JEyf4+c9/zl//+tehOK20oSb55xvfSJxc8L//K6T6amoEoVlaKvxw3ngDbr0Vfv3ryM8HfAF2PLYDJJh34zw02pNLoiwTKAFIZc2QDmQ5dgWGJEmUlpZmNTgWkpACSSEwfAHkgIykif099lZBVlirrcEqk1O5AsPn8gWzqZXAaqoERrptN2MGjBol5iPr1yf3L9Sb9RisBrwOL5JWCvnyQdzA4cmO2sW1GIoMVExJnii4dm3iAKYsC2Kh3wpVZTp0RhG4lv0yXoeXomqRfRz+W8aqEr3tNvEcK8FCSXaKVYGhJKdmAp1ZF9Hu4cjnayAofSWRUdLotm3iedIksFoj+90VV8Cdd8LLLwtxBbM58b6U39JSaaFzbyeSRsJoM2KtseLujp21OBLJC1mW6dzXid/jj3m/t1ZZaXy0UZW8WTjWrZOQZYlp02RqajL7XZViWaWfyrLMq998FXevm3N/dG6EX0kB8RFvXjBouxzMV9JBRgRGdXU1x48fZ3SGmjRbtmzBbDazatUq9u3bR2VlJXfccQcXDkiyHD9+nHHjIn0GzGYzJpOJ1tZWamois13vvvtu7rzzzkHfs3nzZqwDeiLD5RgPQl83nmP81g1b6enuwVfmY/v27RGO8X4/bNlSgsNRyqJFY5gw4TjNzaE7a6Jz6ugQPby42MehQxs4fDh757Ro0SI8Hk/cc9q9e3fwdbPZHHFOCmbOLOXQoemsXt3Grl3dVFZ6mTu3l2eemczPf17BHXdo6Og4xGWXtbJlSwmBQA2zZlVQWbmX/v7U2qnX1Yu328umtzex5JIlqs9py5YtLF68mO3Pb+edB9+hZkUNo84ZFfecSktLmT59OsePH6epSV07Jbr2ut3d9HT3sPO9nfRU98Rsp/p6+Nvf5vOZzxjo7ibsOz3cf7+Oiy5ys2FD+u2UzXNavrya+++H//zHwYYN2we1UygwLDNn3DgM3d1s7OxE1umwrV+PdedOxuj1+N1uOjs66DrzTLqXLcPc2srcceOwT5vGgf5+fDYb3rIyTEp/uuSS0Dm1t1Pq9TK9pCRr7RR97Z04sQjQ0dd3kA0b2oOv57I/pdpOszwaijRw6IPttLlD4trKOU2evJ3HHnOyZUsJ7e16FiwYzUUXFbFp0yY2bEg+Rpx2mvgN1q3z8957G5Gk1M5p06ZNKZ3T22/PBIqZNYuIdvJ49MBCPvgANm/egc8XKskOv/a2bzcBsykr8+J2+1S1k87fxaSeTmxllfQ4tezeE9o+F/2pv1NmUk839GzAV3uAqtpJQzqWT5rUwPr11bz+uospU0LbK+fU0tJCX18fmzZtUn1OSjv997+TgQpmzSJ4TiUlNmAa774bALRpn9Pbb5cBU6msJPa1N6oTj8dDuwOODuwr22P59r1HGdvTDcC+995kyoyFOb3nrlgxlwcegH/9y8n112+judnAe+8tQJJgyZITbNgQktBRzsloNAbbTjmnVavq+P73xSLxjTc2Y7X6U55HdHfPo6kp/oJCliWamuAPf9jL4sX2FMa9GZTaljB99HSONzXlZCxP1p+63/oG2oCdQxVu3Pq6YRnL6+rqmD59Ort27crJHHbKMJmouVwunnzySX7/+9+zdetWrrnmGm5W4fTe1tbGFVdcgd1ux2QyodFouO6664JJU1arleeee47PfOYz9Pf3EwgEuPPOOzn99NNzfUoZo7FREA/RQTa9HrxeUWz6kY/ElnvbuhXuvlv8/ZvfCBsvEBUbb7whMo+jyQ9TqQlJIyEHZNw9bszlSaJEpxCyQWC0torCX40Gxo8Pva7VapmumHVlCQqBIcvgdIca0u/xB7P3ozH54snULq5FkqSgtNKpXIGhBN20Bm3wN0mVwEi37SRJVGH89a9CRioZgQFCWtrr8OJ3jQwJm5rZNdTMjlHNHANqvR0VvltJQNRpdaJvR1WhxqsSPX5cvP7UU4NJjIQSUvb0KzCi4en34On3YB1ljek5kG9QxhLl/pEuFAJj9uzB/W7evJBU8auvJq6UCYfP6RPHJ4FtvA3Zf3JloecaPpcvKD1ossWet1urrClV/vj98P/ZO+84yaoy/X9v5dA5TU93T86BIc2QhhxUEARHQEXBxLpmUYyrrqtr4KcuKmZldV2FNeCogIkkOQ4MYXJOPdM5Vw7398dbp1JXTl099PP51Ke6q27dunXPPeee8z7v+zx33CH3pCVLtJRzjXyQTGBomsbI/hECrgD+cf8MgVFilGO+UgiKIjDe/OY38+Uvf5k//OEPeRlvJGNwcJCvfOUr/OAHP2D58uW8/PLLXH755fzv//4v559/PiMjIyxLoXtks9lwuydrAn72s5/l4x//ePT/sbEx5syZw8knnxx1NVeGJAsWLEggR9TrS5cunZSRB7B69epJ2WvAJHNB9fratWsBqcDo6elB0zTsdnv09XjU19ezaO4ihhqG6FjUweqI/klLSwuPPNLMxz+enAHdya23zuaNb9Sz/qannpK/V640sm7d2pL8pvjXM/2m+NcVY9fS0kKTWjGhsgzhTW9qJhyOrbbOPFMMz265Bf7f/1vAz362gKGh+HOwnFtvDU86B5l+U+/cXkYZZdmCZdgjNH2m36Tarr29HYCBTQPUWGpYvHQxy9cuz/ibADo6OqKfjT/GfK+9xSctZmLzBLNqZ7F27Voe+sxDuPvdnPax02g7OTb7Ov10Izt3SjbCeeeF+cIXdM4+24jFYgCKb6dS/SYlA7N7t5NlS0+lNjyKcWwMGho4+aST0H7+c+jpQevrQ4u46p366U+LzJPHg9baitbejqm1leamJppbWmKaMCYTTl1neSAQbTt1DZS7nZKvvZER+d516xawdu386Ot59SffALgOUe9sLks7GV9sg4lx5ne2MK9p7aTt1W9SMR3J2s19jAiFjFitOiMjZhoa1ibIJ2S69hoaGia1X7bfpOtw8KAxctyJ7aTrUFenMzamYbGs4qSTUo8RR4/KMcyda8ZuN6f8TZPaaXQLhpfrwdpKfUNjBfrTEgyb74GJ/aAdAhZXdCx//es1fvUreOkle8rf2t7eTjgcpr29PcEELJf+dPRorP3Ub5o3Dz7+cdi928joaOG/afNmOb7W1jTX3uHfYbFYaO86iVlL1yb8ppKNESecjDYxBwLjnLJqAcY60QQu1z1X5Zjs2eNkwYK1PPaY/J5zzoGTTmonHI7dP1RWv9ls5pRTTokes8FgoLMTli7V2bXLwLFjp/CWt+h5zyOk8iM76uqWcfLJetrfBJUfy7P1p6bOE2BsBycsbobWtSWbG+XzmwCOHDnC4sWLEzKkSjXfc7kqG9B84YUX+NnPfsZvfvMbVq1axXve8x7e/OY343Dk5kPQ2dnJ888/n3GbE088kSeeeKIUh1txbNgg2aePPBJm27ZhVq5sZPFiA2edJbIKV18Nf/tbop5/MAjveY88v/GN4m+joJZaSnI2HppBw9ZowzMY84N4taAUBMbu3fI8d65IMCqEw2GOHj1KR0dHSgPQQmCzgckkbezyGrHUWjBajITjqu2SYbQYoxIhZqeZNdevwTmr+iRpSgXvSMz/Qo2V+RIYxbRdPIHx1a9m316RLJ5hz7QJXlcKuebRJoSqDBAKhiYFOHORo7rpJhl34wOvqSSklBx4MRJSyejfJgkLBrOhKD+eSiHazxoKr76ARAIjud9pmqh5/OAHIiOVK4FhtptpXdVKwBXAbDNnJJrGusd45rvPoId1XvOt1xT1W6YLVNsZrca0xHc+SK5quuceIfO/+90cZWNToLNTnuOTOKx1VgKuAL7xDBrgMwDg/k/dj8Fs4PQPn56TD0Y55iuFIK+r8f3vf3+CNJPP5+Mvf/kLS5Ys4fTTT0+5oLDZbPzwhz/MuF+DwcCnPvUpli9fDkjm18c+9jF+/vOfc/7552O1WvF6vZM+5/F4ogHoeFitVqzWyQOlyWSaRLSU0zHe1e+KZniEgiH2vLIH+wl2jCbZR3JZlaZphLwhDJoBW11MfuBPfzLw5jenMqbSePObjZMyAVL9JrUYWb58sit9MY7x2V6P9zKJR7rznur1r31NjFv/8Q+NoaHE7dOdg0y/yVZnY1wbJ+wLRyetmX5TMBiMdlb3gJv+rf0YDAYWnr8w4XP5/KZMr6c79pq2GgyaAe+QF5PJhGfQg2fIg9VhnXT8fREp/nPOMXDRRZN/UzJK0U5Zf1M4LMKHmgbNzXSZe/l80x8wDPUz8a5+GtsDkjb2zW9iMptlxb14MZx1loi0t7VhamuTGWNSulKq1tM0DYPBEG07dV7L3U7JryvN/VmzjKS6zHLqT4cfgIO/Reu8DNOS9xd97NHXvf2iH68HIOjC6NoD9ji9+Ih+fLFjhMkEp5wipfKbNpmIJ++zXXv5tt+hQyKbYDKJbn/ysa9YIcalO3caWbMm9bGr/tPRoUW9PrL+1sBgxDdhVmX6k7dfDKBHt0LvA1Azj4Rfaq4DU2tux57D68m/SUnEv/SSht9vIlU8UbVdLuOkaievNyazsWpV7PXZs4W7PHgQXngBLrigsN80PCz/t7TE/SbVDwA83Wh6GKPBCJ6D8pq5DoytpR0jrI0QnMAQHo8aypTrnhvvg/Hkkyb++Ed5/ZprUh97/D0veV9vepPG178Of/qTkbe/PftvTf58roGhrq7YeFmR/pQC+Y57mnMOjO/E4OtJiJRU8p4bDAY5cuQI7e3tKfdf7FheibLx0dFR7rjjDm6//XYOHz7M9ddfzxNPPMFKZWI0gwQYjXDuuWEcjt2sXbsWk8nAX/4CZ58NDz0kclA/+Qk8/rgE1x59VLyE6usl4BMPRWDEFQclwN5kj849X00oBYGRzsA7HA5H+2ypAgKaJtPpoSEYn9B4051vyv6hONjqbay6dlVJjqVakWzgDTECI9eAeDFtp9ZmmzbJvCRVpVQ8nG1OJnom8I/78Qx6pkXwuhgM7BzAZDVR21kb9XFJB+UJlE5GStNgdjvUxMXnWle1Mtw7jK0xkcDY9Fx2OarDh0W26vzzY6+nkpDqOLWDi75+UcnI3ngCMuApXpaqElBB8GIz4ZMJjOR+d+WVcj+75x4JN+TaHS0OCxZH9nHdbDczsH0AzaARDsZkxI9nRD2C0lRf5IN0VU3d3emrmnJBcgUGxFU+lZA4PB4RCoQY2DEAOin9dVKhHPOVQpAXgdHV1TVJb/YLX/hCxs/Y0jlTxaGtrW1SWfrixYu57777ot97SBk4RODxeJiYmKAtF/fJKYCr38XG6zbiHpQKEV3Xcbvd7HLsii4AHc0ONty5IYHEaF7SzPINy2laJBl4hWYCJKMaDbxzRTgMW7emfi+fc6BQTEbEwcckoNW6qhVHS2Unj+r7XP0udF1POflWUBkgRaq75Q9dlxWT0ykpYJs3w5NPCqMyMCDpYOvXww03gNHIkgVB/jq0jIfqz+YdH2xNdJN917sqfPClRzgMg4Pyd2sxPrK+yE4sJTSN9/bDk9fJvoMT4qux7RYwxE3krM1iklsCE9wzzxQC46mn4Prri95dWigD6GXLErNOFVauFAIjk5F3Qf3H2yvPqQy8Sw3Vdu4j4D4Kwy/Csb8nblPCtkuFOXMk86W7WxbgcfYxRWHnTrnvNTZOPv/r1gmB8dxzuUkupIJS24n2x/h+EI99v4D9/yN/l+NcWhrBdRj8I6XbZwacf75c87feSrQi88orM34kJa6+WqRn7r0X/ud/JHvqnHNyLwHPZj6safJ+JvPhSfCPwgs3yfh48jejhFDF4YikgrkzRD9mkBaPPfYYP/3pT/nTn/7EmWeeyWc+8xne+MY3YlaVlTPIGSeeCL/9LVxxBfz85xIciNgBRvG2t00eY9UaobcXRkeF5IiHCsQdz94IqVBKAqPcBt4KisBIbvd0eP6nz2Ots7L08qVF/c7pgpZlLZz/5fMTtN0rZeINcp9bvlzIwocflmqoTDBajNR21DJ2ZIyxw2MlCSpWMx75j0fwT/i57IeXUT+nPuO2yhPoTSl4OjUd+PznYez22OsmmwlLvWWSFVdfPzkhWbZKXTMDA+D3y/rD3mQvaaWa3x2LW4T96aupqgnxlU6FIhSKxYFOOCH1NuedJ2Neb6+s8c48s+CvSwlbow2jxUjIH8I94M4pW326I0o+FTnWlCqWmQopCYzaCIExPkNgZIKrzwW6VNgkG61XO/IiMD73uc+V5SDWrVvHK6+8woIFC6Kv7d69m8WRNJWzzjqLT37ykwmfefTRR1m3bt2Usj+Z4Bvz4R50Y7KaMNnFsDFgCGCrs4lhoieIe9CNb8yXQGC0rW6jbXUsiJuLMVWqTIBkTGcCo1TnQKEYU60DDx8AYP558/P+bLFQ14l3yEvAHSAckMlLqqwGNbEqyyQ8HJZ0oeZIMP1vf4N9+yQy2N8vJMX73gcnnww+n2y/cmW0iiJ6UC0tuG/8CL99HgaOwjtSZMNPdwwPy8+H2OkqCP5IcNVaQgIjMCZBW4MV7A2T3w955P3AWMkIDIgFT8sFRWBEFPgmQSXxlpzAaDpVzmXN/Dw+VCBU25kbwBCp/DA6YuRTidsuHc44A/7wB3j66dIRGPHtlxyHXrtWAnEprKVyhqqIammJvBDfD4wpFprlOpeWSLqlf7h0+8wAVaz6+OOx1846K//S7f37ZYHh88U45q6u3PcTbz6cDNXe3/lOnosY/yB4B4SEnUpjOUdkJeU5mnm7GaTEeeedx5IlS/j85z8fXQ/8UZULpYDNZuMNb3hDpQ5v2uGyy+Dd74bbb08dxP7RjyQLPL7f1tXJfe/YMVk3nHaavK4qysPhMH6Xn/7t/TQvi81H1OI3FzPP+Or0TNtVE5QUhQqMFIJ0FRjlgiKfciEwgr4gu+7ZBcDSyyWhcPzYOONHx6mfU4+zrbraoxSw1lmZfXLiJK+SBAZI/9uxQ2SkMhEYQY8kj1pqLWhGjXAoLMHF41SyPxwKR0nDXANrq9IUDHV1yZzi/BPh97fHzqWu64Q8IQLmQDQuA9CW4zQveX3Q3BzzH+rpEam4UiLoCeJ3+6NVGN4xL36XP3rc1YrGhY0svWIpjYuylBhlwN69Up1tt8OiRakD4RaL3PN+8xuRkcpEYKQ7Z5nOpaZpONocjB8ZZ6J34lVFYBRDPkHp43jxUARGX5+sS6zWWJxvRkIqMyZ6JgCoaa+ZclPufFG8oFkJ8IEPfICbbrqJ0047jfb2drZv385tt93G3/8uGaXnnnsugUCAO+64g7e97W2Mj4/zxS9+kZtvvnmKjzw7THYTFqcFXdexa3YsDkv0Ign6st90cjWmyrSdrk9vAqMU5yAetbNraVjYkHOGkcFgoLW1lYmjE4zsG0EzasxZPye3LyshbI020KSEdPSQmHMaLUaM1smRnqIrMAIB8HhkNet2w913y92hv18igOEwfP/7Mlvr65P/ly+XtNlZs2IOhWecIY80OPtseX76afnKUidaqrabKqJTBUvr64v8bb6IdlopCQwFox1MaRan4dLd/NVk8uWXxciyJoe5XyHtlyuBsX17+n0U1H/qlsmjkjDaoelEMKTIjilh26VDPIGRjEL7Xqb2W7dOnp97Ls8DjcOkCgyFCvWDKJpPA2sr1JY/HXfjRqm8SEa60u10bbdxo8hOFVsCrsyHb7wxJukFsUBD3mXkany0NGXertywx1VgqLSyCmOq73nFYNGiRfj9fn784x/ntL3dbp8hMCJI1e6hEPz97xk+ROqsx2XLEgmM+Ipyz7AH75CXwV2DvHLHK9HPWGsjBEaGgIGj2cHrbnsdf//I36PV6em2S65On2osu2IZrj4XtbNrC95HOgKjXH1WGXmPjcET33wCV6+L0z9yOvVzJ2ezuwekPUw2U7RK/cX/eZEjTx7hlPeewrIrpuHiMU+EwxJ4htwJjGLb7uKLRfbm7rtlPTR7dmJFo7XOiqPZgXvQHY0Z2JvtGEwGgl7539HsmHbZs9kQVUjQcq96+v735fnyy2W98bnPwYIF4j1jNIKrP/Fc6rqO7tfxhr0JyhjrL7IWVCWqadJ+hw4JETZ3rsR59j+4n4A7wMqrC5NAjL8GDEYDNbNr8I35MDvM0QBzNV8D7Se2035ie/YNM0DJR61cKW0ZDqfud1deGSMwbrll8n5S9adkZDqXNe01QmD0TMCJRf2kaQHNKKRNsQR2qeN48WhuFtLC55N+t2BBbD4yU4GRGa5e8bTLh4yrljVGVRAYF198MTfddBPnnnsuBoMBp9PJj3/846gnhqZp/OlPf+K9730vt9xyC6FQiBtvvJFrrrlmio88d+hhHX+fH/Msc0atvYneCTRNjPKMZmPOAbRM2/X2ygRW04S5nm4oxTmIx+q3rGb1W9JEN1PAYDCwaNEiXr7jZfmeU2ZHB8dKwmA0sP5T67HWWdFDMquy1lknsaa6HpuEZzwnfr9sbLXCgQOSmtvfL4TE8LCsYj/2MYm879wpEb8TT5TntrZYcOYd7yj4N61cCQ0NMDICL70kGdalhGq7qcKkbO9CoSowyhagC0umOYCxPEGDzs6YRu2mTbllWRTSfrkSGDt3SrFQKun3KZNgKwSpyIsKIb6qJjleW2jfy9R+p5wizwcOSN8qpF9l7JMhL0zslj5QszD/neeDtnPlUWYUUrqdqu1KXQK+YQM88YQQK699LXzmM/lJUSXArwjeqSYw2uVEhLxSWTMFxzPV97xisFu5HM8gb6Rq90KzHpctE0kblfgUX1FeP6eeuo46DGYDmiGSjOUJ4hqQhbCtzpZSS1lVnU8cm0ioTk+3XXJ1+lRj8euKK5vQ9ZiJdyoCoxx9Np7AsO0dZrx7PG3li7tfCAxHmyMWzI3I1h6vcmHdz3XjG/XRuqqV2tm19PfLfU7TJA8rFxTbduPj8nzkCFx3nfwdX9HobHWy4c4N065iqVio32upsSRIfKXD2JhIWgJ85CMyhn3uczK+BYMyr8jnXBZaJdrRIQSGWkOEg2E2/UhKhpe9YRlGS/4TnFfrNRCPeP8LSN/vLr1UQhY7dsCuXeKDGI9iz6UK9KrM9eMdiy5ZxKJLir83lTqOFw9FKO7dK+PoggWS8Gtvsr8qfEqKgbqOnbNyHzuqZY1RFQQGwI033siNN96Y9v158+bxj3/8o4JHVFqMHh5lvGcc/4SftlXpfTue+q+nGNg+wNn/djZzzpxTEr1otQiZP19sCaYbsp0DkOBoXprZeSAcDrN//37mnjMXPazTsrzYaHThmHu21KR2P9cNpC7rGxoSbgKgvTkAukkulE2b5K7e2yskxcgIXHut1DBPTEhUsK0NTj9dSIrOSDap2Qxf/GJZfo/BIJYYf/mLBLNKTWCotluwYMGUsMUlITBCfghEJkvlqMAACQCO7xOz4rrl5fkOJOD9+99LwDsXAiPf9guFYtJQ6QiMuXPB4ZDCon37Jk9woQACIxyEoefF/8I5b2pkbPSQyBwpaaIK4JRThADq6ZFF27x5sfcK7XuZCIyGBmmvXbtkOHvd6/I/5rQVGABhPwSPr2BNIUHMVG1XjhJwNTe58sr8y8YTUC0VGAYzrPiEeHGYpkZeYKrvecXiZz/7GbfddhuHDx9m/vz53HTTTbzzne+c6sOqeqRq90KzHlWltuqfCqqiPCXGsm8Tn/Ga63bViFBIxrljxyZnzKfDwEAskWxhEjderj4bT2DMjgROQ4FQym1dfUJAxQfuFIGhqjOON+y6dxc9L/Rw+k2nUzu7NiofNWtW6sSWVCim7TZuTJ3/lVzR6Gx1pgyohoNhdv1lF7Udtcdd8FqZB+cq2fbLX8oydsUKqWqBWHLcjh2SeweJ5zJT223YIMkVH/tY4vdkqxJNNvI2O8zisaGD3+XHbinMDyPdNTAdMH5sHLPDnDLhMlckExjp2q6+XuaS998vVU2f+MTkfRVzLhWBoTLXZ5AbyuJ9F4d4AgNg9ZtXs/rNuScqv1ox0RuTkMoV1bLGmH6rm2mK2s5adINOwBNg9PBo2u2iRnGRib3Si86EbHrR01k+ChLPQbp7X02NlI+VCq5+F0N7hxjaO8Tg7kEObj5IwBNgzllzsDfZcfVP7c3LZDXRsrKFpsVNkl4Cclf4xz9w//TXfIxb+Y7tM1hu/nAsYrd3r5AUdXUifv7Od8ZmA6tXi8PZe98LV10lrIKSgSoz1q+X53ht9lIhHA7T399PWBlRpEAoJNmG//d/8hxKvb4rCCUhMFT1hdEiPgflgCFChJVZdihfH4xc2i8ee/fKOGC3SxZGKhgMonYGqX0wcq5gioevH7Z8BTZPkayhHoTRV2BijxiyVwh2O5x0kvydLCOVb9tBjEeF9HrGiuQs1AcjY5/UI2OpVoHcjnAIvH0wcaCsX1NIEDNV25WjBFzJuK1YkftnUsJfJQQGSFVNwyoZr6cAhfS7asHvf/97Pv3pT3PDDTfw29/+lve///3cfPPN/N///d9UH1rVI1W7F5r1qNYKO3ak/8zg7kF6Xuyh58UeBrYPMNY9xnj3OAPbB+h9uTdh26G9QwxsH2Dk4AiP3/I4IwdHGNg+IJ9/uSdjNmw1IOQPMbh7kImeCTZulKnxBRdIxvwFF8j/Gzdm3oeSj5ozZ3IiWbn6bDyBoTK/Q/40BEZkTeNojc0xj3cCI2pQG/ERLMT/otC2y1bRCFLRmGk9svOenWy+fTObfrwpbbtOV6gxIRdZJKVoDPChD0mcQNNgTcRX8aWX0n0uc9upOeLq1XDnnfDPf4oHWCaJS3XtqGtJ07RoPKcQ38149LzYw/2fvp/tG7fjHnBz+MnD9G/P0XF8CvHQvz3EH9/+R4Z2DxW8j1QERrq2U6qSf/5zwV+XFrWza3G0OYryQno1QsXx0pEXUID3XRyUD0Z3d2Gff7XC7DBja7TlTWBUwxqjaiowjncYTAbsHXb8x/y4el0pfQsgdoOL13xUetHvfjeMxnEfdXXwi19k14ue7gQGxM7BRz+amAXa3i6T8507pZjgj3/M7jXQt6WPZ257htqOWs7/j/MnvR+v9wti9OV2u9nl2JWgk1lRjd6IRsfYloNM/PF+7MFxLmkOwMF++NI98J//KXeBJ57Ae8jKOG3sa1sI17eCM3KMb35zZY41TygfjMcfr7xs+MaNk6+pfAxps0EFS1Nme+cKox0WXA/hQPlOTpTAKK9eZCbJoVJAZe8rndR0WLkSXnhBCIyrrkp8b3BQ/FggdxkBvJGAjW3W1FRfaCYw1YFvACb2QU0a9qYMOPNMIROeeqr4IUYRSu3t6U3v162TxWQhPhhutzwgXQVGhMAwVGBq5D4Mmz4Mlno469dl+5pSlW6XugTc45FgAMRk3QpGtUhIzaAofPvb3+ZHP/oRb44bSDo6OvjUpz7FW9/61ik8sumJQrMe1Vph9+70AdRwMBwNmoaDYQhBmMhrWupt9aCOb9yHHtQJEUIP69ib7OjpSqurBBM9E9z38fvoHbHw8SfeVJAHUKUNvCE/AkNJSMVrnR/vBIZ/LGISHalkV0HnSkiHlqKiccmlS9h19y7cfW62b9yelzRytSMfAuO++6Qqt64Obrgh9vqJJ8Kjj6YnMLLhhRfk+YILINfbj7p24hM5zE4z/gl/zNejQAzsGGBg2wA1s2oIB8O8/KuXmX/BfFpXFLPALC90Xcc7GiEKGwqTAHG7Y+OnIjAy4Q1vgA9/GJ58UvI3i1p/J6HztE46T+ss3Q6rHA994SGCniCnfeg0GuY3FLWvDRvg7W+HXyctdwr2vkvaB2QeU2cwGWd8NL1HbbVjpgKjzAh6gvhdfgKuAAajAVu9TUyYD4xGfQzioW5wykRNYcOGWKlpU2SNPndubh3+eCAwQH7rgQOSBaGyIY4ckcmLzSYyRO95j2RjZMuqnzg2kVbDMF7v19Zgw1ZvI+QJYTAYsNZbMVlNUY3ekkKtig4cgL/9TWpiv/lN+OQnZWUE9D29l7FfbGTk2V2SHnLeebF0A4Avf5knL/gct/MvbF92lZQ3OKu77HTdOrBYJOt9377Kfe/GjbLoTL7hqcVotoy6XKCKX4qqwLA0wLxrYcHbij+gVAh5hLjQQ0KS+Ecg6Ip5YpQQJ58sbT0wINUSpUY2/wuFTEbeauHR0iLHmhO8ffJsTS8PWBaEPNJWQRdYWwCDVGC4DlfsEM6IzH9SGXnni1zar5gKDEUoWiwpTOTVudSDchNR57UM/UAOIiL1FRiTaowyQQUx0/FqmiZZwdlKt0u1H4WdO+WW19RUggWmuUH8J6xVsJD3DcKx++DY/VN9JNMOO3bs4PykaN1rX/tadu/ejcdzfEm7VQKZqpczZT3Ony9jpM8n0oCp0LCggdZVrbSuaqVpaRPOdic17TU0LW2iZUXihKdhXgNNS5uo7arltA+eRm1XLU1Lm2hd1Ur9/PpoBny1wj/hR9fhmc2WgjPmq53AUBUYqSSkPIOeqieZ8oWu6yWpwCgUpahoNNlMnPyekwHY9vttURmw4wHNS5tZc/0a5p83P+u23/uePL/rXYnzOiUb9fLLhR2DIjCU91ouSK7AgFhCqt9VHIExuFuq8ZsWN1E/rx6AkYMjRe2z3Ai4A4QDkqmdSvI6F2zbJmNsS0tuSWVz58paMxyGb32rPOoKrxYM7x1mcOfgpKSEQqEEQ9797hBf+tJuHngglLWqKRckExhjR8Z44DMP8M8v/rO4Hc+gajFDYJQJ1jorjmYHQV8Q74gX74gXzaeJHqJBJpF+lz+hDC0UCEUnl6m0YVXw5V//VWRQtmyBgwezH8vxQmCALLTOP1+yIc4/X/5fv1509Y1G+NWvJKM6U4l3dDKRJRtCafTquk7YE2a8ZxyL05LSeDBvvPiiMC6/+AV84xsi1Kjq9bdsEVbm6FFJQz733OhMzLpiMZtXXc/uVW+UkpzLLxcGIA7TyoAYIZ9UUDJXGalcZZ8MBgNdXV2TdPpKUb6dC0pm4l0OmOvEUyPsg8AooEsGun8QAiPyurVZtisRrFaZWAJ8+9vZJ5Xp2i8d8iUwUklIFdR/VAWGPdeSjSKR0HYj8giOSzZ/OCiVGAZrSdsuHRSBsXlzooxfvm0HubXfySfL/e/o0cRFYi6I97+IBvTiz2VwTM5f2B87r2XoB/K9taAZZMAJpJeVLBaFBDFTtV2hwdB0iJePKrpoadmH4PSfQXOJTZQKgfsI7PweHL5rSr6+kH5XLRgdHcVuT9QIt1gs2O12BtTNdAYpka7dVfVyZ1LSaFdX+ooBoxGWLJG/k30wFMw2MxanBYvTgtluxmgxYrQYMdvNWByJ6xeTzYTZbsZkNVHbUYvJKv9bnBaMpgI1IyoI37iPwSEYcqXPaIjPmE+FTARGufpsPgTGef9+Hq//8evpWBuL3tsb7aBJBY3yJDheEHAHpHKIyRUY+RAYhbZdqSoa56yfQ9uaNkL+EC/89wt5HUM1o3FhI6uuXcW8c+dl3G7PHsn30zSRj4pHvIRUqrVeprYLh2VOC4URGMkVGJA95pANw3uGAWha0kT9XCEwxo+Mo4erl1xU44bJZsJkLSx2Ei8fpeaK2fqdun994xv5Sf3NIIZwMIx/XK7ZQqtnkqGqoTZs0Hj3u+1ccIFWsGxUPFJVYPRv7RfyZQYlRbWsMWYkpMoEZ6uTDXduSJmlP3pglMdueQx7gx2DMXYBBNwxfUSzY7IOUl8kyXfFCrEwePxxuPde+OAH0x+H3x+TaTgeCIx0uPxy+PnPpUrlnnsmvx9f4v26c2N6lLquZzWV8gx6MBqM2JvsuRtQ+f0SoenpkUdvr2jT3HKL3IH//neJbre2inH2ypWx0prLLpMflAKOSHbU4M5B/vSOP3Hqv57KnLPmJGwz3QgMEBmpJ58UI+9UpnbxyEf2SQ20ySiHIW0qlITAcHdLVrhtFhhLmKloa4Wz7pQMcIDt34Cx3bD4X6D5NHnNXCfblQgbN8LWrfL3D38oj0ySXenaLx1yJTCU5v727bJQib8Pq/7T3p7z1yZKSFUCyW0Xj/2/gr5HJSO9AkbCCxbIMNbfLxlrSiYs37aD3NrP6ZThcssWqcKIL0DLhpT9Mf5c7v0ZDDwLc6+B2a+JbVPifgAIeWFpEAPqwEhZ5Y/SSTCmK91O13bp9tPWJn05nyyqkvlfVBvskUixp0fIsErIkcWhkH5XTUg1xzJn0wWdQcZ237ABrrwyP+PpZcvkXr1zJ5wWCQYFPanNteNfz2Wb+P91XSfkC2EwGTCYDGk/P5XwT/jxecFP9pLMdBnzu3fLcyYCo9SIJzDMDjNmpzntGsZkNVHXmUjSG0wGTrnxFCy1lrSyx9MVqQKrqu0KITDyRalMbTVN49T3nsq9/3ov++7fR9vqNlpXTp6rKCmmTMoB1jrrtDOK/sEP5PxddtnkvrV6tczt+/tlGZ68Js7Udvv3S7+xWvOboySbeEMsabIYDwzPkAfPkAc0aFzQGCWMQ/4QEz0T1HbUFrzvckLJR1kbCqu+gBiBoQgpyNx2GzdKUmsycpH6ywXP/uBZjj57lLXvX0vXGdN3rpUN0bFCA2tt4e2n4PHEEiJOPtlAR0fpzl0ygaGSwwOuAHpYRzNMgbRzlePwU4d54fYX6Dq9i1Pfe2rOn6uWNcYMgVFGOFud0clAKBRi165dLF26lKZFTZjsJlpXtSaUTkfloxzmlJ2tNxIjmzULrrgiNwJj3z7JcK6pqUxZ7FTibW+Dj3wk0SdEQent33QT7Nomi2Gly5spK0AP63iGPARDQclGiodrArb1yOyor0+em5tFCD4QkIiOzSaR0PZ2mU0Fg2LS8YlPgCnN92ZgNVVJN8iERjNOvk6mK4HxjW9kr8BQsk+5ahDH9ztj3Gq9HIa0qVASAuPAr6HvcVh8I3RdWdwBJcPWGgvM1i4D91EwmKF2UWm/h0LaDh5+OMTmzT2cfHI7559vzBhw8flEBxeyExgLF4pEhscjVWzxht9FVWBUisCAxLaLx8pPi7+Ctw8O3gmL3lPWw9A0IS3uvltkpBSBka7vZUKuBNS6dbLtc8/lR2DEV2AkQJ1L22ypoqlfXpY+MAnmBiEw/MNl/6p8gpiZ2i5+Px/6kAQ5v/rV/BeEqvqpaP+LaoO1GYxWCPlkXHBUVi+5kH5XLdB1nXXr1k3K7BobG+PCCy+cRGSYTCZeLlQf5DhDtnZX1cu5It7I23qdVJS7B90EfakJBmeLrHV847602ziaHdTMrknY10TPBAFXAHuLPboecjQ7ctK+rxT8E36sttwIjHTzBlWBoTKD41GuPhtPYJxxU2Fa18vecHxmvkUDq3GyNoVUYBTadqqi8eqrZQ4VPy/Ot6LR7DAzemiU8e5x7n733dTNmVwtqgKQvvH0BEbFvR0zYHj/MJqmUdNeg8mWeq08MSGJiyCeB8mw22HpUhnDXn55ct/M1HZKPuqEE7L7asZDXTsDA5LHaLHA6jevZtkVy6jtLJxkUPJR9XPro+ejbk4dw3uHGTk4Ur0EhpJpa7ARCuVHoiuoW3y8/0W6tsumrqDiQFdeWbhhdMAVwDPkYfzYeGE7mCaIepfU20pCAGzZIgmDkrcbYvv20t3zVDz92DEJs8X7CPsn/FU1n6gWjB8dx93nznhPSIVqWWPMEBgVgq7rjI6ORnVEk7PmAcx2M8vfuDyt1pyqwGhrkwT9T38aHnpIbuKT9LwjUGzn0qVT4y1bSTz2WGryQkFl1T/1nAnNoKGHdQKuQGYCY6CfJl83ttAYc8aPYBua4Jh9AUdpx7hrO9y/UQiHlhYZlRsa5INOp0Tk6+pSn/h05EUW2BptGEyGaOlzKu3g6UhgnHWWPG/fLhO/VAH/QiYmyf1OodSGtOlQEgLDFzGotaRxNS4V2s4R8+eGNdm3zRP5tl2sysYISAAwm7n6zp3yPQ0Nk+UykmEySYDmlVckkFo8gTFFHhipYLLD8pvg6F+lkqACOOOMGIGhkK7vpcPgYOzcZwtqr1sn6nv5+mBk7Y/LPwp8NL+dFgPlg1EBAgNyD2Jmazu1nwsvFAIjlZdMNpSsAmPiAGz5EjjnwwlfLHJnJYCmSRXGxD6Rk6owgZFvv6sm3Hnnnfh8uS+mbLbq9k6oJErd7orA2Lkzc0W5Qj4Z3vH72nn3Tnbds4s5Z83hpHedlLBdtcA/4ae5CZwNFrTR/DPmh4ZgODLEL1w4+f1y9dl4AiMTRg+PsuOPO2hY0MCyK45PwiIZ9XPrOf/L5yfI7xRCYBTTdukqGmfPFl+HXJMCfGM+jBYj1nordV11kwL+QU8Q14D4Y9jqbCllkIOeYNTbsRr63rPff5ahXUOc8/lz6Do9dbbv//6vXNtLlsBrXpNyE048UQiMl16C17428b1MbVeI/wVIDqPZLDmMPT3ix9C4sDG/naTA0B5ZBzYtiVXq1s+tZ3jvMKOHRplz5uSYUjVAERj7um28Z35uygnJiJeQUkjXdpVQV6hpl4Cbq/f48ZxJBdV2xVTPxEPJR4kiemnveW1tsq4PBqXfdXUZMDvMBNwBfOO+GQIjBZQPcM2s/JQaqmWNMUNgTDFc/S723r8X/4SfhRctZN55ovc4tFduVmoiHwrFskdnzZKE/oULpcLigQfE9yEVjif/i2zINVu+p0fD4jTjH/fjH/dhdw/KyY1UUli3H8QccgI2Og49Q5N7H2GrEaOrHZ+1nrAW0ZJdvgrOP1Wkn1JVTdTXl+7HIdeKb8yHZtLwj0q1jmfYM+lamY4ERnOzBLK2bxcpqVRZ1aWcmKjy7XT7y7V8OxtKQmD4IxqO1jITGM3r5FEG5Np2994rJEQ+lRoK8dn7uZC1K1fKxHj7dnj962OvF9R/Fv0LeHvAUSVlbg0nyMPbD94MbunK1yGVFFX8Nlnkk5QPxlNP5XmccVDSYvPmQW2WZDLlmfPcczECLBekrcCoNLz9cs71kBiFj24HZxyLVqJ2KTdWrZJn1Xa5IhCISaoUTWD4BsA7AKby+73kDEeEwPDkadLyKsdb3vKWqT6EGUQQT2BAYkV5JuS6jdpu7vq5HHjoAN4RL02LyiejVwz8E340Dd58vYUHvp9+u3QZ86r6orMTHI7J75cLORMYB0fZd/8+Wla0TCIw3INuRg6MYK210ry0zHPQCsLitDD75NgkLxiMqRxUUq0gvqLxhhtkHvztb+df0agZNJoWN0X9MwOeOLkijaiRMppIg6VK3EtXOTUVUARnusCjrsP3I33xwx9OL1ywZg389rex4GmuKJTA0DRZOxw6JITY3Ln5fT7tfg0atgYbzUtifVD5YIweKp+HWrGon1uPq3Mp//WTepKXgLlIOvX1yUPTYvPNTKiEuoIiMFQA+HhFtHomRaJsIXjxRXk+6aSS7C4BBoOM24cOSayhqwvMNUJgFOs9c7xCEXDqep5umCEwphCufhf/94b/Y2DbAGhQ21k7aVKhSjrdOAlH5h8tLTKYX3453HabeD5kIzCWLi3f76gWpAs4GgnSRh+z6KWNPk56pY+waxuHFp4r2Tf/9Q3Rn7HZJLJld2DQQ/jdfrb6lxK0LUHvqKexrQlN00SjNxgEuwNaKrPgcvW72HjdRtyDbsaOjBHyiRHfX97/l2hpn6PZwRvv2MCxY86M56NacfbZEkx+/PHUBEYpJyZGI/zrv8IXvjD5vUIMaVPB749VBBUcMNX1WAVGuQmMMiLXtrvqKpmIFFL+m6v8kIIKnCYbeRdEYLSdncfGFYK3H568DnyDEPKm9k8x14KOGICng7VZPCIyBMvXrZN2O3xYFiXZKmBSQQXBc2m/NWsky21wUCTA5s/P7TtKQigWi/h2CU6I1NDuH8K+X8S2KVG7lBtqQZnch7Jh714hMZxOmFNs4qC/CsdH5YPhzsDazmAGVQxFYBw9CuPj2UnlQtG4SLKTRw+NEvQFCzZ6LSdmnzIbs93MrDWzuOt8+Jd/kaqKePzoR+mDcJkMvMuJeAJj/z/3s/+h/XSu65wkC+Xql0CGo3Uyu3Lw0YO8+PMXmXfePM76xFllP+apQl9fzA+t0gkOqqLx8svlOnrqKbj22uL22b+tHz0kE2kll6yj4xn0YGu00bpiqrM4MsM/JkHHdATGgw/KerGmJrNvomR7x2SIcoGuF2bgraACqaqiZ6x7jN6XerE12FKqb+SCE956AqvfslrmhRF0ndlFzeyaklR4lAvNy9v40l/aJpEXkJukk6q+WLhQ5ovZUAl1BecsOZDjncDQDBrOWU6cbaWpyEqswCg9urpiBAaIbJ67zx01Ip9BItT1q67n6YbqmykepzAYDCxcuDBB29c35iPkC2Gtt4qm3qCHxkWNGM1GNIOWUNLZ55ULrKkppsd4xRVCYPzlL5ONaBVeNRUYPh/nLOjntW1SRdFCP/tYyFOcxUL2cTP/hQaYamwss7dheNMKVt1wqXz2k58U3ZmaGrmb9rswPrIR97FxPAYnuqbjNFjxjnijBniV1uj1jflwD7qjRnsq48LWZEMjdq0MHfXhdk9fAuNnPxMj71QoZGKSqt+BTJzuu0/+djrBFVcJms7YNl8MDqpjiCmL5Y3gOIQjmVSWMpNl4RC49ktGc/PpJdWcy+daVERtKmSqssmXwFAyRSUhMKoRgTEJkqtAuXM+mOOqwkIeyVwHyeY32ifvI+SRzwfGMgbKa2qkvPull+CZZ6TvpOt76ZBP+1mtQmI8/7xUYeRKYGSswAj5YfMn5Vys/gIYs+udFwTVLgYr2BtSHEfp2qVQ5Np2qg8dOpRfkFPJRy1fntHyKTdEJfaqaBGvZKNKUYGhqnXSIakSJ99+N4PjA6Vu98ZGkWXo6xNvqVNz93jMC/YmO7YGG94RLyMHRmhZNpXscmp0ruukc5306Q0nCQH7qU+J35PXK8HOQ4fSfz6TgTeUr8/GExiuXhe9L/amDEa5+90AKd9TvnvuAXdJj22q0fNiD65+Fy3LW6ifUx8NNre355e4VMq2O/tsITDSrYHygcFkQDdEot0ahIIhDBgwmA0YjNV9bwgHwwTcsu5JXmcrH4VPf1r+v+GG2HWeCipYumOH5Cla43aXru26u2WuaDQmyhblCrV2UGuJod1DbPrRJtrWtBVMYIAYtsdLjNd11lHXWUWVpylQrHJCKvkoSN92Sl2huzt/qb9cEZWQ6nOh63o0LnS8Yf5585l/3vyS7CscjhEYJ51UnntespG3vcmOd9hLOJQhqPAqhR7Wo/f9fCswqmWNMUNgVAgGg4G2ttT66A0LGhjeO0w4EGZ4zzCOFkeUUVclnfEG3grnnisBg95e0QI/7bTJ+z6uCAyvV36sMszu6xPhy44OuPdejPfdx49OhHvut9FPK8eQWcQh5vItPkkfbfzif2oxvCnpZpOUApqs0euf8CcYAsHUafSa7CZMdhPjR8dF89QZm40FfUH6IgG6urrcshWqCWdHktife07Mle1JcbtVq2Iah6mQamKSrt/df79MmKxWyfx++9ul8uMjH4Fbby2u8kJBZePxSF4AAQAASURBVHs3NxcRpIsG5+rBUObhWg/C8x+Tv9ffKVngJUKuk8p//3fJbsyGVBUdxRAYKhNI1wsgMCYOiFmvc74YQFcbjA6pwPD2gq0NtLjrSAVGjXYwpRkwwrlp0p9xhkxQn3oqRmCku+elQr7tt26dEBibNsE1OVp9ZKzACIyJ7I/BKEb25Uamc17CdikEubZdU5MEfHp6pB+dfnpu+y+Z/wXEKjDKTfDmg8aT4MSvgiO1dnfOiK/WSYekSpx8+90Mjg+Uo92XLZNp9s6d5SMwNE2jcXEjxzYdY3jvcFUSGMlQRPjpp8u89eqr4fbbZf5iTZHXlMnAG8rXZ1VgNxSCIDKpjUoJxcHVJxk8qdY0xyuBsff+vRx69BAn33hyAoGRr3xUKdtu/Xp5fuEFSaoqZg3XfmJ79G+/y89Eb0zv3OK0oOs6Qa8spsz2Csx38kDUR0cjKokF8d54JLx20UXpE846O4WMHR6WOcrJJ8feS9d2Sj5q5UoRZsgX6hpS15SKHwRcgTSfyIxwMIzBVN2kUzoc3jGBFRN+rOjpDF5JX6WficBI1XZGo/hqXH11bE2nUCp1BUeLA82gEQ6E8Qx5cDRXUBdwmuLAAUlyslhkXlGOe14ygXHev59X0v0fT3APuqPjSr7Xb7WsMabniDgNEQqFeOmllwiFQpPeMxgNCSWAqYxR4g28FSyWmCnVvfdO/s6hoVjAZtpISPl8Qsc//zz87W9w552x9265Bb72NVkpPPCARE3ckUn1OefApz/Ngj98i667vsP/dH2eh7hIdokN35zF/OIPdWxIJi/SwNnqpGlRE02Lmmhd3crhicPUz6+PvjalJmcaWGotmJ2TJ539ketkOmaPL1ggxx0ITDbn9XplgqrIi1QJD7o+eWKSqt/pOnzuc/L3Bz4gmvuqTNhuLw15ASX2vyi3gTeA0SpECYCvv7S7jkwqYXLbxU8qc5VYSL6+JyZg/375OxedVJBggtEok6rubnltfDw2pOTch3r/CVu+At1/zvEDFYZ9lhh7hwMw8gqMvCyPiSRvjIk98vrYNtDzX2ideaY8KyPvTPe8ZOh6/gRGvA9GrshYgRGMkAamupJWH2WGDmEvjG2PtcvYDsnc9xyVv4OVNwrMp+0KkZFSBEY2s/acEJWQqiICw9IAjWuKP6b4ah1zw+SHwRqrxIkgn7abwfGDcrS7SnzasaNku0wJ5X2hjGqrDSMHRhg/Nk44KMH/+ISyK6+UgGVfH/zhD6k/n01Cqlx91umM3cr8IUlcSOVzkElCShEYnkHPlJt2lhK+0USPBRVAzZfAKGXbzZ0rQbhQCJ59tujdZcREzwR9r/Qx3p1BpnKK4BuPtE2tNSqRvHGjBKWTs/l7e+X1jRtT70vTYlUYyT4Y6dquUP8LheQKDLVWL1SL/+U7XuZP7/gTu+7dNem9/u39bLtrG4O7MiQ5TCE8f32YDfyRVvoybpduvZWOwMjU7zZsEF+NZCnbrq7Mfhu5wmA00Ly8mdbVrVE57xlkhvK/WLVKVGTKcc9LJjBmkB5Bb5DmZc00LWmKjrG5olrWGDMERoWg6zoeT/oJoK3eFtUhs9ZPTuFJVYEBIiMF4oORDFV90dkpEh9VA5dL6NjnnhP9q8cek9eHhiQF/itfgZ/+VDR+Dh6UiDbAddfBZz8rDme33gqf+UxsRdDWJiKJtbVseJPGgQOSGQois7V/f+JNa+vvtnLPe+9h+x+3pzzE8WPj0eyUbG1XaVgcFlpXtCaYeSmoCozpSGBoWiwD6fHHY6+Hw6Jx+vjjklF2662pNfbr6yUTJx6p2u7uu4UgcTrlEoJYEc7hw6X7PSUhMGyzYcH1MPu1JTmmrLBGGFJvaQkMyG1SqSo10sWPNU3aKrn8VwVP29tzP98WSywjUgVU1YKjtjaP7DdfZGJuq8LqCwAMULNQTl44INUYIa9IJsUj7JfXAxPgH877W5SR96ZNMmTnM2729MjwbzCIrFAuWBfxm3/++cyyY/HIWoEBMQPtSkAPwsgWCIzH2iXsg3BQ3gv7gMqXP+fTdoqEyMfIW/XXklRg+KqwAqPUUJU4yY8U8mLVNl+ZQWVQjnZPNvIuFzrWdbD6utUsuHBBeb+oQDz0+Ye49733MnZE7hHx6zGTSfzUAH74w9Sfz0ZglKvPalqsCsPjl+V+qgqMTBJS9ka7mEAHw9Gg//EA72jEoLZBUuwLrcAoZdtpWqwSPX4NlCuCniB+l3/SI+gJTtoGg7Spd9Q7aZuphqrAsNRJ5UIoJJUX6bzxQHwU0sXT0vlgpGu7YvwvoPQVGEN7hvAMeVJWYey9by8v/fIljj5fArnKMqDR4cNuk0TSVEi3pgOZ16t5ZTKBka3fbdggYaabb5b/166dHAcqBpf8v0u4+OsXU9tRJnOoKsCjX3mUf9z8j5KQY/HyUVCee94MgZE76ufU85pvvYZLvnFJ3p+tljXGjIRUFaF+Xj01s2swWiangKeqwAC49FK5Abz4onRa1YFhCuWjdF1SmeOlnk44QQiGRx+FO+6IbVtbKyPaOeeIUcC73y3psbNmTY4g5lFGYjRKcLKnR85ZclZ9wB1g4tgEnkFPys8/891nGNozxPpPrWfWKdUamJyMvsjCajoSGCCT97vugj//WXTtZ88WwuF3vxPW/o9/hAsvFJ7rscck4NzcDB/+sOg0f/7z8L3vpd9/OBwz7v7oR2P9qWoJDEcHzCvSzS8f2FphfDd4M2fLFIoNGyRjUbXd7NnS9VX/zFT+C/L/175WvIG3wooVkl26bRtcckmB/heeSKeztWfebiphdELDiUJSKIS8idr6zvngORYx/c4/ULFkSaxU/6WXYhPVXKDab/Hi3Ev2V66UiqmxMdEYz3afC4VivjQpKzCmgsDQzNB4YuL5DnrAHxk8LC0iAaYHhOQwWMBUTdkI+VdghMOxjO6SEBi2VvF4sVaZ9MzQ80JONZ0KDXkOTKkQ9oIekr48gxlUAIpMLjeB0bKspWqlo3Rdj5qAWmolEJmcUPYv/wL/+Z/iXfDSS4kmpSMjsbngokUVOug41NXB6Ch4A6krMILeYPT3paosN5gM2BvteIY8uPpd0YD/dIciY2z1xREYpcb69fCb3+RHYFjrrDiaHbgH3SkrbACcLdK2vnEfQV8QPaQTDoYJB0UGRzNoFfd2TAdnq5M116/BZJdrtlgfhTVr5Dm5AiMdiq3AmERgRGSw/C5/3p4Juq4ztFuSNJqWTE7SaJjXAMDowdHCDraMCAfDBF1+Vq2CO55PP26kk3Tat08q4q3W3Kvz42E0yprzv/5L1nalUld4tWB473DJpANVBUa5DLxhMoFx5JkjbN+4ndaVrZz0jpPK98UzmBLMEBhVBA0NkyV1k6SrwGhtFemOJ58UGan3vS/2XlkJDF2XWXFfnxxcfz+8/vVyp/nxj2OjFQgxMWuWEBgrVshsv61NDj7e6MBgyF1EOwdkCkqrjIhUJZ3uATf9W/tBI0HaazqgpBUYeZqHlgL+SHM884wU3MTj5z8X8gJkIhI/Uf3Rj6T64oc/hHe+M71e8+9+JyWp9fXwiU/EXp87V54zGTHmC7VoTRksrVbYIoyOrzwEBkxuu2SoSo1krVujUYLQd98Nb3tbYpVGoQTGypVCiqnga0EEhlcRGFOvCZkRBos8otAS+7fRIVndvsGC/BUMBqnC+NvfREYqHwJDZVnl034mk+gZP/mkVH1ku88ND8cIsaZUyfpTQWCAkBimeDlADYKRIILJAZoR3EeFXLK1Vh2BkW8FxuHDsig1m0sU0Fv12RLspAzofwqO/UM8Z0pBYHj7wNMjknCOecXvbwYzyAI1pu7aJcTjq9EXPugNooflxqHWDSqhTK3HZs+Wecvvfidz0J/8JPZ5VX3R3j41lfDRCgxf6goMk83ENXddg3vAjdmR2gvB3iIEhmfQA2l8PKYTdF2PSUhFFA+qhcBQFRhPPSXz3VyCrsm+jamgiIn4bR74zAN4Bj2cefOZtCxvmTJvx2TUtNew6tqYFmw6f4RkpNsuXkJK+d2lQ1+frDvipafyRbKEVNRDU5fkyXhfj2yY6Jkg4ApgMBuiZEU86ueK7O/ooeojMFSVU0enxh2ftXDDDTGJXpD7yZ13pq+KUPJRK1fKfL8QqPlpd7eQyQ0Nhe0nHY5XE29d1ydVqRWD5AqMckARGN3dMl/xT/gZ2DZQdR4/1YDj4bqdITAqBKPRyPLlyzGmmI2kK92Mfz1dBQbA5ZenJjB2ReQSCyYwdF3SW/v65BEOS7p0OAwf+5gYE4Dc6Zua5L3WVrjgAjjrLPm7pUW0WhRaWysW0VWDWSoCI6pJ6ZpMYBx89CAAratacbQ40HU9bdtVGtmulZJ5YBRgHlosNm6ET386/fuODD5DF14ohMedd8L73y+Tf6Mxsd8Fg/DFL8r2n/iEZIsrKLKruzv3RUM2KL39oiowxveKebetXTwqyg1rpC3LVIGRK1SlxqOP6uzd62bRIgcWi8b558Pvfw/nngsf+lBs+2IIDCiCwIivYqhWAiOUusos4XX1t66LdFFgXLwX0n02DeIJjA9+MP09LxmFtt/atXLve+45IbUyQfXHxkYJnk9CpQmMfNrFYJJ28Q2JzFue7ZIvMs1XkqEqMA4dksLL2iwV9aqvLV1a+KJ0WsAR0crzlKie3doMmkE8WjIgn7abwfGDcrT7ggUyVno8EtRTiR7lgGfYw+CuQexN9pTyqFMFVZ1gMBswWoyEw5MJDBA/td/9Dn79a/jGNyRJBrIbeEN5+6wiMNx+Y9rArclqoq4z/biy8k0rCfqCNC0+PmT6/BP+KCmVXIGR79qp1G13wglyDx0flwBurgE/Z6szJ/IhfpvZp8zmyJNHCPlDUR+aakSubZJuu1WrJFg+OChzfEVSpWo7JR+1ZEn2uUw6qP0PDEhSnsVixGA2EA6ECbjyIzBU9UXDgoaUElKKwBg/Ol51Zt/xJOEb36Txk5/A/ffDjTfCn/4k58eTYSqbzv8Ccu93DQ0iW9zdLXPPs84q7Lcko+elHp7+9tPUzK7h4q9fXJqdVhEC7kCU7C6WwBgZETV4iFVDleOe194u/TwYlPWeIg6Vp84MYnjwsw/iHnRzxkfPoG11frGLalljHM/Lx6qCpmk0JFG/uZR9qpLOTATGFVfAv/0bPPigsNsq0JtTBUY4LKmp/f3ymDVLIgu7dsH3vy+m2vIDxO34nHNkhLj6apmht7VJhDY+EpGriHmZoYLSqUpPM1VgHHjkAADzz5sPpG67SiPXa+XYkAS5iyYw4s1DU+hsE/LEzENLQGBk0jgFufxuukmC2unGzG99S0i8556Dn/1MyLz4tvvVr+SybmmR74rH7Nmy32BQCopKkYVVEgmpnbfBxD444YvQvLb4g8oGFYQvgwdGvjAa4YILNC64ILbg+uY3hTv9+MelWEv5IJSCwND1AggMVX1hrpHqhWqCuU6CnpkqKmwtoAPB8Yj3gj/iv+CCwIhsY23OOaivfDCeeiq/cbPQ9lPtv2lT5u1CIVk4gdwfU5OUGphrwVyf30Hki0LaRQ9Ju4SD4B+Uqow82iVf5NN2TU2ycOjpES+Z007LvL3ymymJfFQ1wx4hMNwl0qY2OsGefYyphvnKDCqPcrS7ySRVUjt2yKOcBMbOu3ey/a7tLHrdouoiMCJrBEuNBU3TGBqSeSIkrsfOPVcCpVu3wi9/KTKnkN3/AsrbZxWBEWiZzTvufmtB+5hz1pwSHtHUQwVWzU5zNOBbaAVGqdvOaBRVhfvuE0mycmYsNy1q4siTRxjaM1S+LykA40fHCfqCONucWJyWqDded3fqNaKmyfupfBRAZEmXLZO5x0svxdo4VdsV638BImtsNosXXE+PjJvn/Ns5GK3GvIPBqm3SkYf2Zjtmh5mAO8BY91jKKo2pgnckMYNfJRFt2CAE0ac/LZ6W73hH6qqYTARGPv1u9Wq5drZuLR2BYbabpSLtOLUaU2OkyW5KKWufD1T1xbx5scTRctzzzGZZixw9Gkm4qJV4mEpCmEEMY0fG8I36ojJ9+aBa1hgzBEaFEAwG2bx5MyeffDKmSLA/17JPZ6szrYQUyKR53jxhOB98UAiNUCg2cV62VIfBoZgnxZo1Qkvfcw/8/e+x2bjBAK95jRAYbW3whjfEKiZaWxPTVtPNFKoIGSWknKlNtUYPjzKybwTNqDFnvewgVdtVGrleK187VwIcJfPAUOahqVCAzEw6FKtxCvKbv/IVWTh+9rMySWpqkrZbufJkvvQlabvPfGZyZo3RKJPaw4flUTUEhj9SAWOtUHZUzWJY9G5wdGXftgJI7nsf/ahcAxs3wjXXSOD6iSdixEO+1WbLlsnEeWhIhsa8CYyo/0UV+uTYWqVCKpsMHMS2Cfthy1ekEmfJv4rkVB5ScSp4vW8fHD0apLs7+7gZb9RXSAUGiGZxMJg6o3/jxkQ5su5u8df57neTStfnv1Ue5TYmK6RdAF7+d5GRWvpBaDypLBJ+Cvne81aulIX61q0VJjCGnoed34OGNbDi4yXYYQkRrcDozq5bkQ25VOtEUA3zlRlUHuVq92XLhLzYuVOWB+WCCtBVWzA1nsCAmJxvY2NicbmmSRXGBz8oMlIf/rC8lguBUc4+qwiMsbHU48++B/fRv7WfOWfNoWPtFOsnVQiOFgcX/OcF0WSwQCBWVZPv3L8cbbd+vRAYjz8u11O5oPrc8N7h8n1JAXjl/17h4MMHOendJ7HijSsSvPGSoW6r6XwUFE48MUZgXHqpvJaq7Yr1v1DHNHu2VKUePSoERqF9a3C3rAHTkbqaplE3t47BHYOMHhytSgJDybTFJ+K+973w5S8LSXH//anvLZkIjHz63apV8I9/5C5zmgtq2kUP0DPkIeQPFR3krzYkk0/FQBEY8ZJs5brndXXFCIzFp0QSlWcIjAQEvcEoQaWu47w+XyVrjJnVTQURCoUmvZZr2WemCgxNgzdcHuaOHwzz3K/6uaJ1hINtZ+Dzwc3G7zDvW7shFEdStLYKgbF0qYiyKj+K5ubYDKChAS6e3mVxmSSk0lVgKPmo2afMxlobk+xJ1XaVRi7XSkEa/hmhg2+g7AapxWqcKnzgA/CLX0gWzc03wzvfqfHEEw386lcaBw/KefnAB1J/ds6cGIFRCiuWogmMcBD8EV1TS4UyEm0tMOeNlfmuHBHf9zRNvFBefFGC5HPmxJTsQCa6kwLTGWC3i0zGvn1ShZF3/6ldDCs/KTr31Qhba25B7vht1t9R8Nc1NEgwe9s2ePZZjfb27OPmoUMwMSHBoHyN+pYujcktbN8+eaGzcaMsepM5ie5uef2uu1JcK5XQBS2kXVrPgqN/h8Ao1JbfDTafe96qVfDQQ7ktEBWBoaqfioJvUB7B8RLsrMSwzRLJp5BPjtFWwI1AVeuM7weDURIKtCSJiBSVONUwX5lB5VGOdldJAeU28lYSNqMHRqtKCiUdgZEqmeztb5es4p074Z//FGnTXAgMKF+fjREYqd/vfamXA/88QG1Hbdogq3/Cz8COAcKhMF2nV0dySzEw2Uy0n9Qe/V+1qclU2Hy91G2nfDCeeKKku52EpiVNrHrLqqqqeIKYT0e8ofiGDfD1r0sCWjy6uoS8yDbnP/FEMUd/+eXE15PbThEYJ59cyJHH0NERIzCKQduqNvSwTvPS9G1UP7deCIwq88Go7axl6RVLqe2snSS919AA73kP3HabmGwnExgeD+zeLX8r2aFk5NrvlMxpKQkMS60Fk81E0BvE1eeirqvC3nllRjL5VAyUJW5yNVk57nldXfDss0JgWM+LVGC4RDJQM0xvz4dSYaJ3ApA5TT5ydvGohjVGlUZdZhCPiQmRhtII024YgC19Eu1ZulREHb/7XT5xcJBVBHH8BfQWE7suWwuYGOpag+HqNUJSKLkn5cS3bFmZHL6rA6oCo7dX6VDG3rPUWnC0ORIIAV3XowTGvPOmn0mmxyO+6lAiAiMcEPmikFf0123t2T9TIIrVOFUwGsVD/vTTRYv41782Eu86ePnlib7x8Zg7V/T0S2XkXTSB4Y9kIhpMlTcWrmLU14vPySc/mUheQJbAdBqsXFkEgWFtgrZzcz72VwPOOEPO5TPPaFx5ZfbtlXzUsmVpvCkywGCQTLlHHhHFw7e+VYoDleF7Olk6lRCfTZauqlC/UgiM0W1TfSSToBaI27Icmq7HtilJBYYvMkZaqlC/22ACe3vEgL27MALD1gqn/w88+24IBeCEfwdHkpxLGStxZjADpQhbbgLDOcuJ2Wkm4AowemiUxoWN2T9UAdR21LLy2pU4mkWbVwW7UyWT1dXBDTdIBcYPfpAfgVEuRAmMXg+PfW0TmkHj7M+cHX3f1e8CwNmWPjlq9PAoj3zpEZyznNOWwHD1u9JWsO9+CRxYaZ7trAqj+tNPlznJ4cOyHimXdJu11sqat6WJDk8hVMZ0PIEBsT53yiniYzh7dmy+lw0qCK6ywVNhZAT27pW/iyUw1Bqie5eLob0+BncNMn50nMZFjdTPicmUZjNOX/P27O2z4o0rWPr6pVUXRG9Z1kLLMpn3xEvvKRvUm26Seft990m1RXwC0vbtUp3d3CyyQMVAzU/VWqMU0DQNZ7uT0QOjTPROVN25LwWc7U5qZuWfoZ+MVBUY5YJKXD5yJJZ0gC4kRnxS8qsZEz1CYDhnVZnsdZ6YITCqEW63zJIbG6GhgZGHXuCL3E2HsQ/H10OgIVobKv109Wraz27j9gdbOehuZeU7m9nxpNzRR0+9EC6c2p8zVWhtFdLC75csiPnzY+/Vzq7lyv9OjK5pmsaF/3khBx89OC0n6Sr4arPFDAQLxsAz4D4i2Z4GKxjyjCzmiWI1TuORSYrq9tvhda9LHdzOJDlWCIomMOKDc5XICldwHQb3YakuqEJj6lBIqixSoZDA9MqV4p1SEIFxvEKZeRfQ7884Q6pknn6avAiMfOWjQCosnn9e/v7pT+XR1SXXR1NTnrJ0L/876GFY+mGwV6EkWF0k4j+xF0J+MBaWOVMOqGqKbBlufX1iuaVpMn0pGv4qJjBAfDDcR8HdDY0Frt58faBZwNkObedV9l4wg1c9KlWBoWkajYsa6Xu5j6G9Q1VDYDTMb6BhfkP0/0wVGCDJFT/8Ifz5zxKEU9tPNYExPhbmyP4jGMyJEXpXnxAYjlZH2n04WuQ9z6AHXdfRptkY5Op3sfG6jbgH3YBIaIT8IUxWE0arkZEReBMODrRuAKY+qON0SgBdSaSW03umGuEdjWR/JxEYan5x9tmSrJIPVPB0505JfLKlUMZRmeLz5kngvBh0dIADFwM/2cjvf+fG1evCP+HH3mxPkOVxNDvYcOeGnJQ40mE6BM/VONjQANZIsy5YIGvxu+6Cb39b1g0KqlLmhBOKn/Ko+WlPjxApTSWaLta01wiBEQkIH0+Yc9ackngfBQKxNV45/XwUOiPKrUeOgMFkwFpnxWAyEPQEZwiMCFy9cs8vRD6qmlAFuQavDhiNRtasWRNzbXe74cABoZgB/vY3+MY3JK34Yx+DW26JRmb6fXXsYDkPtVyL9rGbpI7yQx+Sz1kscO21WF5zPnNet4p+2rj3b8bcDLyPc6igN2QOZMXD2eZk5dUrMdli3N6ktqtSxAdfM97wvf0wvjf1Y2QLvPxl2Hu7BPNMNdCwWoxtvb3gKZEhaRKUxilMPvZcNU4hlnWdCTfdJNslo5QEhsslFTEQyzbJG1H/iwqXd+/9b9j6dRjaXNnvTYFUfS8fv5RcoCa3L7wgGViQB4HR+wgMPAtBd44fmAY4+g944i2w6wcFffzMM+X56ac1tm07mcceM6bsbwqF+l8oeaiJpLWDqsL52c9y28+xY8hFM7oVhl+q3gCxbRas/BSc9pOyE8r53vNUhtuhQyLnlQ5KPmrhwvSVcHlBERiV8gjKFeoe234RrP4C1C5NvM96+3Pf11CEoWs6Nadrc7rMV2ZQWpSr3dUa4vBhmdeUE9XqgxGPbATG6tVi6B0KwbvfLa81NEhQOh3K2WejBIZL9h0OhNEjWUJ6WBcjWsgYQLU32kGDcDAc1c6eTvCN+XAPujFZTdgabIRDYbzDXnRdx9ZgI6ibcOCmozn/31autlu/Xp4ff7yku50E/4Sf7me7OfxkiTK3SgD/WOoKjGKSXTo6hJQIhWJVoMltVwoD7/jvs+IjMCbXnTKMN9nlGrQ12DBZTbgH3WkrgyZ6Jgh4Ainfmw5w9bnwjnjRw3paGfSbb5bnO+4QgkEhk/8F5NfvamtjJGBJfTAi1QnHI4FRKuzcKUnEtbWJScTlGjeTY34b7tjAVb+8KmOF4asNxVZgVMsaY6YCo1IIh7H+6lci+TQwEFsJfOUrEuHUdUnVXrFC6uXa26Mz5EOWxfyWxZw2D8ggu3DFFfDHP4o3t5q0vpoJDJCg9L59xQelLZbqyXZNB0VgZDSh8/bDk9eJJncyQj4hKdCgbrkEhWzt4sUQGpfMXwxgrpVtSwyViRFvuAu5a5xCcWbgpSQwVPWF1Zp54ZoRvikiMFTVha+vst+bBsl9r1R+KQqKwHj2WXm2WiXgkBN2/wiCLlj3QzClz2CcVjDahJDx9mTfNgV27JA4q9er8Z73yAJUVUWk6sOFLEqzyUMB3HlnbvuaPRsI+6SqAapXrk3ToC2HErQSIZ97XlOTTFl6eoSkSGfkXVL5KKhOCalM91gFa7MYueci/TS0SZ6bTs35EKbDfGUGpUc52r25WR6Dg7BrV/HSKplQjabCrj4X4VAYe6Mdk82UlcAAWLsWHn1UqhBBEiPmz8/sz1WuPquqsUddRojEG8KBMEaLEc+QBz2koxk17E3pGWWDyYC90Y5nyIN7wF0SY9epgMluwuK0YDAYMJgMUQ1wvw4QpK3AwstytN3ZZ8v1Um4Co397P4/+56PUzakrScZ1sQgFQgS9ojWUrgJDJUzkA00TGal//lMkbRRJEd92pTDwVlBJUIGAXHdmpxnfqA+D0ZCgO6+M5FPhqVufYmDHAOf82zl0nZFZFWLv/XsZ3DXI8quWU9dZHXPYR7/6KCP7Rjjvi+fR2yuBieRx84wz4KyzRL75+9+XkBhkJzAgv363apUk2GzdmpuSQy5oXNhI6+rWmeB4Bij5qDVrmCTPV45xM9+k5VcjHK0Ompc1J1SW5otqWGPMVGBUCCFd59Du3YTb2+GSS+Bf/gU+9zmRiQK47DJJ17niCli3TqKpkQskk4F3PC67TJ6ffx6eekr+nqqy5WpBpqD0I19+hHveew/D+4fpfaWXR778CIefmrxhKBRi06ZNVWFakwk5yd8ExiSwYrCCuSHpUSdVF4Rh6YdEQijsg8CIPAOE/eA5Jv+nMA8tFhs2SGHSP/8pAch//hP278/dz6CY4HY5CIyWliISuutXwoLrobVyQUsgRmDkkyVcJqTqe6XyS1FQGt/qK7JWMCkEJoS8gKqU2ioY9ojgrCd/AmPjRrj22vSm2Rs3xl4LheDBB2MERj5B7WxEpUKmOZamSZ8/5xxkXASRZTLMlBkXcs/LRUZKVWCUjMCoRgmpjPfYBnndNxi75jLB0yvyU5oBGk/K6euny3xlBqVFOdu9UjJSbavbOPPmMznjY2eU94vywOZfbObe997L3vtFHD8bgbFxo8ihJCPVPVChnG0X9cCYiGVLhvzyPcr/wt5sz2pwam8RgsM9MP2rTUNB+f3KKN4XyV1oK6BaulxtpyowXnkl5m1YDijScOzIWJQ4mEoo/wvNoGF2xCpNR0djc75CCAyIyUipoGpy25XKwBtiiYSBSAGFutbCwXBOnw+HwkLk6lA3J/s6e/+D+9n7dyExqgWqWstab80Yx1JVGD/6USy3NxuBkW+/UwlSpazAWHDhAi7++sUsu+L4yxR+/P89zj8+/g/6thaXyJjJwLsc42Y8gZEqwW0G4pnzmm+9hgUXLCjo89WyxpghMCqI3quvRr/hBrj0UknRmTsXTNmLYHLJ+AHRylQBG2Vue+21qSfMrxZkYmNdfS4mjk3gG/Vx4J8HOPrcUY49n2MEvAqRl36/0Q4mZ+LD2gK1C8UktHmtZIie/fvYY8WnJAu06yr5P9cM0jxhNEp1xFvfKs/5VKkVE9xWBEZPj5Q8FoOi/S9ACKR510LrWcUdTL6IVmBMPYGRCsovJR3JkBCYzgG1tbG2hzzko1SFiqUejMdR0NseOQG+wVhVQg7IpSpCybdt3CgZqRdfHDP2u/DC3O9VuRKVH/iAXA9ZZelUMNlcV70SUiCVb4f/CNu+ESGbqwe5GHmXlMDQdXB0yvVa6Sq1XGC0S1VWYBi8x8AUueca89DOUvJR9SvkszOYwRSgUkbe9kY788+fXzUZxCASOxAzBM20HsvnHlgpKAJjdNwQJSkUgeEZishH5ZBBrHwwjgsCwye/32iRxYUvkp9VaAVGOTB7tkgt6nosIbEcsDfapfpGh+H9U1/5ZDAbWHPDGlZeuzLBa0UFnru6Cvd4VASG8leIh9st1cNQ2gqMYITAiF5rYz7Coexzt7HDY+LTYjdR21Gbdfv6eXJSRg+Vke3KA7quRwkMe6M947h55ZVyrQ8NwS9/KetnJSdVKFmVDLWfUhIYxzNG9o8wtHsIiiQBKmngDTHi0OuV62nbH7Zx/6fv58AjBypzADOoGGYIjGmAXCowlB54cuD12LH0WT+vBmTKqlcLEu+IN6r/Oe+8eZU6tJLjaMSeIi8DYv8g+EdAj6yoTHWS7QlCTtQuij3mvFGCKBP7hOQoA3lRLIoJbre2inyQrku2XDEoCYExVbBG2tVbHRJSySiVX0o84gOqJlOOAQZVoWBrz/2LpgNMtRJshYikXG7IVb7tK1+Re1LytpkyVJOR6xh35ZUiS6eM3RS6uuT1aGWXIjBM2ReKUwrNBAfuhL7HwHVoqo8mAflUYKhti4KmwYlfhdN/Wn0eGFFoUkXhG4pVa+WDCcn6zkc+agYzKDUqVYFRjciHwCi1P1cpEK3AGIsFURWBMXf9XK656xrWf2p91v0cLwRGKBiKEhgqw98fITBmVVkh7dlny/MTT5T3exoXiRJENXjPWGutrLpmFWvetibh9WLkoxTWRHb50kuTScaXXxZL0vb2PNfQaaACqcGQ7FdJ0IUDYca7MxiFRaDaomlxUwKRkw71c6uLwAi4AtFqE2td5goMo1GIXYBbbxUSA6QtHCVS5i0ngREKhHIipaYT4qtnQNbEDz8M//d/8pzLGlnX01dglAs2W8x39MgR8XsY2DbA+NHsfe7VAD2sHzfX6gyBMQ2QrQKjGrN+qgWZCAyzUyavBx89SMAVwN5sp21Vlc1g80BeFRgKroMwvgvC3uzb1i4R0iLkheEXCjrGcqOY4LYiN6B4GamSEBgjW2DigHiQVBLRCowBCFfnoKH8UrIGpnPAxo2iv6rw2GNSHZA1kK4InuNJPgqkI9gig0gePhi5VkV86UvF36vyISpzkqWLr8CoZhiM4k8EMJqh1GEKkG2BODoaI9lVRverApaITGghnjLLPiym7e0Xl/aYZjCDPFBJAmP86Dg7/rSD/Q/tL/+X5YB4AkPXM6/HSu3PVQqkJDACsRusyWoSk+4smHfuPM74+BksuLAw2YlqQcAlKfEmmwmDMSIhVYUVGFA5I29FYFST90wyijHwVli5UtZ+Q0OTk9RK6X8B4hukBDb8ftA0LVolEfKH0LOktg/uFikoJfGVDVEC42B1EBjeUYkpmB1mjBZj1jjWu94lZMXevfCJT8hrPT05rsVygEpS6+uLrc9LgX/c/A9+96bfMbyvevtOvggHw9H7nq3BFq2Yv+ACuO46ec6lXXp6oL9fvC+K6bf5Il55xVorBIySpnu1Y3DXIL970+944LMPTPWhFI0ZE+8KwWg0snbt2oJc27NVYBRjXFwwvP2ZNZzNdVWRoZ9KQsrV78I35iPoDeJ3+Tnw8AHZ9qwuhvcPY62z4myNlVQX03aVRN4Ehh6Q4Lim5SZroWnQuh4O/wn6n4CW6tEpjkcxZuBz5sCePaUjMFrz7QKqX+k6bP6ESPic+BWwRWZ9lehXlkYJlIZDojE/hf04U9/bsEEy7B97TK792bMlYJ1PN1WVa+k8GzKSIao6wVZlq95SwN4ulVae3CMtuY47mXRJc71XKaLy6qtlWIrfZyqiUsnSpf/iEJhrwVygNkElUb8Shl+EsW3QeVlZvqKQe56qqjh0CMbHRZotHqr6oqOjcAmIaQn7bCGD/SNC/ucLR0dem0+X+coMSotytns8gaHr5VXZG9w1yOb/3kzLipaqCJarwIe11sroaKzKPVUgrlAJ03K2XTyBceUvrsRgNuSU0Z2MlmUttCybjiXFMQQ9QXzjPsLBMAazAb/LTzgMekTHspAKjHK2narAeOYZ8VIwmzNvXyhUkHxob+4VGGodnQ7J6+hc4R504xvz4Wh2JJh4l6ICw2aT5ImtW6UKo7Mz1nal9L8AGSPbWoFj4BkPYrOJD0bDwgbMdjMBV4CgJ31yWrQCY0l+BIar10XQG8Rkm9rwnndE5jrWBmnDbHGs++4TGa9kpFuL5dvvnE5YsECSl7ZuhfPOy/mnZITBZABdMv2bl1ShlGkBUOSTZtS49z4L11xT2BpZVV8sWwb2pBBTOcfNri7YudnFgc0+2pr9+F1+Rg6MJIxvamwpxxhWzZjomUAPFacLVi1rjBkCo4Lw+/3Yk3txDsg28Fc868fbD09eJxrp6WBtLptHQj5QGfW9vZJlExxzsfG6jbgH3bgH3NEyOYCJ3gm2/X4bjmYHG+7ckDBwFdp2lUTeBEZQ9G/FtDbHYqyW9dB9b9XprydDBbcffVTn4EE/8+ZZOPdcLWtwW10vh4pUZ+mP2EfkVYER36/0MExEMhCf+0BM1qsS/UozwOL3SUDXVFO+78kRmfpe1sB0BmSrXNM0qQa48so0pMjxTGDUrYCwPy9vAVUV0d2d+pxqGjQ2SvZbNuRyryqGqJyE9ovkMR1c3+ojTEGZKzDyvec1N0tQr7dXyIrTTkt8v6TyUQA9D8L+/4XWs2Hxv5Rop2WA0S6ksD/ihWHNMUpWRKR4OsxXZlB6lKvdFy6Ue6DLJeO7SgwqB6LZ4PuG0cN6VnPpckIP6wTckrFvqbFwMHLLr62dHJCB3O6BXV2pJUzL1XaKwPD7Iagbscadzme//yx6WGflNSupnV3l8olFwFpnxdHswD3oxmAyiOeHQYKsfj+YAY/moG1uYV5m5Wq75ctlzjQ8DJs3T76nlgpNiyJG3ofEd0FV6qSDqz+2jk6HVOvoXLDv/n28cscrLHrdIk77YOwHl4LAAJGR2rpVJKMuuyzWdqWuwABo6rDiPubA53LjNcfICiVhBkwiakAy4Ef2j8g+cqzAsNXbsNZb8Y36GD08OuXBdEVg2OptQG7eQamQaS2Wb79btUoIjC1bSkdg1MyqYWDbAK7eAiRCqxSq7Sx1Nj56k1bwGjmb/0W5xs05zS7exEb6v+/mqRof7n43/dv72fP3PdFtVGWGbzw9gVHoGFbNmOidAKCmvbjYTjWsMWYkpCqEUCjEyy+/XJBre7bSu2KMiwtCYEyCrAYrmBsmPwxWeT9ThUaF0NwsWRcgiwrfmA/3oBuT1YSl1oLBZMBgMmB2mnHOcmKymqIZIArFtF2l4PfHsv5zaueQRwIqehA0o+hzB13yeibULYOzfg0rP1n0MZcbRiOcc06I5cs3c845oZwy86dUQiq+XxkdYDCBwQaWpsr3q47XSbWNaWpvUOXse0XrVS+4XvpB40klP7Ypx5yr4IQvyjWQI3KRb0u3SElGrveqnOSh8kE1G3gr1C0TktHbD94S1sLHodB+l0lGSpl7l8TAG+T3+4YKq2qoBEKe2H3V3CD3Wk8PBHLU4t38Sdj6NfHQyOdrp8F8ZQalRznb3WIREgPKLyNV11mHyWYi5Asx1j21awi/yx81MbXUWLKuxQqVMC1n29XExSnGkk7noccPse/+fVGt+kwIB8Mcff4oe/6xB306EP1xcLY62XDnBq75/TVc+4dreeu9b+Wtd7+Va35/DSu/eA2/4xqe6dpATQ5m5skoZ9sZDDEZqXL6YNib7Zz1ybO49PuXYjBnDwvFr6NtDbZJj1Tr6FyhPhMf1B8cjJk6F5sAoYKpL70UazuPJxSVqColgdEy18kf2ID9hmu45veJjytuv4IVb1rBG37+hkkB0nAozMnvPplFr1uUV6BRSVRN9EyU7kcUiJpZNSx9w1LmrJdFdaZE3ELWYoX0u3L4YKj2qYZzXiooAmNowlrUGjmT/0U5x82OJh8O3PhCJmz1NgwmA0azMWF8cg24cA24yjKGVTPUdVozq3ACo1rWGDMVGFWOYFBu3pC+AqOYrJ+iYLSLqXMqhKuj06vfvmeP3CAbIpr5JrsJa9iKxyQB+5r2GqxOK378BH0V9hwoAdTCymQS0iYtzHWSVe0bFAIjHJRs/8BIbBtrc3oteE1L3+bHAebOlecp9cAw2kXSRjMJgRB/vqukXx0PKLpyrWaBPGYQRbaqiCuvhJ/9rLT3qmKqcKYljDaoWQjje0RGynbuVB9RFKtWwUMPxciKeKgKjJIRGP5IKY+lygy84++x8eO1wSxVj74+qFua2W/F2wdjO4WoWpYj6zeDGZQRy5fD7t1CYFx0Ufm+RzNoNCxoYGD7AEN7hqifM3V6c5pBY+U1Kwl6gxhMhqwEBpS4MrAEMBqFxJiYgJfueAWbb5QVG1ZQ21Eb9YPINcP0kS89Ajp0ntaZk29GNcHZ6kz5O0dehGFgeRmriorB+vVw773ig/Gxj5XnOzRNY9658/L+nMluwuK0pHyv0HV0KgJDBZznz08k5ApBPIERv/9AQKpd5uV/GtKiowPcOOkNOGlaFHtd13X+/tG/M7J/hPq59Zx4fWKKuslqYunlS/P+vjM+egaWGkvUnH4q0bS4KVo94nbL+ANT6x00Q2DkCB1qZtcwOJpbZ0vXLtkqMMqF9nY4DHhDJiy1RpH50oiOVbquwyiggdFmjPUXDTRimQfTMRaYDapSqNgKjGrADIFR5VBSNAZD+sB0vnrgJUdgBIJu0Xqm+jJY430NVseZ/jrbnFJKDFkNtaod6gbS3i7XSlrYWkWCKDAG226B8b0iv9EcV5ucq8+Ctz/il3D8DCNVY+Idjggta6kXB2WHbxDGdoHJAY0Vnn1UCBWvXJuOCIyLjFgelQlKvu3hh0M88cQ+1q9fyPnnG6P3nym9V6XDzu+JJNj8t0F9qSLsZUT9SnAdyCzjOAVQ2ZGpFohlIzCsVUZgxN9j4zG6BXofgY7LZEzNdI8d3CTPdcuP64SBGUwfLFsG99xTGSPvpsVNDGwfYHjvMAsumLokAYvTwok3xOY/Kos4E4EBpfHnKiXq6iSA2PtyL4b+fuaunxuVCbLUWhL08kOh1MdtMBmwN9rxDHlwD7inHYEB0L+9n8NPHKb9pHY61oq30NGj8l5HflZDFYPywXj88fL7zxQCv9vP0K4hambXFJXVqxAlMGpjBEYpDLwV1qyR5127wBMRHNi8WU7qKaeU9vyqa0pdYwqapnHCdSfw2FcfY8fGHSy8eGFJJNycBVQQVQJq3LRaJ3ujQeXWYur62bq1dH3JOUvO+fFEYHSs7aBjbQcPPwz8Lvv2qdrF7ZY+BlNAYESOx+uLeJQYSPB9Gtw5iH/cj46Oq8cl2wBmp5nWFa1TKltZbkQrMI4DAmNGQqqCKMbAu6Ul8+RXZf10dia+3tWVxYi2FBjfB+4jeRm+VhJKrzdTUFrLQrxMtVlNNuTlf2FrlQzewLgER1rOhNpFsUcu5MWWr8LT7xYz2SpHPm1XHQSGDr4Ic2ksTJO3aAy9IPIlhzdOzffHoVx9T1WupZvEappcDymrAbx9cOQeGH65LMc25dB1ePLt8EQWr6M0MBrhvPN0Lr10hPPO0xPuXVN6r0qHsZ0w/NL0qXCa9xZY/1uY88ayfUUh/S5dhpvHI9JeUEIPDF+VVmCA3EPj76m1i6DrSjj1Vph9cfZ77NDz8tx0akFfX+3zlRmUAW43Fo9H9ETLIPETb+RdbigfjHxMhSuBXCowFFRl4FvfKs/ZumQ5+6zywQiE5DtCgRCuPsnEdLQ6ottt3ChZ7hdcANddJ8/z58vr8du6B9J7H1Qzjr1wjJ1/3smhx2Mmd6UgMMrZdmvXioRbXx/s3Vu2r8E35mPHn3fw0q9eyr5xHIZ2DRHyhxg9OFqy44DUFRjF+l+ArJFbWiAclv0ajcYogVEqA+/474LUGeqdp3fSfnI74WCYF372QsJ7h588zMiBEfTw9E2sdPW58Ax7CIfCCeNmqvVWoWuxfPvd8uWS4Dk4GIutFQsVCHb3uwmHqtsbNF8Us0beskX6WFubJNamQrnGTfV9Pq9UiXWu7WTWCdlv2gFXIKMnxnRHOBiO3rsV8VYoqmGNcfykTlc5TCYT69aty/tzuWb8wBRl/YQ8ou0M4OkG89SVe6eDCkpn0vLLhELbrpLI28Ab4KRbwH0IHJ3Zt02GNRKZ738Cmtfm//kKId+2U9fK0JAYVjoLGON1vUgCI+iB4IR4k9jT3PnLDRVg85Zollcgytn3iqpcG9sJe34qmfCNa8pyfFMKTRMfFkbB2wO2/C/kTG1XbRmq0Wz5TLI+1QRzeQ1XC+13ipw4dAjGx2PZdjt3Sv9qaoLWHPjxnFCtElLFIhyAkQgxWsC9dTrMV2ZQepieeopTNm6E3/xGojR2u6QUv/3tMpn5n/+R1+x2cDjk+aKLZNA9ckSiDep1u31SKa8iMHbsKP9vUdIjowdG0XU9IXuykvCN+/BP+LHWWbE4s3tgFIpy99mokXfIiBUxEXZ7IoGMiKzSxo0yF0rmvrq75fW77oLWZqm6mK4ExtAeuWfEGyOrtVOhBEa5285mExLjySelCmPx4vJ8T9AbZPPtmzGYDKx+y2qM5uyTsXAwTMgf00EvRV8tN4GhaZIR/uCDsHWrife8Z13Um62U/heQvgJDjkPj1H89lb996G8cfe4o3c9107muk5A/xBPfeAI9pKf0x8gEPazzwu0vMHJwhHM/d+6USkk9+a0nGdg+wPrPrKdvSLSZ08mgF7IWK6Tf2e3i5bRnj1xTpRjH7U122ta04WhxEPQG00qqTUfEt0s6pFsjx8tHpRoSyjlutkfaNRSGYFDDnBTpbl7SLGbWmlQtmR1mxg6PEXAHynI81YKgN8jcc+biHnBja7AVvJ9qWWPMEBgVgq7rjI6OUl9fn9cNXk2Y0w38yai4HngwzpBS12Fib9XpwhebVV9o21USeRMYmgY18+VRCFrXQ/e9MPg0hD9YtTJS+bZdfb0E3cbH5XpZvjz/7xwdlTJ8KJDAMDmgfhWEfGLiPRWwRgYcX9+U1q2Xu+8VrFftjQzMthJHMqoJ9napqvP2APnX7mdru6rxrtB1CEYIDNM0ITDiUYb+WWi/a26WRWFvr0hGnRZRJoyXjyrJoeq6eDhB9UlIZYO3Dw7/UaogZ18y+f3RrWJMbm0CZ/5zqekwX5lB6aGfcgrjTie1JhOazydlT4otVBOSoSF53e2W54svltfvuAP27Uvc4bveBWecAZs2wf33c1LQznux4z1ox/ePuVhfe77s95lnYqSHerS0ZNEyzYy6rjou+dYlNC5onNJr+NBjh9j0o010ndnFOf92TtkIjHL32XgCA6QCwzMk+jnONiehkMyBUhXuqNvLTTfBxs9LMHU6Ehi6rjO0O0JgLIndM4qtwKjEeHv22UJgPPEEvPOdZfkKHK0OLLUW/ON+Rg+OJpA86aCuIYWgL4jZVlzQPJnA0PXSSkiByEg9+CC89JLO4OAoL75YD2hlIzDSeQTUddax9A1L2bFxBy/87AXaT2xneP8wekjHWm/F0eJI/cE00Awah584jGfIw+jhUVqWFaphXDy8o2IEbau30RuZ/5XSO6jQfrdqVYzAuPDCnD+WFpqmcdFXy2gKNQV4+jtPM3polBNvOJENG9q56y64/nqZNsTjXe9Kv0bOZOAN5R037Q4wGoAweD2T8700o4ZmlO80GA0YTUYa5jcc9/NlS42F9Z9cX/R+qmWNUZ1Rx+MQoVCIHTt2sHbtWkym3E+7qsDIlcCoKEIekXHQg2BpETLD3CCB1ypCKgmpoCe1OU+q1wttu0qi2CyivFG/EiwN4B+RbNGmEs/8SoRC2m7uXJncFEpgKN+a2lrR/MwbIY8YeRssEHQlvl4pqAqbkF+y0y1TU1lVib5XUDXAq4LAmA1sLlgacDqMmwCE3BCOBPjKXNlQUvT+UyTems+ABW8r6a6LabtVq4TA2LZtMoFRMvmokFfuQf4hmXNMJww8I+S/fRbMuhAMSQONko9qLEyQe9r0uxmUFKHGRraZTKnbva4OPvjB9B9+73sla8PtjpEbCxfKe7W10NlJjdtDk80D3iF6XzQz97XItr/85eT9ffvbUs3x4x+L7o0iNmw2qfpYs0YmWC++mEh8NDbCggUYjAZaZltACwNTJ1XgnxAvMkuNZNWWi8Aod59VBIYvGCEw/CH84/LbHK0OHnssc4W6rktzHejNrQLD1e+KBqJTwVpnzSuzvBTwDHrwjfrQDBqNCxqjrxdLYFRivF0fiTk9/nhZdg9IILZxUSO9L/YytGcoJwJD13U0k0bIG8JabyXgCqCH9LTr61z2t/otq/GN+aIZwn19IvljMBS2HkuFeCPv++47iMdzIjU1sGRJafavoBIKBwbA50u9Hlz9ltXs/ftehvYM8cJ/v4DBbMDv8tOwoIHhfZKkkU9/qZtbJwTGoaklMHwj0v9tjbac41j5rMUK7XerVsGf/1xaI+9SoJrGzOH9w4zsG4lKYm3YAN/7Hjz8MHzgA3Idf/vb4ok1MQE1KewUshl4l3vcNFvA5A3iGgFrUi5F/PiUTywwE6qp/cqNalljzKxuqhzlmjAXBXMdWJtFG93kBINZ5G5MEYHDsE/erxI5jngJKWudFUezA/egm6Av9QDlaHYklK9OB+RdgdHzoMgUNZ8WCVTmCc0ArWdB91+h//GqJTAKwZw5MQKjEBQsH9X3mMj2hNzptfgr1a+MFjFo9w+LH8cUERiVQt7VAEpay1aNzHKJYIvIl3l6pvY4yg0lH2W0Tp3nTCEI+WHiAJiqi3RZuRIeeihxgbhtmzyXzMDbZIeTvl6inVUYs18DB38Dnl4YeALazk183zFHjOSbp75EewavEjQ2yiMVli2DZcvQgId/CU8/DacshLkg5MYPfwheb4z48HiEjABYt04mVOp1rxfUgre3VyKyHo9E90AiiJ/4BASD8MlPymsmU4zguPlmaGiABx6QCb3NFntv2TKYN08iKn19ie9ZrQWRgZUiMMoNRWB4AzEC47QPncYp/3IK6PDiH3Pbz2jQgQMhA9LB1e9i43UbcQ+mJzkczQ423LmhogGdwd3i5VU/rz5qYA7Vb+INcNZZ8rxjh6wvCvPWy46mxU1CYGTxnolfR9fMqgEd0ESiJOiVdXUh62hN01h5dWKWg5pHLFoUG1aKhQqqvvwy7NzpjL5WRNFYSjQ3g9kMgQD09MjwlAz/hJ+hvUO4+lw8/5PncQ+48Y/7Gd43HPVqyae/NMxroPfF3pJ5khSCkD8UleOx1dsK8g4qF9L5tBWLcDAsElI1+UtIVduY6RuNkE/1MQUIFQ95y1ukMPPuuyU34bvfhc99LvHz4XCMwEhXgVFOWOusaE4HZq8bz3AQb4p+7WyR8+gb9yXEAvWwTjgYxmgx5jyGVVv7pUPAHcBkMx03JuUzBEaVoyorMGytcNadscBPKmgmME6R/E0SFIHR3w/GWicb7txw3DGlahKeM4Fx9G+i429tKYzAAGhZLwTGwNOw5ANVKyOVL4qVHCuIwBh+EQ7/QciJU24VoiIVzHW5mayXArY2ITC8fVBbJuHd6YpXQwWGIjC8xzuBEZFBrBLCPWfURxb64zshHKya8TfVAjFeQupVD6MVOq+AA3fAobug9ZzE4Ors18hjBjOoMixbJgRGgpG30ShmYakMw07NYEK/dq08QCIeXm9M6krTmLj6Bg7dvxNjwM+yC+cmEiMejyyO4okRo1EihDt2wM9+lvhdXV3whS/I31//umwb7wfy+teLfuju3TAyEn1PP3IEY9B7fBEYBqK+BSar3DNyXTfMPaWVxeefQW1HetLcN+bDPejGZDVhsk++JwU9QdyDbnxjvoqus6L+F3HyUR4PDEeUCPPyD6wwWlqk+mDHDpGSesMbyvM9TYvk3AzvHc64nbO1cutoJR9VCv8LhRUrhBcdGdF47DEhbkstHwVyW589WzzBjh1LTWD4xnzoYZ26zjpMdhOuARcGkwFHiwRP8+0v9XMl2Wzk4EiJf03uUNeFwWTA7DRXVRxLXUdbtpROfXX333az6UebmHvO3IIkeqppzNR1PUZgRKqgwuFYPGTuXCHlvvxleNvb4JvfhPe/X/ztFPbvlzwCqzXmnVVJOFuduF+3gd/f4eOjb4RrPjx5G0VMxI9h/Vv6efYHz1Izu4bz/v28nMewamq/THjmtmfofqabdR9cx8KLF07ZcZQK1bHifRVA0zTsdnveemFVO2G2taYPpI7tgq1fEy+MVZ+bMv18hcZGWY94PJK0tXixM69BpNC2qyTyqsDQdXAdlL8dcwv/0vpVEvQLjMHoFmg8qfB9lQmFtJ0iMA4dKuw78yYwAuOw49vyd9cV0HJaYV9cathaheTy9U/ZIVRl39P1uAqMahuYSwhFbBYoIVWVbZcKYZ9IR003KSJHlxx3YBwm9kHd0pLtupi2UwtEVXURDEpcEEooITXd0fl6Iawn9sPw5pJWME6bfjeDkqIS7a6CEQkERilgMAiRoGA0Eli0kpduO4TZWcfSSy9N/F1XXCGPVFi9Gr74xURywxzR5dd1WLAg9t7oqKRGh0Uqg8ceE0+PCGa/cIxxbSmW2rNxbdrO19w/xoOdrttt0GCXhZkyJfjLX2StE2+Svnix/K3Ew222lGne5W47RWCMzF3D1beekFCBACLT0tUlht2pfDA0Td6/8HIHRmNuvjwmuwmL00LAG8BoNmIwxn53uur3cmL8qCQqNC+JJQepdZPNJoU9haBS4+3ZZwuB8X//By5XjlKneaJxkQTzR/aPEA6GMZhSlyS4B9z0bO5h3rnzMNkkjKTrukg/1ReeuOgb9+Hud2NrtGFvFLKylAbeClarEEJbtlBWAgOksufQodRG3vEw2SX4qQf1KIGhjNTz6S+KwBg7lCHBtMzwjoj/hbXeiqZpZYljFdrvli2TIXhkRPp/KSqvbA020GGiZ6Ko/agxMxUqNWYGXAHCQbkfWuslyN/fD36/nDd1vt7yFrjlFnjlFfjGN+RvBeV/sXp1rOAyGeUeNzuWOBnGSbcbmhal3y4+FuhsdfLCf7+Ad8hbEAFbDe2XCRO9E4SD4aIVZqpljTFDYFQIRqORE9OJwWVANTHXk9D9V/AcgbbzE4MnBrNoUw/0Qc/9U55NqGkSlN61SxEY+X2+0LarFEKhGNGVE4Hh6xcNcYOp8OoLEO3uBdeL6XTtFNDsOaCQtqtoBYauw+4fipeMoxMWvruwLy0HOl4vVTYlDIzmi6rse/5hCAdERs2aT5nNNIO9HZpOledwaLJWfxZUZdulQsMJsP7O1JGbaoamSRXGwDMwuq2k/bSYtlMkxcGDkoXV3S0SCk5nbGwtGgd/B0f/ArMvhflvKdFOKwhzLcx+LRz5sxAZisAY2QrOeWBOISqcI6ZNv5tBSVGJdlcExo4dZf0aQAJxBpOBgCvARM8EtbNzlMqz2dJHpTRNIi/p8K53SVpphODY9+UHGNjnYX6NhT69kXu5nHqLF8tJHnEHjde0eeEFIUTc7lglyec+Jymrf/6zCIiDRE/tdtFJufRS6O3F+Kc/caLdLosUu10Yh3Mj0nL79knkKL5iJE/daUVgjLlNmO3gHnTz9HeeprajlnXvX4fRKFIgV1+d+pSBGOnmGyz3T/jp396PpcZCy4oWNKYu4LH+U+vx3OiJVp1AonxUobGYSo23yj/hN7+RBwip9N3vpjfSzRc17TWYnWYC7gDjx8apn5NaOnbP3/ew9bdbOfLMEc77wnn4J/zc89578E/4ufauaycRZLmiZ3MPT37zSdpOaOOir4kxcqkNvBVOOEH2HQgISVOuJlRDUTYCAyDoDoocF0TJi3yhCAzPkAf/hL8gSaNiEU9gQHniWIX2O5tNlAp37hRyLBcCIxTK7MtRM0vma64eV5o9TB+otjM7zdFrUCVzdnTEcgEMBvjqV6Ua7LbbxHxdxZ+y+V9A+cdN5X2bydspGdY6K60rW+nf2k/3M90svTz/NZXf5cdgMiTcZ6oF6vp0ziquCqRa1hjVd4aPU4TDYQYGBmhpacGQh9CiGvirrgIDoP8xGNkCzgWJwZOaBRLY3vsL2PMzCRAVEygvARSBUUhQutC2qxT6+yWBTNNynCBEqy+6ipcd6XhdcZ8vMwppu7mRopRiCYzWXJSe+h6GvsclOLz85urS4G8o8YqhAFRl3zPXwsnfhMBI3kH9aQWjDdb8R8Efr8q2y4TpmLFet0IIjLFtwFUl220xbdfcLPMVZeTd3S2vL19ewlPsGxDSVw+VaIdTgK6r4Oi9MPyyVK3WLIBX/kMqgtb9SAjtAjDt+t0MSoJKtHt8BUap5DfSwWAy0LCggaHdQwzvHc6dwCgGmiaRYqsVGhoYNTXjt4xiqbGw39PCA1zC/A7Q3pzis0qiStel7MzjiVWVnHuunDxV+eHxxNjcQICw24370CGcRiOa1ytRNkVg/OQnki4cj49/XPb30EOwaVOM2HA45PVTThEiZcsWsNvp8tjoxE54wAE0MdEzQe+Lvbh6YwG3DRvgrrvg+utjBSMggaDvfCcWJO99uZfxo+N0rO3A0eIgEyb6JkAH/7ifgCuQNju1EtA0DUdz4vGqCoxisrAr0e82bhSrmWR0dwvpdNdd+ZEY6QKymqZxyTcvwdnmTBuACwfD7L1vLwALLpBqHLNTVTjB6OHRqBRVvlByLipDWNfLU4GxcSP89a+Jr11xhQRiS0UGKaigrrrWMsFkN2FvthdVxWJ2mHG0OAgFQrgH3FNCYDhaHCy7clmCETuUNo5VTL9btSpGYFxySeZtN26U4Hx8IDyZOFQBYd+Yj4AngNluzut4qgnJ5BPECIy5SYIdl18OZ54JTz0lZMb3vy+v5+J/Ue5xsxACA6Dz9E76t/Zz5JkjBREYIwdGCLgCNC1uwt5UItOeEsA/4Y96einCrVBUyxpjhsCoEMLhMPv27aOpqSnnBtf1WGZ91VVghIMwvkv+rk8hbN11FQw+B4PPw0tfgBWfSh3sq5CmvxrMCiUw8m27SkJNjNrackzMckXuRsXIR00TFNJ28RUYhSzS+yOKSwkVGN7+yZ4xvkHY9i0IeWD+W6FuSX5fVE1I9fviUWA/r8q+ZzBD/fKpPoqqR1W23fEG5YMxuq2kEcVi227VqhiBoTIPS+p/4Y+YjKbzCpoOsLWI/4UegqALjv5d7gnmegh6YHxvQePmTL97daIS7b54sWRejo+L8lK5fQMaFzUytHuIob1DzD278vPVBRcsYKJngpr2GnqflteyBuE0TdJUzXFBrM5OeaRCVxfhD3+YLZs2sXbtWkzJk/hPfSrRIN3jiUXcGxrkgFwuITmOHhVj9VNOkYnof/83AOv2wBeA2c+Hefq772H04Cgr9txNw6AOX3ohWt2x4Yor+NLi+bhf3s1i9uDBzsaf2GnqtMPRFujo4KVfbmZk2zGsn7sAx9nz056GcCiMZyhm9u3qc2FZMHUERiqUwsC73P0uFJIAaqoCUXXLv+kmuPLK3CpksgVk01VdKHQ/24132Iut0UbXGbKw1jSN+nn19G/pZ+TASF4EhqvfFSUuBncP4nf5CfqCDO0dorcHAqNWjEYnS0tUYLpxo5A+yefz6NHCyKBsyKcCw2A0FEz+xOOyH142pUH0hvkNnHKjVJUGg7GkvlLGsYrpd6tWyXWQzcg73bWSTBxanBYstRb8435cvS4a5jfk92OSMLh7EO+weC+1rqyQ52UEelinZnZNQsJAOgJD0+BrX4MLLoCf/hRuvlkUGpWEVKYk/XKPmwUTGKd18uLPX6R/Sz9+lz8v0j3gCRBwBUADS1113esmekXezNZgi8r+xSNblVE8qmWNMUNgVDHGxkR3DqqQwJjYDyG/ZCPbU0zMNQMsuEGqMAafgd4HwdI4eTtrsxiCl5nEUEHpfAez6YC8/C8gVoHhLNGC0DsAvQ9JNcecEqevTAHUjU+tCRtTXLaZMElCytsPT14nwal4+AbBPyKZ7gd/K6RfpQy6c0HID0PPi2RS52Xpt0v3++JRoX4+gzIg6BLC2pJ5YTttceA3MPqKSKa1njXVR5MfahdLJV3tEsncNxaeuVdKrFwpycFbt0qgU71WMvgiBEaqOcV0gbcfjkVIi4O/id0PzLXwxLWyzcy4OYMqgtUK8+eLqtEPfwgXXVR6HX4FV78Ls92M3+Wn+9nuSQRGqUyCM2HFhhjrOmV+hM3N8kiFU05JL94/d66klHs8HLjXyy0PebjItpeLHtgPgLFxKfaVNbB8bpQY8QUMbNsG53OAy0z3Ywp68P04DO3AGWfAu95Fnc3Pwm2/pvYrf4fFrbHKjy9+ETQN8wN/Y8nQM+Cx02rR8XigX2/DM6jR0m7G6R2HQBhcExCsy1sOqxBsu2sb/dv6WXLZEjrWxtiKUhAY5cZjj2Vet+q6JFs99piokmVCrgHZTNj9VzG0WnjJwgSPjIb5DfRv6Wf04GjmHcTB1e9i43UbcQ9KyY97wI1v1MfwvmF2/nknY2PwJhy8snADVmvxfb3UZFAuyKcCo1jEk0GpUIkxMxmDg7Fzm7MvZJmhqnkyERi5XisXn+Ui6PJhspmY6Jng6KajhEPh6Lb5nvNwKIx3WKog/BN+9HBlpW1nrZnFFT9N9JdKR2CAjDmXXAL33w///u9w7bWx7UtZNZUvVBxneFhiOc4cm6Cus47arlrGj4zTs7knr8QJz6AQ9vZGOyFfiIArUFQ1VbGIHw+OPn8Uv8uPc5aTob2yflLXZi5VRtWIGQKjiqEmzLW1iVKrVYGxiAhuXQZdCINFFuNhnxiNWtvBFPdDQh5ZtAfGyr5AL6YCo9qRN4HhLmEFhrcfBp6E3T+WbNH6E4S8UqhQhU0pYbfLRGtgQG7ERRMYgTG5zg1WMMZd/+YG8SMxWCSjuAL9IC/oAdj6Nfm7/cL0wdF0v0+hgv28Iuh7XOSjGk8uWOZl2uDg72D/r0Svf9mHpvpoygPXPpHxaVk/1UeSPwxmOO1HU30UkxC/QFTzmLJUYFiKz1acMiSPm95eSQKwzZIqjONt3JzBtMfGjbGg71e+Io9yLHRVYHPs6JgEEl7s4chTiVFcR7ODDXduqFhAbsoIjEIRJ4dlnQcHgJ0hjYuQEuH+5uW0XbAK3rwm+pFtmyVj+vnGSzCsu4T77tMxvy7IjW/zRNd5ls4W9sy7mPCps2m4cI6QH35/9H1tYhynfxhLsJ9ZhiAGi59NfhuukJOaw1tZOLKZcEjH8fUtUGeFk0+G971Pokzf/W7M60M93vhGqWbZulW+K94kvbExZg6RAcc2H6Pv5T66zuxKeH06EBi5Br6zbZdrQPb1rw3y8v9uZvTQKBd+5cIE8/Wx7jF6X+oFDRa/NtFMsmFeAwAjB0dyO2BEcsc96MZkFQNr35gPg8mAtc6KrcFG31AQB25WLvIBxffzUpJBuSLXCoygJ7XJb/Lr6TKlk8mgVKjUmOnqd2EwGrDWW+ntleunpaU8RHchiJ+fpitczuVaGTzs4heXb8QWdjPRO0FgIsD9n7o/Kp0F+Z3zoCeI3+2PmmgDuIfcU+odBDFCIp2H3de+JgTGr38tD4WTTpq6IHhdHdTUxHz48qng6jq9i+1HtnPk6SM5Exh6WMc9KG0VDofpfakXo9VI8/JmQp7KS90mjwfeES+eQQ+DOwc59oLcLBzNDqzXbeAt73EWRWpPFWYIjApB0zTq6+vzcm2vagPvse3yXJdFSsVcC+igmcBaD1pSWWM4fbZAKVFMBUYhbVdJ5E1gnHSLyEjZi5y1q8x77wC4DoAehkffkBjEnuIM0kLbbs4cISIOH87f3C2tibfRDqakSYzJKRnugZH8vqQSMDljx+ftB2cWB97o79Mjjzgiq8B+XpV979jfJOC94uPHP4GhJHq8+aePVWXbpYKSPjPXTe1xVBGKbTu1QNyyRTLwoIQEhh6WqjAA6zQmMBSMdiErwkGZJ9na5BkKGjenTb+bQUlR7nYvRfZ2MtIF41Rg01prxWV2YbQYsdRaosHUoCeIe9CNb8xXtmBcOBjG1e/CUmPBWmstK4FR7raLmni7EiOIzrbEc6ekP046Scbr++7T2L7HDHWxdZt9diPD9fPpb5jL0osmk/7aDdez6+/OhEBqyBek1mzkmL6A4dY2auqMLPiXc8CuQX1cZefcWDUIo6PyrJzF//pX2LMn8ctuuAHWr4cnn5QLUBEbdjssXAhXXYUeDGJ75D7agwbahuth07B4jCxbxtGjZuy46Wwxgm4pSIKx3G2X67ou23a5Bu+ffNbIwD8PEPQEGTsyFiUmAPb+Q7wvOtZ2TLp2lGzO6IHcKzAUTHYTFqcFTdMwmAxYaixYnBbcfoBgyeSjSkUG5YNsBIa1zoqj2YF70E3Ql5rEcDQ7sNZZM2ZKn39ijAwymAyMHhklHAzTvETm8JUYMxWeue0Zel/s5YyPnUFfWHxSSj1uFtPvli6Vwq+xMbl/dXVN3iaXa8CKD8+gm5p2E84WJ36HH1u9Lerhkus5j78GfGO+RAJjQO6D6hqYCmSqwIh/PxmZ5gblHjc1Tdp1xw7pL/mMIfPPn4+j1UHnabmt7611VjSjhh7U0cwaZrsZV8hF2BXG3efGaDFWvP2SyWFN09AMGhanBVuDjaAniGvAzdf/zYeuT742M1WkVcsaY4bAqBCMRiMr8lzBV7WBtyIwUvlfJMPRBaYKGPBlQLyvQb4opO0qibwJDKMt0XS9UKgMUqMNrC2SFRsOg61B3q+CDNJC227OHNi8ubDrJS2BoeDtjZyPaaBPbmuFCRf4+rITGArjuyEwISbghuJ0IKuy73kjkQxbNQ7MJYY9Mqh4evL+aFW2XSocDwSGHgZ3d+59NAuKbTslF6XGT7MZFi0qwYGBtJcejmjNN5Rop1MM1wF51gwx8qJATJt+N4OSopztXg7plczBOPnf7DDTeVpnQha4QrpgX6kwfmycv37gr5idZq7+zdVlJTDK3WcVgTHuTiIwWtMTGMqwffv2xH0p424ll5EMZ6uTtR9Yi63eRv281LKT1jor9uSAntMJb397+h/xiU+A1yukhvIEUdl9c+aIjkm8T0hEmmr8wACNPTswEaDmwSF4MLK/W2/l6FEz7+bnnPeHV+BZgxAbdju84Q0imbV3LzzySGJFSEsLnHqq7GPvXoxWKyva2sDnk8+XWBP8nHOkX3R3p+5/KlB3zjmZ95NrUL6nR6N1USP9W/oZ2jOUQGB4hj1SfXHp4kmfq58rbe0Z8uAb92GtzT9YFwpIprKSppoQ2XaWlMgesFRkUCHfOTgol0hywZCz1cmGOzdklX76x2POjATyHREDZZNdApZBt4yPRqsRo0n6fbnHTAXfaMSMvd5Kb0Sso9SJuMWMmRaLXFPbt0sVRioCI9drwGSSc67GxWTkcs7jr4GX73iZgw8fjL638JKFrLp2VcXkv579wbMM7RnihOtOoHOdBPAzERhqbpAKmeYGlZinxhMY+aBhfkNePibOVidzzpyDrd7G8jcuZ8llS3jmu8/Qt6WPFRtWsPjSxVMi3wYxctjitFDbkRiHHR4IRiV+UyFdRVq1rDFmCIwKIRwOc/ToUTo6OnI2PalaA++gS541g2hvZ8XUB2rVDWpwUOa+jtT3mpQopO2SkY9BTr7Im8AoNYx2sLdLYCnkTqwyqFCFTToU2nbqRp0vgREMiuYiZCAw3EckCF63QiRgqhnWVpg4AN6+3LYPe0XHHZAqjOJQir5XUoRD4IswVNZqG5jLAFu7PPv6JUPckPuUoeraLh2mO4ER8sFT75D78lm/LolXSbFt19ws8xaVhNHZWTJ/cQj7hRzVQ2CoEk2CYlG3Alz7wZ5iJZ0npk2/m0FJUc52L7X0SrZqDhWMA1KSF5WAf0IMCC01koRRTgKj3H1WERhun5FwOBZjd7QmLoQ2b5bnk0+GefPk73QEhqvflfK7Ap4AW+7cQtAb5DW3viaaAQ6g6zrjR8cLC+RoWoxEaEqqvJszJ62+ydARLy+teAstK1pY+v8uliiyxwMOB0ePwl+5jE+843SYFUd+tEYSrvx+GBpKJEa6uoTACIXgG99A13VcbjdOh0MyUr/6VZn8//GPsGtXIvlx8slSnjg8HHtPeYg4nYnVKBEYjULqXX21nIL4PqPuqd/5Tvb1ZD7B+zpXE/1b+hneOwwXxd476+azWPO2NZOqL0DIxnnnz8NWb0MPFTb3r5ldg3/cj9lhRtdFVcxC6QiMUpFB+aC5WRI4AgHxA1P9Kh7OVmfGPpELgfyVr8CHI2OTwWDAaDUS8oUIeoIYays7T/KOiIeDvdFetkTcYsfMVatkbNuyBV772snvn3OODAP9/ak/r2kwu11kikoBdQ0E3UEsTgutq1vp39JP0BMsibF7rhg9OMrwnmHCAakC8Xpj8/hUBEahc4NKzFNV3K+7uyy7j8I76sXdL5Uya962BnuTncWXLmZk/wgjB0cq2n75IJgjn5lMflfLGmOGwKgQwuEwR44cob29PecGr9oKDJMTzvgF+EfzMw0NjEpw0z676MzsfNHQIPNDl0sGs3wmRIW0XTzKbZCTF4HR+7D4l7ScCY15aiNlgrlOMkfDfpFDqpLM2ELbrtCKnaGINLumTV5jRY5IAm+hUKJXSLXCFgnS50pg+CLsjbletN2LRLF9r+TwDwqJYTDF5JWOZ1gawWgRQ3dvHzhyl52rurZLBV0XfyaYvgSG0SrXYtAllZEtZxS9y1Lc80bjlCQOHBDz35Lc82xtcNLXi9xJlcHkhPrVJdnVtOh3Myg5ytnupZReyTcYp+Dqd6FpWtpM11Kj0gRGOfusIjBCGAmGoLHDyWXfvwyjORbYDIcTKzDU7zx4MDHpS51/75AXXdcnyUgcfOQgQW+Q2q5amhbHJsF+l58HPvMA40fGufIXVyboxJcTQ3tkUt60uEkuLpsNbDZcLpGQGWMhTa9dCKlu/ytWpNc+NBjgP/6D0Pg4e59/nlULF2IKBsW0EiT6OTYmpMfEhERCF4icDvv3w89/nri/jg4xQgf49KcTCJsNdjt3//ytvP8LLTQfeZEOjuLGgcFu59/+087FZ7cDbRKR8vvlc0ntooL36YKN8cH7Q3pjwrmLR017+ojtWTeflfa9XOBsceJskUC+2w2hMGikDvoXglKRQflA02RtfuiQjI+F/JZcgsTHjsGEE+wRz0azw0zIF8I3Vlg1TKHQdT2xAqNMibjFjpmrV4u0UTojb683fTGVulY+/3kYuz32uq7rBD3BqGRPvtB1nZEDIwDMO3ce/Vv6GT2YvyRbMfCOCvlkrZdrRl13TmdqP9BC5waVmKcqAqMQ6figN8iBhw8wsHOA0z9yesb2tNXbuOqXVzGwcwB7k0iod57WyaYfbmJw5yDeEW/F7nepEAqECHqDWGotCX4qphwZgOTYYrWsMWYIjCpG1VZgKOSb6ek5KsEik73i2cuaJkHpHTskKF2qjI5syFc3uJBKDXVjyMmIbvA56HtUJJ9KSWBgELkhzzFwH4X6hhLuu/JQBEY6bcd0UNkaTU1p2i0cobw1DbRpkD2sCAxfmjSUZChzXWuezufVDG9/LEt/bJcEim1tMLFPXpuGRvU5Q9OkCsN1CLw9eREY0wJBl8gRQcSvaZpBXZvWVhjdLgS1Ne5azOfajL/OQ0GsgSMw0QhGU177KodW/gxmMIOpQymlVwoJxgXcAQns6JLhb2ssfzAgSmDUCoFRtQllOcBslph2yGMkGICwP4zJmrj8P3AAxsdF4mb5cgluNDVJUs7OnVI8AGBvsnPmzWcKkaFDsr/s3vvEJ2HRaxYlBH0sTgsmq4lwMMy+B/ax8uqVZfzFMQzuFhOmpiWJGUVq3eR0xjiHvKAi062teIaGpCojPiJ09tnySIWTT4bvf1+i9EoOKx4XXxx7PfK4/Eojl14PO76yh/67n2LbCx4coRDnbwOeukw0WvbsgW9/W/ah5LBmzYKPfQyjEf5w9Z3c9p0wHux4seHBzvOcyrhWT7M+wE8+78E4bKepwwp6mJH9I+hhHc+QHF+lyEOQaxHAagNTCQvVN2yQOUiqpMLvfKc8c5OODllLZjPyTodcg8TxGdX2JjveYckMT5aOKSf8E370sEz+bPW2qh034428U+Fzn5MYXHOzjInxbaeulfNPhN9HCAwdnd6Xegn5Q7SuasXizD9J1zviJeAOoBk05q6fy+bbN2NtsBLyhzBaKhMv8I0I+aQC7vHyUali+FMhy5YrOiMWFoUQGADP//R5woEwy69aniCllwomm4n2E9uj/zuaHTQtaWJo9xDdz3Wz6JJSaejmD3e/m7EjY9hb7DQtjN0Ha2qgvR1GeitXkVZKzBAYVYyqNfFWaVK5IhSZnBlsoA9LoMTojL1eISg9vEJ8DQpBvrrBhVRqqMUe5HiDcEfuRs4SpbTEw94ubWtyAOGsm1czCq3AyOh/EfLIQw8C5pgUW4X7QV6w5lGBERiTKis0wACeI2CY5teCMqr3RZyIA+NyLkx2ePwaeW2KjerLDvtsITAK8MGoeoTcEpjXQ9Uv55aM+GtTXZejW+HQ72Lb5HptJl3nRl1niduNcdwRu9fnsK9yaOWn3dHxgnTjfzXfF2bwqkIppVcKCcaZHCZqZtcwcXSCiWMTeEe92OrLS2LEV2B4vZJMD9UXiMsVdXXQ76nnxP+4ijWnTB58lXzU6tVCeIAUHzzxhEitKALDYDQw//z5Kb9jeN8wQ7uHMJgMLLhwwaT3F1+6mMGdg+z+225WbFiBZij/OG6ymTBajQnVIBALSHZ0TMHtRNPkJNfXp5SN4pJLUn7MCKz64tUEP3c1NyzQOXYkiHWdh7deEgnldHTAe98bIz683lhjAm2WEeYygg0vdjzY8bCXRdR31XPX1Q9w2vP/hOehTtc5bds+jjWuYqz7Nez/9RPwv7+i/cwFtJ8+T4iRujq46irZ8YsvysBgs+EPG3G7dBpOXpjw3ZkQ9ATxjfowWAyYbJK9PjYEJoLY7bmf1lyxYYPMQR5+OMQTT+xj/fqFnH++saSVF/HIZuSdDbnGgOL5M3ujnVHTKCF/CO+It2IBcCUfZamxYDAZqjYRVxEY27ZNnlI+9hjcdpv8fccdwic+/DC8/vWiQHf33VKlNrQ39hkNDZPdRMgfwu/yF0Rg2BvtXPO7a5jomcBaZ+Wa319TkTFSIeQPEXAHgNQERipMhSxbriimAsNkM9F+UjtHnztK9zPdaQkM/4Qfs9OcskKj87ROhnYP0bO5Z8oIDF3Xo3KPySbimgZf+AK87UOTP1euirRSYobAqBAMBgOtra15lduUs2S5YIT88MyNULsYVn4qs4SUuU6CHr7BiBeCLhno/mGRmNE0eb9C0h0qKJ3vYFZI20Hu2oB//7vcFAvJWh0akophECY1I8Ih8V8AcKS5GxUDzQxNJ1ENnicKhbZd/LUSrxmcDSkJjPh+EPJIHzAaRGpLoYL9IC/Ur4SVnwZHZ/pt1O8b3yu/zWQXoiwwIRJE1qaCf1+h7VcyKKN6g1W8XkI+kY8y1YlMWhUY1ZcdTWul/fI0iJ7ytssFtjZYf0fqmXe1I/7atDmk+kkPRfqZIb9rM/k6R8cQsoHFBmg576vUWvkpsefH0P8UzHsLdF5W4E6qAJPmRylQwLg5LfrdDEqOcrZ7JukVkP+/+tXcFrr5mKMGPTEWw95oRzNojB0awzfiwz/uZ2D7QMZ9FGOcGU9gqLWYxZI63lwsyt1nXf0uOmw+/MCB+4/Q+5vDzD5ldpSIsNZZefFFOU8nnRT7nCIwduzI7Xv2/GMPAJ1ndKYkmOadM4/Nt2/G3efm2OZjdJxa/orOC750gWSEJ8WX4gmMYjAV463JBO97v8bnPmfmOz8389Z/jbxRVxczGE+Bj+/+AH9EvNKvvlrxDzrDL0OD4TIYPhN39yCBgTGO9TzLqM/G0U1H2XP/AWZptcx22PD1j2I1DsUyLAF+8xsYHsY34efw44cwmAzU3/NdtJUr4d574aGHEr1ATjwRLr4Yq8HP0vAOXP1hRnr9BHQT1vZGxuo68Q6BEx/OxhqstaWXnDYa4YILNObPN7BggVZq7/UEqDEvG3mbSoHh2LGYslg6xPsxxI+ZljoL7j43Y91j1LZXpgpDERhKgqhcFRjF9rvFi4Vfm5iQIL2S9nK74d3vlnvau98d88e46CJpjwcegKeeShwn1Tk3mA2Eg2G8Q14sTktCW+QKk80UNZCuJHkBMfkog8mA2SHkoyIw0lgMFSzLVolxsxgCA4SAOPrcUbqf7WbVtatSbvPY1x/DO+zl9I+cTsvyxMzVBRctoG11Gy0r0hmilh+eAQ8BVwCDyYDJasLvknmNujZf+1r43e/g2msT2y5TRVq1rDFmCIwKwWAwsGhRfgxcVVZgjO8WAmJib3aNe1urZGwqWQpdhxc+DsEJWPFJqFtaUfmVQrPqC2k7yD3T7PLLZWFUSNaq+o6mJilzzAjvsUjw3BqTBioFqjiDtNC26+gQ0iIQkH6YlRyKICWBEd8PBp+FPT+D+uWw/ObYNtUqQ2RtgrY0ZfAK6ve9+FmRVZr/Ngny7/sl1C6ClZ8p+PcV2n4lh9EuOvXOudJ3NGMk0MuUG9WXHR2vK+hjVdN2uWA6Z/Sra9PoEA8ikP8h/2szsi8t5MJht8f2k+O+SqmVnxa+QZmDTOc2g8nzo1QoYNycVv1uBiVDuds9nfSK0SiBtzvvhOuuy05iPP105vc1DVpmW2mb58Az5CboSwwCOdocuHpcoMOf3/1n7E32aLAlGY5mBxvu3FAQiZGKwJg1qzzDTjnbztXvYuN1Gzm/z40b2PVjNwafj1337OK5HzwHyHnaom0AnJMIDJhs5D20Z4ihPUM0LGigZZlMdoO+IAcfOQjA4tcuTnksRouRBRctYOefd7Lnb3sqQmBA6kCgIjCKlTaZqvH2xhvhS1+CZ5+FTZtg7drM22/bJr7imgb/9m/StrNmQW+vxq5dcNppdbh8RjZ+8VHcg250vQ5N09j7yftx97vZZ17MtifrU/epr34VvF7M4y62veP3aH4fs5ytOAGWLZNBId4IPVKZ4bTprD/XgKd7hJ6nD2AwaHSdtRjPF2/iyivh9cPf4Nq5fTi/+FxMEuv66+XgX3wRXnghkRjp6pLU+mBQIq/qdZtNFshJnbdSbZdLBUYqBYaWFimimZiQn+D1pg8Sf/GrVnx3OnAPxsZMg8mAZtQwmAwEfUEczY5JWdilhr3RzrIrl03yDip1HKvYtjOb5dLcskVkpBSB8YUviBJbZyf8138lfubss4XAePxxeP/7hfh1NMfOuR7UCQfDeEY8UenBUpzzVF5D5UA8+aS+L1sFBhQmy1aJvqcIjL4+SRLOGiNLQudpnTz3g+cY3DmIZ9iDvTGxHGz82Dh9L/eBRtT7Ih7KmH0qoK7Nvq19hINhzE4zvrHENZy6NhculDHFboef/jRWMZNuLlcta4wZAqNCCIfD7N+/nwULFkxvE++xyEy2bnluM3lba+ICfNa50PuIaOrXXlqeY0wDNZjlS2AU0naQ38RYVVGkQqas1bzko1yyuMCRRswwX2TKIA35RCKpbsmUVhYU2nZms5zT7m4590URGBDrB6PbIoHweRLcP15gbYGuK2HgCZi7QYiyQ3eJrI29PTEQmgcKbb+yQTOBKb2J4QxiqLq2O95hrgHfEPhHwFREtl3Yjz6ylVBYx9hyKpqW+zSxInq4vojPjqUp83bTAcnzoxJgpt+9OlGJdlfSK/FZwk4nnHeeVBJ/6lOTgz7x+PrXJXiqkC4Yd8v3nLz2nA2TFtwKvjEfT936FLvu3oUe1lMaZAY9QdyDbnxjvoKCCK0rWwkHw7SuaOWFMlfDl7PtfGM+3INuMJvweoyEPKOYLAas9VZsDbboedp5zEeuBMb+f+5n1927WPGmFVECY7x7HJPVhKXGwqwT05+oxZcuZuefd9L9bDfuAXdZfRXCoTAGY+rzWVQFRpxfVDgc5vCRw8zpmhNruwokJLW1wTXXiMTND34Av/hF5u1vuUWe3/jGWLuuWiUB5m3b4LTTYteKyWrCZDeho+Pqc2EwGaidXYvJakrdp4xGcDoxOJ0YF89n7NAYo/0BUSpesiS96eTs2Vhu+y8O/m03L/ieZfbqRpZ8+kwsdY1s2gv9vJO3fWgMWr0x8qOhQT7r84kEQTwxsmaN/KiREfh//y/xuzRNTpTRCL/8JfT2ErbZGJiYoGXOHAznnAPz58vAdvBgIjFSWxv73gKgrrF0iRvpfMPUenLhQrjvPnjppclB4oYGuP122LDBievy9GMmFFeRlivquuo45cZTAPk95YpjlWLMXLUqRmBcdhk8+WTMQuanP53c5MrS5vHH5dnZ6mTDnbFz7hv3cd/H7wMNXved12F2mPM6509/92mMZiMrr16Js83JwM4BnvvBc1hqLVz01YsK+o35IBwMUzO7BntzLBifC4EBqecGmYLglZivKP8Sn0/G+wWTVQ0zwt5kp2lpE0O7huh+tnsSMa/8nmafMhtn29QQFengbHXyuttex18/9FfQ4YL/vICa9sTYhbo2//m/8v+FF0p1XjZUyxpjhsCoEMLhMP39/cybNy+nBvf55B4MVVaBMRapJa5bUdjnm04VAmP4BeCGkh1WLihUQirftlPIVRvwE5+QSUk2pJr85EdgKP+LEslHpcsgDU7A5k9KEHvVF6a0sqDQtgO5Xrq75Qa+bl1un1ETztZ0P7lmIcy5Cpx53kmnEsMvCfnVtDa9ibOmQdcV8lBwdIK7G4ZfhtYzC/rqYtpvBiVE0C0m3s4FOZOf06Lteh6E3oeg5UzovHyqj6Y4WFvBYCm+us4rXidB3YwBY7LyRkZURA/XfxwRGGXAtOh3Myg5KtXuRuPkRJpf/lIkCG69VYJC73jH5EDGLbfA5z8v23/5y7Jd5ozNzNmL53zuHI48dYTartq0euPJ1Rv5YO76ucxdL3Plv0WMWstJYJS77QxmEwHMoBkwmKSyRJ03rytIT8Ti6sQTY59Zvlyed+2SpHalsa9IB6WtDdC4sJE3/PwNuPpcGbOF6zrraFvTRt/LfRx45AAr31Q+M+8HPvMAAVeA0z96epRoUSiYwEjyi9J0nWa3G+1gfn5RpcAHPygExm9+A9/6lgTsUmH/fqmQAvjsZ2Ovr1wp6k7btiVub7KbsDgt+Cf8hANhjBYjtV21hHyhrH2qYX4DY4fGGDkwQsfa3E7uwPYB0Aw0ndAFjY3s3yPVBgdty+m4CjH/SMbpp8sj5UE0iO5SPLnh9caiqe3tEA6jT0zg6elBD4ViJi/btommSjxWr4YPfxhcLmFgHY7Yw24XrSGbDZ55RsxyVNWH3Q6dncye3YCJAP1HwqBbEubQmXzDFPx+4VYWLYoFiW+7TSpqXve6WIb7VGZ8p8LYmMSyIMOauECUYsxURN499wj39eEPSzu84x1CaCTj9NPlEjp0SB5z504+5w0LGnD3udHDOk2Lcp+jhkNhDj5yUEyj3ygDr8lmYmT/iJCJFajCaF3RyhU/vSLhtVwJDEg9N0iHStzz1Hpj716ZZ+RLYAB0nd4lBMYziQRGOBhm/wP7AVj0mvTJqP4JPy/f8TKDOwd5zX+9piKVNArHXjiGxWGhbU1bdC6TCv/8pzxfeGFu+62WNcYMgVGl6O+XZ5MJGhun9lii0HUYjavAKASNkUlC0CVZ+sbyljPGo9AKjEIRrw2YjHhtwKYc73GpSIq8CAxfJLpeSgPvdBmkc94I3X+Fnn9I1c00xJw5IneQz/WS0cQboGGVPKYTDt0Fwy/C8pr0BEYqNJ4sBMbIiwUTGNUFXTxkokHiaS5hkyvCQXjiLTL+n/UrsDRM9RGVDu7DQrBNJ0IxHcz18igGekgCNIDf1Eq+ytOF6uHmfnxhkY8CkbebwQxmMOW45hqJF37pS+Ih/JnPxNYwINL8ygT7q1+NVWFceSW8732SQXzBBXD//bmPDUazEWudFS1yHw6Hw4wdGqN+fn30tVKhKv0I84TRBDoQjozJBlMs8OCJqL0uXizJ5grzIn7NHg/s2wdLl8rrisDwDCbKxBqMkqmfDWvevoagJ0j7yTmWNheAcDDM8N5hwoFwSgmXggmMJL8oXdcJGQzoZpFcqqQv2hlnSNx982b4+c/hk59Mvd03vymB8te8JlFqamWEO0omMBT6t0knNjvNGE1GQr5Q1mNqmNfAIQ4xcnAk598xsEMWTkpDfutWeX3FigLnCiZT5oaNGBvowSDHNm2ic+3aGDt30UVw7rkx0iNO8gqjUTSf3W55eDzyrD774otyMr3e2He9/e10dJzDaTzLe/f8L7xfi1V2LFvGY/PeQfeRMO/klxFb9djjWU7DjxXfkT6e+WOQsy6yY7TZOP88G6GQxh//KGRGsgl1MvwuP/sf2k9tR23ZZdvcA240g4a1zkpfn4wxNTXC9VQTNm6E731P/n7sMSGCQLgvVYWRjJoa6W+bNok3UKqgfsuyFg71HWJw5yDtJ+Y+vk0cmyAcCGOymaKZ8nWddSL/5Qni7ndXPMtf1/MjMKoR8QRGIeg8rZNX7ngFXdcTSKTuZ7vxjnixNdjoPC29R6jJZuLAQwcIuAMM7hqcRKSXE70vy8RlyaVpKuCQxIRHH5W/L7igEkdVOlQFgfHrX/+aj3zkI8yN6yFWq5Unn3wSo9HIsWPHuPHGGzly5AjhcJgPfvCDvO9975vCIy4/4nUDq0bq2XNMJmUGU+HyN5YGOOO/JVu0wj9MVWAMD0sihbMC94ING+DNb5YMmXjEZ5qFQoVnreZFYCz7MCx8JxUJvM65Go7dJ8HB0W1iBj3NkK9nSigEO3fK3/398n/BgbpqglqEeftSv+8bgsHnhKSIlwtrPAm674WhzWU/xIog7JcxUDOAbRpHMvKFwSQSYd5++f3HE4GhqsemUOauquAbFBLD6CCkFyaVVogebs4IjAmJoWlgbihiRzOYwQxKiX//d5E5eeqpRPICYuTF296WKCFlNAr5cfvtMlYUM18a3jOMd8SLs82Z1hMjH7j6XJKJXmOht1fmzNOdwAANXTMA4ahGPYDHLc/x8lEgPnDLlklcdseOyQSGqsAYPTxKbUdtWrmmZLSuKH9V9uihUcIB0f5Ols6A2NqpYBNv5T2l64QNAflbrWkr5IumaVKFceON8KMfwcc/nton8ec/l7/j+x5IFRTECINk2BpteEe91M/LPTFCbTt6cDSn7b2jXiaOTQAxAmPLFnlv9eqcv7a0MJvlUZc0L7TZ4JJL0n/uXyNu6uGwlB54PGC3M9sFO1nG93038tarPVhCMTmsY8fATIAWBhLoCxteXuQk/Fi5mrto+9FLcH/kezSN9Vdcg9l8Ec4jOxj6zN00d9ljFSGzZgkRA7BpEwcePMiufxyiYeVsOuZfIlmxZcqc3vST/8/eecfJVZf7/32ml+2b3exuNr2SACkk1EDoRREkFCnXCnr1oqJXvXr92fVeO1fsV71WxAJEVBBQkJZAgJCE9N6T3Wxv08v5/fHMmbZTzrTd2TCfvPZ1JmfOnDlnnvNtz+d5Ps8Gjq8/zvJ/W87JanGcllu/mU6yC0T55Jln0s9TV64UAmPtWrjtttHvT181ndpptbSelZtO6sChAQBqptVEneQGk4HqKdUMHh5k4PDAmBMYmkIbxAKAJxq0/v2vf80ua5UKtdNrWf3b1QnjJcTko2ZePjMhGCAZBpOB1rNaOfLCEY6/fHxMCYzLv3Y5nZs7mXxG+ga4cSMMD0uXEJ99ORFQFgRGMBjkTW96E/fff3/K92+88Ubuvvtu7rjjDoaHh7niiiuYNm0ab0qV41WmMBgMtLe351z/oizlo6rngqGABUIxC0jngNpaiS4aHpbF0vz5+j6Xq+2SoTm1P/5xWLZsdCdaSNRqTgQGgLkAbfRcYGuCyZdBx5Nw+Pdw5pfG5nuTUIjtND5VD4GRXIDt61+X1O777kuaCHk6QDGLE9hQFt1vdlgj7dWXhsDoXgf7fgJdz8CSr8X2150hzn5PB3h7wJb7wF1o2ysaQh4IhkANgmKVDDJt/xsB9lYhMLydUKtPPrBsbJcJpwKBkfwMBt3SVo0OMOaQQ6GGI/JRKljqcfp7UAaOiBRcjshVD1c3NPkocy0YTgV2uPiYEO2ugqJjvO0eH62ZDs8/PzqwY5nIpbN3LwwOyjw9H4QCEh0e9AWLQmD8/eN/x9vv5er7rubkSUmDL5UjbixspwWJBxom07JAxWiKGcEdGUI0FZ14aPWSd+6E666TfRqB4e3zEvKHeOqTT2G0GLnsvy+jui23NUamOhWFoHevSDw1zGlIKdtRUA0MDWoQZWgvTsWOotQVcKL8cdttknlx8CA8/rgkCMTjf/5HfOnnny+JBfHQMjAOHZKgvmTUz65HDakYzfrH2roZdQAMHR0iHAxndO5BLPuiZlpNVNJMI1QWlThZvWTtzmCIZVkAjTYYMk9iQ2ASHXNjBaMBqh8FP1a+RXL6TMwR8AfexjvuvJo5i2OSWLaZM1mxAk68aGVHdxMXTveI972jQ5wcl10mRMpPf8pMbxDDgcOwX8XX/yTW//m6OJd++1vYsiWx3sd554lmcleXVIiPf6+mRnSsQB4YqzXWsUSgFYK21droisjSlcKPla/tskl2KQp85CMyf001X125UvwxWh2MZLSf0077Obl7+7WMpbrpdQn7a6fXMnh4kMHDg0xZkftcPBe89tPX6N7ezcKbFzLtgmnR8bylJfcC2NkwFmPemjXw6KPy+ne/k7/29hR+mQxQFGUUeeHucdOxUZxvmeSjNLSf286RF45wbP0xFr9j7FgCRVFoXZrZOajJR61apZ/THO+5poay96Bt2bKFUCjEHXfcAUB1dTVf+tKX+OEPfzghCQy9KMsC3iYH1J0OtUUKiwiHxME5hpkY7e0yET96NHcCIx8cOiTpvQaDFDhMpwOZLmp1ypTMnW3OBMZYYtrN0PkPicAf2g01On/wIqIQ2+nNwEgXzXH8uOx/6KE4+237itQiWfxlyVCYCIhmYHSnfr9nnWwnnZ+43+SAMz4ndT8s+engFWK/oiC+UH1gWOSUDGYIDMSOsTZObAe4HthagC1CRunEuNtODyYygRH/bMZHfPr7wNcPxhGoW6zv3sw1gALhABjMKKhYwoOR2icmIVxzfM5z0cPNCXVnSLRrBSkxIdpdBUXHeNv9hRdkzpMJR4/KcfH9wqRJEixy5Ig4yletyu/7TTYTAVegoLoXGlRVxT/sB8BSbUnIiC8FxsJ2Gl8RDBswJvE7WpRtcgYGpC7kba+3y3ARDLPviX34h/04JjlSZjqkg6qqbLl/C/uf3M/lX7+cminFHYP79gnZ3TB3tNTg8DCMSNB/YWsnzwmU4DAWhoFpjIesqMMB73631J/5wQ8SCYy+PsnMAMm+SF5qT5oka9LubsmwmVmX+L7BYIAcfVTOZifz3jKPmvYa1HAaL3EcWpa0cNlXLyPojbVbjcAodQbGWPWZiiLP2ZEj8MtfSh934YWiNvWRj6T9VPSzzvZGVrytcVQtkFWr4KsvzuT/wjO58N/SfPF3v4vZ46Hna8/Q9eoRfHPbWKTpkp9+upAS8bVCtIektxeee072BQKyr7UVvvAFef3pT4tUltkcIzg+8AF8gz4m9e2h9vlenPsn82bsnKXY4MAsqUbu9UJnZyIxYs6dcM7Xdi+8kFlOSFVTj1MaLrhAtlu3Cl9UQG33BGgZGBoBqKFuRh1Hnj8Sfb+UGDwySP/+fkJ+CQYopXxUqdteTn4ZnfAOeLHWWLE32rnkS5fQvbNbl2Ri67JWFKPC0NEhhjuGdX2mEPhdfowWoy7iWSMwcpGPGu+5poayJzCeeuopViXNaC+88EJuuummtEVtfD4fPl9sQT8UyV8OBoMEgzJIGgwGDAYD4XCYcDgcPVbbHwqFUOOe/HT7jUYjiqJEzxu/HyAUko4gHA6zd+9e5s+fj9FojO7XYDJJkR5tf0eHAhhpbmbUNSqKgtFoTHvtJbunxnOg8Ry5xrj3ku813T0lXPuu+6D7RcKnfwGq547ZPbW3h9m508ChQyGCQTXttcfv12w3d+5cLBZL+ntKYadHHpHzrFypUl8fIhhMf09vfauB66838MwzIW6+2cDAgMKPfxzimmsUIPU9yXMCzc3BqElS3lPfqxg7H4eGswm1XK3fToU8e+ZGDM2XYDj5NOGDvyW86HO67ZStPWXbr91TIBCI2s5oNOZ0T1OmGAADR46oBIOx88dfezCocs89xsggmdgXiS6pGonmUFDVIAZfv6ScK06MkfvO9Z6KbieytCdbMyoqqqeTcMQuUTu5ujAMbJd7qj979D3VSLRBunvNdk/BYDCr/Ura75nqMZ73WwgMET72Z5Tjj6I2XYA64+0YIxHgIYMTTPXRPnHc7FTK9mRvEf1s13HUyLmy3VMgEGDPnj3MnTs3en1ldU8mE2pgEFVVCRscEAxOLDtZJxE6+9cQHIrdk9GE6h9C3fxJCAcIL/w0irkBI1nmEaZ6DE0XiSzTjNtRm1dx8vUHaPE9CzULCM//KAZLHQZb0/jYSWtPtmlw+pfk2rPdU7nYKds9Zbn2XO9JVVX27dvH7NmzEyKkinVP8Z+toHwQCoXYs2cP8+bNi9puLNGhk9tOddxZZ4mz5LXXcicwgh55blVUwsEwvkEf1mprdH8+CPlDhIPSpkRCSvaXKqAsre283TGSPRXMNbrrLBjDQcxIwp4/Ltre7wpGJfv1EBiubhe+IR8GkwHvgJfXfvIaAXeA6ZdMp/9gP9Yaq65Cwu4eNx2vdTB8Ypgtv9nCwpsTZWb1nicd+vZGCIw5owkMLfuiulp07fNDGHw9qIDX2IKt6JVX9OMDH5BMiyeegH37pJYJwPe/L0TN4sWpixKDZDk8+6yQBjMjztl0bUdPm1IUhbPed5buazdZTTSfHmMGg0EhU7RrKyXGqs9cs0Z89hDz/zc0iG38/hiJlKsCw6pV8NWvCs+QEooiofNWK9NvOZeD273s3KUwP6yI82/x4vS6MaedJsVTQNIWPJ4Evw/veU9iLRCPB5xOvANeqkJerEO92PZ2cxEelg96YculQmAcOQLf/nbidzU2wn//t7z+wQ/kR4knOC65RH6kI0fkh7LbCVksHDhxgllLlmBMlvrKgELGKZBshNmzpa7CSy/BNdeMPsbT76FnVw/VrdWjCIl00CTXkuXatM/nUlMmX/gGxW9qq7UBMQJDC+YsJkrZ9jJl2Wj1YjJl2cRDG+9e+d4rnNx6kgv+4wIa5jRgqbYw5ewpuLpdWccpS5WFpkVNdG3p4vgrx1lwfZ41hHVi+x+2c/Dpgyx5zxJmXTYr7XF+vxB1kBuBMd5zTQ1lT2CcOHGC6fH5doDdbsdms9HV1cXkFDPKr371q3zxi18ctX/Tpk04I4UPmpqamD17NgcPHqQ7TrC1vb2d9vZ29uzZw+BgTMNx1qxZNDc3s23bNjxauAqwYMEC6urq2LRpU8JC78wzz8RisbBhwwZAFn0DAwPMmTMHv9/Pli1boscajUZWrFjB4OAguyIj95Yt04A2Jk+Gnp4eDhw4ED2+traW0047jRMnTnAsjkoe63vSsHz5cl33BGK7xYsX4x48SaD3ON2vPUxf1eVjdk92ey/QxCuvnOD004/ruifNdi6Xi7PPPjvtPaWy05/+JLP/ZcsOs2FDp657mjJlDxde2Mhf/9rMr3/dxYoVxrT31NFRB0BPzzY2bPCmtdOk4SeZZdpIUKll47GYlE82OxX67E1rupA22xaOe1o4/uqr0RnZWD17O3fuZGBggKGhIRwOR073BC3ADDo6YP361zCZ1AQ77dmzh2eeUTl2LH19D1VVotEcTsdGZvccQyHM/u0HWLh0StHaU0n7iOpmhoaGCQ2MsCdiQ81OB179LU0D/XjM0ziy9RBnnllT1Hvav39/1H51dXXj1+85Gjh29Bi1ngDdio0+b3/SPR0efzuVsj1NbyUYDNB96HWODG/QfU9HjhxhaGgIRVHK755WrCDg6sU1OMDBnYfwm7wTz07bDo+6p8GBAfqDZ1LnWc/I5t/T19ag757UW6g2LcDGSqY7Z3HAtxDbyFPg2sneUCdTpjlpd1BW84gJY6cxvKfW1lYGBwfZu3cvw8PDRb+neZoQ/gTC3/72N7797W/T3d1NOBxm5cqV3HvvvTgilUV37tzJ+9//fgYHB1EUhc9+9rOsLqhYy9hDVVUGBwfHjWDSG8me6rhly+BPfxICQy+sNVYcjQ7cvW6CviBhf1gIjCFfVMbE0ehIWcA5G7TsC8WoYLKZSk5gpLSdtxtevF0y7NLB2gjnP5CRxNB+J0OfGztBFB94B2Lvu13gxkFVozWlbRZEfC07d8JIl4s/3bEGd6+bgDtAOBjG3S0FNNzdbrbevxVHo4PVD6zO6NRxdbtYc/saBo8MMtI5QufmTrb9YVtCQKKe86RDyB+KOgQb5zaOer8o8lH+/khGrgWvWoU1SyHlUmLOHClC/PjjknHx7W+Lc/y+++T9VNkXGhYuFAJjxw648ZrENpUK+bYpvdi3TxxrTmfpCwePRZ+ZLhK8L6KGeeaZ8M9/CgmRa92w888XB+yhQ+JszvR7tSxtwdnixNXp4vDzh5l9RQ51TI3G0UxfCuIj5A8R9ATpbDoT5f/dyB8+YeFHz8FnV8Ol10d+gOnT4bOfjZEebnfiw9nUJFqCHk9se9558t769fD00wAo4TA13d1w443w9rfLD/ftbycSH9XVsbokzzwDgQALehwsxYEHO0eYhhsnJgKEMRCOS3HJNJ6tXCkExrp1qQmMrQ9sZf8T+zntxtNY8q4l2X5dwsEw4YAQ5qkyMKqnVFM3vS5t0HaxEJX/qkskMErRDkvZ9grNstGgjVPuXjeuky78I34efd+j2Bvt0WP0jlPt57QLgfFyaQmMkD/EgacO4B/2Z+2nX31Vmt+kSbmRxeM919SgqON9BcCvfvUrPvvZzzJt2jR6e3uZM2cOn/70pznvvPO46667OOecc3jve9+b8Jlp06bx3HPPMXPmzFHnS5WBMXXqVHp7e6mJMLVjHZEXCoXYuHEjy5cvx2QyZY3Ie+c7DTzwgIFvfAM+9rEyiDIMDGE0msFcVZwow+N/gz0/hJrTCC/+6pjd0+c+F+bLXzZw551hfvzjsK7ISc12y5Ytw2q16o6c7OlRmDLFSDgM+/YFo7qXeu7pkUfgppuMzJypsnevitE4+p7cbiO1tTKY9fcHo/OLVPek7Pgqhr5XYPZdhFrfrN9OxYhwVSAUVsclwtXv90dtZzKZcronMOBwGAgEUtsvFArxu9/B29+enYF+4AG4+a0DGNb/CwDhCx7EaLbldU9jHtlPGPX5GyRS/ZxfgqUuaqfwxk/B4DbUme9CbX9r6mev43EMfS/DzHcQciRGA2S7p0AgkNV+Y9WXq5s/DQNbUed/BLX54vKzUynbk+cQ6msfRTXXED7nV7ruye/389prr7Fs2TKMRmP53ZPRiPrSO1D9A4TP/gVY6ia+nbRnb/gIhtfuBkBd/kOM1dNyuqdwOMyrr7zC2fwMxddFeOGnMTSdO/7ZCpHwqVPGTiXoI8LhMBs3bmTp0qUJ0VHFuieXy0VdXR2Dg4PR+XS54/nnn2f27NlMmTKFYDDIO9/5TlpbW/nWt76F1+vlzDPP5Kc//SmrVq2is7OTVatW8eCDD3LmmWfqOv/Q0BC1tbXj+psEg0E2bNgQXWOMNUIhmDFDJBpSrSoVRRxyBw+Ojnp8/HGJEF+wIFGqKBu06EiA3j29vPjNF3E2O7n0vy4F8o/iHzg0wOMfehxrrZVrf746qv/d3S2L/WIjpe2G98Pam8FglYLRyQh5RDpw5YNQndkZ6ep28bc1Pv71/bBkMTz0cOy93/8ePvEZKyuvdPLkk6M/6/OJTFE4DDvW9vH8hx7EZDVhspsY7hzGfdKNpdpC/ax6gp4gQV+Qmx+8mYbZozMfNPTt7+PBmx/EaDUyeGiQkD9E7bRabPUyJ9Z7nnTwDnrZ/IvNDJ8Y5vKvX57g9AuFpOD8f/+3ZJxs2JBjbSbNLp4TEA6g2toY8luorq7BoCg52aWYeOwxkY+qrRWb3n+/lDiYM0cyGtLd4w9+AB/8ILzlLfCXvyS2qVTQ06ZC/hADhwcIuAK0LGlJe9zgkUH2PbmPlsUtTDlb9P0feghuvhnOPhtefjn7fReCUveZWp+YyZna3i4EhNEox+daN+ycc6RUxa9/LX78TNjx8A5e/+XrNMxt4Kp7r8r1drLC1eXiL3f+BYPZwC0P38LNNys8/DB873vyjBWMcFgkqDwegiMjbH3lFc447zxM7e1CdqxfHyNGtLSyd79btt/4Bpw4Qdjt4YEHhLj9Dvewk4Vcy1+5lkcJYMaLHVONnQ/98iyMN1wPQ0PCrscRI399ys51Xz+fVasUnv19Z2LNE5OJ/f/YzyvffYWm05u4/KuX6749/4h/VL2FsYKqqvzhrX9ADau89Vdvxd5g521vgz/+UbK70kud5YdStr3f/Q5uvz37cQ88kLoQuwZtnDJZTQT9QQYPCSnuaHbgnOQkHAzrHqdGTo7w9KefZup5U1l659KSEVEHnznI+nvX42hycN3PrkMxpP+er3xFuMSbboIHH9T/HaW0XS5z6bLIwLjpppu44YYbqKmpQVVV/va3v3Hdddfx4osvYrVa8WodURw8Hg92e4pJHWC1WrGmqDhjMplG/djaoi4Z6dJi0u1PZ8T4/Upk4a0oSsrj4/f3SF0rJk9Of4257i/ono49CYcegKk3YJr9nuzHR5DuXg2Ny2VFM7IHAz4wOsfknqZPl3McP27AFFdcLJv9NCdCxntKusbHHpPxdtkymD07+/Hx137VVWCxwMGDCnv2KJx22uh70lIcq6uhrm70+ROu0RuZQVVNz81OxXj2vN0Y06TBGyFlGrye9pRtv2Yzbav9frlc+9SpcOAAdHSYorXLotduNKJXBrC1FUyqS555kx2DJdZ35XpPJbMT6dqNAeX0z6BY6jDY6mLFx/0DGIZ3yD21XJRQzC3hGoe2Qf/rULcJU83o6N1M91So/dLfU+59ueLviQjStqW/Vx33NO59eT777a0obVej2NswGI0JEVOZrl2zXfz5yuaeAOX836Coqsg867ynsrYTkWevZjo0nQs9L0PHX6H67vTX7u/DYKmLtWvECa4YDFC3DEPnkxiGXofJ54/vPZlMsO2/YGgXzPlXaF458e1Ugj4iGCfzl+r8hd5TKSMAS4WL4qrXmkwmPvGJT/COd7wDgL///e8sXbo0KlXb0tLCxz72MX7+85/zne98Zzwud0LCaJSI75tuyl0KRSvkvXu31Ceo1ikR7WxyRp2ptlobFqeFoDdI3Yy6ggpD+0ci9S+qLNF6hEajyL6MOYz29DV/wukdzfFwNjlpmu+kH+j0Q0PcXHbbcXCTWj4KRIFm9mwpsr4/khhmspswO8z4h/wYTAZq2mMFmHOpQWK2m6lqq2L42DC+YR817TGHRSG1TGy1Ns79yLmj9q9ZkxjlvnmzOJhzKeqKuQYMZgh6IjUcDViCJ1EGj4C1HkxV41IX7eqrpUZLV1diVHhvL/z5z+nvTyvkrdWdiG9T+aJnVw///H//xNni5LqfXpf2uM7Nnez5yx5GOkaiBMZYFfAeC2SLBAd5X4sENxpzrxu2apUQGM89l53AmHX5LLb/fjuOJgdBXxCTtbguwPgC3oqiFD9zzWAQNtXhgNpafFOniqYTCHN3VQZS5j/+Q04RDlN9iZeP3u5mGBloNrGUXhpx4MGGl8+8z4OxLXJev1/0v+LqhKzsDQMX8PLLEPzxTzF1xBnZZKL52lvl9Suvot67BUUjN2w26XDOPVfqiiQVULc4HKCaxyWVyz/sj9as0SL3S5mBUUoUkg2aCia7CVu9jeFjktHs7fNSM6UGg9mge5yqmlwlhEKJbbvv8X0AzLl6TkbyAvKrf1FOKAsCQ5N1AlkcvfnNb+b666/n8ccfp729nSNaK4rA4/EwMjJCc6kqqpUABoOBWbNmpVyApkKpi8bljKFIWJQtfTRFTrA1g6Md3MfEudl0fvbPFAGall+2SUU8crWdhj/9SbY33JDTxwDJ1rzkEnjySXj00ZgObTx0F/AO+WPFdx1jPBJF0+B7IOCSBZc1KaVbRxp8vsjXdho0AiNdIe8LL5QImnTPkxZ1eOGFwIhWMLg29cHljEnnjN43tFu21XOlPadD/RLofhH6N8P0t+X0tYXar6hY8nXwnoSq0Vl/pzxMTph3d04fKSvbZcIEdMjqQvtbhcA4+U+Y8S9gSdPv7Pq2jA+nfRzqpGqmZjtFUaHzSejbNHbXnQm+XvAPiAOpgpSYMO1uHNHX14fNJtHeqersrVq1ivs0/ZUUKNc6e9OnT0dRlFHZPTA2mYHXXx/iD3+Af/93A8eOxfrVKVNU7r03zHXXqQSDo++psRGmTDFy/LjC5s0q552XeyaTudbMghsXUNVShRpWCSv535NnwIOqqliqLJw4EULqEaqEwyGg+NlZmu2075d7CmJUJXNZQUVBkVpkqgoIQ6SoKgqjawGluidRSzMxNETCtW/aZAQUliwh7T0tWBBm714De/aEcKgqKiq+YR+hgNyTtdZKWA2jEql1Fgwl/A7Jz14oGPsexyQHw8eFwPC7/Zjt5thvEHeeQtvTn/6k8La3GUbVqzt+XI1GoK5erSOLzlSPMvkKjEYnasvlBNpuILDnfqzD61Abz8Yw918JG6sIx9VFG4vMwD//WaGrS024N4CBAbm/P/whzA03qKPuaf58ABMHD6q43Qp2e+F9RO30WlRVZbhjGO+IF5PNlPLaT24/iaqqTFowKbp/2zapPbhwodxLKbMdgWi7C2aogZavnY4fD4OOKugnTqioan73tHKlwje/aeS55+T3ymQnk9PEtf93LWaHOTo/KOb4ZLAbmPuWuRitRlRVjZC/Co2NWWp0kvv4ZDAYmDFjRtR28deY7Z7efLOFH5qskXEKjtPOcdppb5dx6pybDKD15XV18LGPJVx7lT9A45Mqvb0Kry15F2ffJnVAQiMjKF4vttNmY7CeIDBkwO03YjP4onJYSjiM4dxzCQ8MwI9/TNxNYVAUwt/7HmGDAeVHP0I5cQIcDgwOB2GrFf/5F2E6cyEcOYJh924MTichiwXVZpPrbG/HoCgY/H5CZjPxiZDZxidXr4uwGsZSZSFMGEVVIgSGQltbzH7FnEeks1+hc6OVKyW4VLJBR6/vFEVlyhQ47zypS5vunkDGIVVVwQCKSUENyvebbCb8Ln90nAqHw2M630u1f+DQAF07ujAYDcy6YlZGO3k8YV58Ucb+iy6SOY7efg9EklZV1YTrLMY9JR+TCWVBYKRCKBTCZDJx/vnn84lPfCLhveeff54VK1ZMqAWawWDIiXDRon7KgsBQwzFnZW0RtdsalgmB0bdxzAgMLWI+nUM6FXK1HUjW4T/+Ia/zITBA0oE1AiOpCQA5EBieYxIOZ64GS31+F5MvAkMRDV8D+PsAFextsZT4kEfeDwyVjMAohOjUCK8kDjUKLerwxhtHvzcq6lDLQhnjyKySYdI5cN5vInbNgPqlsh3aKVFrptSZc6lQqP2KCmuD/FWgC2VluzciahdB84VQezoYbamPGdwFA9sk+8IeG0iitgtWC/FRNRNCPjCWTvtaF7S+xlJph+lQaXfZ8eMf/ziagXHixAmuuOKKhPenTp2aUIckGeVYZ09DU1MTHo9n3GrJTJ06yO9/D6+/XoPBMIUFC2qpqdmC3+9Bu9RU9zRr1jyOH2/g1VfDmM151pJZAAa7AaPZSFdXV9735O5003R+E1PmTeH5jceBaVRVudmwYWtJ6+McO3Ysek8Ht25lrttNyGAAU5jaKguhoUP4AyF85jYMYQ8WxYcddN3T0aNWYClDQ7E6RqEQvP76CsDI0qWkvaf6+pNAK6++0scKtxtrjRWjxUjYEMbaaI0+xw6zg3A4zNatW3H0O9LayX3MjdfrxY6dkBpCNasEXUH6OvtwNjuxKlaCgWDCeXJpT94uLwtWLKCltYVt27YxMuLhgx9ciqpaSHbwi4NL5SMfUbn22jCbNul49gxvZsUZlzHEVHbu6cHmX8x013Movk3ULZ5KT+8ABw7EzlPq2kxz5y7gnnvqSAXt/j74wSBtbZswGpNrPEJt7VkMDprZvRtmzixOHxE0BRnpGWHd39bhnOZMeU+71+3G7Dcz6bRJ0XvasOFMwMHMmS6gqqT1pvr6+jh8+DCHDx8uiZ08ngPAnJR2iUdDg49QyJTXPTkcRgyG5ezbp3DiBJhM41wX7EwIEsTj8dDVJWu9rq5Yjc5i1gULBoNs3Lgxr3uaOhVeeWUWu3c3s379YWpqXCxePITRCIODmfvy1zZtZNGieTz/fAP3Px3mrGtnx+6pqgqOHiFQHWDAN4198xfiaY39Xna7ncVATzjMoTvuwODzcex3e7H4Qpx/21JGuro4duwYVRYL5tpa6iwWTCcD7P3rRrpf8ND0UTdVr7/O9FdfpdpkYqivD7/fj2fWLDpvuYVZLS00f/WrDPT24jcaCVuthK1Wqr/4Rera2tj/v/+LoaeHsNWKarUy47TTMC1cyObX9hFkELPXy+ann2bhWefRecIJGOnr28yGDcGizyNcLheHDh0q3rMXZ6d777Vyyy0GIJnUFbLw7rv3sGlTf8Z7mlo1lVAwxPDQMMaAEXOzGd9JH01zm/D6vLiGXATcAbZu3cp003Rdz54aUhk5OMLpl5xO65TWos4jjqw5wuDAIA1LGrDX2xkYGEhrp4ce6sbrXURjox+DYT+Qex+xc+fOos9hXS4XelEWNTCOHz/O5MmTo6nqDz/8MB/84AfZuHEjLS0tLFu2jI9//OPccccdDA8Pc8UVV/Cxj32Mm2++Wdf5y0GfNhQKsW3bNk4//fS0KfwawmFJ2w0GJbJ7ypQxush0GDkEGz4kTpALfg+GIlWd73sNtnwBbJPgnJ+PSSTs8DBoj8DQkL5U9Vxsp+EPf4Bbb4W5cyUtPp9bO3gQZs0S53dX1+j09XvvlcCAW28Vzb+0OPkM7LwX6hbBkq/lfiGFQNOLNdeBt1PICmsDVEUmdUEXBAZKphebj+3i8elPw1e/CnffDd//fupjtm2DM84YvX/q1KQCbCOHJBra2gjt1+d8LeMK1xHJoLA2QdN5uX/+5feCpxPO+Bw0rtD9sULtV0EREfJKpL7RluDsTnt4uduufwsc+QPULICZWXLvT1Vs+4pkabReAfM/HN2dYDuDoTyyVNQwPH+DbM/75ehMvgqA0re7cphPF4Inn3ySD33oQ2zduhWr1crll1/OJz/5yQQSIxwORyPVUqX8l2OdvXA4zPbt2znjjDMwGo0TrjbTl7+s8KUvGXn721V+/vPxryWj7f/5z8PceaeBK68M89hj4ZJETmq2W7RoERaLRe5pcA/GF29FNdehmJ0oQTfqoOjrqLWLJAMjMIBy4UOEnTOz3lNXF0yZImtsvz+Eoqjs3g2nn27CblcZHlaA1Pf085+HuPNOI1ef08P1voew1YtcV7L7IOAO4Bvwsfp3q6mfHQuWSrZT//5+Hr71Yez1dswOM64eF0FPEHuDHYvTQsAdwNPv4cbf3xg9j95nL+gLsubWNRjNRt76y7dicpp49lm4/PLsfeE//6ly4YW5PXuBQIDt27Zxpuc+DIFelNM/S7hhxZi2pxdeMHLppdnH6KeeCrFqlTrqni65xMjatQq/+Q3ccUdx2tPTn3mazs2drPjgCmZdPmvUtbt73Pz1rr9iMBi4+Y83EzYoPP00XHutgXBY4eBBlRkzSpuBEQgE2LZtG4sWLcJgMBTdTn5/iNmzDVkjwbW6QPne09lnG9m0SeGBB+Btb9NnJ9dJF/4hP43zG0syPgWDRux2ueeTJ4NR/0Wx+nKArVu3snDhwmgw81iOuffeq/DJTxq57rowjzyijLqnLb/ewu4/7Wb2VbNZ9v5lGe/pz+/4M74hH1f9z1XUz64fde3d27t5+j+fxtHs4NqfXBu7dkUh5Hajut1ycH09hlAIw9athFyuBNkrw803o5jNhH7/e9i7FyWyX/F44LbbCF1wAbz0EoZf/xqAEZfC736nsN84j//y3CNZgN/6FkaHA9VmI2yzgd2OetVVKFVVGA8dIjw0RNhqjUpiKTU1GB2OlPZQVTWt/Yplp4ceCo/KBlUUlf/7vzBvf3vsPOmevcFDg/zxpj9iq7NhdkpmoIISzXL1u/x4B7zc+PsbaZzbqOvZe+JDTzB4dJCLv3gxU86aUrR5hN/j58/v/DMBT4CLv3QxU5ZNydievvAF+PKXDbztbWF++1s1p35PVVV27NjBaaedlpBIUIy50dDQEI2NjROnBsYTTzzBN7/5zWjdivnz5/PPf/6T1kho+SOPPML73vc+vva1rxEKhbjrrrt0kxflAlVV8Xg8oyZ8qdDfH808pan4Qem5YyjC4NXMKx55AVB7hjjV6xaDGgKl9I9jdbVIJQ4OCjmUSpopGbnYToMmH7V6df6+n5kzRQd0+3bJxEguNqRfQsoL5qqxl49Khr0tIgHSL9eULiq4iMjHdvHQMjAyZez86EeyveEG+PCHMxRgq5oBVanrx5Q9BrfDvp9C49lCYIRDufUF9UvB8zj0b8qJwCjUfkXDwHbofQVqF6aW03oj4MiDcPiPMOVNMPcDWQ8vG9ulg/ekkBiGcc4qGC+4jgp5oSgwNVEgO8F25UBeAAQGhbxQFCHEK0iJsm9344ijR4/yvve9j4cffji63khVZ8/j8WC1WtPqFZdjnb1gMBglVfTU2dNzjbnuL+SeVkSmBRs3pr7G5OM1xN+Tb8jHwKEBTHZT1KGg99rT7e/uln0tLYl184pZH0eznfb9iqJgMppAUVDUEAztAVsTirURfL0o7mMiwRt5PvXcU3wAlMdjpKZGgm8AzjxTicxVU9/TokWy/8B+A8pUhei/pPahRCJdjabR9Xfi7WQ0GaOfVRSFqqaqUd+pKErK82R79vr39qOgYK22RrXcNUWDbOjszPLshXyyTjXE6iEaDAZ8fj80nY9y4lHoXodh0jlj2p46O7PeGgBdXcb48m3Rez39dFi7FnbsKF4fUT+jnq7Xuxg+OpxwPu3aB/YNYFAM1M+u5y9/MyXUJgG48EIlUpukdPWmFEWJtjs9ddpytZPFYsxSF0juUfvqfO9p1SrYtAmefx5uuy37tR998Shrv7qWmmk1vOn7b8qpVlamfs/dK450W62Nnh4lsh+amkyjppGFjk/BYBCv1zvKdumOz/ee0u3XymqtW6f12YnHN53WxO4/7aZ3T2/Ge/IOevEP+1EMCrXTalNee92MOhRFwdPtQQ2oUZk9AKPTCXEy/JhMsHx5mp4cjLfemrgj8lCaFEWKUU2dCh4P+9Z5+PXvPExqc2A2m8QpOWVKlPQw9vYKOXLNNeLo+PvfMWzenCiYtno1XHUVhh07hBiJkB7Y7YQmT8Y7c6bY7x//ALM5+p7RbpfoXasVfD65RoMhZzvdfLOR1aulxsyJE1Kw+sABZVQ/CJn7CEVRMCiGlPu1cSqZhBn1u0euvfn0ZoaPDXPilRNMOWtK0eYRVoeVq+69iiMvHKFtaVvGezIYDDz3nLy+9FJD1E+lt98LBiXDKlXbi7/XfO4pl6LgZUFg3Hnnndx5551p358+fTpPPvnkGF7R+EKbbNXXSyHncUeUwNDh7c8FRsvYZwQgMlKDg+KU1kNg5AqfD/72N3mdr3yUhmuvFQLj0UcLIDDaroHWqyEcKOxiCoXRLvUfAoMipzQGBEahyEZgjIzAb34jr+++O/cCbBMGWo0LXySNcNuXpZ7JrPdAzdzsn69fAiceLx8t/VwxuA2OrpFn941KYGj1jzw6V8vljkAk9fVUkXRLh3BQsvB6X4ZF/y9GSBx9WLaTzhVnWCaoqmTf2JoTin2PKfz9sjXXFTeQooI3BFwuF29961v5yle+wvLly6P7U9XZO3r0KO3tWdpEBUWFVsh7505wuRJ9Mnpx6NlDbPzpRtrPb+fC/7ww72vxDnpRDAoWp4WTJ6W/LFoh2pwvphP8vTLfckwFb5f832jLqS+2WsVHFAhI9nlNjRSxhvQFvDUsiCgHd/dAqA2CntQ61en2p0OxzuPqduEbEvLu8AuH8bv81M+pp2+/SA422q1A9gcq61rqyEOSRT37PdB0QcJbauN5cOJRCXQJB8d0nCy0aK1WyHvHjuJcD0DtdKm5NXBoIOX73Tsj0maeSfzrTYnOfRD9+ptugoceyqHAehli9Wq5h2SCpr09KUO/AKxaJefSnJLZUN1WTSgQomdnD/uf3E/D3ER5B2uNNa9C7pt/sZnDzx1m6Z1LcU2VTqO5uXxiYIqJZcvEH9/bKyobWh+poXlRM+d97Dwa52fOFNbaR1VLVdqi6tZqK/YGO54+D4NHBpk0f1IxbkEQb5w4MmTHa/AicKm2vDeZICK7mRLvfa8QGm6pB4LXC5Mi19nYCBddlJAREm3wqioPrtstzrOQR3xVn74HJjfBb9fAKxuFJHHYoaoWrrhWnC0dHVKJWiuQbrdLhPLSiGx1RwdGs5mLVwgxEggYeNe74LvfhY9+VL9/tZjjVHVbNX6Xn4NPHWTWFbMSggByaXfxY148ppwzhf4D/RnP5fHA+vXyeqIW8IYyITBOdYRC8NxzCuvWNeJyKVx8cVJkdhLKtoB3bQm8/eOAqVOFFMilkHcuePppkapqa4tFleWLa6+Fr38dHn+cSLGh2Hu6CQyQQcpYBmyYySGOw7An+7FlgGmRpJV0BMZvfyu2njcPLr00y8m83YAClrrxcwLmC2ukM/J2QWBYMinUsBR31oP6xVL7wjZZisqXw7OYC7wRVtk2Xl6MMoA9QmB4TxUC4xSrSZMO4QDs/z+R6+t9RQg4bw90PSvvT01RwCcZmz8Fgztg8VekLY8HfL2yHes6ThVMeIRCIW699VauueYa3v72RLm4888/n8cee4y77747uu+5557j/PPHpi5bBYK2NmhpkWjyLVvgvDyUKqtaJZJ/pHOkoGt57SevceT5Iyy9ayknT4pnaswJDHMNWBrBdTjiELdAyC1zLv+AEMr1S3SPX4oipEVvrxAYIFHbEPP3pENtrdhn4ISVkNVB0Ocm6EvtvHE0OqKZD+lgrbHiaHTg7o2dRw2rBL1BjGYjBrNB13lAHDlrbl8Tjf52dbnwD/vpP9jP4eektoG9wcGc1tXs73SOcpSD/Dbt7ZI1nRYhP5x4TOa/qVBzmsjj+vpg4HVoOCvrtRcLF15IXNHa0e9nuz+NwNi+vXjXVDejDoDBw4Mp3x8+MYyqwk/WNKW8Zi358yMfgeuvz+wzKXesXi338MILGTL0C4Bm1507JQA2k+/I1e3ir+/9K907u/EP+/nLnX/BOTlxHedodLD6gdU5kxjeAclktNZaORhZMo0b8VtiWCxwzjnie1+7djSBYa2xMuPiGVnPoxEYWntJh5ppNXj6PAwcGigugRHB5l9tpmNjB6fdcBozLp4Rrfs5Ta9wh8kkEiepdNlbW8WZFQc1GIQNG6SRfy0SyOw+Cc/eBsM9sOsDsFcBmw/OCIIvLH9hJ1RfFzneDQcOJBIjTU2xAe0b35BjIvgXk5XvN32MDSem89zn/8kVrduiWR/Y7TB/vqSjuVywbx82j8okp4eRgSBBt4VgihqAuY5Trh4XAwcHQIWe63swWmOdgN52lzzmpUKmc734Ivj9MibMyV6ip2wxwbxoEw9r1mjMuxEQKrO9nUhqZOrPdI13x+/tjjl3VBUmnSe1DBSzbM01xS24HHRBf2TCNwZFQnMt5G00GlmwYIFuPWlNPuqtb4UU2Vg54dxzJfW7rw9eeilxApoTgVEu0LIuQt7MxxXr63K0XTK0DIyeHhkHHY7Ye6oKP/yhvP7AB3REmez9EfS+KlrzrVdkObjMoLX3oEsi0NSwFPZ1tOn7vMkJ5z+QM3FTqP2KhiiBUS6s8jjAFulovF0RKZ/MnVtBtosfg1KhGGPQG4XAMNklWvTon+DAz8E6CU4+C/4hqJkvkhje7oTfc5Tt7K1CYPRtHD8Cw2CF+jNFirCCtCibPrOMcM8992C32/nyl7886r2bbrqJz33uczz33HOsWrWKzs5OvvWtb3H//fePw5Xmj1PB7medBY89Bq+9lieB0RIhMDpGUFU1rQRYNvhH/ABYqizRgLJSrsdS2s7WBAs/Adu/JvOnpd8QEiM4Aq//Pwi6Yc77choHkwkMvRkYINnqT59wYr9jNauvHR35qUFPFKmzycnqB1YnRJC+9pPXOPHqCRbcsIC5b5qrOxrVN+TD3evGZDVhspsYOTmCwRQjQIKeIJ4+N1/6jI87Pjj6fNoj8p3vZHEon/ynkBe2Zmg8N7o7ajuTCSZfKvMj09jOKYxGskgVZb6/RYtkq/kC7fbCr6l2Wi1L71xK7fTalG1x1edW8Y8/u3n9sfTBTKoq6/QXXihNdvtY9plGY+ky9BsbpQ7j1q0iI3XTTemP1dqLo8lB0BMk6AtiqbZgMMp8PugJ4u514xvy5U5gDMq63l5v5+Rm2VeqQNxyGO9WrowRGHfdld85NIJPy1hKh7oZdZzcfDItIVgoho4OMXBggIBHlDpyJjByREr7hUZAGYA6pyh2ALRH/iCSneGDeZHCwLNnw2c+E/u8qkrEuIaPfCQhI8TodnNrUwMbvgi/fcjK5f9uQRkZge7uWMd3+umiN/XDH+IArpsZIBQIo1ZV4/nUFwGw/fg7KF4PqtWGsa4a65r74S1vEZZ/717ptOLksmhsxDdkxN0zgsVqxN5gxzfoQ0XFVic+sVzaXfKYN3RsCDWs4mx2YrKZsp7rmWdke8kl+WVHlUPbgwqBUVKsWSMDSa6pkRqBMS4ZGN5uePH2WLRjPE48Jltrozgji0VivPYRkSU58wtjErWip65BPBRFoa6uTtexoRD8+c/yulD5KBBS+5prJNL/scfyIDCG98GOb0Dd6QlFWsccoUjGhaqCCqhBcYaHSpuJkYvtUqGuTjIqXS7J2Jk3L/beSy9JpKDdDu98p46TTWSHqdEG5mpZwB17RPYlpdBnRR5ZJ4Xar2jwVQgMrA1iw3AQfD1Zf4u8bZdpDIpeSxHGoGh7zLxwmPDwdotcVP9m6HsNul6Q9hzySR2Q3pdH/Z6jbNewDDqfhv6NwLvH4y6EvKg/c3y+ewKhbPrMMkF/fz8/+MEPmD9/PkvjQs0VReGJJ55g8uTJ/OUvf+Hf/u3fGBkZIRwO88UvfpFzzplYUoGngt2XLYsRGPmgarIQGEFPEN+QD1ttfjKl/uGxJTDS2q5nvZAXU29IzICffZdk1fW+DNNu0u2F0GpiDg1JpsvJkxJkdcYZ2T972mmSXb7nuJOG2XnoeyXB2eRMcK5MPW8qPTt68A35aJjdkOGTqWGymzDZTKghVQiMSQ6MZnGwBH1BrroK/vhHuOWWxDW5LikfVYXjf4l84LoECcME283SsxAoDQqRKpo8WSSr+/thzx5YXIQYBZPVxIK3Lkj7vqIo9Hqc6BE21ta6xcap0GdqWLVKCIznnstMYGiw14sTNeAKEHAFqG6NRc6ny67KBt+AEJLWWmvJA3HLwXYrV8p27drU77u6XBxZdwTFoLDg+tRtQW8Ghvb+wOGB3C9UBzTySXOol5rAyGg/o13GvZALMMTIDBACI/1JE2VKpk8fdci7l8Hnvgm/2ncBb593AZddluI8s2fDt74FHg/myB+qil0bl668EAYGUkti7dolRWsDcT3bhRfCeW/CGRhkRdeThELg8oQJH7dhDTeyc85bAJjS9RqWR40woylGfixaJFHMQ0PiiLLbo3VBTHYTRqsR/7AfNaxSO7UWi1MI4UxtOJ7AyAfl0PagQmCUDKGQTCTySY0cVwmpwJA4jgzWxE5DQ8gj7weGikdg1C0WAqPvtTElMPRKSAWDQTZt2sTSpUuzFph58UUhc+vrZUJRDFx7rRAYjz4ay7TzeKT/hCwEhutwRLt8nKrBm2vEOebrjQ08zgh7HhiQrbWxZE79XGyXCooiz8uuXUJ4xRMYWvbFbbeJvbNiomrua9HwillIpxGX7He055eR5e0Rm+tYdBdqv6JAVSsSUiAZF7bJ4D4u/XUWAiNv243VGDSRCcVcEBiSP3MdBIelH7a1gFYHMMXvOcp29UulvY4ckmOtmXV9Kxg/lEWfWUaor6/PWtB88eLFrFu3boyuqDQ4Fex+VmT6v3Fjfp83WozYG+14ej2MdI7kT2BEMjCs1dYxITBS2s7bBX0b5HXr1YkfmPJmUIzQelVOIZQagTE4GMu+mD8/MbM4HbR6gTt36v66nNA4T8aUvj19eWfPBFwBUOU50MiLeMyaJdM5hwN+8hOpSatLyqd/I7iOSjZjS2L2dDm1u3ylihRFZKTWrRMZqWIQGHpQaO2OQlFOtisUq1bB97+vvw4GgLPZycDBATy9ngQCIx+oYTXmBK+1ldyPVQ62O+88aTv798faWzxGOkfY/PPNOJodaQkMa60VS7UlK4HRMLuBthVtNC0sjS9Hk/8aKwIjq/3UAAxENO0azpLxrghoaIB3vxt+8AP49rdJTWAYDOnlsACuyKCg8Za3yF8wKHVAvF4hVXrD+IwO9rWsxGIIMbTvJKZwgHpLXfSj9sAQhgP7oGNf7LMf/KBc9PPPw1//CoBjyMfKYwfp881nV/UKzEE3S0IbsPc0EOq34A8Y8HgANcJk7tolhIrdjitsZ8/LDoxUc8kl+bWbcmh7UCEwSoYXXsjsIM+UGjnuElIQY0D9/SLrZLQDkQllJgY0HzQsg44nRZ5iDJCrhBSIhrIeaPJRb3mLFMwrBq66Siag27fDwYMwc6ZET4EU5stIhLpEAxbnaCZ6TGBrksjeUsvBZIBe26VDPIGhobsbHnxQXn/gAzpPNBEjvuOj4T2dQmCASBls+JC81hsNr6qw6RMwtBvO+g5Uz9Z1CYXar2D4+yXrQFHAkntk4CkFe2uEwOjQFQ1fkO20MUgNRuSq4iSrijUGKYZTn8DQYG+FEQ8ERiSTxhAn15ji90ywnbkaqudJ2+3bOD4SeFrkRwVZMe59ZgXjgolud62Q9/bt+UvZVLVWRQmMfLXCNQLDYLPQ0yP7Sr0eG2W7jielz6tfMlqq02CG9rfk/B3xGRj79slrPfJRENN4z4XACIX0O9PrZ9ejGBQ8fR48vR4ck3SwKkkwWo3UtKcfz599VraXXAJ33JHDiY8+ItvWq6SOXxISbKeq4D4iBFRjgUUQ80C+UkWLFgmBUcxC3p4+D13bujCYDUw9b2p0/8vffRnfkI+FNy6ivb0x79odxcBE7zM1XHSRbLduFZm4Rh0xJtZqmQMGvUFUVBTyn1/5hn2irsDYZGDA+NuuthbOPBNef13aTnLmS8OcBlDA3eXGO+CNkgPxuPjzF2cNsADJwFj1uSJFxaaAlj2jkf6lJjAgi/00X0MJ8JGPSADq449Lf6fVACoqTCaoqpI/gN4+gkYrPbVzsDgtuIyzMDvMuJzmaKvbNelCzvjwzTi0TA9VjXWMK1fKIOzx4Nvbyf4NT6BWNeAd8KIAak0tCmD1j2D1enC6fbH10sMPRw3adxS+EoK/td7FjBkrZIB+/PFYxsftt4sUVhaMd9uDBI9ABcWE3pTHVMeVTRHvcABG9sPANpGbKBXqF4sjyX0cPCdL9z0R5CohpReqKrJhUBz5KA319bFUxcciKl7x8lEZfTquyCjkKOEolA22JnFWp/sbr+wQnUhVyPsXv5AiSCtWwPLlOk4SDohmMUwsh2l8NLxzukjPGEwSiW+uk/1a9HY2KEqMvOnfVNLLLiq07AvrpIlXfL3YmHyJyCTUzB+b7wv7pT7S8N7in3vZt+CiR6AmvczBKQWjXSJIAdx5DH71Efmd/rEJNBiFTZ+AF98OA1vH5/srqKCCkqK9XWpwhkLiiMsH8XUw8oGqqlECY9hnQVUlIHNS8eumZkbVHJGNarsm83FqGAb1sQrxBEYu9S8gloFx8KAEhmbDmjUwY4aQBbffLtsZM2JrpGSYrCZqZ8j8sHdPBvnIDDBZTVS3VVPdljpyViMwcnLwu4+L/KKiwBQdpNHgNnj1g7D7u2KbCQLNiVdMAqN7RzcvfvNFdjwUO6mqqhx/5TjHXz6OQVG5777Un9Vdm6QCQPxFWht94QV9nzFajTSd3kTL0paCyAuIRfBr9TTKxo9VYmSSkTI7zFFCNVOfpihK3vWaioGgL0jQK5JD1lorg4MwPCzvTZ2a4YMlvagIgWGdVLTsCw1z5kiNWoB77y3qqXXD2eTE4rRkbneKEiukW1cnF37GGYQWn0VH9Tz6HVPwDfnwGewcnnM5e2dcya7Z17JlxvVsaLsudp6Pfxy+/nX4whd4YOon+S4fpv0SqclMWxucfbacu6FBqtNPEFQIjBKhkNTIssjAAHAdkAmYyRkrvlwKmJwxJ9IYOEe0DIzh4Vgxu0IRCsHPfgaHD0v7T5mWVgCuvVa2jz4q2xMnZJuVKHWPcwZGKhz7K7zyfjj8x/G+El3QBnAtIiEchh//WF7rz76IzAYUgzzvEw1Gu0wkqmfL1t4S6RdyDJGsXyLbiURg1MyH834Jp39uvK9k/NF8kWhuV80Ym+/z9YAaAn9pCtehKG+sqP6q2dJurXl44zR5x/7NEB6H6BtfD/gHwFDCuUgFFVQwblCUmIxUvnUwZl4yk7M/dDZTL8jN8+LqdtG3v4+ubV34R/z4XX6O7R6hnj5m1fXh7StdRGhKNJ0nhbsnZahmHvTAy++TbNiuF0TSM/nP2x09vDYSPxJPYMSVhcmIlhb5fDgsdUozQav/mKxCoNV/TEdiaDJS+RIYmRAKiQoHZCAwvN2jf7+QF+Z9CNreBHqcvDWnRdQLBnQTS+UAjcDYvr1459QKEw8dGYpGmY90juAb9GEwGaifXR+t3ZGs1tLenr5OaAWpoclW65WRUhQFiyNWwDtXaH1m3/4+XCddTL1gKi1LWuT/R/tw4CquHyu+fY7sxxo4JkG2Kfq6sYJGYKRToGycn75PU8PZMy8SjldVPP0e3D3unD6XDpr9Tr5+Er/LT9AXZLhjmB3r+qinjyn1Ll3ygiWBRmCUyF/ysY/J9je/iQWNTzT4R/wQFiLSZM8QXKlJtbS28vCmWexgEedeXSfvzZ4tbM5tt8F73jMOkRr54w0eTlo6XHihDMD5pEaWBXPt6xGnkWIQp0ep0XAWDO4QeYpsEUcFoqpK2vLAgETVL1qU+Xij0ciZZ56JMU0YyJo1iYXT/H6ZDN53X/EmX9deC5/4hBTfGRnRWcA76JZ6AwDOcczASIYakKgmTd6qhMhmOz1Izth58kmJQquvh7e9TedJ4utfTGSHqaVR/vJFQ2S1PLhDsrqM1oyHF8N+BUNRRCarovufE4piu3CkEJq9pTgX9UaH0QG1WQY80tiuei60Xw9141BIWw2LlBtU2mEWlEWfWcGY41Sx+7Jl8MQT+RMYk8+czOQzc/OaubpdrLl9De5eN2pYxdPnQQ2rdH18DbcANjesud3B6gdWJxSeLhYy2i7TfDE4Al3PiuNu7S0iE5iMOIlPLQPjxIkYCaG33oGiSIT3+vUiI5Wu8Hch9R8b5zWy/4n99Ozu0XdRcfAOevEN+jA7zRhMMYds0CORxbt2Su2Pmpo0WSfxcqnpcPThUXKpo2xnMMGkc6Dzn9CzDuqyj7flAI3A2LdPasRaM0/NdaG6rRqD2UDQG8R10kVVSxU9O8W29XPqo3VKVq+WAMDHHxcf2tvfrrM2SYE4VfpMDatWSXCdHgJDaxd69ycjvs9Mxrbfb2PpPpiNg1rzaqAIfWZS+zQCZ4bDGF6KI1/0yhkXERqBsWmT+GY0xSANjfMaOfjUwZR92rpvrqN3Ty/L7lzG1POzE+47HtzBlt9sYeblMzn3nnMLuu54+4X8IUY6R1AUhYdueYjBQbgFMAYduLrHYcwLecT/qEaeRc9x2RqK0ClFcP75cM458PLLIif1xS8W7dQZEd++fCM+fP0+rLXWlDWbssHd6yYcDGOts0r9pxTfEY/Bwdi8Kt8C3lA+/WaFwCgRjEZxYN90k0zYUk3m0qVGjnsGRtgvUk6KARxTS5t9ATIwWRqFce1eB4O7E6VaSlAjYepU/QQGgCVNWpUWaZRsXy3SqFgRJPPnC1G6fz889VQGAkMruAwSkRB0gaVO6hdAyetN6II9kgLj1llFvUCks51eJBMYWvHud71LX/FDQKIIpt4g2sVvVHi7IegFowV8/dDxBNSeHns/zbOZt/3i20IqlENbmCjQfks1DJ4TsoioOzPmXCm27TSUKgrH0wG7vyfEyPwPF/fcpwhG2c5ghDl3je1FaM9dYEiy2BRFSHmNzKi04ZQouN1VMCFxKti90ELe+cA35MPd68ZkNWGym7A3SGZpZyd4AKcliLvXjW/IVxJnDsTZzn0Cel+Glsul9lAmBIYkC1YxyrpNMYEpzoMW8sQkPuMIjLVrZc3S1pZboFw8gZEOhdR/bFnSwoq7VzBpgf4oUGuNFUejg959vXj7vFiqLDgnJ9rI0ejg5dfF+XXhhSJPPgrxcqnRzGKVaNZF0m8Zj1HtbtIFEQLjJZj93gkRtNTWJhk2g4OwZ096gioXGIwGaqbWMHBggIHDA0Jg7BJHbtNpib+hlvnx7nfHnMJjgVOhz9SgZWBs3iz+jVT1MbX24u51E/QFCXgCBFwBjFZjtCaGo9GBtSazszi5z4yHqoI3GMSBmzqbj6IQGCnapxJfFy1D+ywl2tth+nRR33j55dHqG1odpr69faiqmiAVNXBoAHeXG5NNnyu2eoqMB4OHC89Ij7efrc6Gszlmo94RCBCk1jBGY54Gc42QUJ6TYk8F8PfJOsBglkBca2NRZLgVRbIwbrlFCnqffz709WWv1ZQvktsdCAHhG/ARcAdwTnbqanfx5/IOelGMIj+mSbhpSHWuF16QDMo5c2JKNPmiHPrNCoFRQmipkfHR+SAN59e/Tu3YdruFxYVxysAIB0XzXQ2Kxr2pKrGYTshT3O+LZ9W1yfiLtyUeUwJWfepU0djNNNHWEAqF2LBhA8uXL8cUN/MtJNIoVygKvPnN8N3vioyUVj8ngcBIjiDSBnTFBGtvln3jEKEwCo5Iz+k5VvLCrOlslwviJaQOH47VIXn/+3M4ia0ZZr8nr+8/JRD/bHq7xBm54cOJ0dQpns287acnmk5vWzjykEQ6Tr4MnOMlCDqOiP8t1TCMHJT9VTNi2qTFtF30BO5I5pIKGGLjUDHGIF+v1FLw9xV+romCdL9biv3F6DcLRvxzF/IJ4a0Y4cVbY8eUw3hWZigL21Uw5jhV7K4V8t62Lb9IcFVV6d7ezXDHMDNWzcBo0T/5NtlNWJyxhXkg8icxXPoik/NBgu1O/A2O/RmGdsKiT2f/sMEM1iYIDEjmvC0p8i0cq1+oERhanQO99S80aBr7mQiMQuo/OpuczLl6Tk7X5GxysvqB1TzzuWfo3d3Lmf9yJtNXJUrmWmus3H6XOOGy1r8w2iMBE2GZI5jrYmuWuN9SQ8p2V79EHhpvDwzvGbuaYQVAUSQL46WX5PnQS2BkK9ReN71OCIxDA7Sf0073TpH5iSephoZiEr16AgqLhVOlz9TQ2gpz50p21dq1MenpeGjtxTckz/K+J/ax8+GdTDlnCsvuks7XWmPV7bTW+sxQIAQqGMwGAgGFAGAiSENDse4ugkj7VFWVwcEBamvrYqRAivY5FrjgAvENrF07msConVaL0WIk5Avh7nZHiYKQP8TICXH21c2o0/U92nGDRwZHkSH5InnMA/CGZbSzmMdozNPanq1J5vNdz8OeH0i/u+hTsPHfIeSHhZ8SFYcizfdvuEFqbnV3w9VXx/a3txdXQQVGtzsQUmvdN9Zhdpi58ttXYm+w62p3qc6VjFRt+JlnZFtI9gWUT7858XvsMsfq1eLAfvbZEGvXHuDnP5/DkSMKPWkyZLXsC6t1tCbkmKB/U8Qjr4CpWibFySgSAwoksuqpCk2XiFXX2MdCCnkXEmmUD669VgiMxx6DMyMqHgkERnKEgrkObHEHjFOEwijYJkuGTcgPvm5x7pcxNAJjZATe+16x62WXwbx543tdEwrxz6atWZ5FNSTPKBT/2UwZTReHXL7v5D/BdVQWpW9EAiP5tzSeBNUPBocUhS627bQoHPeJmITU8O5YHRYofAzSMnOKNY6VM7Tf09ebfoGXy+85uAP6XoP2t2aPEC4E8c+dYpAxw+goXZ9RQQUVjDumT5dakn19EmS0fHnu53j+y88TcAeYNH8StdNqc/psOBxGDasYjAZ8PnEQjVmwYcgPnU/J69ar9H/OPhmCw0Ly+3vTynzWJHXxeutfaNBDYBRS/zFf2GptuE66sDgtzL5qNjVTEm9UV/2LZPh6hDhnAJQcJXiNFmg8Wxxx3esmBIEBMQJDbx2MZPlkGO380+pgDB4eJOAORKPH4wkMjVCbMkWkeSvIH6tWCYHx3HOpCQwQB6jm3GxZ0sL+J/YTDoRpmJ0/2zB0bAh3t5vq9mqUaml/RiOYSiU6EHJjCXSCWgXK+CobrFwJDzyQupC3wWTgynuvpLq1OoFMHzo2hBpWsVRbsNXrUzmpaqnCYDYQ8onkU3VraebfnkhM07gE2duaoP06yfAPeaB2IbRcCSefgZF90HZl0b7qL38R8iIZxVZQ0RDf7gDqZ9az5Tdb8A35CPlDOWW6JJ8rEzSS+eGH5f9aptZER4XAGAMYjbBqlYrT2UtT0yzuvtvI974HH/rQ6Mj8ePmocck6nf42SUU2OaA+zey2FLIN0aiXFCgBq54sC5QPCok0ygcXXST6ip2dkuYLaRYBY/xb5gyDUbR6XUclqrbMCYwnn4zJwP3jH7Jv82aZvOse3Pz9kt1krpXFzURDDtHbGWG0i6RZ2C+/RfxzWopns9C2oKrgjRQlSo5sfKNB+y3NTgiEwaDEftti2k6Lwjn2Zzj0QGx/9WyJwIHCx6A3EoGh/Z7FklPb80OpX+ScLkXdSw2jHUJqRB7FUfo+o4IKKhg3aIW8//EPkZHKlcBQFAVni5OBAwMMdwznTGC4u9wMHhnE1mDD5xMiYKwcOUrPWiEhbM3p118pP2iSObX7mJC6OgmMXDMwFiyQ7Z494hRJlVmu1X9MF9yVqf4jiDb7iVdPYLQamXXZLF3X1bunl3AgjK3ORnXbaKfeli0iqVNdncM9+yLZmbbJ6CrenYymC4TA6N+c+2fHCVr2g0YoZIJe+WQtanzg0ADeQS9NC5vwDfmiMm0g2Vbx319B/li1SuqJ6C3krTnBRzpHCvreUEBkIYxmI57ItKyUwdnK0G7MIQ+K6zBU55a1VWxokmdr18L998f6N61/rJteN+ozA4cHACH49GZSxEuyDR4eLBqBMXh0EN+gD2eLE+ckZ5TAMI+Xq8Jghpq5sf+3XCoERtfzMOe9RZHi1hRUUqHYCirpoBgU2la0cfDpgxx/+TiTz9DvY+h8vZPGuY2YHZl/i1Qk8yc+AXZ7ccmZ8YAh+yEVFBP/8i8q9fVw4EBMiiYe417AW1Fg1jtg2k3iMEr1V8poR2+XpNyGvNmPLQAagaFHQiodWnTWlS1WpJHVCldGyGdtgDl2LCYnNaHgiBjAfXx8ryML0k3S+/pk/5o1Ok90+Pew/j1w5I9Fv8aSQoveDvskGyv5L+zLPRpeMYFzJliKnVtcAgSGJCoSYtH/b3QYItFCwcIWPBlha4JpN8KZX4L5HxKndXAEqmYVZwx6IxEYIL9XuvE819+zIaLx0jeGIvUGs9jKqLfoUAUVVDBRoclI5VvIuxCnnN8t473ZYcYXccSNGYHR8YS8aLtass5ygTaWhdPLfhRKYMycKesQr1ckU1LBaIRPfSr9OVQ1ff1HgL59fWz40QZ2/3m37uvq2iaRf81nNKd0Bj77rGzT1r8YfZWx+Y05NwIsioaz4IzPw7Jv5/f5cYBWyDsbgZFNPhnE+RcKSQ2ACz9zIas+v4rq1mou/9rlvOkHb0r4jEZgnH46FRQILbp640YYHs5+vFYvxjfoI+AJZDk6PYJe6XdMVhO+yJLJXMoQaa3AcxnIwO7eHSnP5pUC9JdcAjNmZPYPDBwaAEaTG6GQ9Fe/+51sk/078YRgseDt9xJwBzCYZMwZ1wyMVKg7E2yThNzvfbUop8xFQSUXZLNfMqacMwWAYy8fQ03VoaaAd9DLM599hjV3rME3nD6IS/NfJd9nZ2eO/qsyRYXAGCMYjUaWL19OdbWR975X9t133+jjxq2Ad+fTJScNdCEwAP4B8HaW9GtykZDSbGdMmnFrKcnpoChClKSLNMoHyWTIe9+bYaDs2wgDr8cG+nKC5ogscYH4dLbTg1wm6VkxUR2mWvT2ygfT/5VQg74Q+0XhOSbtQMukyAVeTdOv4Y1dgD0e1gjx5O3J2LcUbDtLPTSvhLY3S2caGMmcRZALou0xT+fEKY6MtmuIVNnt25i6cywFzHVQsyCmRV5BWhSlz6xgwuFUsnuhhbyrWqWQdT4ERsAlTjyzwxx1xJXakWM0Glm+oAFlZK9I5bVckftJTE4hl2sXpj3EGZe8ZreLXFdu1xmTTs0kI6VJENlSTO+nT5eo1nRonCfZI4OHB6NO0Ww4uVXmds1npI780wgM3fJRQZfU+zKYUkuQxiFtuzNaoXH5hJo3agTG3r3g96c/Lhfnn6XKQvs57VRNjhWXTyaZxovAOJX6TA1Tp4pPIBSC//qv7E5Ui9OCpVo6uJGO/IKSVFUl5JMvMdlN+LUMjFI++vVLMJsjX6DmT7wUijVrpBB0ukykNWuk3sWrP3yVJ//9SUJ++Z00KbX4+hdr1ojtLrkEbr89NRESJTAiGRyFIhwMR/tZS5VFRAcirsBSjntp2563R+pfdD4d26cYoPlieX3yn0X5/lIoqOixXzJal7ZiMBtwdboYOqpvfXtiwwlQJXvHWp26SFhR/VdJKJd+s0JgjCH8kRnB3XfLRPCf/xSN13hoBEbJMjC83TC8P/Hv0B9g23/B+neDa5wj4m2RtAZfZudYoYiXkNLjg/EnzeZ++EP4whdi/08O+tH+nynSKFesWSPfmwxtoHzyybidakB+v5AvVmi3nDD9bXDWd6A1j4Vajki2nV4UlaGfyA7TYkZvxyPkiRRyzzz5zNd+UQTdES3jPGQAovJR5S1zNqYw14qUjxqKETxpULDtQCTXtN/fXYDmXzwmKqE4hkhpO2+31KRQAyJX0vVc4lzCm0JQtoIxR1HaXQUTDqeK3TUCY8uWzI7UdKhqiRAYOTrk/G4//hE/4WAYRVEIe/2Y8WPS1iK+vtHrp3z7v6S1WHj/r8RxXj1PZKByOVfIE5vnBF2xvziJzzVrpGipBo8HZs3KPQozWx2Mri74xS/k9WOPSeHQBx6ARx6B2lrJ3PjpT9Of39HowN5gRw2r9O3PHl0dCoTo3dULkFKCI+f6FyFPbP1psKb8LZORdqzU7Du0T/7Ge6xMtf6P+2uf1E11NQSDQmKkg16n3tHdLvr299G3v4/efb2c3Hoy+v++/X24ul1AjPAajwyMU6XP1LBmTcyP9PWv63OiFkL4Bj1BPP0ewoEwqqoS9AfxjfgxESxNBkbII+0xHEBVTNJOPSdzlzMuxqXodBKrBgNH1x2lb28f/Qf7AaibWUfj/EbqZ0nRl3TR8vFECEDz6c3Mu24e0y/KkX1OA0+/R8Y7syK1Nfr9mPBjJlhSCTBI0/aGd8OJJ+D4o4n7J18q25BXyOUCUexaTXrtlwyTzcTkxZOpmVqDd1BfEPmJV08A0LaiLe0xpcow0VAO/WalBsYYIRQKsWXLFpYvX860aSZuuEE0Ir/73cTJXEklpLzd8OLtMjnWEA6KU0gNS8Try+8qaUR1VphrInIhLnGOlcjhq2VguFxST6KuLv2x8bYzmUz8/vfwwQ/Ke5//vBTUTlXI7DvfKZ7GXLaBUlHgK1+BK/874qbVit8aTOTluD1FkGy7XFBUhr7iMB2NkYOSpq+YwVSV8pBC7Bc7iVu2rkPSHnKRrvJFFpnWCoGRAHurLHr9A2n76IJsN3JQCkXXng61C8DeLosU9zGoK8IqVw1KVE8pi1BPYKS0Xfz8wdMhDrP175Z5gwZrY4nmD2Eq8Tb6UJQ+s4IJh1PJ7jNnypx8YECcm7kWm85VQspaY8XR6GDo+BDhQBjFqOAb9mPwgx0wqOCoN2Hd9SE4nCGTU2//l7wWU1XU4eNg8IO3Azr/oe9cmsSnrzd9PSBrI4/+vYabbs5er0APshEYP/iBRPCuWCHO0/jgrq98RWo//r//J1HLDWmmYo3zGzn20jF69/TSvCjz3MtoNvLmH7+Z7h3dVE/JXP8i43MU/1v6emNSXIGB2DEp5FKzjpX+PsketbeAwZJ4rrFca6da/ydBsTZy/lkP8OSzTezYkb4mhR6nngMXfT9dw4P/6ybkC+Ed8OIf8WO0GaNF1h2NDi7+3mo6OyU1SHu2xgqnUp8J+uuSJKOqpYq+PX24e9y6v0vrM929bgKuAOFgGKPRiG/AR3AEzICp1oG1JnWEeM5I7utUFX8gjFUJgq9LatXkKmdcIPQ6ideuVWic38iJV0/Qu6eXSfMnseSdS6LH6fHvaPUYGuc20jg3dY2jXKDZr2d3D+FgGLNixjvgxeWSMc9iBuekItovCWnb3vA+2SbXNXFOhXN/IVJSRYBWq+n48fRBzHoVVHKxX6qA5pWfWonJqq//CQfDdGwUp9OUs6ekPa6UNXrLpd+c+D32BMU998hgcv/98NWvwqRImyyphFRgSDp/gzWWFjtyQBw5pipxSvl65bixJjDi2XNLHQQGpT5CVWlyEB0OmTz39ckAk47ACIXguecU1q1rxOVSohqHqiqZNJ//vHRO118vg1lHh0zu4gs4FQN6BsoTHTAyAtW1HomOVoOAWcggGJcIhawIh+QHzFXvdwxQVIbeH6m6bpmAGRjFRPwzaHLK4tDTCY70A3FBCI6Io1WD1v/pbQtahkElAyPxNzNYRc7HXFOafqVvAxz4NTRfKASGo10IDXcBRYvisfA/pNMsQiTPGwbx8wdrE4QjM39znbwf8pRm/hAYEQk4gxVq5hMl5MtxPKugggoKhqJIHYx//lNkpHIlMLQMDNdJF2pYRTFkDuJxNjlZ/cBqdv15F9se2MbkMycz946z+fTZ8v6XHgSntQPnrh8krp/ikUv/l7QWU1UVr9mA2elAMZr1n0uT+NQCZAa2QOdT4JwBU8VTGTLU8IEFTXk7V5KRicBwu4XAACkUmpyZ/v73w//+r0gGff7z8L3vpf6OxnkxAkMPnE1OnKucKd/TXf8i/rc8/igMbIXpt0LVzNgx5hp9Y1u8fVEAdWzGSr3XlOH5XbxwiCefbWL7drj55tSn0lOofUaLD2vIjclmIhwSmRqDyYDJbsJWZyPoCeLudbN9ow9wMnMmVKWOY6pABwpxoi67axkr/m0FFqd+zSCtz/QN+dj/9/3seHAHbSvaOOt9Z/Gv/wpPPw3/9QErzqbU7TJnxLfPg78iHPRzzGRilrIOxdECZ3xZ1tdj6LvKxUl8xrwYgZGMXKLldcvgZYFmv6c++RQDhwZYetdS2s9p59FH4SsfgbOXwFcfKKL99GI4kvpVPXf0e0UiL0DawH33CbGnKKnbzb/9m74xsVD76SUvALq2dxH0BLHV2WiYkz4Ys9gZJuWICoExTrjgApmgb9woGRj/+Z+yf0yKeBvt4jz0RtLuDBbRl1ZD6aN4SoVUEURaT6Kl8lbNLAmr3t4uBMZvfgNvetNo0mHNGi2zwghIZ6p1dLfeKtkz2gTdaCzewJIKegbKIU8NI8FGqsO9EBiWCCJDMGsE0bjh9f8HgztgydehZt54X80oZGPoFUXez8rQqyoEIwtMU5n89mONVO1cUYRkCwxCsFYi1Ir1bGrf5z6WWNQyMCDyR6CvLcx5L0y7qTxl2MYKmaI8AxFirtj9ytAe2VZH+oWqGRKBU8zvUJQ3tl3zhdEO5iqZP6ihSHuKDITFnD+MasNK7HnTUE7jWQUVVFA0aATGa6/BnXfm9lnHJAcr7l4RlUbRA2eTk4ArgMVpoW1FG15HA/1IoFPzAmBYpD+i66dUyLX/086lqoQNAXHAKTn2pbammNPOfQxcR+Sc1bMBeOHZ4jrHFiyQ7a5dMceohl/8Anp7RZoqVaS3ySROo8suEznc970Pzjhj9HFaHQy9BEYm5FT/QvstF9xT8PcCYl9bS0Tey5343Iz1Wjv+mjI8v3Migc+ZCnkbjeKzuPvu0e9pz8NnPgNDP5OaCEarEVenBNLZ6+1RR3nQF2RPZKpXKeBdGApxotrrM9d5SQdnkxNnk5PQqhBmu5n6WfU0zG7g6Aj0A62z8zptetiawDoJhvagBEYYtr+T8KLbMNSfNi5BkLk4iRtrYn2af8SP0WrEaJb1R67R8n6Xn8HDg1hrrdFspnxgrbbi6fVgcVqYc+UcHJMcdPrEdk3zwTnWQiyqmj4DIx5FCghdvVoCyZMVVGw2ySL81rdEdnH+/MznKVa2Q8gfwjfkwzHJkfaYePmo5FpC8Sia/6qMUSEwxhDxBU8URRrNO98pESsf/ziYzWNYxDvkjemJO6ZJMWUtUn8skRxBpKHj73DkQXFqLvtO0Vn1NWuITpy++U35a2+XyfXq1elTMbX/33ADGMZwvNQzUPYMN3Fg8gO0nj0EHU/CkYdg0rkwO271pzeCaCygquKY8hwvKYGRb6GhTAx9TjVOQm7JNIE3rrMtXTvfdS8M7oT2t8KM21I+m3nZT/u+Y4/Aod/J/73dUljxrO+JAfW0BcUgTtI3MtLZTkM4KDURimU7gOFI56z1Cy2Xy18FY4aMtjPYoG4RGOPIi2JDe+6O/xUO3i9yYsmOpXIaz8oI411cr4Lxwalk90IKeSsGhTlXZ3CApMG0C6ZhcVpoXdrK1k7Zl3Yt5jokQVY18ylI3i7shXA4ozNCN5wRXXTXkSi7UGwpiXnzZPrU3y/rVe33CQbh29+W1x/7WPp58aWXxuRsPvxhIamSb71hTgMo4O524xvypZUxCQVCrPvGOpoWNjHv2nlRh6CGcDim8V3KALOM7c5SJzcYdMu625iisvl4wHUQQv7IHCtmgHmRwOdMBAYIsQhgtYIvjovR5JMvXgwP/kz2me0xJQWLIzHKf7wJjFOlzyylZEw2NC1somlhbB5WUj+Wp0N8VQYzQWu79L/jpOCQi5M46JZo+ZETI7zyg1c49uIxFr9rMafdcFrO0fJbfrOFvY/t5bQbT2PJu5bkff0Bd4BpF03DddIVdZofOSLvTZuW92l1Y3QB706xrdEifslUOPIQHLpffAaz3lXwNaxePVpBZelSuOIKePVVuOoqePFFaEtfbgKrTpWtTHY+svYI67+znsmLJ7Pqs6vSHnf8ValT3LY8wwUR81/deOPo94pRo7cc+s3y0205RWEymVixYkWCXtjb3iYd/PHjsQIvJS/ircHfK/IZ5prxl0dJVSR41juheSXM+1BJyIubbhKGNR6aTuSDD6ZPxQRp/B//uKRsjhW0gTLdGkdRRK/v3Isjv6XRFonCmlOcgsulgCNSiKRYsjApkKrd5QKNoZ+SpHDU3p6bbjBTV0PrVTIwv1GRqp1PvUGe0+FdElmThILsZ2uSopYmJ7S9Caz1oJjAZCu/tlDuSFfIXQ3Bzq/Bvv8d1WHmbTtfrxRLVQxQNauINxFBOACb/xO2f1UW8BWMgi7bGZ2UvL6S1kZNTqg/c/TzV2nDo1DomFfBxMSpZneNwHj9dXGOjwXalrex7K5lNC1simbDp3bChUVeMjAck5nMF+4TGAa3UWfxYCiUxHC0g8EoTiBfD1B8KQm7XWqUQKKM1Jo1cPCgyCG/612Zz/Gtb0mU67PPyjw6GWaHmSu+cQU3/f6mjBrsvXt6Ob7+ODsf3onBNNqdsWWLEC1Z61/Ew3VUiAadyNruFFOsTljEJuOOcEACekIuIHHepmVg7NkDgUDqjx88CL/+tbx++umYbFhNDRw4MHpdZDAZsNZaMVqNWGsT7akVCx8PAuNU6jMLaechf4gNP97As198lnCwcFnVkvqxRiRC31A9mxVnnxezXTqHTQmhOYlhtG8m2UlsrbZS1SYZgUfXHkUNq9gbJPNFr39Hi5avnS79ycChgYKu395g5/yPnc8V37gium+sCIyUbU+Tj3LOjNRvTQH7FAkIPflM0SSANQWV226TbW0tPPYYzJ0Lhw/D1VdLZuGzz8Lvfidbzf/3j3/ABz6Q+fzJ9kuFmvYaQr4QJzefJOhLP+G55EuXcNa/nkXL0pas93XNNTL2JSNn/1USyqXfrBAYYwRVVRkYGECN62StVtEEBekEQyHoicxvSp6BYa4R3Xl79kYwLjA54MwvQdN56Xv1PJBNJ1JV4V/+RX8q5lghl4ESkELFNfOksy9XjAGBkard5YrVq+HQIXjmGXjgAdkePJhD529ywux3w/wP5n0NpywmnQcGsywaXYdGvV2w/eytEqFTsyDmDNdSVLMh6IIdX4cDvxqXyfGEgL1NahSMHJIaFXHI23aafJRz+uhoRVWNZTPli8AwDGyDnvXy7FUwCsXoN4sGbXywZ444qkBQVrarYMxwqtl99mxZfHu92aPBU2H4xDAHnj5A5+bOvL4/I4ERPwb5+vI6PyABAP4+VCCg2CnYcgZTbM7vOgzk7hzTg+Q6GKoK3/iGvL77bqkxmAnTp8MnPymvP/YxeOKJ0Y6hSQsmYXZkHp+7tomntPmM5pQZLJp81MqVWepfxGPrF2Dt22Bwl67DdbU7LTjH10MyYTAuCA7L1mAh2Q3U2gpOp5AX+9JMlf/7v4VUvPJKkcO+6y7xZwwNCYGRCpPmT2Ly4skYjInfp2VgpCsYXkqcSn1mIe3cYDZw4B8H6NjQgas7NyWOkD9E17YuPP1Sk8zlkj8okR8r4uRWq+eI7cJh2PMDePk9hfXFeSJdkGNra8xJ7Op20be/D3uDHaPNiN/lx++S4Km+/X14+1xR/046xPt36mbUATB4eDDt8flirAiMlG3PLfJIKetfaGhcDuZqsfXAlpJdX1MTPPkktLTA1q2SgXHJJXD77bKdPl2UWK68Ugi7qVMjqsR6/HMpUDu9Fkezg5A/lHHOUjW5innXzkvIakuH3/4WhofFlk89laf/KgXKpd+sEBhjhFAoxK5duwglhe2///0iHfXSSzKJC4flgW8stWqJqVomulpRsTcIsulEAvh1BuWWIhUzE3LKBpj6Vlj2bWi7aiwvMTdECYyj+j/j7Ybh/en/vN0Jh6drd7kimaEvg+y5UwMmJzSuEE19z+gGVbD9pt0Iy74Fk86BqkhomV4Cw3sSutZKUcwikqinFMxV0HaNvD76cMJbedtOk4+qTpKV23UfrL0Fel7K82Ij0KSwzNUVu6aBLtuFPBINN3KwtBfjiSxqtPGigowo1phXwcTCqWZ3g0HqYEB+MlLHXznOy995mX1P6hvvBw4N0LWti4Bbws4zEhgGMzQsjUgDjYhMaD7w90kUqcnBiEctjkPAOUO2kYCQnIOfdCCZwHj2WZEUstlS10VIhf/4D1nnHj0qkaKaY2jGjJgiQTZ0bRUCY/IZqT2lOdW/APD2RDJq1JgcVxboaneWOiGXwv70UpxjiegcaLSkrcEACxfK61TE4eHD8MtfyuvPf162FgusWCGvX3wx/dcqSRmbgQAMDsmzl01nvhQ4lfrMTO1cQ7p2rigKzslSF2WkcySn7x06NsTT//k0j3/wcSCWfWG3CxFWdEQIjLBjltguHIaRA9J2k4KoxgrxQY7tkWmqJkfu6nax5vY1PHjzg+x7Yh+9u3vpeK2Djo0dPPGRJ3jw5gdZc/sarrrQxUMPjSZ/bbbR/p3aaZKB4e5xR4mQXBEOhhk4NNoJPVYERsq2N+NWuOABmHZz+g8azNAcYeE6ny7pNc6cCZ/4hLxO9gsePw6PPCKvP/AB2L07tX+upUVftoOiKLSfIw/P8ZePF3ztqirtHUSq8bLLiue/Kpd+s0JgjDNaWqQgNEhmAEjUUUn9KiGPRBcn/4U8JfzSPBEYgcN/hH0/Lcrpikk66E3ZLCYKzgYoJ2gOKU+Hvqhqbze8eDusvTn934u3jyIxxh2B4Ui6dkWuJiXmvh/O+w00nV/a76meA7ZJUgdDDzwRD8Z4S+yVO9qvl8X5wDbdUYsZMbJftqPq4qiR2k0FZmxlWLxXoAPx8wdvl0SVlmr+EA6KLi5UMjAqqCAZ8QEdI/uxBo5J/xkf0JFj0Ec5QSMwXsvDL6UV8NbrkNv91908/Z9Ps+Mh8dqmJTC0/i/kjxTgDsqYlE//5+2Sz5uqMaie4qzFonUwDkd3FU0KNYJkAuOb35Tte94jkat68MQTIsuRDE3K96EH/Gz6+Sae/cKzKYmdUCBEz06RLGg+ffQcLRyG55+X17oJjKGIx75qNpjyK2yceJGaTT0iI2WulTFtPNfaIU+EOAuCfyCmOx93TRqBsX376I9/9auSfXHZZXB+3JRde71uXeLxQU8wGnEe/xf0BPFEvnLuXHHUTiiUYb+arp2DyLZlaudVLbn1lxqGjst8unqKaNXE95tF92OpYfltAVULSANoiOgNjhOBAbEgx2uvlf+/FImz8g35cPe6MVlN2OvtGC1GDCYD5ioz9no7JqsJd6/U+lm9Oha8rPkFLRap0aDB1e1ipHMEo0UyOY68cIS+/X3RP70ZNP0H+nn8Q4/z6L8+Gu1fR0ZEcg8ko2BcYK4Ga0P6973dEowYdEHn32Fge8naXSgE//M/mY9pbITvfU8Iu3j/nDZGfuQj+sfXKedIwz3+ynHUcOKY53f5ef4rz7PviX26Ah3+8Q/pv6uqJEPuVMTEF/47BXDGGbLdH/HbDA1JFIrG4BYN5hopSOvrgcCAaHMmS2hYG8vLsePrgoO/ET309usLdibqJR2amkTOK1thpvGANlBOeFibpCZEyC92tmcxTmBI9PENVjCmWFyEPPJ+YKi8tNE7/g4HfgmTL4HT/n28r6b8YKkvzXmDLlDMsbojky+Flsv0f94XCSWqEBiZYW2UZ7vjH3D0Iaj9TGHnO/1zEj1qTWrDUcKzWARGbWHneaMhOn/ohbBP5E/CQSAI/n4ZGIs9fwj7YPJl4uizljottYIKJhC0gA6feIGNqspctxvjsCPmOTJXi2KNJhmTCtZGOP+B8pozRaDVwXjmGZEYam2VebeeCMKoQ65Dn0Oub5/IjzTMEefJKAIjuf8DmV+Eg9I/GR0SIKGn/zPXiHxPyBspQGvAGB5BCYRjtsu3L3VOj5w/MVAjVbFSvb9lMhYskO2uXSKv8fjjErn/7zqnt5qUbypEao/zsU+a+MaKvYQDIYZPDFMzJfG36NvbR8gfwlpjpWbq6N9Jq39RVRUjwrJiMOKxr12o8wNpkOpZMdrAiBRth7Ffa2vX5O2SwEAQAkMNgS2UcE3pMjCOHIGf/1xea9kXGjQCQ8vAsNZYcTQ6cPe602q6+wwOfFjHrYB33kjqe1NinPrV5Hb+v/8Lzz2XXtpLQ5Tw1dlfahg+LmNLdZsQGCWtfxEYBNtk8HVH1gORL2tYDod+B/2bpD9OVz9hDLByJfz4x7B2beJ+k92ExWnBN+TDYDJgq7ZhccraVGsfR45IRprRKOf429/EH/j669KHadkc7l43wx3DBN1B/vbBvyXUCXI0Olj9wGqcTZnTX7q2y29XM7UmKr93NCKGUVsr9WzKDvHtznVEavk8/1aZ52goYrvTo9jS2yvHaT45zT/3wQ9KNuLDD0u2oR40L2rG7DTjG/TRu6eXSQtidUE7N3Vy/OXjDB0fYs7VczKcRaBlX7znPWLPUxEVAmOMoCgKdrt9lE7nmjUxLdB4RKNQCii0Mgq2JmnYIwdh86ekk1/+w0Sa3FxTXguZqllQvxj6X4djf4E5hVGJmk7k8eOZyYl774VbbpH/xx+Xb8r1mCIchHW3SdryWd+RKLFyhKJA49nyOpdiTEZ7+nvSFgvRr0jd7sYUlYhvfVBVmZjGEQYF2e/oI3DkD5KOOvPtuYcDacU5rRUCIyumrhaprZ6XpZ6Jc2r+tjOYJFsmGY5ISJC7wPTaeAmpClIipe20+YP2+6kqvPZhccIt/hLYWos/fzA5Yf6Hine+NwDKYsyroPQYFdChovrNYHECigR0eCNF9cw1EyvoIwItQn/7dpEYApmf6wnu0giMgCuAb9iHtTp95mUoEGLoiPRraQmM+P5v/89Er3vaauh4CuoWQfNFQrrr+R1tTdByuZAeky8mPO1Wju7Zw7x58zAaIguLfPvSxrPh/PtTzneKFfykRZceOwZ33imvb7hB6pboQTbHkKrCkWMGRi6oxxHooXdP7ygCQ2/9iwsvzKH+xWDEY1+rvyCDrrEyFcZ6ra1d08lnYO+PY/trT4cF9yRck1aPIpnA+NrXRPbpkktGB/BpBMaOHUIc1Tc5Wf3AanxDiWuyeHzys1bce53jUv8CChgryzyYLr6dT5okBMb990udmnT1afLNwBg+ESEwUmRgFB2WeljxfQgHUFRDzHbVc+XZDQzB0C6oGz9GbOVK2W7cGKsFEo+hY+n7BC17aelScTpfeKEUk372WSEw4rM5bHU23H43ikHBVifpS0FPMJrNkY3A6N4hmQrNi2Lr27GSj4IUba9rLXQ8Dk0XQtvVqT8U3+5sLeDtEBJDk8IvcrvTq9iS6rjVq4XEeOUVkd2brkOR0GAy0HpWK0eeP8Kxl48lEBjHX5V175QV2eva7twpQQWKIvJRxUa5rDEqElJjBKPRyOLFizHGeb2zFZQGST8qqsyYrUmcAianaKXWzIHq2bG/MlzEMPUG2XY8KVHVBUCvHqxGHhUr5XpMERgUp5KvWxZI5YyFn5Q/R47FxtWQREuNZA4rSdXuxhzaIsZyitLgxYCnA16+C177aCSqW1CQ/VwHpSNNrvOjqjLpyQaNwLCVYiZ+isHRDpPOlde9rwAlaHtaH+E+VlhRda09miqEYjqktZ2tKTZX0OYOJqcs4st1/vAGQ1mMeRWMHSIBHYrBTLXTjqKGZX6khiTaO+SV10ZbbO6v/aVyvpUJ1qyR9U8ytOCubHUSTFYTtnpx7GRzyg0eGSQcDGOpsuBokjlzSkec1v8FBkWGxzENVnxPZDBrF+rv/0J+iSA1OWHmOzDWzuO0FddirJ1X+FosVSXRIuOZZyTjAuDVV2X7wgv6a1fodQwFaiTrrnf36Eh3/4gfg9lA8xmpA0xyrn8RGInJbuWQgaFrrNT+qmaJdFPvK+MzVtqa5Nk1OSVIxOQEwqOeOS0DY/dukYsCIZz+7//kdXL2BYhqwdxI7d3162XrbHLSMLsh7d+W/eJkHa8MjILHSi2YzmiTwJsy7Fcvu0y0/AcHxXeRDtWtQkAMd2TI1ksBjcDQCMaSZmBoMJgTbacoZSEjBeKonjpV2s3LL49+v2FOA5YqS7SORTy0rA2NBNH6Lq0v02Cym6huqaZ+dj01U2uwOC1YnBZMdn1Mraqq9OyQ4IamhbF+aCwJjFFtb2gH9G/RJxFstMt6sGo21J5WsnanV7El1XEtLXDRRfI6U7tLxuwrZ7Pk3UuYfWUsGkANq3S8JoNm24rsUrqaj/O66/QHFeSCclljVAiMMUI4HKarq4twOBZpricK5ehROa6oiEqjTBBnQ/0ySYsOeYXEKBB69WA1Pbunnw7zox8N8vTT4YlRb8IfETE01526RWrDPiGzfD1SRDHdYSna3ZgjMCjbisM0PazNYtPAEAy8Ht1dkP0iRSypmhHbd/xv8OK/wIFfZf+8d4L1k+ONGW+HZfdK4XTytN2Rh2D392Bo9+j3bC1gMEbI2Qyp+9kQ9otsRyUjKi10204j97S2Umz4+iq1g3JEWYx5FYw5VF8voYEdqEO7JAp1ZD94umS+P7I//0LT44BiBXfpjSrW5KPq59SjKAqqGnPEjYokVlXwRtgNe0vmC0gHowXO+Rmc+QWomlG6NluMouBJWLNGCKTkS+3u1kcsgX7HUMuiCIGxZ/R4v/Q9S7np9zcx67JZo96Lr3+xapW+72Jop/xejjbJXteJnGwXdIn6waEHsgZflQxt18Cc98FUmafhH/3bTp8ukfp+f0za+utfl/+vWpX+N02WkcqEcDhWY2O8CIyitbvhvTCwBUKFBViWAgZDLEvqpxlKiWoSUoERHcFdEaiqGs0o0CSkSpqBEdefjbJd43LZ9m0owRfnBo2ASJaRArDX22la2ITRMtr5m0xgXHKJbJ9/fvRYZ6myUDW5CovDkvP1DR0bwjfkw2gxRjMOYWwJjFH2ixRnp3quvhMYLLL+UEonJKQptqRzoymKkFXp5ORvuUW2f/yj/u9sWdzCaatPixKKAL17e/EN+jA7zTSdltkf0dsLv/61vP7oR/V/by4olzVGhcAYI4TDYQ4cOJBg8ELSkwpCtDjtBIksVhSY+lZ5fewvCRHa+UJvMWyjES66KMySJTu56KJw+cpGxUMjMEpVW6DYUFXRYs0FRkfMsexJ30BStbsxRyUDIzsMRkkdBTj5XHR33vYLumP9nHNGbL/RKvYY2Zf9HNrCbqL0k+MN51SoiU0+87Jd94tSMyaVQ9xgEhIDCquDMesdcNEjMOP2/M9xikO37TS5N82hV2zs/CasvUmeiwp0oSzGvArGHoqJgGqKZFrYI1HB5kgdKBsTablXrOAuvbru/ftlztwwW5w5AwPirIUUkcT+fiFVFUOsTlPIC51Pw4knMl9QPIyWaNRw0dvs8Udh/Z1w6LfFOV8ExSKW9DqGLrlJCIyBgwOE/KNParQYMdlGO7C2bs2j/oVzJsz9V2i/QecHBDnZzlwVy1TtfCqn7ykaHO3Q/hZojnhJAyMQSpR5MhhiMmE7dsCJEzHnd6rsCw3pCnmnwuHDIrFjscCc7JLuJUFR2l3II2sKVc24Fh1PvPvd4stYu1bkZVKhurWaG393I9f/4vrUB6SAf9hPwCWER8lrYIRD8OIdsOkTEBgebbv6pbIGqVucmyR1CZCJwEiHoSHptwAuuEC2S5ZILYrBQdi8uXjXp8lHNc5vxGCKzQvGmsCI2i8cjBG6qeSDxwl6FVvS+QVXr5bjNBmpfHH8FZGPalnakmCvVPjJT8DjkWdHywApNspljTFxZrSnIApJTyoIWgbGRNJ2r1koTKvrCBz+PQzvT/zzdud8Sk0n8rbbZDshyAk90MiAiUBguI+Lg+rVf8v9s7ZWGR38/TKJLFdUamDoQ3NktO15adSCKmdoUgC2SYm1DrTJ0fD+7NGJ5/0azv0F2LOnbFYQgbdbftu+TTCwDWvgmET/6umnwwGR/QKonpf6mPolovGdVKA0ZyjKuBb6O2Vgmyy/Y7hEWRLuSLGq5ILuFVRQQQJUaxMey2zU2jOg9gyong/2Vvmrni8SCyE3DO+RvzJGsYK75r9lPpd8+RJmXTE6Sj8efftTF/CuqQGbLelgzUlpa4qNIf2vw67vwKH7swdYBYZLkhmRAFWVIAAtC7VIKBaxlMkxpOE734GaNifWGivhYJj+g/3R98LBzI4TTXJl5UowmzNfSxS2STDl2vT668VCyxWyPfmsPinTUsHoiBCbpMxo1Qq1/+538KEPgc8nv2cmSS6NwHj55Zj0VDpo2RcLFuRQo6Qc4euJvTaVZ121tjZ485vl9c9+lvoYxaBgqcotml8xKqy4ewWn3356NKOgZBkY7qPSd7qOgqlq9PvmaljxQ6mTqoyva1OLyH/pJQhF2kHQE8Tv8o/6C3rkgE2bpP+cM0fkh0ALoJXXyTJSII5kV7eLgcMDOV1f93ZZh8XLR8HYEhgJcB+VoACTI/f1tvekZJyWqC/Vq9iSCvnKSAU8AQ4+c5Atv90CwIlXTwAw5ezMUut+P3z/+/L6ox89dQVYNEzkYWPCQ29B6XTpSXkjKo0yQQgMbzesf6c4wMJ+2PE1SR+Lh7VRCpRV5F7iMjDqxvUydME6SQaukF8c/Xqc/EGXaDorRlmU+wfEYW2dlPWj44IogVHJwMiImgXSJ3m7oPfVWIRYPhiJOMLjsy8A7O2ShRHygue4RKOlg2KQRW0F+uDthhdvl37a34fRXMfcoBXjsCM2k8rUT48cFOePuSb92DT3/aW7/gpyR9ubYMp1pZkpB92xsSzXGkkVVFBBChhkvqQo4+s8zYJiBXfFy2NkwvL3L6d3T2/UoZPRCeftlK0t7ssbloO1QSTvel+GpgvSf9mue4WYnf8hqDtD1/XlDGekYqirgLDPFCimaoDmGLrnnkRSpKYGfvELzTGk0Di/kd49vXgHvNFjnvvSc3j6PSz/1+U0nz56rpBz/YuxRP0SmVd6e6Dn5cLmubmi6wWZ+zacJc+rtVGeRV+PSGdFsGYNPPqovH7wwdjHL70081C/cKEUHx4chC1bMme/bNsm2/GSjyoO1Bj5Uz23rIMG3/te+Mtf4Fe/gv/+b7AWGAMEYHFamHN1YsR8yTIwohJDs8veM7toUawd7D1qxdHowN3rJuhLzeo5Gh28ukUMsjKpO7j4YmmLzz4L735r4ntqUGXg0ACo4GzOXLQ7HnOunoOz2cmUcxLn1eNGYAxHFBGq5+RuW1+vyIgHBkpW83X1arj+eiHmOzpk3nHhhfqCnm++GZ57TvrRj31M3/f5h/2sv3c9ikFh7jVzMTvNUuB7WeYJz4MPSrZcSwu87W36vmsio0JgjBEURaG2tjaharsWhXLTTdJm40kMPelJeWOiERiBIemkbJNTF+kJeeT9wFBJCIxUtitrTCQJKaM15rR2H8tcPM9cIxPu4QMi72OukUiMcDBSsNwO9skJJMi4205VRXM2MDgxCKXxhKJIFsaRh6DrOWhemb/9XGkIDINRCikO7pQJcSYCo4LcoPXTRruQi0EPiqUZLE5Ayd5Pa1HBNfNKu0DZ8XVJMZ9958QZA8cYutudQW94ax5wS9o0lnqJzKpAF8Z9zKtgbBHJPlVQMRuCKCEX0f426RhAoq6DI0Lgp4pkLQNkC+6CzNrTuaJxbiONcxuj/89IYGgZGPH1LwxGaLkcDv9R6vSlIzC8XVJkVlUTAm6K3mY1AsPTKQ5rY3IaSX4otmpAvGPo/vulSPSSJYlRrRf8xwUYrcbobxMOhune0U3IF8JSPTpiPBwWhxHkQGC4j8HgDiGU7LlJHuRsO8UAky+VZ6XzqbElMI49AkN74LR/h8mXwPwPi8Scc2r0EK3GSap29+Uvw+LF6aOODQY47zx44gmpgzHmBIa3OxYwlgrmmoS5Z8HtztcnWW2KSbKxgpEaGGWoCHD11RJFfvw4PPJIagfn4ecPc/CZg0w5ewpzr9FZiyAJJcvASKqRkNZ24QAMbofa08cty9pgEBmov/0NXt3u5K4HVuMbSq8qYK2xcs2NQkCkIjAgsQ6GlrUBYHaY8Q36GDw2iKNe3zy5aWHTqOyLcDhGJE+dmuJDRUaC/TTbVumUj0qYz9iFvPCejEkMlwCaYkuuuPFGyWB7+WWRkZo+XceHFLDWWxk+Nszev+1l2V3LCHqDuHvcuHvcWGusOJsSCStVFX8xwL/9W3EIyrSXVyZrjAqBMUYwGo2cpolKxiFdFEp7uzyMJSkYPeM2cJ8Axxj0UsWE0S4R96kQLlByJtPXprFd2cLaKE5A+wSJWnW06yMwbE0Svb3tv6XQ89TVQg7s+jYM7oLWq2D2exImqONuO0WBWe8cv++faGheJQRG3wYIjGA0V+Vnv7ozRIaqLsXqqHpOhMDYL4u4VOheJ3+NK9IfU0Fq2JohOIwS8uG0kOgky9RPD0UIjHTyURpUVRap+daU6X1Vno1Z787v828AjHu/CeJghUr2RY4oC9tVUHpoAR2+Xgj7UIAqMxCIk3OzTQIVCA7H+l6DWYI+vJ2yBrA2lp28ZabgLg2nnZad51bDKoeePcRwxzCLbl6UsnBqKqQt4A1CpjqmjA5+aLlCnNL9m2U+m4ocP/GE3Ez9kgRHedHbrKVWAmb8AyK7W5NlTNWJUqgGaI6htjYhMNavFw1veyRWLbnGRe/eXkK+ENYaK7XTEucAoZBkb/T3i/TX4sU6L6L7RTj4GyGeFn1K/8WTp+00sqt/o2RijEWmb9ATi3SujcyLk9ZbmWqcaPjIR4R0ShdYef75MQLjgx9Mf56iExhaBnAKOawokjKA8253Wt87tEf6UoszVgcjOCIKEY62supXTSZ4z3uEhPrpT1MTGCMnR+jY0IG1xqqLwDi55SQGs4G6GXWY7WaCQSkiDKXIwIg8uxEnd0rbqSq8ereQzIv/C+rPLPJF6MfKlUJgvPAC3HOPc5TDOR4+n9RJ0D4XD60OxtAQ7D0yOpvDaDESDoZxn3RjtplxNonsXq7o6hIJIoNB+uJSI8F+BpPUB8pWwDtpzhNFOCiBu+Zaadtl1O40GannnhNfb7YsDFe3izW3r6F3by/efi89u3uompwYaOJodLD6gdUJz9S6dbBhgxAX7y+xUEG5rDEqBMYYIRwOc+LECdra2jAYEvX5CklPygsT3SEX8sgAZW8pWcpYPDLZriwx7Sb5myhwTIG+jUJgZIOlHrzHhchqu1rSSef+m+jst141KtJswtnujY6qGTD9VqhfDCZn/vZrvihWU2PUd8yWbaZC3kO7JN3e0jDx+8sxhwK2VlTXIUIjxzBaG1EUHVON+AyMdAh54aV3SaTbyj9KsdpcEPLF6quU0SS33JBTu9v9XRg5JFGdxcxo0jIwJgoRXyaojHlvEGgBHZGI43A4zMmuk0xunhyzu9bHxUclB12w6eOy6D/jc1C7qCylV9MFd9XXi4P673+Hd70Lfv5zcZynXD8psOFHGwh6g8xYNYOa9tF9/pG1Rwh4ArQubcUxSdYTGaOIp66Wv2TYW4SY6N8MHX+Hmf+S+H44CJ1/l9dt1yS+VYo265wB/s0iI1UkAqOUqgFz54rj7MQJcX5fdlni+2rky7q2CbvUdHpTQgTomjWJz4rXK+e87z4dgYCDO2Rbuyjn687LdvZWCa7xdsrfWBAYQ7sk89TWnLa951LjJF00slYH48UX058nGIwVky4agaFlABusupUa8m53Wt/rH5Rsb1OV/K6Hfw+dT0PjcjjtE2XXr955J3zlK/D007B/P8yenfh+VYs4Skc6RnSd77WfvsbgoUFWfX4Vbcvb6I6UuDMYoLEx82dzQkJ9PHFyp7Sdoggp5+mQILhxJDA0EnftWmk3mcj2114TEmPSJJiX1FVrdTAefRReet3J+5OyOVRV5Z+f/ifuHjdL3rWEOdfMyUiWHFt/DMWg0LSoCYszlsGmyUe1teVQN6gAJNhvzvtg9nuzF19PmvMA8uO+/p/StufdLev+Mmt3uchI+YZ8uHvd2Opt+If9hLxC1isGeYCCniDuXje+IR/OJiehkPTH//Ef8vk77oCmEt9+uawxKqubMUI4HObYsWNpq7afsgWlSwFPRLPT0zkmX5fNdhUUCHvE6aWHwBjeI5FE5uqYI7rudGi/PmWa/LjbLuiRaLxCi1K/kTDzDrGpopTGftXzJEOjNoP+dFRmr9h50G8Q2CaB0Uo46IURHTrc8XrsmaJwjLaYbJEWoZ8LAsOyNZhSL3IrAHLsN4f3Swq4Jq1SLFQyMPLCuI95FYwdbE0SxFE9m7BzJod7TYSdM6P7sDUlHEP1bHHqTL5UgkCG95XdYj8eq1fDoUPwzDPwwAOy7e6W10Yj/OY3ErE6fTpccgncfrtsZ8wQh7aiKDhbxJkz3DGc8jt2/XkXr3z3Fbq2d0X35S2D0nqVbDv/AeFQ4ns968XhaW2AxrMT3ipJmy1RHYxCippmgqJIjQUQO8djw/9u4M/v+jOdmzrp2ip2mnxGzDia7FGy8/34cdm/Zk2GL1bDMBTxpmfKAE+DvG238D/gnP9LnSVcCgxGUh7iv8/TAUcfgY5/AMWpcXL22eLAPnxYfv9U2L9for0dDp2SKrlAU2pI/ksx3yuo3dmaoGYOtF4BTedJ3zrj9ki/uqe08pp5Yvp0uPJKeZ2qmHeUwOjMTmCoqsrICTmueooUL9cy15qa5BkoGlyHI/XxqqOZbWlt17Bctn0bingBuWP5crBYZCzZvz/zsWvXynblytRExyWRGLpnnwVnk5OG2Q3Rv8Y5jSy6ZREWp4XO1zszkhcAW367hee//DydmxP9Z2Nd/2KU/RRFpBizIXk+UzMHWq+Uduc+VpbzmRtvlNt7+eXY75wNtnobBpMBg8lA755eLE4LFqcFkz0WDLhmjcx1LrkEXn1V9j32WJbxrggolzVGhcB4o8HTEUlx7hnvK8kfWuq1PymNrAJBpvzfcoQjBwKjb5Ns65ekHulVdfTCcTzR9xqsvxO2fmG8r+SNA1+vPEvpngPnVFjy30KUpMNEqxNUdjCgOmcBivTT/gxp/SCLvbN/DCt/nz0zIpf+IhnBSOSOuabsCwFOGNgjjiTvyeKet+EskdqoWVDc81ZQwRsdLZHw9q5ny2u+lAKpgrtuu00W6SaTOAWSHaXxjuvqVnGupXLKqWGVgQMDADTMjhX8TktgZJtbTzpH5Jsc06TuWTxO/E22LVeOjTZ79VyomV8Sh04qYungwcIljzVH3T//mbjfP+zH0+ehe2c33TskzLv5DJmbZZI90vZ95CMx/fhRcB2GoFuyOZNrppUSlnqphzFWGIgQGLVxBIbrCOz/PzjxOFCcGifV1THprnRZGJp81KJFRXZ0RzEGjrVwioLMVTOlzYVDkoVVhnjve2X7i19AIJD4ntZXevu9BL2pC05r8PR6CPlDKEYlWkC6ZPUvUKRvbViefd5ev0TaletobB03DrDZYMUKef3CC5mP1QiMdNJ7qepgxGPWFbMwmAz07emjb39f2u/xu/wMHpZxKbkGxrgV8C7G/KPxHNn2vZo9i2Mc0NISs+1DD+n7jIKCrV6Ccq21oyXBnnwyNWnf1aWDtD9FUCEwJgK83ZEoxzR/3m795+peC69/Fg7dX7rrLTWMTtG6U1VJv60ghpAX1t4kTvOJEvXvnCYRLM0XZV8g9msExtLR7/W+Cq/dE1soZkMx21U6BOIcphXog7cbTj4LW7+Ccug3WAPHRCJMr106/g6vfAD2/qCAa6gQGAXDVIXfNEkWE3pJ1XQ1juJRCIFRaY/FhzXSRoq9WGy5DBbcA7Xjr7VaQQWnFOqXCkE4/XZQy5vASIc3vxnq6lK/F++4djSnjyoeOjZEyB/CZDNFo4ghgyPOdRDW3iprqFQwmOHsn8DiL0umhQb3CRjYKs43LUuj1Ji8CpZ9S7KTS4BSqAZoBMarr8JIxFyubheWGgt+l59tv9+Gp8+DikooEKJvfx9P/9WlW/YoJQa3y7Zmgb4I4GIjHISRA6X9jpA/JtEZn4Fhjej8+CSgUatxks5HrChS4DdbjZNsMlIlKeCtQQ1B/+vgPkLJiAxvF7z0dtjzg9FzW00eruPJsnSmvuUtUp/i5EmRJYqHpcqC2SmZI9myMIZPSEZbVUsVBqO4ErUMjKLXv6ieDad/RmRKs8FcFZsz9o5vFka8jFQ6hMNSvwBG17/QsHgx1NZKHYxNm0a/b6u1MfWCqbQsa5GaV2nQs7MHVKhqrcJen5iRNF4EhrLvh+KvOvlc/iepXSg1n6rmxLLsyww33yzbBx/U/5n6WfXUTKuhfmZ9wn5VlVo2eZP2pwgqNTDGCAaDgaamptz1wvIoTJX5fJERxlp+aVZZEfLEXlvqJKrX3QGG0dJBxUTethsP+PtlssqgFBKbCLDUwaJPZz8u6IpNwlMRGL4eGDkIxx6RSaTBlN52xW5X6VBxmOYGzS7DB8DXg8FoZaGxCeOLltiqKptdXIdkq0kopEPQJfaxJ4WThbwxu1UIjNwR6acVVAzWBrCInFRC/52MbCKx8agQGCVHTmOerUQZGBXkhQk1X6mgaMjJ7gYTnPmFkl9TKfHCC9CTIZFcc1wf6k2v665Fq9bNqkuop5CWwPB0yrwh01hmSlGXz94KS74qUnsp6h1U2qxg5kyRxDh0SJx+F54lBU2Hjg8xfFwcU5ZqC4pB4aFbJJR1KODAwWrcZA5+SCt7pBEYedS/gAJt5+2BjR+ROed5v8m9ppdeuA4KUWJtAFtLbL818iwGBiAcxGg0FaXGyfnnww9+ME4EhqdDJEkDQ/K7ug5H5oyj7ZO37U4+C4ER8JwYPW9tuhD2/0x8LX0bpR5GGcFikdpB3/iGFPO+4YbE96taq+jf18/IyRHqZtSlPc/QcZlLpyJ+i05gpEBG2zWcBQPbRQFhyptKfzFpoBESmQiMXbugrw/sdliawq0BsToYf/2ryEgtT/FInffv50XrJKSDJpPYtGj02nmsCYyo/foOSFsx5l54PHYyE5z7i7HJbMwTN94IH/4wrF8vv7We39lgNFDdUj1q/8gIdGaI3dZTq6gQlMt85Y09WxpDGAwGZs+enbvB4wtTmetG/xmsscJUeqARGPai5/iVDuYacVqGfTLRCgyAGgTFCGG/3JO1sWROqbxtNx7wD8jWUn8KSqQoMOf9MiFJVfRu8mWSvu/tgm4Jt0pru2K3q3TQZAQqDlN90OxibQSDGUUNYXXUoVjq9dtlJFLsLZMcQPc6iaTcfd/o97QMD007twJ9SOqnlcAgDpMPJeyJLJB9YEnRT6sqvPoBeP3/6ct6KoTACHklyrLSHjMipzGvFASGf1AkAMKB7MdWkIAJNV+poGh4o9ldr17/UDi9hFTfPiEwGubEsiWCQSkkDSKLlBDFqNX5scc5gZOhZfb2vgYnnpTXIwdEg7/uzJRjXEltF/LLuDdBEC8jpRU0tdZYMZhFD7xuRh0Ncxqw1dkwWU0oXjdWsmebp5U9Gtol2zzqX0CBtlPDkjHg64Mjf0yfBV5otnjNfLjgAVj0mcR1oblWnH6qKsFvFKfGiZaBsXEOMsFtAAC6OElEQVQjeFJwffESUkVFyAf+iISOc7qsBQPDkaCm0eHKedlOVeFkRONs8qWj3zdaZC0K+tUA9KCIigF33SXbxx+HP/wBfvc7cYyHQpJRYXaaCbgzz700QrFmSmwurWVgFFVCKhyUe0sKN89oO60OxsDrkYDO8cH550tz27Mn9tskQyM3zj03c/FszRH97LOp389GXgBR+b1k+SiIERhTp2Y9TVFgMBiYPWMqijvyxVVzCjxh+ZIXIONPrjJS6RDMrO4Whd45Uq4ol7lmeVv8FEI4HObgwYPMnDkzP6NrhamiDtHauJPnIBWkORmsEyiy2NYkEdfJTsu+12DvjyXiacWPSla8p2DbjSUik1As9ZmPKzdoE2g1mD7q3eTIHE1htEi6/IFfw5GHofliwqqa2XZGu0Q9+XrAVJ1Y6K0Y9VUqEd/5wVQF1gZU/yA+9yDWuhkoRCZomewS8sacDJkIDM0JPrx/dPS/v1+c3JXsi9yQ1E+Hw2GOHjvK1Pap0vaG9sCR30sEK3F9ta8X3MfFbnraiT2ysvacEAdALjrSrVdCyxUVx3gW5DTm2UogIdW9Dvb+SIrdnpFGrqWClJhQ85UKioa87B4YEVlZSwNMOjv78WUEvXr9U+ZX0fsiuE66UFU1IdOif7/Ml7X6F2vWwIc+JAWGAe64Az75SbjvvojjVpOstaX5ci2D1H0sEp1tGp0JmiKDtGRtdu+Ppb7B7Duh/brinbeEuOQS0ed/5hn41L/KPrPDjLXGSsAVQFVVLM5YdnlVVZCWFuhPE5GqKOJ8Tyt7dNb3pIh39fy8rjdv23m74aU7YHifEBiD28GRxBpYG+Gs78JrHy48W9xcLX/xUBRp+94uOX/k86tXw/XXSwRvR0fM+aZXJmz6dPlMR4fIgV10Uew9nw/27pXXRc3AUFVZx6khyerHELm3biEx3CfAnBiQlJfthvfIfNVohUnnpz6m7Ro49mcJsAwHC3euFlkxYO5cIY+2b4dbb43tb2+H73z7PG78D0NCP5kKmoRUdVuJMzCG98GmT0DVDFj+vejujLZzzoA5d0Hd4nEtpl5fL8/41q1CVKQi/+ILeGeCRmC88II4sE1pHil3r5ujLx5l3rXzEmwY8ofo2yPkXvOi0QYalyLeO59jqhqSAEVNzq5QeHukbSb3dWWAm2+WOiYPPgj/nkUNLehJzVIEPcG0tk+G3jlSriiXNUZldTNGCIfDdHd3F1i1PQxDu+UvH91aVQVfhKWfaM45W5PoIMb/TbtJ0jNnvqNk5AUUy3ZjhIlKYBx9GF56JxwssDZL25uEkHAdhr4NOmwXFr3UkUMx6aFiopKBkT8sMqFRfD2oemsouA7L1tog2TjpYG8XwivkBU9SBdD6M+HCNbD4v/K46Dc44vrpsHMmHcMOws6Zsq//NVmo7/p2YlSUJgvnnKEvjdjWDI0rpK2H84iuUhSxfQVpkdOYZ5ssC3RTVfGi3TyREOhkh04FWTGh5isVFA152b3z76LjfvTh0l1YKhQhmlivXv8l1zq4+IsXc833r0l4X1XVGIExp4E1a0Q6R8u+0BBfEBxPxEueLgNDyyA114ISkbbVZKdMVWkzSEvWZk3VQvKXYm5bImgZGBs3iua7BqNFvOeBkcTgA0WBz6bhuHXJHpmrZD6R55wgb9tpz4qlSZysahAM9tFZ4J6O0maLJ9XB0FBIjRNFgQsukNfJMlK7d0ukf10dtLXld8kpMbg1UnNCBaNDsn6Dw+LIDAfBd1LaQ9xaLC/badkXk85PL/nlmALn/hwWf6U4keFFVgxYs0bIi2QcPw4332rkT3/KHs2/8OaFLP/AcprPiPmSSpKBMRxhu5JkzzPaztcjxerVkGS/laK+pU5kk5HSS2DE18HYvDn1MSF/iMc+8Bgbf7JR6l3EoW9/H+FgGFudjarWqoT3RkagO/KTHDkyNrUTwuEw7pOvS2JN9dziKIbs/RGsfzd0PlX4uUqAG2+U21y/XiSeUsFaY8XR6CDoC+Id8I76C/qCNE930Niafq2st1ZRviiXNUYlA2MiId45EPLIhDgXBAblHIoS076cyFAMsOTrp6BUUgGIEhh143oZOcMemcmmk4Xx9ULvK1L7IlP6vskJrdfA0TWyKK9NIyoZhUEmu+HBSGR4kRHNwMjgTK8gNawN4DqConokLVxPn6VHPgokw6JqNgzulAgfLSNDg2IoywiOCY15HxS5hpFDcOh+mP0e2a8tUGrm6TuPYoAzPleSS6wgD5jsQvgVcxzWxgF7MT0cFVRQQQKaL4YDv4TBHeIoTa4HVQoUKZrYaESXXr/ZYqB12ej7UhSFt/zsLfTt68PRUs0996QviqkoUhTzrX/okKg/W4Y5KMic0j5ZMt7VkKy9qmbK+qsYmb16oWV/aIEdEwDt7RIhvncvvPpKbL9jkgNvv5dQYLR37bJLoboahpPqt7a3yzOgR/Zo3GCukufdPwAhV2Lx9/hnRVNhSIVMz9TQbmnjjefA1LeOfl8jMPwZ2mMeOP98kUpJJjDi618UbcoQdMPRP8n6sP0tEtyiQVVh17ckA3jSOYUFO4YD0PW8vG5JIR8Vj1IEVeb7DMQhFIJ77kn9Xnxfd/31mUmrptOaaDot8R5LkoExsk+21TolhsaqvqVOrFwJP/pRagLj+HGRKTQYREIqE/TUwTBajExbOY0D/zjA3sf3JkhFTVowiTf/+M24e9wJmRlr1sDdd8fOcf310m9Gsw5LCFvwGFjQb9tssEfW8b2vwNQbMh87DmhtlefhhRekb/zoR0cf42xysvqB1fiG0rdna42Vqhec3Hjj6PdyqVU00VHJwJhIiI82Dblz/3y0gHdj2evF6UaFvEiERmCYJ1gGhiMivOg5lnoV2fsq7Pkh7P5O9nM1XSCTuZ5XoPNprIFjMBIfgbFX0gw1VM2IvNAZ5Z8Lmi+E1iuyL3grSAFDVF9f8WSoWBUPl04CA2KTpuF9uV9aBbnDUgfzPiw6xYd+C8cei2iFvxyLUC11dNS+n8H2r8pitoLiodjjsJYVlUwsVlBBBcWDtQHql8jrk8+MzXcWMZo4nV7/5Mn69PpttTbazmpj3YsGjmUoqaSqcOJ4kL6OyNikh+iJd45ZGkAZBymTKIFxJPW8ukyhZWGsXx/bZ6+307SwKWVh4bXrhLxoaoKnnoIHHhAJqoMHszwDO++Fg7+RmkvjCS26XCtArcE/ALu/D+6jkqk6uE3IxuBwytOkRP/rMLBNZLJSYfqtcNb/QMvleV9+Kmh1MF58MfHRK0kB75EDEtRZNQPmvj9RqaFmDiz6NFhq5HfoeSXr6dKi91WR3bM2SD0bPfAPSD2vMsELL5CxrzOpfmYdfY6f3/w31HBufUZJMzCq5+o7Pn58QZH/Gx3Fr2+pE1pmxcaNkukQj3XrZLt4MdToEGnQ+sV0dTAA5lwj69qja48mOMEVRaFmSg0ti2O+CC3rMLkgdELWYQlhC0TahV7bZsOkc2Q7uF1k48oQN98s25/9LLH2TDycTU4aZjek/XM2ObnwwtTLrlxqFU10nCJe7PKHwWCgvb29ML0wNY7AUPNI3bE1w/wP5/fZcoaqihOsex0s+PeiO1OKYruxgm2yFGxzTLDIVXuLRFYHPULCxEchAfRvkm19lowKbzdsuFscoQYzxi2fYlEggPFFszwXQZdMXJovjs2qDZZYCJ8aKO5Cc9rNxTvXGxG2Zgzuk2CtRxfB1HShTFLrzsh+bNVs2Y4kERi7vyeLoelvG61fXYFupOw3q2aC+4gs1Ne/QxzUriMyJnm7wHif/uiowLC050wZWckY2CJZOq1X5XdTbxCM65gXDsRqdVUkpHLGhJqvVFA05G33yZdC3yaRRpl+29gFBRUhmhgS9fo/8AHYtQu++MXEBXzvnl5OvHaCuul1TD1/dJVSPcUu7RYPHd6lTKrq1SfRanSIXE1wOBqIkQ4la7P2NpEnCnmlT81lrBxHXHop/OQnQmDMi1PpsVSllnn6619ke+utcNllOr/EPxgj7drfmve1FsV2lrqIpKmfhHmuGpK5UsgvcySN3Bg5CHWnoysGdTCiFVSbhjEo0Rx36VKw2aC3V7Jp5kUSbEtSwLvudDj7fyVTO1XNA+c0aL8BjjwEHU9G6/3kbLvqOUL4mJz6aq91PQ+7/gdqF4mcVLGghuReFaOQozkgW18XxEwLnQweCuPuceNsHt1HDx0bondvL/Uz66OEoqrGCIyiZWCEvLFs3KQo/ay2M0ZqWwaG5TeK77PHMAtu2jT5O3IEXn45sX/SKx+lQauD8fzz6etgNM5tpH5OPf37+jnw1AFOW31aynNpmTjZsg6zZeLkC4OiYG1egWI8WbwMDFuzrDFHDgrZmC1Lahxgj4xnO3bA7bfL63wyXv70J7HT0qVw77351SrKF+WyxqiscMYIBRs85JFJjMEinbGpWpw3IY/+c1jqJBq87RRz3oQ8Mkk4+aykjhUZ5dJYdWH6LbDsW9B8UfZjywkGc2xxlSwjpUbqVEAsWjAdtOgL22SwT0Gx1GNxNqNYaiHgEidp0C0TIzUkz07QLWsGNSiLmlzbVQXFR8gDQRdK2I+pbj6KuS5ityx2qTsdZtwWWdxlQTQDY3/iLK73Veh6oVLouUCk7DcDQ2C0yR9IW1UMEhVla9IfHdW1FtbdDrvvy+2iopJulZo0mZDzmHfyGdj4MTj0QOFf7umU9miK6IFXkBMm1HylgqIhb7tPOk/6Y8/J9FHaZQ5Nr19zALz0UuL7Xdu72PbANo6sOxLdt/mXm3n916/j6nLpKnY54q2mt+0LUkhWL8lTPVeCKbLI/ZaszRqMsezmCSQjpTnqdu4SR13QE8Tv8o/6C3qChMPwj3/I8ZpDSBcGd8jWOa0gudDi2E4RJ3fNgkR1BHMNzH63BKRVzZbgNINWu01HVnI4FLtPPXPiIsJigRUr5LUWaQ6x2gtFzcAACXrL5Aid/jaY+wHJxoggZ9vZmmHmHamluFKhZoGsM/tfl8LfxYK/V5y0eZwzW1+nouDCidUGwx2po9hPbDjB+nvXs+0P26L7BgfBH4mxLRqBoa3NbJNGkca6bKdJN2u1KMcJ6epg5EpgnHmm1I4ZHoZNm9IfN/cayWjY98Q+VFVl8Ogga7++lv1/3x89JlsmjqpKnYYXXtB3bbnCYDRSf/anUM76n+LWbG2MZGH0vly8cxYJa9bA+943en8+GS8PPSTbW27Jv1ZRviiXNUZlhTNGCIVC7Ny5k1Cu1XHMNRKRGvYBqjh5THYpUBUYkP3Wxje2Q8bkiGleHnmw6KnSeduugtxgj0TbJhMYw3sjEjNO/amGkeg+1eTA5XajjhyS9qIYpLjzaR8XjeKwT/YTlkJv/v7itauQXwiTkDf/c7zREN/fBQZQ/f14hjtRi2kXDfZ2aLtaajGoQdkX8sdk2LJETVaQGWn7TcUAzplCWioGIeStDeLkMaYpipiMKNmZQ2q+qlYIDJ3IecwLekSWS6tBUwg0+Sh7hgq9FaRFZb7yxkTedjdaoSniQel8uvgXNobQCgcnO4qqJguBMNIpGh6qqrLv8X3seHAHfpdfd0HwnItiKkYw2LIeVtI2G5WROlT8c5cIkyfDwoXgw4pHyVzQdCTkoN9jZdYsOOecHL5kKOLYry0sFaBotlPMkXlJnFvGYBanvNEu8yNzLTinyhpGT+T9yH5Zf5ic6WVVA8NSP+LQ7wu7/hSIl5ECcLngwAF5XZQMjP7N8qcHRhtMeZOQehGUfKy0NUNDpFhBxxPFOWfIIw5fxRAJ9MpNKkdPX2eoqaKxAUY6RlIeM3Rc5tHVbTHiT8u+qKmRzJuiQJOPqhpNTOmynVYLNDAEjJ/yiEZQxJMBQ0PweiQuUxu3skGrgwGZZaSmXzQds8PMSMcIJ18/ycktJzm69iiHX4iR2HqyDnM5LleUrO01SnYVfRsT6waPM7JlvIBkvOj5OXp64J//lNc33VS0S9SNclljVCSkxgiqqjI4OIiaq3Pd1iRyGpkiUs01+ooR9W2SQa96TvrU7YmKKW+BY3+WgmWD24sabZK37cYa2vVNVKePo12i3z1JBEafJh+1WF/abjxcRzG7j4LZHMnymCYRMfaWxHZ1/K+Sktu8KjbR19uu0n73Qdj4cTnHuT/P/zxvJCT1d6FQkF1bt3LG6adjGtkpDtKZb09tF/dx+aueHStMmAkGI8y7O3GfL6JxbbRljZqsIDMy9psmhzgOjI78Tq7VRvAPygJcTwRl2BfLqqkQGBmR85hni4TcadJPhcDRDjP/RbJMK8gZE2a+UkFRUZDd65fIHMhzXKJek1HoXCgdwj7w9clWT92qLDjvPJn+7tsnBWU1Lfaq1giBEXHIjXSOEHAHMJgN1E6txRApCJ6pKOZ9/xPEaNS5ZE6XKZpmf0nbrJa1nO339XYXZ51ZJFx6KXx/h5PDy1fzxU+nl3y58wNW3Nuc3H57lqVP8v11rZPAKHOtPPN53l/BttP7rGj/N9iE3FdD2bPFo/JRi9L/OCEP7P+5ZH5Mf1tR14/JBMaOCGc0ebLUK8kJyfYL+2Dbf0nG7uw7ofVKffbzdstnel9FrV+Bt2c7aqsBtLatPQfJ33fkIfGd1J4uv5Xe52XSuaIOcfQRmHS+ZNDEI5fnLuSRTKpwQIjnsF/WPNZJ+j6POMHvu08cn5pysgbN9NfeVoVyHEZOpiYwhk8IaVIzJTaP1gp4F7X+Rc18KcZcNWvUW7randEuv1PIJ7bMNaO3SH2iRnyvXw+BgLgj1q+HcBhmzhxdwykTLr4Y/vIXITA+8YnUx/iGfTSd0cTRtUc5sfEEvbt78bv8OCY56Nvfh7XGSmurPh/gtOZuGC7SuBD3e6quE/i6j6due4Wgeo4ExPn6YHArNJxV2PmKhFwyXrQMxHR45BEhOpYsgTlFUt/KBeWyxqgQGBMBtib504Tp9v0M+jZIsapskjrx2P8z0Rs/80vQkKWWwESDtQFaLoMTT8DRh8c8XbYsEByB9e+SQfrs/514hdoblsm2fnHi/oHNkf15PLPa5N5cB9UzhZEPDMg+rV0BLPhI7ufOhkq0d36It0swiM/cLxPR/T+X/m/6Lak/170WDt4Pky+B0/49v+/2RsKIbM0TlwicKMiXvAAhmGyTwNsjC7jaBdk/o7VHoyVS4K+CokHLVtLaTyFwtIsjpYIKKig9vN2w7StC3nf8Xf6SobcuUS4IeWEwjixxTJWMhQJQXy+R3du2iWyNJilV1SIEhn9YpIf690uWZd2MOgwmCYpZvVoKbD74YOI529vhO9+BG+Z9HdZtFxma5jSpGFoGqa83vc76WGfMt1yaXQvc2w0v3i7XnQ6leAYy4JJL4Pvfh6dfcvK92amdbT098GikjEVG+ajk+1PDEmCkIjr5BtOY35/uZ8Xemvk4TWIn1TM1sFW2mdbDlgaZ64aDMkey1OZ+L2lw3nmy3bED+vsLqH+R6vn09Um2tMEEO78JB3+Z3X7ebpEeHXgdQj6Mtmbm+g0Yhx2x+b61Ec76Lrz24dj3hf1SiFtRJKNJMep7XrzdsOOb8n3hIDx33ehgGz3n0Z4Vd4eQVooC5kkSvOPrloBUW5PufmX1apGgueeeRKeq1tctNFax6WfpMzBGTsj+6ilyL6FQLCLcapX/F0XKpvY0+SsE5loIdUkx9VwIjCL2iQsXivTTwIBkXSxfnrt8lAbNuf3CC6nrYLi6/z97Zx4mR1Xu/29V9Tr7kkkykxmykwRCFpKwBhK4IC5w0bD82K6ioKIIeFXk3quIeFkUvciiiKAIgsgmooAoIIvsEJKQnZCVTDKTzL71XnV+f7xdvcz0vp/p9/M8/fRMdXX1qfrWOXXOec/7viN48oInMXJwBFCA937xHvp390PoAsMdw/jggQ9Q0ViBMx9chdbWyriT6ooCLJjTheNwAfB6Dp4Lo66nNvIx5vs90AbaKKpMOsdKhKLQIkfVDtRkee/kkFx6vJjho8yE4OWKZDOcZc47l9KqC0sFTdoM70rdgCFE9OTceKRtFSXo6lkNDO8GqqYVu0SFxdcfzJPiks94AdC9PPp+1n1hN9IMDBiiahbcgRpYqidBUVQABXQpDBkwcjcgKFsqpgATjga63wH2PgnMuXLsPmaIhKrpqR/XCND3vD10fHMF+XhtI8cTzlYyYLjbUzNg+IJxcK01bJzKNWZ9CYwA/mHAyt5LDCMF/kGKqa5VxA7hp7vDeYlyObnr6w2HbgRoItlSlXX+seXLxxowrE4r7LV2eAe8GO4cRu/2XgBAw6zoMDzm5MF3vgMceeSopJirO2nC0JLA8J5Lj/lCYuaOU+2FvQcSsGIFPaa3bAE6O4HJMfKPP/EETeItXgzMSzRXNfr8AsOAYqHFDPYJRTm/tO6VWPsFRqgvPLwTWPST2OW2VNHkdrwE3kDQm6CWxo++npwaMJqagNmzKYn3229nkf9itH6GDwjspbJXTiOvhlT0M9s6ax0gegDfIHSlBcJaB0VRwveBuyP699wdYa8LW2Pq94v5e7ZGeje8gLUt/HmqxzHvgd0PU6SJuoXkPb7hevKam3YB0HpmWvfuqlWUoPmWW4D/+R9g2jTyXNM0YN+7ZJiIlQMj4AnA1e0CQCGknnwy2hCycSMdK92kxDnHfI5odnrOeLsBe1Pqz5cctomqSmGinn2WDBfZGDDMPBj9/ZQHw8wzY+Id9MLV44K1wgqL0wLdp0NRFChWBZWTKqF7dbh6XAiMePGlL1XiRz8a+xvm8Ogn/zsIxZfCNRjelbwdi7yeqg2AgAENqr0JimrJbRs8+ZTsvp8HUsmzlcp+vb3AP4ORPosRPqqUkHCWU05UVcWMGTMyT3oiDGqAhQE0LqPVAOnENA0Mh2Px20us85wrnM20ev/gG8D2u4GZXx67TwaDh6y1KxRm7P5cJkQqNpoNOPb3wOBWylmRJoqqwlHVQJ3TZOgeShRtTyG2bCqwB0bWRNW9trPJgHHgZWDahWPDRJnx99MJReHeD7z/n7Sif/mj4RBSbMDImry3mxWtFP94dM6cSCJdwAc/BAwP+W2bYVJKcTKpBEhbO81OEx++AcB7MDsDRu/7gGMy4GxhQ1MGSNNfYXJK1roH84bB8NIKYyVieBhvhXgmmKuJ3Z20gMDE2xU2aGThpbB8OXD33THyYDRXhQ0YO8iAUT8z3FceGaFJVgD42teAGZFRS4QIJ012xJhJjyTSgzRF8l5nDR3wdNDEbaK22bwHAJB7QkT7m8t7IAUaG2my7oMPKFzKeeeN3efhh+k95eTdoXvcQ30+a234fDM8v6y0S/VeibWffwgY2kbvve8BFf8+9nvzvkVzBkjyHLVPIAOGtydmuJ5sOP54MmC88UbYAyPjBN6mfkP7KZywtY76CYGR9PSrmEJGEN2NSosHimYL9jWM8HGEQWGHVRugBw1ezimZ3S/OyUBgkEI/mcc0SfU4jiYKH2WpBKZ8CqiZRd7o2+8B+tdTGK000TTgoovIgNHeTsZATaO20uK0wFphHfMd06hhq7bh2RfsOPvssXH9zaTETzyRhRHDc5Da3OqZMUOex613oz2bhKCFv0InI5LpPZPq8yXUJo5qD4G07oHly8mA8dprwOWXh5816eZV0jQy7v7lL9QujjZgmFicFtgqbXC5XVAtKqyVVtir7fCpPgS89Jw1y1BVBQxHONuYnjinnQrgdSR+LgSGgTXfAnRX/ELbG4EFNwZPwElaKBZoNgcUW034eAV+xhQSM/fMvn2x82AoCn2e7H546imqpwsWAIcempeiJqVUxhhswCgQqqpi4sQsJsV8/fRAVRRapb7/7+RlkCrmymJbPU0Kj0c8XUDny9Spc+/LmSt81toVCjM0kswGDN8ATUhWtIZXAlkq049jGFxloQCwq6AWP2L7GHreAzb8iJKEL7k1o6KPgQ0YWRNV92rnAnWHA/2baBXSzC+Fd9S9ZIwA0vPAqGgNxkj1kFeb7qHcGHYJ6nuJk7DdTDNGeEzMPBjxDBjxXMA9XcDrQd/bQoeNkISMnnmOydR+uzsznwTxDwPrf0h/n/A4TTIxaSFNf4XJKTnR3bUHcB+gdrFqBpJOfGaCowk49iHg7Uto0qNhCRktG46k8ExAVoZlMyHqmjWAywVUBB0mqpur0bO1B8Mdw+jbTot9Ij0wXn+duolTp1Jc8ij8A9Q3UJS8LG7Ie53d8AOgbz0w79vApJXJ9x/+CPANUX+riOEWTz6ZDBgvvTTWgLFnD00GKkps40ZCbI30EtknIS1ae2utBqZ/Htj2S1qZP3FFbO+JVPIG2huBoe20SDLHHHcccP/9lAdj2zbalrEBA6C66OsLh3PKCPquMrgVlkAv0EcGzajjBYYB196wIVexZO6doliAqtlkPFQynHbz9lI0AkUJJyqetBLY9QCFAdM94VA8adDaGl7Rv3UrsHAhUNNag7MfPTvmwr+hfWTAqJpcjUsTJCVWFEpKfOaZGYaTOvgasPN+oOl44PD/GvNx3HoXy2NJd0WHrE33+WJ4gP7NlBQ8w76tOTH9+uv0bHK7yUg7NwXn8dGsXBk2YMTLg2HSt5OedRZ79H23dQvw/PPkHbJ2LRmwOjpGeR1GOeAYQP9GMvw1HAkg2K4YfqqP1prEXhqeA+R16esDDB8UAJo9wniRa9ydwMF/kWbNn8jPb6RBotwzJrfdlryumCEuixk+qlTGGLxEq0Douo4PPvgg86zt5iSMrT7cgLr20sqaVBjv4aMAemDpLqBqJq2UsNZFv1R72EUtDbLWrlCYHhjpJqoqJTbdCKz7L4oZmgnm6gvDC/j7IXx9cA12QPj6yMBjeGOvvjCNPr4EsR7TxW+GrOEQUpkypu61BX0m9z9Hk50mIx9Tj8BWSx2WVFHUcHs6vB2Y9WXghCeBKWfkpPzlTMx2c1T9HPOKVz9jUTMXmHI60BRnyUqky3Lkc8DWkNXzoBzI6JlXMYW8IIWR+Q+799G7vZGNFxkiTX+FySk50d0SDK/n7SGPtcgQT7kkMBQ0BkwApl9Ei1R8PbTatnpmVgblqVMpKWogALz7bnj7/PPn4zN3fwbTVk6DMARUi4raQ8J9MzOG+8knx3D8cgdjS9kn0ArqHJP3Omsa+0f2JN/XPwh4+0h7T2d+ypMiJ51E7y+/PPazRx6h9xUraBI2I7LMuQIUub1t/gTVl8AITWRH4h8b/icupjdzngwYABkw9gUf72nnwAhhhO9hx6TYE6apYq2BcEyCP6BDAHG8PRXarijUt8lmysxWl7nxAgB6go1Z9aHhMY61GjjmfmDBDzMyXgDBXAcL6O/1681tStyoBZMWTsKKH66Ab94RKSclzojh7fRePTvmxwnrnaMp/CypngnUHRH9f7rPF1dHOAxVhl4CS5dSfpCDB8mgB5CxPRMnYzMPxssvAw89RIaMeM1P3bQ6aDYtlK/E5N7f0Ps551Ai6JUrgfPPp/eYk+iBETKSCQNR9cDbRYvI3B0h4wREgOY/DE90HfX20fPFCEAoCob9DgjkKRH0wGZg14PAvmfyc/wMMHPPxEravmxZcm+lvj7gxRfp72IaMEpljMEeGAVCCAG325151nZzYtXWSCsdNTutOvZ00sRBMsrBgGES5e42igwePllrVyjGQwipilZgYAs9ED1dwOafAA1LKalrKk/6UasvdD2ADzdswBFHHAGLFmzuYq2+sAVX4oU8nXJg22UPjKwZU/callBum+HdwP6/hRN6m+H0KtPwvjCpnkX33NAOSgCuqOPXS62AxGw3cxkj3ByMJCPHz4NyIKNn3tz/zP6HXcEZjlT6NExMpOmvMDklJ7rb6oGqWRRX3z8IDGyixUC5pj84U1Y7nyaoFIXyGfn601uAEANFoYmhxx6j1a7mZE91c3gC56xHzoK7xw3NGp6piTRgjMGcyHemGMg6TfJeZyuCK8tTMWBYayjMsLeLDFkVbcm/kydOPJFWCG/fTpOhbRFFSTt8lInQc2K4CB2umO2togKzLgPWXg10vAA0nwbUzKHZ43cvo0UAC29Ift/aTANGDhdwBZk3D6ipAQaDXb6mJqAyTncsOSrdj+6OnLRLouIQDPtrUFsbzIERGAlHMrDWABWHxO87ZsWoSeBU6HmH3iccHb09B/nGFi4E/vUv8nb6j/9IvK+92o6WJS14dVtqx041efEYzNyXcQwYGdU73QMg3fGdQZ4DJt4uyr+XJnY7GTHeeAP4TdB4YBr30mX7dnrOud1hvVpbaYX/yoXR+1ZOrETlxOh72OcDng3O6yfz4AgRGKH3qCT0gjwwIGhRwmgPeltt+FpZKul/ax1gb4RQnfAPDoa8dXJO4zI68PAumv8skblPM/fMa69R3fD5gIsvpsUWa9ZQ7q14/OUvtDBj/nxgzpyCFXkMpTLGYA8MWTA7FvZGqpQVh9D/qebB8JoGjPTzCEiJCMZ8NUNnlQMhA0ZdUYuRFeZgydVO8e0HPwR6V6f3hItcfVE1E15rK3nlJFp9YasL+vUZYc+JbGlYAjSfml5OBiYxigK0nUVeE5Hu3iPB/BfphI8yqZpF7+aKHya/jF4dNfqVr3BO7n3B0Bj9+Tk+kz2mB0Y+Jk0ZhkmOrR6oPSy8SGpoR3jyIlf0BQ0Y9QspKbZzCiXJNQ2YWWImRn3jjdifK4qCignhkCL9/TR5AIRX/UdhemDIOn4y+0qpjherppH+RoBC1xSJ2lpgSTB6bKQXxsaNtFrcas0gkenIbqB/XXi8JDu1c4HJ/0Z/f/RrMl642skA6e9PLeflpJOBJbdllEchGU89BXgj1ol0dVGS5yefzPCAZvuUQyNUwdBdtDJ88MP0vzvzEmDGxcCE42N/7ummMGAZMNoDAwA+fPpDPHv5s9jy5y0xv5OrpMQx8Q9SKEMgtUVKqfDR3cAb5wPdcR4KiaiMsJx6uoEMvAaefDJ8fc2I1rfemn49ePJJ4Nxz4+cd+cc/kh+j6yAQ0OlZZ7avSQkZMCIjSihkoHBMpsWnjiZ6nmsOmqscvZjWPoFelqrcLBJNhLUaqA26enW/k9/fShNNC3u8fOELwIUX0vYf/jDx90ohfFQpwR4YshBpwACAmtnB+J0pTuxOPpVWJ2ccM1IyfD2U6NxaK++gI10ck2n1jbOl2CXJnFhx7esX5/93FZUett5eeuXCi6XlUwA+lf1xmGgmrqBXpFFryhlA9ZzMVm5XBw0Y/ZuA979FbeTcq3JTVia/BFw06WWrS2z40EcoR4oQnN+klGEPDIYpDqNXT1ZOpxX7/gHyQBhMsuQ2nbjik1bQikyzb7fgevKCVXMzJDUNGG++SaE1PL0jcPe6sf3v2+HqcmHBfyyAaglPoLz8ph2GUYk5c2KHd4BjEtCwmMK3yIg57vN00URUrFXlRoDi/ptYaoBAB7XJRWyPTzoJeO89MmB8/vO0zfS++PSngfp0uuq6G/D0AAjQymFzUi6d3FulyIwvAAdeplXr3W9QXQ2M0MSr6XWTqH46JtArxzz5JHKT5FkIWlyWi9xpkfsLAdVwAwErjSdGHyfnvxcMrQMRnNNJYyK8ohU4JM7K/4OvA1tuocVYGeRwjGXA8Lv8GPx4EAMfRy/o2/TYJlROqsRxR7ehtVXLOilxCE9X2DN7YCPdv85JlMsAyCovEgBq84wA0LOaPO1TRfcCWiVQO4889XUXGbTV1L044tWDrq706oGuA1clyTtyww3AFZOAgDt2+EfPcADdwenElL0vdHcwOkWA5koi201FARQbeXHFeq6MXvyQat3LFk8XLfTufgfo+DsZPSPJ9n7KIT/4AfDHPwJPP03PuliJ2fv7gRdeoL/ZgEGwAaNAaJqGuXPnQssomxHIall7WHg1t5nsLlWqpme2OllWzLh7hif7Q2WrXaGYdj69ZMZceetqD8djbcjcgJGWdrYGMl74egHkaNUHkxUx9YvljeNszjy8QyiRt5cGgLIPZkuEgrSbH/0KOPAKDeAPibcU06CQY0IA9gbOSZMCGWnn6wM23kgD9KPuycwvnD0wskaa/gqTUzLW3cxL5O0ZG1LPVg/AACzVwOYfU5iIeNgbKTxgKpMCk06KnkTKcXiHI44AqqoobM2a10aw9cYn4epxUUJTAbx/z/uobq6GolEbtbe7AhVYhZNOihMuZvK/hVe554G811lrFU1Qe7opX1jtvFGf15CR39VOWlgqAFWjRXL+AcBfDVS0FCUc6kknAbfcEvbAECKD8FHmPe5qpzGhogHCB/j94X1Szb01ipJob40ARRvQ3cDqK+lv/zB5Jne/TfukUz9zQCqTrSkneR7cQkZUS/WoEDYRpKLfqLZOAVBp06EEIibp7Y00lojXJmbxewBo4jswArjbgyvSM7vvoqibTxPLQx9RyJw053oOP5z0OHCAXpMmAVWTKTTVcGfYqOkd8mL9g2TlOOfx1lBS4tGYXb9UkhIDoMnmNy8IL9T19dFY3FoFvB6crR11/6Zd7xqWAnseA3rfp9yxapLvxdLO4qTvGl4AIiXtclkPXnsNSfOO7O6ww9tSAcXrQsA71ohx4AAwbFRg+lw7PvnJxL8Xugam4RugHBdmmDWAFo+lkm/HUpVa3cvFM8a8n9yd9LzrWwN0vRHt9VHg9jARhx5KocAeeAC47jrgb38bu89f/0qPq8MPp7B8xaQknnlgA0bBUBQFdXV1mR9gyqfpxaSGmQDU8CGjeJMRZK0dkxqeLup0G97ww1JzANAojEEGFvO0tDPzYOQiDqwQFHfRWkPnkJcgj+OfuPp5uuj6HvwXDbjrF0V/nuq9Yq76mfJZYHAj0P0uJdob2pHecZgxFKTdjOWxNRr3ASDgpuSrHM4tJTLSTqsMh0YIDKU/EBGCvGQA9sDIAu6vlCcZ655KXiJPD7D6MkC1h0O3RK5A1d3Ub/IPlsTz0mIBjj2WViy+/aoXth4XLHYLNLsGERAQuoCj3gFFVRBwBzDc5YIdXpx8cj7i3SenMM/KqUEDxp6xBoyR3UDlTKBKAEdcBziCi0F2/JZW3U45A6iZWxRtly8nPffsAXbtAvbvp7+rqoAzzkjxIOY9vv1eoPNFoOk4YMYXo/fJsK9XEu2tf5DGuloFLd5zdZA3k72JJg6T1U8hgPanaJ/pF4XHz1mQymSrmeTZzFMTk4AL2PsEULsAmPIpYMq/x94vFf1GtXUKYkyCmcfJRa62WMfp3wB8eAetVl98CxkxEh1HGLR//UKg6YTYXmq2OqDxaKDrTaDjeWD2VxOXaxSVlZTI+aOPgA0bRhkwOsIGjKH9NFFdMaECFocllJT4gguiw4S1tpLxIiXvGoCuj7eHni+ak1b7qxYak1vrYt6/ade7mjlk/PIPkUGsbn7i/R1NwCH/D4BCeUdiJYxP4R7IWT1AavlEXKhEw5dX4TOnjDW8+bzAihVAO+z41X9XJp+WMO/f7neBrf9Hk/6Lfhy9j7cHeO+y5N5KpsEglbqXLeb9ZKkiI5juIeOFtS5cphLqrwDAtddSQvbnngPeeov6L5GY4aPSDpmYB0rimYcSNGBs3boVCxcuxP/8z//guuuuAwB0dHTg0ksvRXt7OwzDwOWXX47LLrusyCVNj0AggLVr12Lx4sWwWHJ42Q096MKVYIJe9wAHXyM36Lojxv9kashFDYDwkyVfc2a8sjpv2uUS07wvq7aRKzBG9gYNT6BO3ptBr5IMLOZpaddwJK04zMXkmX8AeOdS0uPEp5ByqDcmipj6mffK0PZwfGZ7Iw26zIFXKvfK6FU/3l5a+WO64ad6HCYmBWk3Iz22YqF7aDWiogCOVvKyQbBjz542cclIO81GHi7eXjIapW3A0IFDryQvDA7zlTFS9FeYnJOV7o6m1J5xqg1w7aHwO9WzaUW0SbyVyqPpepMMzxVt4f6qEMD2uylEx/xrc/K8Pf54MmC8/z5wLACL0wIFChQL/aa92g6Akmh6PLRSNeYEkrni1lIR48PcUJA6O2kFUHMovSIx/DSxr9mBtlVA0/LwZwtvLPqYoqoKOOooCgf20kvhXCWrVgHOGHOKcbFPAEZ20pii5dM5i61fUu2t5gyuLDdoIY6jCaHFe4nqp6IAex6lhWMtnwwvDMmCVJM3J91v98PUp6iaBsy+PM0EzDGIaOsSapdqm5jG7wEg74h9fyFjordrrDFxNINbgc5/UhLvpgTxmJpPo7b1wMtknEvzOi1YQAaM9euBU04BqpupbXf3uKH7dGg2DUP7yIBR1RJOHP7ZzwIOBxkwbrqJJl5POCFFz4vRaE6qn1XTaTGjuQAQGHP/pl3vFJW8MA68THk1kxkwAiMUekj3Ak3HZtxe5KweIPV8Im1zKtEwc6wx/r77gG3dFCbxvPNSOxYcTUDDQmDG5wHVMfY6JPLgNDE9K1Kte7lCc5IR13OQ2sPIEFep9lcKxMyZlA/jvvsoF0ZkLpOBAeD55+nvUggfVSrPvJIb3Vx11VU4+eST4Y9w7TzrrLNw+eWX48ILL8TQ0BBOPfVUHHLIIfj0p+XySNB1PfMvC2OskeKD7wMDm4BFt1BOjHi4O8iCb60Bjv9D5mUodUY3pAoAPUD5MCzBB26GLmpZaVcIfH00YW5vzDx8RzGJXIFRMQVw7aXt9glxV2CkSsraTflMemVOhJkIvBDJqsY5Y/Qz7xV7E+AfARAMc6ColAcm1Xtl9Kof/xCt+rHWZn3PMUTe281IDwzTH9tEtZN2Qg9OtIlo12cgdy7L45CMtHNMoskGz4HEfZJYqBaaZGOypuT7K0xeyLvuQgBQKWTN4EdAwyKk5d2s+4AtP6NJ86PuDi8WURRgYCuFPxn6KCfPWzMPxurVwLGT6W9btQ2+IR80W3h2rb+f3ufOAZpi/axrL7D6CirrUXdnXa545F27eHHf25+iMaK9AZg6alarRMYRJ51EBoyHHiKDFJDGBJyJay8Z1lUrLVbKISXV3po5AzQH0qqb9gaatPV258SAkZMkz8M7gX1/pb9nX5a98SIGBddOUSkn6e4/Ah3/ACaemHh/MwFxw9LEOYLqF5M3uucgLcBKJ88DyIDxpz+F82DYqm2wVljhd/kxfGAYtW21GNxHq+drpoT7zNu30wSrwwF85zuA1ZrWz8ZGq6BXEtLWrjFowOh5lxKiJ6LzJTJeVB4C1EQYmYQAhrZRSKIZX0zaRuYy2fkJJ5B3S7y8IwDQ2Bg774hhAD/7Gf39zW8CtnSqUkVr/OuVhbdSQeqesyXYzyj9eZjvfx/4/e/JWPH66+E+zNNP00KLefMohFQpUArPvJJS9E9/+hMmTZqEo48+OrRt/fr10HUdFwbTtFdXV+NHP/oR7rnnnmIVs/AE3MC/Pgu89QUaAIQQNJBw7Un8fc9Beh/vyazNhnT54/SaeQnQsASY/Y3wtvG6mtrfT4NC3Vsyg46M0Jy0Ms8xmTrgjklkNY/lvlnKmA9znhzNH5YqoKKZVlYoFjI6ZHKvaE5aXekfpOPYauS858oRZwu1d4GRsNHQRLMBzZ+i2OUr/xZ+BkS+xuvzoFiYsey9B4tbDoZhco9qoRXDmoNCC6UbbnNwK/VT7Q3UdkdSPYvehz7KSVGPPppWAe/voME/ANRPr0dFUwUa5zSG9usLOnGODtkQwmNOCOfPA6NoeLpp5T1AE1SWOH0e1z7g4yfiz5rlGXNS9JVXgKFguPWvfIWS46ZMT3AiuH5hTkIklSwVU+g5XDUjve/Zg0m8cxFCF+HJ1njDUUUB2toSJHkWAth2F71PXJ5zo1NRmXwqXYC+9YBrf+J9zfu28ejE+ykKHRcgw0iaLFxI7x98YB5OQeVkWrFuhpEyQ0hVTwl73r33Hr0vXpwj40U6ic3Tpf5IMiCN7A3Pi8UsggA6nqO/Wz4dfRMbfmD9dcDePwN965L+ZNb1IAJNA26/Pfy9WPT1AY89Nnb73/4GbNkC1NRQ25lTHE3kmRHvVcwxlqIhaqo7UR6vIjN9OvClL9HfwQBEAEorfFQpUTIeGC6XCz/4wQ/wwgsvRBknXnzxRaxYEb0q74QTTsDZZ58NIQSUGLXY6/XCGxGQb3CQJhMDgQACAXIVVlUVqqrCMAwYhhHa19yu6zpERGct3nZN06AoSui4kduBsJXK/J75Gm29slgsY7YrigJN02B4ush8GnDDECoUXaftzjag9wOIwR0QE1bGPyd3J1QAhq0RRkQ5sz2nZNsTntOoMsbbnrZOtkaojib6zdojoPSth9B9UKtmhM8p4rxSOSfzN3RdL845paKTqwuqEIC1Fkpwn5LWafR2PQAt+LkCwKicjlBHRohQACZdT02/yHMy31M6J98IPeAcE7M7J08v6aFVQwm2U1LWpyK3EfH0U4LtKOyToLg7oQAQmoO2CUGfGwZUIP45GTpU8zjBe0wBYEClDmzwOObfrFP65xT5nfyckwrV1gR4DkAZ2QtYa8NltDQAR94Jzd8NVEyJf04R16ZcdRpddgBjjpPKOcE6gereyH6o6bZ7Q1sAwwvdOR2whROtc31K75zMv0f/Zq7OKfK7TDmikvejay+FYbSnMTnRH1zeW7dw7AxM9WyK3z60PSelrKoCFi0Cdr4PjIwANQAsDgvqp9dH7dfbT+9xDRjuYGwP5+SclKuoeLoo30XtYbRIY+d9tOipdh4wcWXs7+ge4P0rafFc7Xygdm4hS4wnnwSuv37s9n37aELniSdSjLVftwhoHaBcHuMZJcNcX7agUS9HBgxzsvXss6mqRz42Ukry3PE85dTSHMDMS3NSppLBzK9QNS286CMWrn30Ui2pGXAmnwLseZhy+PkGovpRyViwgN43b6ZkwVYrGXyFERYuZMBoGWvAWLYs5Z+Kj78fGN4BVE4lT/hcY60CWs+kZ1aiBWoDm8nIodmBSSujP9NswOSTgfanyVDUsDjhT2ZdD0Zh5h256qro3BqtrcDs2cDLLwMXXUTTJBdcQLk1OjqAm2+m/S67jIwYKRNwA0MfAlWz6PrJjK8PGN5Oz77I8JclxPe+B/zudxQu8Z//BDyecFLvlHPKlAklY8C46aabcOGFF6KlJXpVzv79+zF16tSobU6nEw6HAwcPHsSkSWO9Cm6++WZcH6PHs3btWlRWkkW5qakJM2fOxK5du9DV1RXap7W1Fa2trdi2bRsGBsIrOmfMmIGJEydi48aNcLvDsbPnzp2Luro6rF27Nmqgt2DBAthsNqxevTq0zRxYut1urDf99EADxWXLlmFgYABbt26NOs+FCxei/8AOKAP98Frs2L16NWprazFv3jz0eKphGejHiPtttPcujHtOh2rb0ACgc0Dg44jy5OKcAGDp0qXw+XxpnVN3dzd27twZ2m6e0/79+9Ee0Spno5N/uA4WyxfgG2jCoQMDWZ2TYRhYv3590c8pnk6Vw++ieaAfI243GtxuqXRyu92w+9sx2+WCXa2G1QIMDg5ETZTUODWoQmDDhg3wWvvSOifDMLB27dqk53Rgx1twbLoGAbUaOyZel9U52XvWYNJgP4Y8Q6jJ8t4rJZ1MCtlGmPqFdDp4ANUuF3RVhaE64bQ0w6H54QpY4XP1QzXc0AwXhg4eQHPt7LjntG3bNrSFjuNHtWMKLMKLQRcgED6O5vXAWqGzTmme04EDB0La5fOcpvSrqPL2w9m/A5bqeVj93ntRk2NLly6FL81nbjnpFOucZsyYgfr6+pB2qZ6TrWcAkwf7MeJeh6rJ6bV7RzmegehZg4+UT2Kg4ijWKcNzmjJlChYsWICdO3fm5ZwOPXRUDH2mJNA0DQsWLAgZnvKKYwLgbgcCw4DuSv17pgGjfsHYz8zcDEMfjQ0HmCHLl5MBY3g49uduN72cAJYdFecgpgeGM8VYIBmQd+08XeRhuv77FEZp7lVAzWGkn+EBDjkn/vXWHBR7v/OfwP6/5c6AYZYpHtYa6NYmXHVVbMcP8xb55jeBM89MYQKwZnb6YQ1ToKD1Lp+EPDC6c3bIRJOtoSTP8e6D/vXUthxyDoX6zANF1W76hcn3Mb0v6o5IMQePoMgTVTNJx9FaJkiSPHUqUF1NHk7btlGommO+eUz4yEKEcmDkxYAhDGqbYJBHdRIDRsbazfxS8n32B2eMJ66IzptgMvkTZMDoeZsSjtvqEh4upXqQBqtWUZtnGieam8mDQ1GAr34V+M1vgM9/nn6vry/6u7PTbQIHt5DHSUULcNSv0/xyfIpT94L9W18/hYwe3pV4dzOCRgbhsTLlkEOAL38ZuOsu4NOfDnuPAsAZZ5AxrNiGjFJ55imiBJZT7dixA6effjrWrl0Lh8OBH/7whwgEArjhhhtw6aWX4uijj8aXv/zlqO8ccsghePXVVzF9+vQxx4vlgdHW1oaenh7UBE2PhV6RJ4SAYRiwWq1QFCW9FXkdLwJbbwPqFsI44vrw9v4twNqrAVsdjKPvj39OW2+B2v0W9BmXQLScnrNzSrZ9vKycNLVTVRVWq7Ukz0nZ+ycoux+EmHQS1HnfSnpOkZSETsM7oL15HmCrh2KphDGqWVJ0F+Dvh37sH6lzluI5BQKBkHaqqiY+J08PhWlTFBjHPQHVYs34nLDnESh7/ggx+VSoc6/k+pSFB8YY/QY+gvLGuRDBkFGKAihQICBooBsYgeLvhzj+Mai1s+Of08A2qG/8v4jjKOSBYe4bPA6WPw5Uz2Sd0jwnXdcRCASgqioURcn9OQ13AIFBoPd9KL5+qPVHAM5mGLseBKw1EG3nAs5m1imDc1IUBX6/n+pEcGIrpXPqWw/1o19A1M6HOu+b6Z3T6q8Ani7oR9xIK4RzfE7jUadY56QoSkwviVyd08jICOrq6jAwMBDqT5c7g4ODqK2tLeo1Me8nU8+cMrQDeP2ccL4ogELX+vpp4tPWQHnngs/KmATcwJvnU1LsY347duWxEQBePzeYH+PXNGGSJY8/Dnz13F58wfk45i+0wOKMXrPX0Ql8tCWA2ooAvr/+HDTMbBh7kPU/AHrXAnOuBJpPzbpMscirdp4u4M0LaGW9+wAZLeyN4Uk3IwA4JyUOpzj4IbDmO5Q/4tgHAGuWq1cjyxQPeyPeEA9j+SnJJ4defjlOAvYCkFftUiVW/YxEdyevn/v/Dmz7JdB4FHDEtTktnq6PnWzVNCS/D3QvGQ6P/2NewtCUhHaJWHsNeQPMvix5jsYU61Sien788ZRr5uGHgfPPj/5MCIHhjmEM7htE8+JmqBYVfj+t5vd4gA8/BDJe2zC0A/jnyTRRrDmDxuyIsD8x7t+8aecbAN6+mNrFJT8PhzYczZpvA4PbKPTeIWeldOi49SCHGAZNfEcmgY5EUdLwWgOAPY8Bux6kXC2HXZ2zcha8v2ISGCEvH91LIRPtTeRpEwtrNQUCSRR2KkmdyoR7740d5su8TGnplwfyqV06femS8MC46qqrcMMNN8DhGBuX0m63w+PxjNnudrvhdMZ2AbPb7bDbx96QFotlTMZ0c1A3mniWpXjb42ViN7ebWduXLl0asxwADTxjbVf9fXTnOpugRnyuVk+n7f4BqMIFqNHGmRDBeNRaRQsQ4/iZnlMq2+OeU5zrnu72XOsUa3ukdkCJnpM+SPeCY0KolZNKJ80StQJMjdMoWjRLzHs43jkpihLSzvytuGW31wOqBggDqhgG1MbMz8kYofOx12ekR6JzKrl7L8vtic7JXME/Wj+YE6sR94kChf4NbleC5xf3nFQt5nFC9565PfhindI7JyFE1DMv2f5pnZOnC5Z3Px89WNsFIOCCZob82PsnYMVfAEtTzs5pPOoUa3sgEMCaNWvGaJeo7JqmARMWAxN+m37ZdV9otaCleuqYNp51Sn17IBDA6tWrY2oHZH9OJTnRw0DX9YS6Z4W1hgbq3h6aSAIoVI3Qw5NL9sbEOb8GN5Pxwjk5dtgU1UJx+wc/pDAPOTBgHH884IUdPe4KeF0uBLzRRrrBA4AVQNXECthr4kximEmR8xhCKq/a+QdJN9UO2OrJ40LRKGcYQPp5e2i/eJMw1YeSNsM7yROj7bO5K1O8CXdvD3r7BgEknxjq6Eiyw/6/00R47eFImAg5A/KqXarEqp+jSVY/TS+HHHpgmGhaHANTsvtAdQO+3sT3ZhYUXTv/ILD/OTI+zPlG9GdGgNpXRSGjUirHGn0thR7MAYCU6vmCBWTAWL8+2oBhhmuvbqmO8r7YtImMF7W1wKw48/wpERim8gmDJo1jrXgfdf9mpZ23F+h9n0JV1Yyyuuguyp3q649vvACA5tPIgNH5PNC2KiWPwbj1IIcIQbokImWvNSCck6o6t95rBe+vROJspjqnu+j5XjV9bNuouylHlHm8BM+pXLZPug786EexP0vb6zBPFL3dDFJ0A8bf//53uFwunHVWbAtma2srPv7446htbrcbw8PDmDgxQezA8YQ5STPajVJzUKfa3QkM747tlg1EJPEuk+sVSedLFL+v5dP0sBqv+IJ+gklcGUse3Z3e9lyiqDTA8/ZQBycbt+WaeUCzB6iZk7vyMdHk6l4p5j3HZEa8wZqrgyYorLU0UZOngS+TY9z7qXduqUw8ycIwTOFxNNEqw8iJJSEAfQSwBONiJwul0BfMDlsXZ5wC0GRSYIja8hzQ0gJMml6JP+1ahbP/04vlJ4Q/EwI48USgA8BDt9hR2RQjVIihhxaAwZG/EFIFQXPSZKY3GLJH1QA1uGgw3qS3iaIALZ+iFfodz1Ec+VwYMjVn7BAtwTI1pThkbU4kje4BdtxLRvKld1LegfFGrPo5mmT1s/YwYMlt4VBShSR0HwhgZA/gmIxQovVk96bMBEaAXQ9RXZp6bvQcjWoBjvxZ2rksqD8sKNeNYo0egya5lmYeDDPipWfAg5e+/xLcPW6s+sOqMYsXzPBRS5cCMdZWpIYQwMdPUI6a2sOAOVfE3i+XoXo+fhzY9wzQ8smxBgxnMzD/+2RASsTEE4Ht91IS9oGNFOarBHjttegwVaMRAti7l/ZLyZgyHMxJlciYU2qk0h669gJvnEcen+52wHY4oI0K02Z+P8lzKpfkXL9xTNENGLt27UJ7ezsWLVoU2tbZSSte/v73v+P//u//cPXV0W5L//rXv7Bs2bKYq9HGJaYBwxZjQrVxGU22amO9VwDQ3X7Yd8naOB6S0KXLgZeBvnVkPR7PBgznFIpN68x+1VpRyMUKolxga6Ay+HqzO87EE+jF5J5c3Sulcs8xmWN2LHUXrdyFoAm1ykMSd16Z/JNOHHv3fnqvaM3NxBjDMLnF0ZTdBNK0C4D6RYkX2cz8MjArRuyELFi+HHhwVyVW76zEv18c3r59O7C5g5LVrowXncXwAZNPDSYrz08c/oISuYp0aGdUqL6kTFpJSb9d+yk/Qf3C3JXLP0CGK+cUAOH2f9kyihO/b1/sPBiKQp+fkKir3fcBGS8cE8f3GDDb+mmpjB9eqlB4DtCCS19/bu+vUsXZTAtP+9YDHS/EzouRjvHCRLUGPRpcNLZR43iXjWK0AcNWZcPg3kEIXWDrn7dC9+uYsmwK6mfUA8hR/ovut2mOxloJHH5NXnMNhWhcSgaMnvfi91OTeWppDsqR0bcG8MdJslQEknqjpbOfr4+8EBQlKnS3FKTSHjqayYhocYSNF4ERyntl+ChPBhCsQzb6296U1zmBnOo3zim6AeNrX/savva1r0Vt+2FEDgwhBPx+P/7whz/gwgsvxNDQEK677jp8+9vfLlKJi0DlVOrcVUwZ+1myzr6i0KChXKmYQg9H175ilyS/TL8QQApJwUqVXKwgygX2BmAI2RswmPyRq3ulVO45Jnv6N4b/rpqByEkQpsBsuwvofov6JqkacV3BJUeyGuAZppwZ3k2GY0eC1duaA2g4MvFx8mC8XL4cePBB4I03ore/9BK9H3ssUBEvP67FCRx6ec7LVDQ0O01uGn6gsi3N7zqASScBB1/Lbf/Y8AYXHwDQKskL2vxJlZKWnn023RqRRgzzVrnttiShNMxEyBOOZuN4qeMJhmuriDZkjWuaTyMDRucLwNTzyDPKCFC9iLfqOxmqncYuvgEyvla0pvS1I4JOBO3tQG8v0NCgonJiJYY7hrHxkY0IuAOw19hDBox336X9j0ohwlVcelfTe9uqwhgvAKD2CGoLvT3AyK7gmAEUsaP2cMoJlAozvwhoX6foDSVCQm+0dPcbCnpfVLTSs3C8oSjBc4uoZ4aP7gsRIMO3AvpbCU6X53lBY071G+cU3YARCzPRNUDxdp966il85StfwY9//GPouo5LL70U55xzTpFLmR6apkXFcU+L6RflvkDlgjNo9HEl8MlKQlbaMamT7QqiGKStXSgObJYDNE8XDeg1Bw+asiCufrm6V/JwzzFEQdtNaw0ZouxNVO8CI/n/zXFMVtrpHlpB6TmQ+nfcwQUGKQ60mfhwf6U8KZruO+4D9v4ZaPscMPNLuTmmEBRGKgf5Co4/nt7ffhvw+8njAggbME4+OeufyJrCaadQSBlhhEN/pcO0i4AZlwCaLYdFijjnwGCUAQOgZKVPPAFcdVV0aI3WVjJeJExmKgygJzjL2nhMzoocybhqbzteoNBDzZ9M38CVLborOGGoFszbqSS0m3As5X3w9tBq/sZltOhy0w20wn/uf2Z2XPtEMmB4u2Ivfo1BTQ0wfTqwaxd5YaxcCVQ1V2G4YxgBN4VUMnNguFzAxuC6oaw8MA79BtB4dPwQ6HHISjvNRgt7u98BelaTAcPTDXx4G31+9H2JjfEmmRqY8sgJJ+TAa80kT/kvgBKpe7GwOGnRuDmOUUD5oswoN5k8N9Mgp/rliVLRrnTMhhF873vfw3XXXRf6f+rUqfjHP/6BDRs2YPPmzfjWt75VxNJljs/ny8+BhQDcB2Lf7YPbgM4XaYVUOWI+uN3ZeWDkTbtcIERs7RkAaWpXO5/iYmYT71EI4L3LgNfPpc4jkxUlXfeYhBRMu8qpFNt6PMa3LhIZa+cIrl5Lx4DRtooG6qkkq2SSwm1meVIU3WsPp/cDL8WPG773KWDH74CRj2N/Hsn23wBv/D/g4Cs5Kd68eUB9PU24fRBMwyFEigYMXx8QKEwurIJpp1VkPgljrc6t8QKgla1mf9sM2TGKVauA3buBl18GHn6Y3nftSmK8AMizwzdAE43phMtKk3HT3h74J9D+V1qVXmh8/fRurUUhp6aKrp1qBSYFG6GOf9B7zzuUfydeaPBUsNVR2BvDH86RmQKjw0hVTY5uK2qm0Ar0deso4fDkycCU1OwjsVEUYMJRGZ1rVto1LKV308DZ+Tw9GGoPT814EYkRoKTgJTAPo2nktQaMXTuZsteaycSV5IE46d9yWMIwRa97sVAdNIaxT6DnnaWa/nZMopcZhtHw5yxXVyQ51S+PlIJ2JWnAGI/ouo7169dD19O84YVBD7K4nwvgzQuBdy4NJ+uOpOsNYOvt5J5YjpgrOt0ddC0zIGPtCoW3C3htFfDuV0viAVpKpK3dxBPogT3h6Mx/1PDSSiKA8ydkScnXPSYuBdVOc9KKs3IJO5BnstLOmYIBw9MFDO0Iv4wAGaGETv972PCbKdxmlidF071hKYXe9A1QPPNYdD4P7H0yNU9oRSWjgbn6M0tUFTjuOPr79dfpfdMmoKsLcDqBoxN19T66mxai7H8uJ2WJR0G0093kmTj6padpoPF0AYPbgfZngcGPotvxdNpuIcJlUjQK0+EfIk/KGGXSNFoRfv759J7SBI45OdmwJCfePLEYV+2tmWfTzLuZiNHP8EzvA4D09nTRPaA5Mr8306RktGtYSud74BXyCOj8J/3vbMnsWgZGgICLxp8iQCG0U7yWpgFj4zsj6N1BkQh8Iz74RnzQfTrc/W707ujFOy+Tl/OyZSkEGYh1r+y4j/LTZNjfy0o7Txfd64ERoG8t0PM+JRIPjAB1C9Irj6sTePMCYM3VtFg403qQw/pkeq2NNiy1ttL2pIZfk4oWWtCZpndMKpRM3UvluTh6H1c70Lsmb6Hpc6ZfnigV7UoyhBQTwdAOYO23gapZwJJbx36uKGQd9A+R6+fo2H3eoFHDMTHvRS1J7BPCMV89B8dnInNfXzBmpp/DFZUCZk4FzZZy8jSGYTIg3qAszwNfJgH2YF8j1oIKgAZib16QeJLE3kj5aTi8G5ND7rvvPnzta1/Dhx9+iGnTpoW2b9myBZdddhkGBgagKAquvfZarCr2KFEWVA2YfAqw5zEyVExcHv25rw8Y2Ut907ojkh/PDFcxmBsDBkB5MJ59lvJgfPObtIIfoDAMtkQOBe5gTH57mitySwlrDbWn3h5aXBMLe2Nqi208XcAbF1ASb91D46nRYVRSabutNYDwAyMdFPZRtQJQguO0TjpmqmVKhGkEy2ZBUjlhT9GAkatnuHlveg4CgQFAgBYa+vujjzOeF4J5uoB1VwODm8kb6c0LKKKGogLrfxic40njWkbWc9Mw6OsDrFWUYyLJtVywAKjACGzPPInHt7jgH/FjuJOSVGs2DU+c+wQAoKOjAhVYhaOOShJGKda9EnDRolJFAyoPCecjLER/L7I8rna6Vv86k+bQFA3YfAuw877UyuPpAt7+D2BgC33/7S+OnWtLRbs89IlXrQLOPBN47TVK+NzcTM+7Yq/cLxlSeS46JlCbFBiK3kd30/++bqAieZ3KBNYvOWzAKHV8PbRSJdHEdOU0YHgXMLJnbEfNnESwl6kBQ1HpoT3yMT0wx6UBo5/eR8WOZTLAXBXm66fVB5ngG6B3aw0blBgmH+RyUobJLeYz1nMwdt/FP0i6qXbynDG8NPjTKgBLBbW/3h7ajw0YTI649tprsXr1atTX1yMQCIc68ng8OPPMM3HvvfdixYoV6OzsxIoVKzBr1iwsWJD7lYfjksmnkgGjbx3V+8hJnP4N9F45nUIyJMM0YIzsooU5OVg5vzxoU3n99TTCRwkBeDrob4fE4wZzctBcWBMLa01qba1/kMaklmqaGDV8gDVimWiqbbfhBSoOoXHpoV8H6hcDux4ADr4ONH8COOSc1MuUiAX/S/eRgzOepoRpqPN2J95v9DN8NKneB+a92bcO2H433Vfzr43eJxf3QSljXsvK6XQtPZ3U5tnqaEyf7rUcXc/3PUv5TGrn0zGTXMsFCwA7vNCHXNDsFlgcFri6XQAAe40djjoHAu4AvL0u2OHFsmVJDBhj7hVBhmHVQsZLzVnY/l5keapmUpgt155geSaSB1Cq5TGPZZ9AOuleuofNvD6paper+jQK02stI4Z2AEPbKKRW5SEZHqSESfW5CMTe58M7yZBfvyhvCxyy0i9VPF256RsUATZgFJCMEp6YFtlESa3MxmVkz9jPTAPGaM+McuLw71EltGaefKfYyWoSYsa3ZANGTNLSzj8IvHkR/X3inzMbPAeCDwMLT57mgpKue0xC8qZdLidlmJhkrJ2tkRYOmLGX7Q1xfsBJK229bgo3Za0N6xXPKMWkBLeZ0RiGgebmZjzzzDOYOXNm1GfPP/88Fi9ejBUrVgAAJk+ejG9/+9u47777cNtttxWhtJlTNN2dk2kg37cO6HgemH5R+LO+YDD1+oWpHcsxiQwdpld5NvnIgixdSp4WnZ3A9u3AK6/Q9oQGjMBQOP+FI//jp7xq52jK7bPQMYmuj+6mPnKkp3GytlsI4KNf0STfpJVA21nBzKRnAhVtwIRjgOqZiY+RKopCCXrzzLhpb82JOF8KIaSA8DM8Fqk+wx1NQPOp5MXlHwRstal9L0eUjHbmtdTd5InhmBi+tulcy9H1fO6VaRVj5kzAYQeEF/DDgrpGG3wtPowcHIGtxgZbpQ2BAOD10SKApUtTPLB5fp4OChWqOalu6p6M+3tZaWeWx/BQO69aydBjBNIvj62BFj3qbjpe5ILhdI6Vi/qUK7rfpEUJzacCc9K7h1Kl6HUv1edirH0OvwZ47+vk5df9NtB0bO7Ll2+y8PwpunZgA0bBsFgsWLZsWfpfNG8sWyIDxjR6H9kdvV33hVfn28t4IifTlfRBMtauULABIy5pa2etoQGZEaC6k24yLyA8qcqrv7Om5OseE5e8a5frSRkmRFbaqRolTFXU1AZdZrivbBJWMiG4zRyLqqr4+te/HvOzF198MWS8MFmxYgVuNzMpxsDr9cLrDd/bg4P0zA8EAiHvDlVVoaoqDMOAYYTzr5nbdV2HiMhZFm+7pmlQFCXKa8TcDiAqDvHixYuhaRqEEGPiE1ssljHbFUWBpmljyhhve8Jzaj4Nom8tRPc7MNrOC2/vXw8BAb36MCB4DsnOSVTOAPrWQfRvhXBOi3mu6ZyTxQIsWaLhrbcU3HmnQH+/gpoagSOO0GEYcc5pZB9UAIatAYZQQ2XPhU6xti9evDj0WV51yube0wPQhAA0O/Vv/YOAqx2icjoAJZSBStcDoes1RqeD/4La+wEUzQZl1ldhCAFD14GahUDNQjonIPtzUhSompZznUafExDWTtf10tAp03OyN1IUJ/dBGMFjxSx78D5QAAjdQ5N4jkkQ9iYoCmUiI70DSetNaLthQKiVKbcR6eoUqz6pqhrSLhAIFEcnPQBzKlAYfii6h/621IYzuo26lvluy+fMAbAeGBoSqGk0UN1WjYpJFVA1FUIIDAzSObW1CTQ0CACJdKJ7RQgB6D4orv20g7MVAiogBBTzXkrjnCwWC5YsWQLDMNJ75kaUR4GAEnBDKBpgqYJQbIDwQwHdw0nvPbM9BMj459oLeLogbDQuUUERiCK1S1qfICB8g1BceyAqp0GxVmdWn7JtI4Lh94yKGRDx2vIUdIp37yXSr+DtXibnZJ8E0XImlL1PANvvAeoWQ7U6SqctT+WcPL3QPN2A5oCiOenei0ijqxgeKN4eGN5+GJbw/KKqqli2bBl0XY8qZy7OafQ+iWADRoEQQmBgYAC1tbVQ0gkrY66ESOiBMY3e3fuiXa69waQ/Fidgydz7oNzJWLtCYRowrHVFLUYpkrZ2ikKGIE8X4OvNzIARGUKKyYqSr3tMXFg7eclau0U3p7af4QsnJ4y38oxJC6536bF//36ceuqpUdva2tqwc+fOuN+5+eabcf3114/ZvnbtWlRW0n3c1NSEmTNnYteuXejqCifgbG1tRWtrK7Zt24aBgYHQ9hkzZmDixInYuHEj3O5wDp+5c+eirq4Oa9eujRroLViwADabDatXrw5t8/v9OOaYY+D3+7F+/frQdk3TsGzZMgwMDGDr1q2h7U6nEwsXLkR3d3fU+dbW1mLevHnYv38/2tvDibcTnlPLMdhTeQE6A4cAwTLNbK1Gk7sDg0Mj2LrdA6GuTumcdndpaBzpx8Dml9C5bwKWLl0Kn8+X1TnNmzcbb73ViLvvpv8POWQI77+/GZMnxz6nGVV7MRFAr9uG7RHXOBc6ARhzTn6/Hw6HI/86ZXHv2f3tmO1ywanVQHFMQsDVA/g7obtH4LFMQW2VHcIwsGHDBnitfWN02rZ5LaZ3/xQWYwgDDf+Oac5J6D54MOfnpBojWOD5FRzNx2GjdwXcHn/OdBp9Tlu3boXf74fVai0ZnTI+pyOmIxDwY6h/N7a99y6gqDHPye5vx1yvF04b4B/eB3gGAe8IRmwW2Ox2VNoAn8+HzRH3QdxzmjoZEycfkr9zSlCfurq6sG3bNlit1qLpZPe3Y4FhQBECg/29qPD7EVCr4R0cRm1tHYSuw+1y4aPgtcyoLZ81Bf3rf4eRg5uxr/6LSc9pztwKYD3Q2+NDVR2Fj6qoqIDFZsHA4AC6D6oAgKmH9GNgQEuo04YNGzDb5YKuqtAMFyoVHUKrwIDbAnj6oRpuWAwXKoG0zmnu3Ln46KOP0NfXl5ZOnu5NofI4qqyw2+oxZJkJQ/dBDFB5Km06LEDSe89sDyusdRDWeuj+XYC/Hy69C9BsqKu0Qtf1qPYwWX3yeLzA4G5oxjAM33boVXPSq0+5aCOEwFH6RxC6jvW73fDuo89y2Y+YMWMGNm/ejOHh4Zg6FbTdy/Cc9h2cjulDgHXgI/jW/AqTjv7P0mnLUzgn8/6FzY6qmkp4PB54POGy2DWgwgLsbd+LjqGwl8aUKVNQXV2Njo6OnJ/TyMgIUkURkWaSccrg4CBqa2sxMDCAmpriTCoGAgGsXr0aS5cuhcWSht3og+8DfR8A874FTDop9j5CAG+cDwRGgKV3AlXTaHvvGmD9dUDlVGDZL7I+B2nxDQAfP0ou6fO+nfbXM9auUGy8kVzYZn8NmPLpYpempMhIuzXfAQY/BOZ/j9zZ06V3DdD1JlAzh9wvmYwp+brHxIW1k5e8aje0A3j9HDK4u/bSKl5LFVA7D4BC/Rh/P7D88dyFEikj8l3vSqE/nQ3Tpk3Diy++iFmzKDTRKaecgmuuuSbKiGEYRmilWiwjUCwPjLa2NvT09ISuSaFXV+u6jjVr1oR0L7gHRqxzGtwMdetPYdgnwlj4k9TPqXs11H1PQzQug2j+VE5WTn7vewpuuSU67EFrq8DPfy5w9tkxzmnvY1D3/BHGpJNhzL4i6blms3LS1O7II4+E3W4vXQ+M4R3Q3jyPFvlYKilXwsguGoM6JtNCO38/9GP/SPHlR+lkbPsVlP1/A5wtEEvugDZ6xarugzL8ITRVg1E7P+NzUg6+AnXbbVCqpkNffFteV7j6fL6QdhaLpTR0yvScNBVieBd0rS6Uwy9m2YP3gWKrhxjeTrH/AYiqGVDsjVACLghfH/TjHgndB3HPadfvoB58GfrUiyAmfyL355SgjfD5fHj//fdx5JFHhn6v4DoN74D21vmAtQ5Cq6DwSooKgK49AiPAqGuZdluuD0O89QUIIwBj8f8BVTMTntMdP+zH1v99HJWNdhx5DBl3lGB5hBBY87YPwz1eTL9mFb5784TEOg1sg/bmeRDWWigjuyhkVNV0CFtwcWBgBIq/H8oJT0BUzUj5nIQQeO+990LapazT0PZgeeqgWCuhQIleeR4YgRIYgLL8cQScU2Ofk1nG0e3hwBYKrVc5DcLeBFV3QYxqD5PWJ80B9K1BqEC1h5MHRqr1KRdthOcAtNWXAaoF+jEPU3itILnqRxiGEVe/kvRWiLe963WoH/4cOOQsqDM+XzpteSrnFLp/66AoFgj3fojKqSDfIUDRR6D4B2Ac9yiMyumh4xiGgTVr1oQ8fnN5ToODg2hsbExpfMGzCqVOKiGkFAVo+SQAlZJgmlQfCiz833BDWK4oKtD+NP196OXjL1RFRRtQO0DJypnsMWO2e3sz+37DkfRiGIYpZ4QRHIzHwBtMHqeowTjl7C3AFB673Q6PxxO1ze12w263x/VgsdvtsNvtY7ZbLJYxRiNzUDeaeDGE422PZ4yK3K4EJxzNEBujibc9XhnT3R4quzDIG7xhAXDs76EGhqHG+N2459S0DGgaGwYt03N68kngpz8d+zv79ik491wFTzwBrFo16pxqDgVaPgm1dn7MsmejU6zt5uRCqueUzfaM7z3NQuNNE/sEGk+59wGVraGcIRbNQnG7IlAMP7TBjfT9OZcDVsfYMna9DHx4B1B7GNTFP8n8nPreA6AAjcfkXKeocwpqZr6PnohLteyFbCOSbVeqZ8acGIoqo3kf6B4oetiQq3i7Qnk0FEWJeR+MKXvf+4B/CJq9bsy+OTunBPXJ1C7y84LqpEW331BinFeMa5lWG6HVQmk6HsrBf0E9+CJQNyfh/nPnAlsBDA8rUEf13xRFweCQAhXAokVa6BkZV4/gvaIooNxGQgdsDeFnq6KE2pR0ziky5Fdaz9xQecxAUaZxJnSC4bInu8dGt4eVh1B/VnOGerMKYreHMesTAMU/GD1n5+0C7E2p16ck21OqN65dwfOZDottbFLxXDyfzMUhsfQrSruX6TlNXgHUH0Y5axLsX5LnZLY9ni7A1wNFGFA0O+CcYh4hvH/EcUxDRCztsj2ndBZdsQGj1Kk9HLDVhSpHXGZcPHabtYoS65U71upwUkD3/oIkdSsoMz5f7BKML2xBA0aqiewYhmGYMD2raSKqciotohiN4Qdc+2jQ5mylQW0g6Dqsu8fuzzB5orW1FR9//HHUtr1796K1tbVIJZIYTxfQ8Q+g/Smg6QRgyukRnx2kVd0Fzluk68BVV8VexyUENUHf/CZw5plA1Li7cSm9mLFEtdHBNjzgDm/vXRf7e4deCfRvAJxx8hLWzaf3oW2Uw1GzpVYeT1c495zhAw7+i7wCHJPJ468I911ZYHho5bnQg8YrFQgM0yr7VHDto5dq4bmKeP2eXPWHWj5F9eLAK8CML0Yvdh3FnKB9I+ANwDUQPWfu9QK6LwAVwPzD0/h93UvJre1N0fdHsfp7ubzekd8RRuZ9Wd0NCD+g2gEIWgSQaZmyYXg7vVfPKuzvyoii0Pxs5DMoFrl+BqXye0Diffo3Aq52AAYZTm21IQO0DLABo0AoigKn05l+TOI538hPgcqNilZy73PtS9uAkbF2TNHJSLuQAaMv8X7x8PbSqjTNGb06g0kbrnvywtrJS9baaQ5qP7Wxq9SpIz+ZBmW6G1A0ChkVib2RcwhlCNe79DjuuOPw7LPP4vLLLw9te/XVV3HccccVsVTpU3TdPV3AmxcAw7vJWHHgZWDX/YjyrLI3Asc9nPpA3tdPE9LJFnAl4LXXgIjw22MQAti7l/ZbuTLjn8mKomuXKtYa0tDbAxje2PvoHuDdrwC2GgqtEosd98S+DxyTyQPa2wsMbgXqFyQvk3nfmdEKAi7A3QGoGrDuatqW7n2XBtJolyrd7wD964Oe5Eti7xN5H9jqaJstaA30B2Oip/IM7w3GPq+dn3BCPV+UhHap1Klc9IdqDwcq24CRvWTESBBueuIhduj2Cli9Lgx0BlAZkUJ1oB+wAlCrKlA3OUb/bjR5Or+MtctleXJ1rMjjAMHcm4IygCsKHbuQfeJgAm9Uz87bT5RE3csV5jPItZ/aP3vT2LmfXD6DRj/zYmGtpvsnMBR/H8VK/SvNCVTPSBzpJ/JrJaIdGzAKhKZpWLhwYf5+QAiaBHDtC69i6Xie3NkalpFlrZxxtoQNGGmSd+2ywVxWNh4eAnkgI+1q5lBIttr5mf3oB/9D99mim4C6IzI7BgOgxOsekxDWTl6y1s4xid69XWPDSDmagOMfLuxqpTKC6116nH322fjBD36AV199FStWrEBnZyd+9rOf4aGHHip20dKi6Lr7B2lAbW8EfIMAAsDIx4CjmQwQups+9w+mVrfb/wJs/w0waWVGuetMOjoy2M8I0MpE5+SChJwtunap4miiSZh4bbcQwM77gG2/JOOTYiGjhL8/uLJTSXwfKAr1uw/+CxjYlJoBw7zvVDtNxPiHaUW/rZHyLKV736WJNNqlSv8HFHJZtcU3YCS7D4DUnuE979F7kTydSkK7XF3LZCgK0PwpYPs9QMdz5JERZ96gsqkSB5evwmv/9OL6i4BzLgx/duutwGN3AWedYUdlU2Xy33U0AUfcEMoNEfM3Mzi/jLXL5fWOdSzXx8D+f9BzY/p/pHasQt0DqXL4/5DnWmVb3n6iJOpervAPAp5uWrgBAxABwBahVa6fQaOfeaPR3VQegO6byH10N/2vu+k49gnUZ1MdYc+hyH1jUCrasQGjQBiGge7ubkyYMCFmfLTYXwoAUGglSTICI8CbwVBCyx8ht87df6CVLEfeygaMimA4AHf6BoyMtCsU7v3A6m+QgWbZL4tdmpIjI+3qF9IrU8xOiLXM61wOKOm6xySEtZOXrLWzN1K/xdCpD+IIuiUP76LJTEcTGyjyBNe7xNhsNlit4aSUlZWV+Otf/4qvf/3rGB4ehmEYuP7663H00UcXsZTpUzK6axWAcxLgORD8307jESD+KtVYmH12czVohjSnmBouaj/3fmD1FVTu4/+Y9wVCJaNdKiRru2deAux5lFai+gdpbCp0epmJvRPdB3WmAWNjeuXSnKSX7ibDiXNyZvddmkilXSqYHuiJVvcCgO6i6+ucHL19aAd54VTPjP09k4ArrHHjUZmVNUtKRrtC9Ycmn0xeccO7ycOpdl7cXQ8/qhJ//WclNncADRFSvrcd6AOw5MQ0frfjOaD3fWob2j6bWdlHkZV2ubzeo49l+Mn4aqmkEKpqitOsjmBoLXtDuN0CqA/duzr14+QCS2VqxuMsKJm6lysUhfos7v3UdjqnRCU/z8szKPTM89Dvq6ZHlKDFY0BwkXPw5ekEvH1AzVz6bmCYcufqrrFe8CYxPH9KRTs2YBQIwzCwc+dONDQ0pC74wVeBD28Hmo4HDrsm8b7WqrAL2sjHFLvOTEKchfv1uMGMuZqBB0ZG2hUKXx8ZuoRe7JKUJAXXThj0UAA4BEoOKOm6xySEtZOXrLVTVHKjdndSp9kxgVbGbrieOtpHXE8JD5mcw/UuMdu2bRuzbeHChXjjjTeKUJrcUVK6O5rCBgxrdWbHMMNXuPbRJLglhdW+MTjhBKC1Fdi3L3YeDEWhz084IWKjO+iO4ZhUEO/mktIuF9hqaSLOtY/GJooS9spLhun5PLiVJgMjJ4GSYtCzxjeY+X2XJuNOOzMGerIcgDt/D/S8C8y+DJjyGdrW+U9g6200/7Dk54m/37eWJmcrptAkWhEYd9olw1IJNH+S6pUZ+isOC4Lz1x98EN4mBPBe0Glm2bIUf9PbA/Stob8n5G5RQMlqV3MotX++gaAXWRqLIbf+HBjZCRz+PaAxeIF3/pY8oib/GzD3m3kpcjEoWf2ywVYfNNoPkydOVRIjbi7w9dEiD8dE8nACaB7KfYCid/r6yKBvogS9IC1V9Gw98laaO45HDM+fUtFunNw14xRvDz0x1BTiDALhm3dkN+ANug9pNp5IBcKrucz4nOMFXz+9J+mMMGkgBK0OcrVTBzsd/EPhUbKlMAMohmGYksOcsPIcpPePfhV0e7bxogqGGc9oFTQpaZ9AA+VMsNaE24mh7ZkXRQNuv53+Hm2LMP+/7bZRCbw9nfRepInVcYGlGqg9jDyRK9pSvw8qWmkCUPdl4H2jUkLx2sPA0xsZYhowEnlg6F6gfx39XRuRyblxGa0UH9oODCbRrnIaMPVcoCV+LgYmD8z6MnDo15O2baYBY8MGwDDo7x07gL4+wG4Hjkg1OvKBl2lMXHtYebSnihr2KOp5J/Xv+fqpvTP06InviSvoves1ml/IN/v+Buy4L6tnbllTNZU6FmbIqHzjDY6vRod7Ui1kuFDt5AWr2em5Wnt49GICeyN5y8V7lbCnPD/hSxlzBUQi61gklVPpfWR3ePVTgVYQlTzOKcBxDwFH/6bYJcktZqLpeMnymMx480Lg3a8lX4U0mlD4qKrUQr8xDMOMJzxdFEZCUWnldP8GYNfDwP7nqJM9/YsFiSvPMEwRqWgDqmYgKol3utQcSu9ZhpFatQp44glgypTo7a2ttH3VqlFfcLMBIydoTsop55icfF8TRQEOvRJYchuFumAKiznf4O2O7bIEAH3ryMDkmBiedwDI6Ni0nP7ueC7x71RMoRwBrf+edZGZ3HPooYDNBgwPA7t30zbT+2LRIvosKUIAnS/S35NPyUMpS5TGoKdJ9zvx69BozIT21bPJe82k+lCgajrVtwMv5bacsTj4KrD3zxTJhUkfrRKwBxdejOwGYOTvt4xAeM6panp4u6JR1BlnCz1D6xbSq3oOLS4ZJ7ABo0AoioLa2tr0srabKyBSzAyPqmn0PrKHJhGAcEUqd1SNrI8ZGHMy0q5QsAEjIRlppygRcWB70/tB08OHvZ5yQknXPSYhrJ28ZKydpwt48wLg9XPIaDG4GfjwNmD15RQDeXgHsOHacP+EyTlc78qTcal71Sx6z9KAAZCRYvdu4OWXgYcfpvddu2IYL4CIEFJpTLxnwbjULhsmHEWrP5U0pigCQ4CvFxTvu3CMO+3M+QbdS7HRY2GuLJ9w9NgxtelRcfDVsUlhS4xxp12qCAEMbAV2/DbuBLvFAhwedK5Zv57e0w4fNbSNwshp9rBhK0eUtHb1iyj6iecgzcelQryE9opCCdcBWgSUqkEkE4RBfXQgHMIxT5S0ftlS0UrhmXRPOBpOPvD30f1graYk3AWiVLTjHBgFQtM0zJsXP2FSTMzJ07Q9MPZEeGCwASNbMtKuUJgGDGtdUYtRqmSsnb2BOh++dA0YnMA7l5R03WMSwtrJS8ba+QeDYaLs4RwXwztpIspSTROCpmt1CbsmywzXu/KkZHQfHcog2fZ4eLpoUB4YIePn0I7oz2PEZk6GpgErVyb4PbP/NvQh/a4RCP9uBr+XerlKRLtckqv7IFVc+yhRqrOF8i/l+/eCjDvtNBtNiPmHaPJtdO4ZISj3BRBeaR5JzVyaixjZA3S+BLSeMXaf7qABpH5hUb0xx512qeLaB6z5NtUN+8RgyLUIgm3dggXA2rVkwPjsZzMwYJjeFxOOAyzOXJUeQIlrp9mBukVUT3reCS8ujofhB3qDeUIaYlzciSsprJNrH3k05yvBtqudDJeagzyk8khJ65cpkc8axyTSVavI3zPI2wWIALXRkcbiyN/Lw3O4VLRjA0aBMAwD+/fvR0tLS+pJT8zwNbaGxPuZVLTRRIF/GBjcQtvYgBGm+22g43mg7gig7XMpfy0j7QoFe2AkJGPtzDqXrgHDPgFoPg1wppiwkElISdc9JiGsnbxkrZ3mpE615wB1lFU7UDuH4vsa3twXmAnB9a48Kbru1hpabOXtiV/H7Y2peaeanlyeLuqDuezk1TX6WMc9nBujgvl73h4AAhjeRRO1H/xXOIl0Ln9vFEXXLpfk6j44+DoZrlr/PTo8RqzfMydwFCU4Bu5P//cyZFxpZ7LoJ3S9Yl2zoW2UoNhSGZ3/wkRRyAvjo19RGKkpp4/10tj9MC1smPufwOST83MOKTAutUuGpwt454vA4Iek47tfBZyjPM2Cbd2CBdTWrV8PBALA++/Tx0cdlcLvCAEMbKa/8xA+quS1m3AMPbtSWYA8sIlW69vqgOpZYz+3OIFJJ5EHRsdz+TNgmJ6O6Xq/ZUDJ65cO8Z55qiUclSOXzyBrDRlGAu5w2zr6meeYQM6IgaHs+2OjKBXt2IBRIAzDQHt7OyZPnpya4IYenpxO1QNDtQLTLqTJ7JpD6fsOnkgN4e0JuukpaRsw0tKukFROJTdfjtUbk4y1C8WBTdOAUXNoOG4zkzUlXfeYhLB28pIz7eyN1IG21tJqaqO0Q0qMB7jelSdF193RRBP8iRJXpurFYHpyac5wGKlIdHduPbkiPcc0O+Bso0G/fQIAJfe/N4qia5dLcnUfHHyFVupXtiU2YDiagNbPAooVaDgSmP21zH4vQ8aVdiaVbfE/M70nGpbQBF0sJq0Edv4OCLio3jgmhD/z9gS9MhU6RhEZl9olw2zr7E1BLzMfoFWFtYxo6yINGJs3A243UFND+TGSoijA0juB/vW0aDTHlLx2k08Bmk9Nbd9Q+Khl8cOct3yKDBjebpofzEeOTTNxd6xnbo4pef3SIdkzz/CRgSpXzyBHEzD988CeR4CGxcDsr4/dxzRM5KI/NopS0Y4NGKWK4QOaTiAjhK0u9e9NPTf8d2RyLSbsEufeV9xy5JKZXyx2CcYnpkdLuh4YDMMwDKFYCjIYYhimBHA05Xai2PTkAkDLCSMmd/LhyWX+XlX12M/Ycyx1cnEf1B5Ok+X9G4G2WIlKgug+SoBrqQSmnU+rh5n8MfVcio+fyOvfUgEs/glQMXXsRKs5WVszh/JSMsXBWksa+ocAfQSwtYQ/C7Z1CxfSv9u3A6+8Qn8vWQKkPGepqJQPohxJJz9A6+cob0LltPj7VE0Hlv0yHJo1H5geGLwIM33iPfNG9gKbbwaEDiz7Ve5C5s36MjBxOS26SPTMG8ehetmAUapYnMBhV6e+f2T81ljkcQWKNDiDBgxPJ8W2jbd6hGFCSbx7ku8bWff8Q9RhV53hDgzXPYZhGIZhmPQxPBTypHIq53srF2rn0/vAZkouGy+kSfebFDbZ0QTULy5c+cYzA1uArteAikOAlk9Gf6Y5gKZjkx+jakbs7aYBI1asf6awOCaGc504W8Z83NQETJ4MdHYCv/sdbUsp/4XupcUr+fASkI2AmxJj182Pv49jQjhRdyLyabwQIhy2nhcd5Q7HRLq2nm7ymJhxcW6Oqyhjc9eUGTyDWyBUVUVTU1N+3G0i47cKQSGFvL3kuWENriTKY/xWabBPoARluo8SNFeMfWDHIq/aZYMQ9J6Opb/MyFi7qunUcY/XCTeJip0MwL2fOiyOiVz3ckDJ1j0mKaydvLB28sLalSfjWnd3B02KDX0EOFvzls8Aupfy9lS0hXNfFIBxrV2mVM2ghXyBEWBkd/y+eMc/6H3yJ/Ietz0W41I7VzvQ/jTQuHSsASNdDB3wHqQwx7oP6F9H2xuLb8AYl9qlg7WO5g90DyUcjtHmHXEEGTDWraP/l6QS9av9L8C+ZyikectpuSxxCCm083QB736F/j7+j7lbfR8YIaNtLnNtKgpw9H2UGNqe/7kKKfTLBZodmH0ZsOFHQPtTwKSTszdECVHUeb9S0W6c3zmlg6qqmDlzZuqC61568KdCZPxWSwVZ02FQI2eto+1m/NZyRlHCqwzSCCOVtnaFYmQP8NoqYPWVxS5JyZKxdlUzgEMvT74qIrLuWesoDq9qIddorntZU7J1j0kKaycvWWunu6n/Mfqlu3NbUGYMXO/Kk3Gte+W08EpG117A9TGtys81nv00fnLtyf2xEzCutcsUVQNqgitM+zfG3kf3UWgORclLouBUGJfa2U0P9O7o7dt+Cez6Q+q5AYd3Au9cAqz/QTCp8wbSzDEhcbicAjEutUsHRaOweZo9Zoi8J58E3norets3v0nb4yIE0PkihT/PY5QLKbSzTyBjgBEAetfE3mfnA8C+v5EnTCocfB146wvA9l/nrpwmikLP2QJMjkuhX65oXAZMOJrmdD/6VXjxcSboHmpTP/oV/V0ESkW7MrhzSgPDMLBjxw4YRoqd7j2PAK99Dtj1YOo/ojkp9I1iCbvvWSppO0NUtNK7qz3lr6StXaHw99ODMR8DuXFCwbQzYycroLpnqeG6lwNKtu4xSWHt5CVj7aw15HFmeOn5NPpleOnzfK2gZrjelSnjW3eFJjwrp9Hkiq+PvF2HdiR+ebpS/4nACC00URTy8igg41u7LKg7nN4H4hgwNBuw+Bbg6N9GJ4ouIONSO3vwWkaG0PUPAR3P09yECKR2HMVGoVOGdgD7/goceJXqWcVUMm6kUz/zwLjULl1q5gF1CwFLVdTmf/wDOPtsYHg4evfOTtoe14gxuJU85jQH0HR8fsoMSbRTFJq4BoCed8d+HhgB9j5Jk9GB4bGfx8JaQwbEg68C3e9m98zzdOXu+ZkmUuiXS2YFPXG63yEjcKbXu/st2q93LS2QLQKloh2HkCoQhmGgq6sLU6dOTc1qZYaDymYCtFwahnRwTqEHq+FL+Stpa1cofH30niiZWpmTlXaBEeooOCbSCpWUfjDYsef8KjmhZOsekxTWTl4y1s7RROHyOB9X0eB6V56MS91He2xZKoOTnzsoVOdbF1H/TLXF/n6q4TsNX3DMZQDWelrVHxiJX44cMy61ywVmHoxkq5OL+DwZl9rZGundP0QeE5qNEqULA6iaRnUuGZ4u4J0vUu4a3wDw7tcA52QKVbT3T2TQKHJ43XGpXarEa9N0N4QA/vd/Yy8UN6PXfPObwJlnAtroNBedL9B70/G5C5kUA2m0azwa2PsUGTBG5/LpXUvbKlopxFoyPF3A2m8Dg5vp+ff6uWFvKZNU69SY8Nedwe83hJ+neayf0uiXMxTy7BzeA/StAyrbyAMqklSud+dL9D7p5KKFkSoV7XiWrVQxk+nYG9P/rrWaOh6ODL473pl6HsVlHA95I9iAkV/e/yY91BffAtTOS76/8Ie9YQoYP5lhGKZkcDSxgYJhmMwxPbm8PTFDm8DZTOFtjACtHNYqxu6ju8PhO5O1R12vA1BoXKDZyVtsNOw5VniqZwPHPUQhWUfj2k9jXTPXHJM7LJVUD3QvzUU4m2nlMEATsqlghte1N5Ex0PABWiVgDY6N0qmfTO5I1LYGrRN9rkZ8uCt+WycEsHcv8PYrXTj+qIjFKoYX2P93Cm1TPYcmyctd25p5gLWK5uQGt0YnXja9MlLNB2PWKdsEwOig62ytBYV+QHp1KjL8tWYHRj4GIIKhr21cP3ONfxCARnmdtArAUhu90DWV6+3tBfo/oL8nrcx3iUseNmCUKqZV1JaBEaJ6FuDrz8z4Md4ZTyvjQwaMuqIWY9xiqycDhi/FeK++AXq3VIKj8zEMwzAMw6RJKp5c7v3A6m8EJwMqAZjLhSMWJ8UyfozGcxDo+DtQvxiY+UWg8ajY+7HnWOEx88nFYvvdlBtj7n8CE08obLnGO4pC8weu/UEjxASg9336LFUDhom1lsZS/iFAHwFsU8KfpVI/mdwSq23d8wjQ9RYw4/NAwxK88nQNuocSt3UTqrsw48AFwOujwox5DtICvvXfK7qHTUmgakDDMuDAy0D322EDhjDIqwmI/8yJh6MpGJLVT4ZBW4QXRrp1yozyomjB9jZiQSzXz9yiKGTYi7cQItn1PvgqWQ9r55E3W5kzjmZzSxBPV+ghoRoGpjYGoI7sAkyXm0QdYm8WHhiKlVY9MDlBVVW0trZm5ioVcQ/EJJtBEXtgJCUr7cy6l2rCOn/QgBFvwMWkTVb6MUWFtZMX1k5eWLvyZNzpnoonV2QIBlc7EHAB1TMpD1mq7HmUwuQ0LiEP7SJ4Z4877fKBGbsGoEnSvnW0rXp2UYs1brWzTwgbMPo30GpvewMtkEwXx0Sa3Hbto8nWEskNOG61S8bottXeQHXL3w9Uz0RDS/JD1DgHUWUxV/AH9fT20iS4YzJtz+MKfqm0azyKDBg97wIzv0TbBj+kOmGpBGrmpnlAha6paz/gORBtwMgEM//GqDwo+UQq/XJJVNgoEXyleA0ORISPKiKloh0bMPLFqPhyKoBmANgesU8863TAFc4un44BI0FMQyaCD+8gV7553wGqZiTd3aysaTM6xmAsslmh4OundzZgxCVj7YBwpyAVDwzdDVgqKKSB4gjHT+a6lxVZ6ccUFdZOXlg7eWHtypOy1t3w0aS20IGBzelNas+8hPpuk/6taKFly1q7ZHi6gA9vo/ejfk0adTxPxov6RUVfiTputZvzTQolY60hbxeAJmIzqSO2BkBrpxXjo+O+F5Fxq1261M4H9v0N6N8EADjhBKC1Fdi3L3YeDEUBWpqBqiqQ8cJSSR9UzwS8XWTAMAJ5XcEvlXYNR1IS5wkR3kum90XDkswig9gnUrJ03U3XOdOEzkaAvBmBohgwyhcDGNoOIEUj/PAuYHg33StNy/NduISUinZlZvoqIJHx5ax1ENZaDPttENbaYIy5COv0aMwJb0tlakmQzJiGhpcs6KNfhpfjt0bi2geM7KVXCui6ji1btkDX9fR+Z9Q9MOaV6B5Iharp5I7omJTZ98uAjLUDwoahRAaoyLonDIp1Kbxc93JEVvoxRYW1kxfWTl5Yu/KkrHVXbRRWQbPT4q+BzUAgxX61pYKMGFXT8lrERJS1dsmw1pKe7g56GXo4UXDzacUtG8axdo4m8iZXFKpflsr0w0eFUGisWjc/nCC4BBi32qVL3Xx6H9kF+IehacDtt9Om0fYq8//vfz+GLUurACqmZj6ZngZSaWepAFrPIE8kE/8ghZdqXJrZMVUbLcCtPTzz6y0EJZY2/FTGAhqDpdIvH+geugd8A2FDRiIs1cAhZwPNn6R5piJSKtqxB0a+CVqnhRDwG34IrRKK2erHs06rFmDSitTdoFOJF8vxW8NUTAl2iPeltLsQAgMDAxCxliKkQuQKhdFks0Jh5iWZf7dMyEo70/vJDNUVC657eSXruscUDdZOXlg7eWHtypOy112roEnSoe0UmmN4NyV4jnc9XPsAZ0vRvC4iKXvtEqHZgJo5tDp8YBOFCvP2Ur96QqYT6rmjLLSbeQkw/QuIyi+TLoqVXiVEWWiXCrZ6mhdx7aO5kQlHYdUq4IkngKuuAtrbw7u2tgK33QacdiqA14tV4HGg3aGXAzMuTi/c4WgyyZEbie6i8FGqHaiahUKuaZdev2zRKoDqQ4GhbRRNxfAHE7LHwTEBmPGFghUvEaWiHRswConQQVa2JJ0AZzOFN0qHVOLFMoQzmETMlZoBI2e499MDo2oG2PlJAkIhpBJ4YABU7/rWAZVTKT6swtoyDMMwDMPkldFhOivaqG/v7aKJ7l0PAHOujF5k4h8APvg+UNEKHPp1GhPw+Kk08XRRTsfACMWRD7jp76bjgZGPeYFQrjHzNnoOUsx11Qa0rQp/nu715tDWclB7eNCAsRGYQEmlV60CzjwTeO01oKMDaG6m8FKaBmAo4ruGB3B3kiEk0SRsueLpopX23a8DvevIcGGtDn+eizoVGKKcGOkcx1JJRkXNTvOTZujreL/BZE/kdVU06q8M76KFsrqXPAyZlGADRoFQ3PtQ6dsL+A7NLDE3kzsqgrHbXO2J98slhif8e7Y6wDYhu+OZls8SWD02bnG2AC2fIoNiIgIjwLZfUAipY34b7SbKMAzDMAzD5A4zfKe3Z6wns7UKgEETsdWHjs1F5zlIXhqanWKRZ5OLjskfZh5BVztNzvWtBSBo/OM9CHz8GGuXSyLzNure8Jh1zx/D+6R6vRPVz8hjcXjd0qBuPuWW6d8YtVnTgJUrk3zX10dtqu5lA8ZoIuuUq52u0b6nKTybSbZ1ShhkzBU6EKigcEPJiDwWBIW8Hg3Xz9yRqD20NwKeTsrltecPwBHXRS+E3fc3ujfqF2eWL2WcwleigGiqAsXTmdyAERgBVAfFx2NyT0XQA8O9nzrCSYwAqqpixowZUNUsVtZ7Dob/9vZmb8AY2g6suxqonAEsuTW7Y41jstLO0USr85LR9wF1ICrb2HiRY3JS95iiwNrJC2snL6xdeVJ2uqcSvtNMbvrhz+ldswMBD62CVC1A5UxyiDdz0RVpErzstEsVM4+gtRZQuwAIoOpQQHgAaz3pyNrljsi8jVoVTaoBtLq+5lCafE31eksQXndcaZcttUeQEaNuYUrzIiF0N03SiwCFyzZX8ed5Bb802kXWKXsT1Sl/P4UMqppOk9a5qFOD24APbwWEAnS/AbR9LvYxdA/w0a+B6RcVtX5Ko1+uSNYe9n0A7PgNhXDr+yBsODK8wLY7AN0HHP7fFMGF200AbMAoGIpzMjRPJzXu/kFyHYrH1p8DPe+S2/PkUwpXyHLBMZmsm7oH8PUmNSipqoqJE7OZmDYATzf9aakCKg7J4lhB/P3sapYC2WuXAr3v03v9kfn9nTKkIPoxeYG1kxfWTl5Yu/KkLHVPJXTu0A56V6zA8M7g35bgdyfQmCybXHQ5oCy1SwetgowYgWEyODlaw5+xdrlHc1JSXzM+v2oJrupW07veJR7aelxqlymOCcCim1Pf31xR7jlI8xECGLOSP48r+KXTzqxT3uBcEAy6Nuk+f+LVqeqZZETafg+w83dkHKlfFL2PEMCHdwIH/0XPwiW3FdXwK5V+uSBRe1g9E6hooXm9dd8Ne4z6h6iOqVZg3TW0rcheh6WiXZmYvoqITvE6he6Bx7BDiAAwsiexddrbQw1NKm5gTPqoFqDyEGrgI2P+xUHXdXzwwQfQ9QwNBp6DFEJK0ShPghlrMJsVCmZiaVtd5scoA7LWLjACjOwF/MOxPxcC6FtDfzewASPXZK0fUzRYO3lh7eSFtStPWPck+IJhcXQvTcxWtCb/ToFg7VLAVkcvtbQSQY9f7SJW4I/TuYjxq10BMFeUz7kKqF8CHHI2cOKfgeWPh195nGSVUjutIuJvR+6PP+V0YPK/kZfhB9cC3e+SAd987fgtsP858v6Y/dWihiCXUr98M+EYwDk5wguukrRSLbTw2lpH202PnSJRKtqxB0a+GB3vTAjowkIWUl8fJc+paIltnfb10jvnysgfS+5IufEWQsDtdkOYeSdSxbwH+jcARoBWEI2OM5jpCgU2YKRExtqZbPxfoH8TcNh3gYknjP3ctZe8azQbUDs/u8IyY8haP6ZosHbywtrJC2tXnrDuSXBMokkjTyctYFJKZyKctUsBZ0uxSxCTca2ds5nGmhVtxS5JXhjX2mWKf4gW2dalMJ51NNG+lkrKF1k9M//lCyKtdpVTKXx55dTcH1tRgLZzKIqLrx949XRqN82II2bY9KrpFM6qiEirXyEZ2Ulzh4qF5otVO20vstdhqWjHBox8MSrema4HsG3DBiyoXA2t912gYQlNio62Tht6eHKaDRj5oxCWZ/Me8HYDPe8D9QvoQd+7Buh5B5h6Hj3EMlmhEDJg1Oe2zEw0tgZ6N42KozHDR9XOJyMGwzAMwzAMU1o4W0p2IpxhSo6KtnFrvGBi4OkG3v4irfg+/hHKGZSIwAjQv57+nnBM/ss3HnBMole+MDzBcHsuWrFvq6Mcne4OigJirSSDRhHzBjEpYHgoWgsAWKvDxgsmBBsw8klkvLNAAF5rH8TMRcDgJrKsxXo4+PrIQqpq1Pgw+SWdZFWZYN4DtfPC27bfAwx+CLjagcalmR2XDRiFwTRgeOMYMPo30juHj2IYhmEYhmEYhmFkwt4Yjhwy+CEtukyE5wCt5Fe0kgrJV/aoFqBmHmCrBSAowbcwKAdr5TQgMFTsEjLJsNYDqgNw7+NFF3FgA0aB0DQNc+fOhVZTC8y5gjwwYoaPCiZusdUXNT7duGfkY2DLT+nvpXcm3DWknZYg8XosdB/Fax2t48QVwMBm4OCrQNtn0zumCRswUiJj7UzsSTwwDv9vYGgbxSdkck7W+jFFg7WTF9ZOXli78oR1T0K8nHPZ5KLLEaxdEli7wlLC1zuXjEvtskFRgNrDKcnzwMbkBoyqGcBRvwYCcXJE5hHptCt0nVKD07siAAgfeV1UzyZDRgkgnX7FwD6BXiVGqWjHBowCoSgK6urq6J/mT8Tf0cw8b+PwUXnFUgUM76ZG3QiEG/sYRGmXDnufAA68Asz4AtB0fHj7xOXAjnuAoe2Aax9QMSX9Y1fPorLn0xVxHJCxdibJQkipFqD2sMyPzyQka/2YosHayQtrJy+sXXnCusdhdD7CWGSaiy5HsHZxYO0KiwTXO5eMK+1yRd0RZMAwowskQ1EoxE2BkUa7YtcpxUpGqcAIoDnpvQSQRj9mDKWiHRswCkQgEMDatWuxePFiWCwRl903EHTzCmKrByatpORZTH7wdNF1FwEg4AV63gYcEdfbWhMVGzCudokwAsD+v4dDgkVirQHqFlH+hIP/Aqadn3q5gzlVMOnf6AUAQztilpvJULtIkoWQYvJK1voxRYO1kxfWTl5Yu/KEdY/DqHyEMSly35m1iwNrV1gkuN65ZFxplyvM5N1DHwKGn6JIxMI3AFgq4n+eZ6TRriTqlApYCm9kSoQ0+hWLEvaCKxXt+K4pILquh//xDwFb/g8Y3AIccx8ldwYoV0JkvgQmt3i6gDcvIGu4qx3QvcDbl4SvP0DW8OMejnqgRGmXCt1vkvHC3hA7udWkFUEDxquUzDtZuLDIcscjRrmZDLSLxB70hIrlgbH+BxQ6aup54VBTTM7JSj+mqLB28sLayQtrV56w7nGIzEdYorB2cWDtCosE1zuXjCvtcoFzCi2q9Q0AQx/FjzCw6wGg63Vg1leAyacUtoxBpNGuzOpUqkijXyEptsdOipSCdmzAKBaWKsB7EAi4gP3PAYecXewSlQf+QWoYVDs1AKIPUG3hhOm6mz73D2b3wNn3DL03fyp2eKrGYwDNRiGkhndQSKhUy605AIwyeOSq3Ew09kZgyqfJEyMy4bu7E+hdC6gahQhjGIZhGIZhGIZhGNlQFKB2PtD1BoWRimXAMHSg+x0g4KYk3kzpUcIr+JkElITHjhywAaNYKArQdjaw9edA+1+AKf9OE9q+AfIGSJCTgckBmpMaAf8QJTWK9MCIZ/VMleGdwMAW0rDltNj7WJxA41E0Ea570is3DPLcsVQBNRHeOtmWmxmL5gBmf23s9t419F4zN/reYRiGYRiGYRiGYRiZaPkk0LAEqF8U+/PBLTTBaq2i/ApM6SDJCn4mAeyxkxI8S14gNE3DggULorO2TzwR2P0g4OkGDrxED4111wDu/cCiH3Ny4HyjOend1wOIQwAldnWIqV0iTO+LCcdRTpN4zP1WZvEj/cNj82owMUlbu1TpCxow6o/M7XGZKPKmH5N3WDt5Ye3khbUrT1h3eWHt5IW1kxfWLg7xDBcm3W/Te+NRRVtsy9rFQZIV/KyfvJSKdmzAKCA2my16g2oBWj8HbL8X2Psk0PwJspoKAVhrYx+EyR22OsBaTY15HONFaNfR2sXDP0x5LQBgyumJ983EeKF7Afc++ts+If3vlyEpaxePwAjVS2s1GaSMAND3AX3WsCT7AjIJyVo/pmiwdvLC2skLa1eesO7ywtrJC2snL6xdmggBdL9FfzfGyO9ZQFi7OEiygp/1k5dS0E4tdgHKBV3XsXr16rGJT+oX0/vQdmDX72miNDAC+AeAoR2UvJnJEyqFAHK2hDfpXgrp5O2h6z+0A/rANmx46ynoA9tC20K6eLrC24Z2UEioGZcCTcsBxZqafoERCjmVDCEA114KeWWr5diTKRC33qXDtruA9y4HDgQNU4Nb6B6x1QJVM3JTUCYmOdGPKQqsnbywdvLC2pUnrLu8sHbywtrJC2uXAHcH0P405bqIZGQX4DlIIc8biheBgLWTG9ZPXkpFO/bAKCaeLuCdLwFDHwHePqD/A1rdrajAmxfRPvZGcgeTwJoqJ5HJsA3AtYeMR29dBGiVgKJAEwKzXS5oQxXhJM72RmDJHcD7V5KxIxYfP5pcv+HdwJpvAZodOPbBxO6Y/n5AHwFUB1A5PYNzZTLC3kDvvl56740IH6Uosb/DMAzDMAzDMAzDMLLQ/Taw4z6gcRkw4ejw9q6g90X9kTRvwTAMUwTYgFFM/IM0+W2fCFjraPJ6eBclDrbWAbqbPvcPsgEj1+juGBsNCiUlQKsPLDVA1XQIxQpdVSGsNVAUJayLu4PeVXs4n8bo30imX+UhFJrI20sT4xOOir2fqx3w9QFQAMdEwPDTK+H5MDnBFjRgmIYqazXgnFzU1ScMwzAMwzAMwzAMkzNq59P7wGaK+qAEA7ZMWgkoGlA9q2hFYxiGYQNGKWCpAiyVgLebJtAtlfQCAMNb3LKNN6w15BXh7Yl9be0NgKUacH8MGB5geCeUyqkwVCdpYq64j/yuFvxseDvltXA0A6pt7H6xUFSg6QSg/S+UOyOeAcNaTS9DpzL4+2OUvZHOj8kt9kZ69/XRe9sqenEidYZhGIZhGIZhGGY8UDUDsDgpxPXI7nC45IopwLTzilo0hmEYNmAUCE3TsHTp0sRZ2w0fvSucmiRvOJoopJN/MP4+3h7gnUtoH52MGHX2JkCpD+/j6QI+fpxiQfqHyHDh7SXjgmNyemWauIIMGD3v0O9pjrH7NBwJfOJdwNsVNm6NxlrDnjqjSKneJcM2KoSUCYePyjs50Y8pCqydvLB28sLalSesu7ywdvLC2skLa5cAVQNqDgN63wf6N5ZcvkfWTm5YP3kpFe14pryA+Hy+xDuoNjJeaFWFKVC54mgCqmfGf9kbySBRNYNWGygKhO6JPkZgGOhdR8YLX29EeKFaCimVDtWzAGczJRDveTf6MyMQ/ruiGahfEL/cbLyISdJ6l4zIEFKufdGaMHkna/2YosHayQtrJy+sXXnCussLaycvrJ28sHYJqDPDSG2k990PAwdfp7mKEoC1kxvWT15KQTs2YBQIXdexfv36xFnb7Q00ae6cVLiCMQlQAOcUiJrDMByogIgMGWRrAFo+RcYOZwvlsqicClRlkFxbUcgLAwAOvBLervsowffuR3jSPENSqnfJMJN46x5g9TeANy8ERvbmpoBMQnKiH1MUWDt5Ye3khbUrT1h3eWHt5IW1kxfWLgm1h9N7/0YKobznEWDzT2jhZpFh7eSG9ZOXUtGOQ0iVFGp4tTdTOmgV0LVRuSVstcDE5cC+pyjherywTqlSezjFmux6HejfRGGkPn6cOg4jHwMTjs7MOMJkh6eLQolNOJZy1PStA7QKIOAGhnZw2C6GYRiGYRiGYRhGfjxdAFRA+Ch09fbfAP5hoHIa4B8AIHjsyzBM0SgJA8Ydd9yB3/zmN1AUBV6vF8uWLcOPf/xjTJkyBQCwZcsWXHbZZRgYGICiKLj22muxatWqIpc6h+ju9LYzhcG8/kJANdxAwEreEqN1yVY/Txew7mrAtZcSgr/1H7Ta370PEACck4F3v0K5O7jDUDg8XcCbF4TDg/n6KM+JpRJ4M5jEzN7IujAMwzAMwzAMwzDyEjn21b0UUnvrrUDABYzsAl5fx2NfhmGKSkkYMM444wx85StfgcPhQCAQwPXXX4/TTz8da9euhcfjwZlnnol7770XK1asQGdnJ1asWIFZs2ZhwYIFxS56WoxJeGKtoYeAtwcw4sQUtDfSfkzhGKWLIgQshguK3wgnbrY3Ut6KXOjnH6Rj2CeQAQMG4O4EFAuFL7I10Of+Qe4sZEDGiYZMXVQ76eLtAVQL4JhIXje6m3UpAMVOFMVkDmsnL6ydvLB25QnrLi+snbywdvLC2sUgcuxrrQOEDrjag+PfFgBGSYx9WTu5Yf3kpRS0U0RUYP/SwDAM1NfXY8uWLVi9ejX+8Ic/4NFHHw19fs8992Dz5s247bbbUjre4OAgamtrMTAwgJqaEjMGmCFq4sEhaopDqrrkQr+hHcDr54RDUY3sATwHKKl73RHkjeHvB5Y/Tsm6mcIQqYtqAfo+oO31i0ibwAjrwjAMw5QNJd2fLhJ8TRiGYZhxweg5CV8PbdMcQN0CHvsyDJMX0ulLl4QHxmhcLhcURUFjYyNefPFFrFixIurzFStW4Pbbb4/7fa/XC683vCJ+cJAmmAOBAAIBSoasqipUVYVhGDAMI7SvuV3X9aikzfG2a5oGRVFCx43cDiCU5EQIgcHBQdTX10NRlHDyE0s9YKmHxWKBECIqKYqiKNA0bUwZ420v9Dkl2y71OdknAPYJoeMMDg6ipqYGVqs1fE6BAGCph2JtyO6c9AA0IQAIKL4eCM8BAIConAZAhQIBBYBu6BAR5Wedkp9TIBAIaaeqanrnZBhQAQgIYHBb+OCqFYq5XQjoegAIBLg+5eGcdF1Pqp9s5zQedYp1Trquo7+/HzU1NVAUZVyc03jUKVbZFUVBX18fqquroQS9DmU/p/GoU6xzUhQFQ0NDqKqqivrNXJ1TCa55YkC6DAwMoLa2NlRnGTlg7eSFtZMX1i5FhnbQe7a5PnMIayc3rJ+8lIp2JWfA2LRpE7773e/iuuuug91ux/79+3HqqadG7dPW1oadO3fGPcbNN9+M66+/fsz2tWvXorKSGuCmpibMnDkTu3btQldXV2if1tZWtLa2Ytu2bRgYGAhtnzFjBiZOnIiNGzfC7Q7nNpg7dy7q6uqwdu3aqIHeggULYLPZsHr1agAkeH9/P04++eRQBncTTdOwbNkyDAwMYOvWraHtTqcTCxcuRHd3d9T51tbWYt68edi/fz/a29tD2wt9TiZLly6Fz+cbt+dkatfY2Iijjjoq5+dk97djtssFi6iAw0oTBl6lDj6XANCPCjtgB+hc9V7WKY1z2rJlC/r7+1FXV4eKioq0zqm52oWpANxuDwJGHRz+QfgsE6F5vHA6HBhxuQGfCx9t2ACvtY/rUx7OaceOHSH96urqxsU5jUedYp1Te3s7Nm/ejLq6OiiKMi7OaTzqFOucpk6dinXr1sHpdIY6qLKf03jUKdY5NTc3o6OjA9XV1RgaGsr5OR166KFgSg9d17F161YsXboUFkvJDe2YBLB28sLayQtrlyL2RsoB6WwpdklCsHZyw/rJS6loVzIhpK6++mo8+OCDOHDgAC699FL8+te/hqqqOOWUU3DNNddEGTEMwwitSItl/YnlgdHW1oaenp6QS0qhV+Tpuo41a9aEBOdVhvKck6ndkUceCbvdnvtzGt4B7c3zAFsdFEsVhO6DUC0A6N5W9BEo/gHoxz0CUTkjJ+cUyXjRKdY5+Xy+kHYWiyW9cxrZBfXN/wdhrYXQKgERABQqnwIFIjAM+PqhH/cIUDWT61Mezsnv9yfVT7ZzGo86xTonn8+H999/H0ceeSQ0TRsX5zQedYpVdsMw8N5774W0Gw/nNB51inVOhmFgzZo1WLx4cej3c3lOIyMjqKur43BJEZRCCKlAIIDVq1cXfVDJpA9rJy+snbywdnEYHUIKgvJgKMFrVAIhpFg7uWH95CWf2kkZQuqnP/0pfvrTn6Knpwc//OEP8cUvfhEPPPAA7HY7PB5P1L5utxt2uz2u64rdbofdbh+z3WKxjLnY5qBuNJEDv1S2xxMxcruiKKFXrP3jbY9XxnS35+Ockm0fL+dkTiKYf+f0nDRLMDl40GCh2RB9Z9N/mqoBMX6XdYp/TubkjKZpYybikpY9+LcCqrNQrNHHhwIoCiyaJUoXrk+5O6es9EtSdtYp/+dkahf5PdnPaTzqNHq7uThktHaJyl7q55Ro+3g6J9MQEUs7c3s2ZWd3f4ZhGIYpF5Sw8YJhGKYEKLkWqbGxEbfffjvq6upwxx13oLW1FR9//HHUPnv37kVra2uRSpgZiqJEhWNg5KFg2unu9LYzScmJdqxL0eB2U15YO3lh7eSFtStPWHd5Ye3khbWTF9YuCSU89mXt5Ib1k5dS0a5kQkhF4na7UV9fj/379+Ppp5/Gs88+i8ceeyz0+a9//Wu88cYb+P3vf5/S8UrBvZth4uLpAt68APD2xN/H3ggc9zDgaCpcucod1oVhGIZhQnB/eix8TRiGYZhxAY99GYYpAun0pYtuwPD5fDh48GDIo6K/vx9f+cpXYLPZ8NBDD2FkZASHHXYYfv/732PFihXo7OzECSecgIceeghHH310Sr9RCoMLwzDQ3d2NCRMmxAwDwJQuBdHO0wX4B+N/bq3hjkIGZK0d61JUuN2UF9ZOXlg7ecm3dqXQny41SuGacJ2VF9ZOXlg7eWHtElDiY1/WTm5YP3nJp3ZS5cDo6urCmWeeiZGRETgcDqiqigsuuABXXXUVAKCyshJ//etf8fWvfx3Dw8MwDAPXX399ysaLUsEwDOzcuRMNDQ1cWSWjINo5mngiPA9krR3rUlS43ZQX1k5eWDt5Ye3KE9ZdXlg7eWHt5IW1S0CJj31ZO7lh/eSlVLQrugFjypQpeP/99xPus3DhQrzxxhsFKhHDMAzDMAzDMAzDMAzDMAzDMMWGzV4MwzAMwzAMwzAMwzAMwzAMw5QcbMAoEIqioLa2tuhZ25n0Ye3khbWTG9ZPXlg7eWHt5IW1K09Yd3lh7eSFtZMX1k5eWDu5Yf3kpVS0K3oS70JQCgn2GIZhGIZhGEZWuD89Fr4mDMMwDMMwDJMZ6fSl2QOjQBiGgfb2dhiGUeyiMGnC2skLayc3rJ+8sHbywtrJC2tXnrDu8sLayQtrJy+snbywdnLD+slLqWjHBowCUSqCM+nD2skLayc3rJ+8sHbywtrJC2tXnrDu8sLayQtrJy+snbywdnLD+slLqWjHBgyGYRiGYRiGYRiGYRiGYRiGYUoONmAwDMMwDMMwDMMwDMMwDMMwDFNysAGjQKiqiqamJqgqX3LZYO3khbWTG9ZPXlg7eWHt5IW1K09Yd3lh7eSFtZMX1k5eWDu5Yf3kpVS0U4QQoqglKADpZDVnGIZhGIZhGCYa7k+Pha8JwzAMwzAMw2RGOn1pNn0VCMMwsGPHjqInPWHSh7WTF9ZOblg/eWHt5IW1kxfWrjxh3eWFtZMX1k5eWDt5Ye3khvWTl1LRjg0YBcIwDHR1dRVdcCZ9WDt5Ye3khvWTF9ZOXlg7eWHtyhPWXV5YO3lh7eSFtZMX1k5uWD95KRXt2IDBMAzDMAzDMAzDMAzDMAzDMEzJYSl2AQqBmeZjcHCwaGUIBAIYGRnB4OAgLJayuOzjBtZOXlg7uWH95IW1kxfWTl7yrZ3Zjy6D9Hkpw2MMJhtYO3lh7eSFtZMX1k5uWD95yad26YwvyuKuGRoaAgC0tbUVuSQMwzAMwzAMIy9DQ0Oora0tdjFKAh5jMAzDMAzDMEx2pDK+UEQZLKMyDAP79+9HdXU1FEUpShkGBwfR1taGvXv3Js2szpQWrJ28sHZyw/rJC2snL6ydvORbOyEEhoaG0NLSAlXlKLQAjzGY7GDt5IW1kxfWTl5YO7lh/eQln9qlM74oCw8MVVXR2tpa7GIAAGpqariySgprJy+sndywfvLC2skLaycv+dSOPS+i4TEGkwtYO3lh7eSFtZMX1k5uWD95yZd2qY4vePkUwzAMwzAMwzAMwzAMwzAMwzAlBxswGIZhGIZhGIZhGIZhGIZhGIYpOdiAUSDsdjuuu+462O32YheFSRPWTl5YO7lh/eSFtZMX1k5eWLvyhHWXF9ZOXlg7eWHt5IW1kxvWT15KRbuySOLNMAzDMAzDMAzDMAzDMAzDMIxcsAcGwzAMwzAMwzAMwzAMwzAMwzAlBxswGIZhGIZhGIZhGIZhGIZhGIYpOdiAwTAMwzAMwzAMwzAMwzAMwzBMycEGDIZhGIZhGIZhGIZhGIZhGIZhSg42YDAMwzAMwzAMwzAMwzAMwzAMU3KwAYNhGIZhGIZhGIZhGIZhGIZhmJKDDRgSIIQodhEYpuzgeicvrJ28sHZyw/oxjDxwfWWYwsP1Tm5YP3lh7eSFtWNM2IBRwjz99NMAAEVRuNJKxqOPPoqBgYFiF4PJAK538sLayQtrJzesn7xwf6X84PoqL1xf5YXrndywfvLC2skLaycv+eqvsAGjRFm9ejXOPPNMXHDBBQC40srEzp07cf755+Mb3/gGent7i10cJg243skLaycvrJ3csH7ywv2V8oPrq7xwfZUXrndyw/rJC2snL6ydvOSzv8IGjBLFYrHgvPPOw+rVq/HJT34SAFdaWdB1Haeccgp2796Niy++GH19fcUuEpMiXO/khbWTF9ZOblg/eeH+SvnB9VVeuL7KC9c7uWH95IW1kxfWTl7y2V9hA0aJsmXLFixYsADbtm1De3s7Tj/9dABcaWWgvb0dK1euxGuvvYZAIIBLLrmEBxmSwPVOXlg7eWHt5Ib1kxfur5QfXF/lheurvHC9kxvWT15YO3lh7eQln/0VRbD6JYUQAoqiAADeffddHHXUUQCA+fPnY+rUqXj22WfH7McUl1havP322zjmmGMAAJ/+9KfhcDjw29/+FvX19cUoIpMErnfywtrJC2snN6yffHB/pXzh+iofXF/lh+ud3LB+8sLayQtrJx+F7K+wAaNEGBwcRGVlJQBA07SY+3ClLU06OztRV1eHQCCAqqqqmPvwIKM04XonL6ydvLB2csP6yQv3V8oPrq/ywvVVXrjeyQ3rJy+snbywdvJSyP4KGzBKgJtuugkbN27E8PAwFi1ahFWrVmHRokWhChkIBGCxWABwpS01brzxRrz99tuwWCyw2Wy44oorsHz58tDnkdrxIKO04HonL6ydvLB2csP6yQv3V8oPrq/ywvVVXrjeyQ3rJy+snbywdvJS8P6KYIrKz372M3HiiSeKAwcOiL/85S/izjvvFHV1deKZZ56J2s/v94f+XrBggVixYkWBS8qM5s477xTHH3+86OvrE+vXrxf333+/mDJlirj//vtFf39/aL9I7U4//XTxiU98QgwNDRWjyEwQrnfywtrJC2snN6yfvHB/pfzg+iovXF/lheud3LB+8sLayQtrJy/F6K+wAaPIXHDBBWL16tVCCCF0XRdCCPHQQw+JtrY28eijjwohhDAMQwgRLfzKlSvF3r17C1xaJpKvfvWr4rnnnhNChLV5+umnxfLly8Uvf/nLqEoZCARCf59//vmivb29sIVlouB6Jy+snbywdnLD+skL91fKD66v8sL1VV643skN6ycvrJ28sHbyUoz+iiUXbiNM+hiGAb/fj87OTgwNDQEg9ychBC688ELY7XZceeWVqKmpwSc/+UkYhgGLxRJywXn55ZeLfAbliwi6qXm9Xrhcrqjtp59+Oux2O6699lrU1NTgoosugmEY0DQtpN3DDz9cxNKXN1zv5IW1kxfWTm5YP3nh/kr5wfVVXri+ygvXO7lh/eSFtZMX1k5eitpfycjsweSMW2+9VZx99tmiq6tLCEFWR9PCeP/994uGhgaxfv36YhaRicNvfvMbceSRR4Ysv5FWxaeeeko0NjaKt956q1jFYxLA9U5eWDt5Ye3khvWTF+6vlB9cX+WF66u8cL2TG9ZPXlg7eWHt5KUY/RU1BwYYJgNEMHf65z73ObS0tODPf/4zhoeHoaoqDMOAEAJf+MIXcMUVV+CFF16I+g5TGnzpS1/CKaecgrvuugvd3d3QNA26rkMIgTPPPBP//d//jd/97nfw+/2sXYnA9U5eWDt5Ye3khvWTH+6vlA9cX+WH66t8cL2TG9ZPXlg7eWHt5KcY/RU2YBQJRVEAANOmTcOiRYvwzjvv4JlnnsHw8HDIvQYA6uvrsXXr1qjvMMVHBN2mPvGJT2BoaAj33ntvqNL6fD4AwKxZs+D1emG1Wlm7EoHrnbywdvLC2skN6yc33F8pL7i+yg3XVznheic3rJ+8sHbywtrJTbH6K2zAKBKRFqgvfvGLWLZsGZ5//nncf//96O7uhtVqBQDU1NTAbreHKjBTfMzKCgAnn3wyPv3pT2Pv3r348Y9/jH379sFutwMAhoaG4Pf74fF42FpcInC9kxfWTl5YO7lh/eSF+yvlB9dXeeH6Ki9c7+SG9ZMX1k5eWDt5KWZ/hZN4FwFd16FpGgDg9ttvx/DwML73ve/BZrNh9erVOPfcc3HJJZdg//79ePDBB/Hwww/DYmGpSgEz8QwA/PSnP8X+/fvx85//HFarFX//+99x4okn4utf/zr6+/vx5JNP4tFHH4XD4ShyqRmA653MRD4kWTt5MDsqrJ28GIYBVaW1LqxfadPV1YWmpqbQ/5HtJvdXygPu58gLjy/kheud3PAYQ054jCE3PL6Qh1IbXyiCl27klfvuuw8ff/wxVFXFv/3bv+H4448PfXbXXXfhoYcewkMPPYQZM2YAAPbt24cnn3wSGzduhMViwTe+8Q3MmzevWMUvax588EF4vV5YLBaceOKJIY0A0u4Pf/gDfv/732PmzJmh7Q899BB2794Nn8+HCy+8EHPmzClG0cuexx9/HAANKs444wxUVlaGPuN6V9oMDg6ipqYm5mesXWnzr3/9C06nE0IIHHXUUQDCnRzWrvR5/vnnMTg4iEAggLPOOiu08gngulfq3HjjjXj55Zdxww034Jhjjon6jPsr4xMeX8gLjy/khccXcsNjDHnhMYa88PhCXkpyfJF5/m8mGTfffLM47rjjxMMPPywuuugi8dWvflUMDQ0JIYR4++23xWc+8xmxZ88eIYQQPp+vmEVlRnHjjTeKZcuWifvuu0+cf/754rvf/a64+eabhRBC7Nq1S5x33nkh7fx+fzGLyozixhtvFMcee6y47bbbxDHHHCO+853viF/84hdCCCE2bdokTjvtNK53Jcodd9whPvnJT4qNGzeO+eydd97hNrOEueGGG8TRRx8tzjvvPNHW1ibuvPPO0Gf8vCt9TP2+9rWviba2NnH11VeHPmP9Sp+vfvWr4thjjxUXXXSReOmll0LbN2zYIC666CLur4wzeHwhLzy+kBceX8gNjzHkhccY8sLjC7kpxfEFGzDyxGOPPSZWrFghBgcHhRBC7N27V7S0tIh3331XCCGEYRiiv79fCCFEIBAIfc8wjMIXloni73//u1i+fHlIu+HhYfHSSy+JVatWiR/96EdCiLBOkdoxxeett94Sxx57rBgeHhZCCNHd3S3+8Ic/iAsvvDD0wDQ143pXetx8882iublZXHHFFWLz5s1Rn3GbWbrceuut4sQTTxRer1cIQQPB5ubmUEeHtSttbrjhBrFy5crQBGhnZ6eYNWuWeO6554QQpFNvb68QgvUrNUwNbr/9dnH22WeLe++9V5x33nni1VdfDX1u9mW4vzI+4PGFvPD4Ql54fCE/PMaQEx5jyAuPL+SllMcXnMQ7T3R1deGss85CdXU1AKClpQUtLS2wWq0YHBwEANTW1o75Xq6yszOZ093djYULF6K6uho+nw+VlZU4/vjjUVdXh/vuuw8/+tGPQjqZMU+Z0mB4eBiTJk1CZWUldF1HY2MjzjrrLFxxxRXYvn07rr766pBmZtxFgOtdKaDrOvr6+nDTTTdheHgYt956K7Zs2RL6XFEU1NbWQggRVe9Yu+Jy4MABtLe34+6774bNZoPH48FRRx2FSy+9FHv27AHA2pUymzZtwubNm/HQQw+hqqoKLpcLkyZNwqc+9amo+ML19fUAwPqVGKYGq1atQl1dHZYvX47DDjsMd911F15++WUoioLq6uoxdY+RFx5fyAuPL+SFxxdyw2MMOeExhrzw+EJuSnl8wQaMHGNWyI6ODrS3t6O/vx8A8Je//AXbtm3DL3/5SxxxxBE477zz8N///d8AuJNaapgPSPNvn88Hm82GY489FldddRUGBwfx6quvFrmUTCRmvZs7dy5sNht27doFTdMghIDdbsfSpUvx7W9/Gx0dHbj33nsB8MOx1NA0DYsXL8Ypp5yCO+64I+YAA2DdSo36+nqcf/75obilZpKuiRMn4je/+Q0Mwwjty9qVHlOnTsUNN9yAKVOmIBAIoKKiAgCwY8cOPP/88zj33HNx5513hiZGmdLDMAxomoZNmzbB6XTiS1/6EhYsWIBf//rX2Lp1K/bu3Yt9+/YVu5hMlvD4Qn54fCEfPL4YH/AYQ054jCEvPL6Qn1IdX7ABI0dEWhIB4LOf/SyeffZZnHPOOVi8eDHOPvtsCCGwcuVK3HTTTTj//PPx0Ucf4emnny5msRmEtTM54ogj8Nxzz4U6ojabDV1dXXjkkUcwc+ZM2O12/Otf/ypGUZk4mPWuoqICFosFf/3rX0Pbzcb3yCOPxPLly7Fhw4ZiFpVJwHnnnYeWlhZUVVXh3nvvxcjISMwBBlM62Gw2LFiwAHa7HUC4PT3ttNNQV1cXtRKRKT2qqqpwyCGHAAAsFgsA4JZbbsGrr76KY445Bv/+7/+OBx54ADfddFMxi8nEQQgBVVXR3NyM0047DevWrcOUKVPw2c9+FsuXL8cVV1yBI488MjTZzcgHjy/khccX8sPji/EDjzHkg8cY8sLjC7kp5fGFpeC/OE7p6OhAS0sLDMOAEAJLlizBM888g4GBAXz88cf429/+huOOOw4XXnghAMDn8+HJJ59Ee3t7kUvOjNZu7ty5ePDBB3HOOefgtddeQ0NDA1avXo1Vq1bhjDPOwOzZs3HZZZfh61//OhoaGtjiX0ReeeUVDAwMYNq0aZg+fToaGhpwxRVX4Oyzz0ZtbS0uvvhiqKoKIQScTifOOOMM3HzzzTjrrLOwYsWKYhe/rInUbubMmaiqqgo9LAOBAKqqqnDPPffgK1/5Cm699VZ861vfwrx584pdbAbR2s2YMSPkQqooSqg9bGlpwcDAADo6OjBp0iSoqop169Zh+vTpMcObMIUjXt1TFAW7du3C9u3bsWHDBkyfPh0AsGTJEpx22mm45JJLMGvWLH7mFZFY2um6Dk3TYLfb8eijj+LMM8/EYYcdho0bN2LLli044ogjil1sJgt4fCEvPL6QFx5fyA2PMeSFxxjywuMLeZFpfMEGjBzwwAMP4KqrrsIzzzyD5cuXQ9d1GIaBadOmAQAOPfRQ/PjHP8app54KgOIw2mw2zJo1C06ns4glZ2JpFwgEcPLJJ+PVV1/F22+/jcrKSpx55pk46aSTIISA1+vFlClT0NjYWOzilzU33ngjnnnmGdTV1YWs/N/73vdwzDHH4MEHH8Rpp52GQCCASy+9NPRAnDJlCs444wzU1dUVt/Blzmjtpk6dimuvvTbU6bRYLDAMI2qAcfvtt+PKK6/EYYcdVuTSlzfJtAOAQCAAr9cLl8sFv98PVVXx4IMP4qc//SlefPHFIpaeSabf9OnTcfvtt8PpdMLn80FVVdTV1eHYY49Fa2srDy6KSDLtvvjFL+Kaa64BALzxxhv4yU9+gh/+8IcYGBjAL37xC9x6660hF35GDnh8IS88vpAXHl/IDY8x5IXHGPLC4wt5kW18wX5XOWB4eBjz58/Hf/zHf+DFF18cE3PW6/XC7XZjZGQEAMVhfOSRR/DnP/8ZJ5xwQjGKzASJpZ2iKNB1HfPnz8ell16K888/HyeddBIAchnesGED7HY7PB7PGPdwpjDccccdeOGFF/Diiy/iueeewze+8Q309fVh586dAICTTjoJ//jHP3DdddfhlltuwTvvvAMAePTRR/Haa6+FEkYxhSeWdr29vdi+fTuAsHuwqqrQdT3k6r1//3488MAD8Pv9xSx+WZOOdg0NDZg8eTImTJiAJ554Ar/85S/x8MMPY+LEicU8hbImmX6BQAAA4HQ6IYSAzWaDxWLByy+/jEAgAF3Xi1n8siaVuqcoCj7++GPccsst+Na3voUbbrgBl156KVatWoUbb7yRjRcSwuMLeeHxhZzw+EJueIwhLzzGkBceX8iLlOMLwWSMYRhCCCEuvvhi8fvf/1489thjoq2tTbzwwguhz3VdF0II8dRTT4nq6mpxySWXiCuvvFIsXrxYbNq0qWhlL3eSaWfqNprf//73YtmyZWLjxo0FKysTTVdXl/jOd74jtm3bFrX9wgsvFF/+8peFEGH9Vq9eLb70pS+JE088UXz6058WCxcuZO2KSCrajcbUcmRkROzbty/vZWRik4l2559/vjj77LPFkiVLuN4VmUz0E0KIP/zhD2Lp0qWsXxFJRTuzT3P77beLmTNnimeeeabg5WRyB48v5IXHF/LC4wu54TGGvPAYQ154fCEvso4v2ICRAz744AOxZs0aIYQQd99995iOaiAQEEII8e6774p7771XPPXUU2L37t1FKy8TJpF2ZoU12bRpk1i1ahU3tCXA+vXrRXd3txAirNPq1avF+eefL4QQIhAIhDqlbrdb9PX1ie3bt4uurq7iFJgJkUy70fVOiPgDfqawpKqdruvC7/eLT3ziE6K5uXlMx4gpDunWvTvvvFPMmjWLn3klQDLtzDZy//79YufOnVH7MfLC4wt54fGFnPD4Qm54jCEvPMaQFx5fyIuM4wtFCPZRzRaPxwOHwxH6/95778X//u//4r777sMpp5wSSt422vWbKT7JtBNBtykAGBwcRCAQQENDQ7GKyyRg8+bNOOOMM/D222+jvr4eFgun+JGFRNoZhgFV5WiHpUoi7d577z1UVlZyTOESJpF+H3zwASoqKjB79uwilpCJR6R2dXV1sFqtoc/MxHuM3PD4Ql54fDF+4PGF3PAYQ154jCEvPL6Ql1IfX/ATOE3uu+8+HDx4EE6nE0uWLMHy5cvhcDgQCARCFfPLX/4yAOBLX/pS1CCDKS7ZaKcoCmpqaopZ/LImlnYAorSbOXMm2tra4HA4QtteeOEFLF68GBMmTCha2csd1k5eMtXu+eefx4IFC7Bs2bKilZ3Jru4tWLAACxcuLFrZy510tTMHF9xuyguPL+SFxxfywn1UuWH95IXHGPLC4wt5GQ/jCzY5p8FPfvIT/Pa3v8WMGTOwadMm/Pa3v8XFF18MALBYLKEENQB1VK+99lp85StfwXPPPcfW/SKTrXbmKimm8KSqnd1uBwB0dnYCAB566CFcc801GB4eLkq5GdZOZrLR7r/+67/g8XiKUm6GyLbuud3uopSb4XazHOHxhbzw+EJeuK2VG9ZPXniMIS88vpCXcdNmFjN+lUx8+OGHYvny5eLAgQNCCCE8Ho9ob28XK1euFMuXLw/t5/f7o773i1/8Qhx55JFiZGSk6PHCyhXWTl5S1c7j8Qhd18WiRYvEli1bxOOPPy6WLl3KiSyLCGsnL6yd3LB+8sLalR/cR5UX1k5euK2VG9ZPXlg7eWHt5GU8acfLdlLEMAxUVlZi4sSJAMgyNWXKFLz88sswDAMrV64EQNarSHfuyy+/HC+//DIqKip4lU2RYO3kJVXt7HY7VFXF0qVLcfPNN+O2227D/fffz3ExiwhrJy+sndywfvLC2pUf3EeVF9ZOXritlRvWT15YO3lh7eRlPGnHBowUmTNnDnRdx6OPPhraZrrZvPHGG1BVNRTfdLQ7N8c2LS6snbykox1AjfNTTz2F3/72tzj88MMLXl4mDGsnL6yd3LB+8sLalR/cR5UX1k5euK2VG9ZPXlg7eWHt5GU8accGjAS8++672LRpE9atWwdFUXDeeefh/fffx0cffQQgOlbY3XffjZGREWzevLmYRWaCsHbykol2GzZsAABceeWV2LhxI+bMmVO08pczrJ28sHZyw/rJC2tXfnAfVV5YO3nhtlZuWD95Ye3khbWTl/GqnaXYBShVbrjhBjz33HOoq6tDf38/vvrVr+Kcc87B1772NfzpT3/CF77wBTQ3N8NisUAIgebmZuzbtw8bNmwoKRebcoS1k5dMtdu0aROOOOIILFy4sNinULawdvLC2skN6ycvrF35wX1UeWHt5IXbWrlh/eSFtZMX1k5exrN2bMCIwf/93//hhRdewCuvvIKRkRGsWbMG//Vf/4Xly5fju9/9Lq6++mrouo7Pfe5zOOyww6AoCqqrq3HsscdC07RiF7+sYe3kJRvtLBZuyooJaycvrJ3csH7ywtqVH9xHlRfWTl64rZUb1k9eWDt5Ye3kZbxrxyGkRrF3717s3LkT999/P6xWK6qqqnDUUUdh0aJFWLduHRYuXIibb74ZmzZtwt1334277roLXq8XDzzwAP76179i8eLFxT6FsoW1kxfWTl5YO3lh7eSG9ZMX1q78YM3lhbWTF9ZOblg/eWHt5IW1k5dy0E4RQohiF6KU8Hg8eOedd3DcccfBYrFAURQAwE9/+lP885//xN/+9jeoqoqdO3fitddewz333IOmpiZ0dXXhnnvuKbkkJ+UEaycvrJ28sHbywtrJDesnL6xd+cGaywtrJy+sndywfvLC2skLaycv5aAdGzBioOt6yN1XCAFFUfDmm2/ixhtvxLPPPgvDMKCqYecVt9uNQCCA6urqYhWZCcLayQtrJy+snbywdnLD+skLa1d+sObywtrJC2snN6yfvLB28sLayct4145DSMUgMlapabWaN28efD4fRkZGQp998MEHAACn0ymN4OMd1k5eWDt5Ye3khbWTG9ZPXli78oM1lxfWTl5YO7lh/eSFtZMX1k5exrt2bMBIAV3X4Xa7sX//fgwMDEBVVTz44IO44IIL0N3dXeziMQlg7eSFtZMX1k5eWDu5Yf3khbUrP1hzeWHt5IW1kxvWT15YO3lh7eRlvGnHBowUaWhowMSJE9HS0oInnngCd911Fx577DFMmDCh2EVjksDayQtrJy+snbywdnLD+skLa1d+sObywtrJC2snN6yfvLB28sLayct40o5zYKTB+eefj+rqaqxZswYPPPCAFElOGIK1kxfWTl5YO3lh7eSG9ZMX1q78YM3lhbWTF9ZOblg/eWHt5IW1k5fxop2l2AWQASEEfD4fNm/ejM7OTrz++uuYPXt2sYvFpABrJy+snbywdvLC2skN6ycvrF35wZrLC2snL6yd3LB+8sLayQtrJy/jTTv2wEiDN998E7W1tdJaq8oZ1k5eWDt5Ye3khbWTG9ZPXli78oM1lxfWTl5YO7lh/eSFtZMX1k5exot2bMBgGIZhGIZhGIZhGIZhGIZhGKbk4CTeDMMwDMMwDMMwDMMwDMMwDMOUHGzAYBiGYRiGYRiGYRiGYRiGYRim5GADBsMwDMMwDMMwDMMwDMMwDMMwJQcbMBiGYRiGYRiGYRiGYRiGYRiGKTnYgMEwDMMwDMMwDMMwDMMwDMMwTMnBBgyGYRiGYRiGYRiGYRiGYRiGYUoONmAwDMMwOcVqtWL37t0J93nooYfwiU98IuPfOO200/Dggw9m/H2GYRiGYRiGYeSBxxgMwzDlCxswGIZhmJwSCAQQCAQS7uPxeODz+aK2dXZ2oqKiAg6HA1VVVfjRj36Ez3zmM3A4HHA6nViwYAGEEAAAr9cLr9ebt3NgGIZhGIZhGKZ04DEGwzBM+WIpdgEYhmEYBgAmT54Ml8sFAPjBD36A3bt349lnnwUAbN++HQsWLICiKMUsIsMwDMMwDMMwEsFjDIZhGPlhDwyGYRimKLz66qtQFAWKouDFF1+M+mzNmjVYtGhR6P8PP/wQCxcuLHAJGYZhGIZhGIaRCR5jMAzDjD/YgMEwDMMUhRNPPBF+vx9+vx+nnHJKaLvL5cJrr72G0047LbTtpZdewvHHH1+MYjIMwzAMwzAMIwk8xmAYhhl/cAgphmEYJqeoqoq+vj4MDQ3B5/PB5/Ohs7MTO3bswI4dO7BkyRIAgKIosFjGPoYeeeQRjIyMoKqqCgBgGAaefPJJ/PGPfyzoeTAMwzAMwzAMUxrwGINhGKZ8YQ8MhmEYJqd86lOfwtFHH42amhpMnDgRhx12GM477zzcfffd2L17N5xOZ9zv+v1+/OxnP8PJJ5+Myy67DEII/O1vf8Pu3btRUVERte+Xv/xlKIqCSZMm5fuUGIZhGIZhGIYpIjzGYBiGKV/YA4NhGIbJKc888wwMw4BhGDFXPwHA1q1bYybLu/3221FfX4/nnnsOp5xyCq655hq89NJLOP3003HVVVfhpZdeCn3vV7/6FS6++GJompbX82EYhmEYhmEYprjwGINhGKZ8YQ8MhmEYJueoqhp3YAEAZ511Fn7zm99EbXvrrbdw00034Ze//CU0TcNTTz2FZ599Fg6HA3/9619hs9nw/e9/P7S/xWKBw+GA1WrN23kwDMMwDMMwDFMa8BiDYRimPGEDBsMwDJNzzj//fFgslrivpqYm3H333aH9DcPABRdcgLvvvhuLFi0CABw8eBAdHR34xS9+AUVR8NBDD+FPf/oT7r333iKdFcMwDMMwDMMwxYLHGAzDMOUJGzAYhmGYnPPHP/4RgUAg7uuuu+7CG2+8EdpfVVW89dZbOPfccwEAfX19+OxnP4ubbropNNhoamrCG2+8gc997nPFOCWGYRiGYRiGYYoIjzEYhmHKE86BwTAMwxQcwzDGbJs8eXLo73/+85+hJHuRNDY25r1sDMMwDMMwDMPIB48xGIZhxifsgcEwDMPknB//+Mew2Wxx3buvuuoqnHDCCXG/f/bZZ+POO+8sYIkZhmEYhmEYhilleIzBMAxTnrAHBsMwDJNzNm7ciKuvvho33nhjsYvCMAzDMAzDMMw4gMcYDMMw5Ql7YDAMwzA5Z/78+bjlllugKErcl6qq6OjoyOj4drsddrs9x6VmGIZh/n/7dmwCQAwEQYzvv+j91B14wFIFmx7DAUCVGwPgTd+23R4BAAAAAABw8oEBAAAAAADkCBgAAAAAAECOgAEAAAAAAOQIGAAAAAAAQI6AAQAAAAAA5AgYAAAAAABAjoABAAAAAADkCBgAAAAAAECOgAEAAAAAAOT8aTV1a42NUU4AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 월별로 시간의 흐름에 따라 PM10, PM25 변수의 변화 추이 시각화\n", + "\n", + "import matplotlib.dates as mdates\n", + "\n", + "# 월별 평균 PM10, PM25 계산 함수\n", + "def get_monthly_trend(df, variable):\n", + " # 'year', 'month' 컬럼을 기준으로 월별 평균, Q1, Q3 계산\n", + " monthly = df.groupby(['year', 'month'])[variable].agg(['mean', \n", + " lambda x: x.quantile(0.25), \n", + " lambda x: x.quantile(0.75)]).reset_index()\n", + " monthly.columns = ['year', 'month', 'mean', 'q1', 'q3']\n", + " # 날짜 컬럼 생성 (월의 첫날로)\n", + " monthly['date'] = pd.to_datetime(monthly['year'].astype(str) + '-' + monthly['month'].astype(str).str.zfill(2) + '-01')\n", + " monthly = monthly.sort_values('date')\n", + " return monthly\n", + "\n", + "fig, axes = plt.subplots(1, 2, figsize=(16, 6))\n", + "variables_to_analyze = ['hm', 'PM25']\n", + "\n", + "for i, var in enumerate(variables_to_analyze):\n", + " if var in seoul.columns:\n", + " trend = get_monthly_trend(seoul, var)\n", + " ax = axes[i]\n", + " # 평균값\n", + " ax.plot(trend['date'], trend['mean'], 'o-', color='blue', label='평균값')\n", + " # Q1, Q3\n", + " ax.plot(trend['date'], trend['q1'], 's--', color='orange', alpha=0.7, label='Q1')\n", + " ax.plot(trend['date'], trend['q3'], 's--', color='purple', alpha=0.7, label='Q3')\n", + " # 선형 트렌드선\n", + " if len(trend) > 1:\n", + " z = np.polyfit(range(len(trend)), trend['mean'], 1)\n", + " p = np.poly1d(z)\n", + " ax.plot(trend['date'], p(range(len(trend))), \"r--\", linewidth=1, alpha=0.6)\n", + " slope = z[0]\n", + " ax.text(trend['date'].iloc[0], trend['mean'].max(), \n", + " f'월별 변화율: {slope:.4f}/month', fontsize=10, color='darkred')\n", + " ax.set_title(f'{var} 월별 변화 추이', fontsize=14)\n", + " ax.set_xlabel('날짜', fontsize=12)\n", + " ax.set_ylabel(var, fontsize=12)\n", + " ax.grid(True, linestyle='--', alpha=0.7)\n", + " ax.legend()\n", + " ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))\n", + " plt.setp(ax.xaxis.get_majorticklabels(), rotation=45)\n", + " else:\n", + " axes[i].text(0.5, 0.5, f'{var} 컬럼 없음', ha='center', va='center', fontsize=12)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e149d5dc", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Analysis_code/find_reason/daejeon_trend.ipynb b/Analysis_code/find_reason/daejeon_trend.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..be316c4db6040bc5184791a7f81a441a64b4986c --- /dev/null +++ b/Analysis_code/find_reason/daejeon_trend.ipynb @@ -0,0 +1,157 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 11, + "id": "26f60e36", + "metadata": {}, + "outputs": [], + "source": [ + "# 분석에 필요한 라이브러리 임포트\n", + "import pandas as pd\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from scipy.spatial import distance\n", + "\n", + "\n", + "# 한글 폰트 설정\n", + "plt.rcParams['font.family'] = 'NanumGothic'\n", + "plt.rcParams['axes.unicode_minus'] = False" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "28456d07", + "metadata": {}, + "outputs": [], + "source": [ + "daejeon = pd.read_feather(\"../../data/data_for_modeling/df_daejeon.feather\")\n", + "feature = ['hm','PM10','PM25','multi_class','year','month','hour']\n", + "daejeon = daejeon[feature]\n", + "daejeon = daejeon.loc[daejeon['year'].isin([2018,2019,2020,2021,2022,2023]),:]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "84183ace", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['hm', 'PM10', 'PM25', 'multi_class', 'year', 'month', 'hour'], dtype='object')" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "daejeon.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "5b942b62", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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EQqFAkqlEmazGXV1daiurkZpaSnOOeecLtX53HPP9TkRt7+ysrI8ljnHzv3mm29cy6qrq33uY82aNViwYAH+8pe/YNmyZUhISMDJkyfx3HPPYfTo0di9e7fbcFRdZTQa8dVXX+H111/Hli1bkJqaik2bNnn0rGirrKwMvXr18rrO+aTX6dOn0bt376CVlRBCCCGERJaGhgYkJyd7LB8+fDjGjx+Pt99+2+tQT19//TVMJhOuvvpqfPnll34fr6qqCr/++itWrFjRlWK3S6/X48knn8STTz4Js9kMhmGgVqthtVrR0NCAffv2obS01GfPEX9dffXVbomFzszJl56e7nEPUllZCcDRqzo1NbXDffz++++YMWMGrr32Wnz88cdITU1FWVkZ3njjDYwaNQq//fYbhgwZEnDZfLHZbFi/fj3eeOMNrF+/HlqtFl9++SUuvvjidl9XWlqKYcOGeV3X+v6DEELCjRIYhBDSDWbMmOF6cgdwjDfb0tKCFStW4J///KfHEzzjxo3De++95/p77NixyMrKwpIlS7B+/XpMmDABgGMc1pqaGjzzzDMdJjCuuOIKFBcXg+M42O122O12WCwWmM1mtLS0uMae1el0yMzMxLvvvutzX86xX711kT558iQAR9Kl9Q/82bNnt1u+QM2bN8/1/6Io+tzusccew6233orly5e7luXn52PGjBno06cP/v3vf+OBBx5wreM4zvVklFar9ZlUaK2wsBCbN2/GV199hfXr1yMlJQXXXHMNZsyYgTVr1mDChAkYN24czj//fMyYMQNjx4716HLO87zPMXWdy9urJyGEEEIIkbadO3eitLQUF1xwgdf1N998M/7yl7/gqaee8rh/ePfdd7FgwYJ2J2z25h//+Ae0Wi3+/Oc/e13/888/Y/DgwSgpKQHLshg6dChuueUW/L//9/863Pdtt92G3377zev9h9FodE12rdFo0KtXLyxfvtxrbwDg7O/hwsJC5OTkuK0rKysDAPz1r391Gy7p2muv7bCMgbj11lvbHeLW6amnnsKsWbNcPccBx/3HlClTMH78eLz88st444033F7jvP9QKpUek6l7U1ZWhq1bt2Lt2rX45ptvoFQqcfXVV2P58uVYs2YNLrvsMgwfPhznn38+Zs6cifHjx3tMvC4IAt1/EEIiEiUwCCGkG3j78Tx79mwsW7YMx48f93jy5YYbbnD7Oz4+HgMGDEBMTIwreeE0fvx4r5P0tXXNNdegrq4OMpkMcrkcWq0WTz/9NNLS0vDkk08iISEBCQkJ0Ol0rtds27bN677y8vKQk5OD888/32MdwzAYNGgQrrzySo+hnfz5wQ+cnVC8qKjIo6G/vLwcAGCxWFzLiouLfY5Xy/O81yGmZDIZZDKZxzBeZWVl6NevHwDHJHa+uukDjhuNc889F1VVVa73Y926dZg6daqrro899hhOnTqFdevWYcOGDfjXv/6FrKws7N27121fmZmZPnuSOJ988tYjhRBCCCGESBfHcaivr8eWLVtwzz33YN68eZgyZYrXba+66ircc889+PLLL3HNNde4lpeXl+O7777DL7/8EtCxf/rpJ7z66qt49913PRq3AeCWW26B3W5H3759oVQqcfr0aaxZswbXX389du7c6bUnSGtz5szBiBEjwLIsFAoFNBoN3n//fVRVVeGdd95x3X+0TrqsXr3a6770ej1Gjx6NxYsXe21Uz8zMxMKFC93mm9NoNAHff5w+fdojOeQcxvXYsWNuc2D42jfP8z6HmFIqlV4n+Xbef2i1WhiNRp/lbGlpwZAhQ3D69Gmkp6dj9uzZ+Oijj3DBBRe4er8/8MADqKqqwrfffosNGzbgT3/6EywWC2pra90SRHT/QQiJVJTAIISQbuBt4uaUlBQAQGNjo8c6b0/dxMTEeJ2ALSYmxvX0Unta91hweu+995CamopRo0YBABYvXuzR86L1RNxO8fHxKCoq6vCYre3evRv5+fl+bTto0CDExcUhLy/P6/r2Jg9v67777sNNN92ElJQU17wihYWFePrpp2E2mz2SRX369HGbILw9ubm5ePfddzFixIh2f9z36dMHt956K2699VaIooimpiaPbYYNG4affvoJjz76qMe6devWISsry+NpM0IIIYQQIk133XUX7r77bvA8DwBISkrC//3f/+Ghhx7y+RqtVotrrrkGb731llsCY+XKlejXrx8mTZrk9/HLyspw7bXX4pprrvHZ++Lqq692+3vMmDG44oorMHjwYDz44INYvHgxhg4d6vMY3h52+umnn2CxWDBmzBgAjh4gy5Yt67C8DMMEPB/DunXr/BryCQBycnKQnp7uNnl6a/369fN72Nm77roLF1xwAR544AHceOONSEtLQ1lZGV5//XXs2LED//rXvzxe429Ph5iYGLz55pvo169fu/dWaWlpuP76612Tvjc0NHj0bhk2bBjWrFnj9fXr1q2DWq3G2LFj/SoXIYQEEyUwCCEkQjh/QDpvWryta8s5/0OwyGQyt8ntXn75ZTz11FOuv/fu3Yt9+/a1u4/s7Gy/JpfOzs7Gli1b/OrWPmjQIBgMBvA87/FjnmVZn++PN3/605+g0+mwYsUKPPjgg+B5Hnq9HjNnzsSWLVs6/VRRfX096uvrMWDAAFgsloAn5KupqUF6ejpiYmIAOHrIXHXVVThy5IjbpOd1dXX45JNPcMcdd3SqnIQQQgghJPI88MADWLhwIRiGQUxMDLKzs/3qLXDzzTdjxIgROHr0KAYMGAAAeP/997F48WK/j200GnHppZciOzsbb7/9dsBlv/POO7F06VL8+OOP7SYwvGl7/3H//ffjlltucf1dVFSE//3vfz6HNgKAKVOmYPPmzR0eKyUlBevWrUNSUlKH2yYmJqKioiIo9x8zZ87Ehg0b8Mgjj+CFF16AzWaDTqfDueeei02bNrkeHgtUU1MTqqur0bdvX4iiGPD9R11dHZKSkpCQkAAAWLRoEV588UV8//33bsP9Wq1WvP3227jqqqtc9yqEEBJOlMAghBCCpqYmmEwmvP7662BZ1jUxXVujRo3CjBkz2t3Xnj17vHaDbs1sNiMvLw9//PFHQJNQy2QyfPvtt9DpdD670vtj3rx5mDdvHj777DNcddVVqK6udrtx6oy7774bH374YZf2sXz5cjz44IMAgLlz52LGjBm49NJL8d5776GgoABHjx7FLbfcgoyMDPzlL3/p0rEIIYQQQkjkyMjICLjxH3CfzPuf//wnNm3ahKKiIlx33XV+vZ7jOCxYsAANDQ34/ffffQ511B6NRoOUlBSYzWa/X2M0GtHc3IwHH3wQgiD4vP/Izc3FI4880m4y5+uvv+7w2DzPY/To0di0aVNAvQhkMhm2bt2KhoYGXHLJJX6/rq3p06dj8+bN2L59O8aPH4/du3e7honqrH/+85944oknurSPJUuWuObmKCgowA033IBrrrkG77//PmbMmIGysjLcc889aG5uDunE7oQQ0h5KYBBCCMGVV16JjRs3+rXtpZdeirVr1/pcH0ivkI4SHd689NJLSE9PbzeBER8fj4ULF3bYrdv55JQgCKiurkZ5eTmKi4tx/Phx15NI/vrggw/wwQcf+Fw/duxYTJs2Df/85z/92h/Lsvjqq6/wl7/8Beeffz7MZjPkcjmuvPJKvPLKK/T0EyGEEEIIAeBohP7b3/6G5cuX47333sMll1zi9/BGN998M7Zt24Zt27b5PbxSWwaDAXV1dT6He/Xm7rvvxjvvvOPXtsOGDWu3F3h8fDzi4+M73I9Go+nU/ceHH36II0eOdJjAuPbaazscItd5/yGKIurq6lBRUYFTp07h+PHjsNvtAT3c9fjjj+Pxxx/3ud45ZPAXX3zh9z7ffPNN9OrVC9deey0aGxvBMAzOP/98bN261eswyIQQEg6UwCCEEILvv//er+0efvhhrFq1qsPt6uvr2705MJlMAByT1oVCQkICPv74Y7dlr7zyCp5//nnXTYPdbofBYADguJmRyWRITk5G7969kZub69ZturtotVq89tprePnll1FTU4PExMSQvWeEEEIIIUSarr76atx7771YuXIlPv/8c3z22Wd+ve6RRx7BRx99hO+++w6DBg3q9PEfeughxMXFeZ3jwpe3337br+Gq3nnnHdx0000dbmcwGNrthcHzPMxmc0h/S7ftjb1mzRrcc889ruGvOI5DS0sLAGDgwIFgGAbJycnIzMxEbm4uCgoKQlY2f8nlcjzxxBN47LHHUFNTg7i4OGg0mu4uFiGkh6MEBiGEELzyyiv461//6le370svvbTd9VdffTU+/fTTDveTk5ODcePG+V3Grpo3bx6GDx8OQRDAMAxkMhnUajViY2ORnJyMxMREj67pref/6E4ymczvp+gIIYQQQkjP4pzM++6770ZSUhIuvPDCDl/z8ccf44knnsCDDz6I5ORkHDhwwG09wzAYNGiQ21wP8+bNw5w5c9C3b18wDIPjx4/jjTfewI4dO/DZZ58hLi7O7zL/97//xfXXX4+mpqYOtx02bFi76x944AE8/fTTHe4nNTXV56TcoTBt2jSsXLnS7f5DpVIhJiYGSUlJSE5O9phL4z//+U/YytcelmWRlpbW3cUghBAAlMAghJCwUigUYBjG63wL3tYplcp2t/e1XC4P7ON9/fr1mDVrFl577bUOy99R1/KdO3figQceCNkYqTKZDLW1tX5NUseyrKsre3p6OiUBCCGEEEJIxPH1u94bpVLptRfBzTffjNdffx0333yzR6O4UqkEy7JuE2H/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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 월별로 시간의 흐름에 따라 PM10, PM25 변수의 변화 추이 시각화\n", + "\n", + "import matplotlib.dates as mdates\n", + "\n", + "# 월별 평균 PM10, PM25 계산 함수\n", + "def get_monthly_trend(df, variable):\n", + " # 'year', 'month' 컬럼을 기준으로 월별 평균, Q1, Q3 계산\n", + " monthly = df.groupby(['year', 'month'])[variable].agg(['mean', \n", + " lambda x: x.quantile(0.25), \n", + " lambda x: x.quantile(0.75)]).reset_index()\n", + " monthly.columns = ['year', 'month', 'mean', 'q1', 'q3']\n", + " # 날짜 컬럼 생성 (월의 첫날로)\n", + " monthly['date'] = pd.to_datetime(monthly['year'].astype(str) + '-' + monthly['month'].astype(str).str.zfill(2) + '-01')\n", + " monthly = monthly.sort_values('date')\n", + " return monthly\n", + "\n", + "fig, axes = plt.subplots(1, 2, figsize=(16, 6))\n", + "variables_to_analyze = ['hm', 'PM25']\n", + "\n", + "for i, var in enumerate(variables_to_analyze):\n", + " if var in daejeon.columns:\n", + " trend = get_monthly_trend(daejeon, var)\n", + " ax = axes[i]\n", + " # 평균값\n", + " ax.plot(trend['date'], trend['mean'], 'o-', color='blue', label='평균값')\n", + " # Q1, Q3\n", + " ax.plot(trend['date'], trend['q1'], 's--', color='orange', alpha=0.7, label='Q1')\n", + " ax.plot(trend['date'], trend['q3'], 's--', color='purple', alpha=0.7, label='Q3')\n", + " # 선형 트렌드선\n", + " if len(trend) > 1:\n", + " z = np.polyfit(range(len(trend)), trend['mean'], 1)\n", + " p = np.poly1d(z)\n", + " ax.plot(trend['date'], p(range(len(trend))), \"r--\", linewidth=1, alpha=0.6)\n", + " slope = z[0]\n", + " ax.text(trend['date'].iloc[0], trend['mean'].max(), \n", + " f'월별 변화율: {slope:.4f}/month', fontsize=10, color='darkred')\n", + " ax.set_title(f'{var} 월별 변화 추이', fontsize=14)\n", + " ax.set_xlabel('날짜', fontsize=12)\n", + " ax.set_ylabel(var, fontsize=12)\n", + " ax.grid(True, linestyle='--', alpha=0.7)\n", + " ax.legend()\n", + " ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))\n", + " plt.setp(ax.xaxis.get_majorticklabels(), rotation=45)\n", + " else:\n", + " axes[i].text(0.5, 0.5, f'{var} 컬럼 없음', ha='center', va='center', fontsize=12)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e149d5dc", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Analysis_code/find_reason/make_trend_plot.ipynb b/Analysis_code/find_reason/make_trend_plot.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..3a4866f251838a774d005359bb6bf62588022f8f --- /dev/null +++ b/Analysis_code/find_reason/make_trend_plot.ipynb @@ -0,0 +1,176 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import numpy as np\n", + "# 한글 폰트 설정\n", + "plt.rcParams['font.family'] = 'NanumGothic'\n", + "plt.rcParams['axes.unicode_minus'] = False\n", + "\n", + "seoul = pd.read_feather(\"../../data/data_for_modeling/df_seoul.feather\")\n", + "busan = pd.read_feather(\"../../data/data_for_modeling/df_busan.feather\")\n", + "incheon = pd.read_feather(\"../../data/data_for_modeling/df_incheon.feather\")\n", + "daejeon = pd.read_feather(\"../../data/data_for_modeling/df_daejeon.feather\")\n", + "daegu = pd.read_feather(\"../../data/data_for_modeling/df_daegu.feather\")\n", + "gwangju = pd.read_feather(\"../../data/data_for_modeling/df_gwangju.feather\")\n", + "\n", + "feature = ['hm','PM10','PM25','multi_class','year','month','hour']\n", + "seoul = seoul[feature]\n", + "busan = busan[feature]\n", + "incheon = incheon[feature]\n", + "daejeon = daejeon[feature]\n", + "daegu = daegu[feature]\n", + "gwangju = gwangju[feature]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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dOgQli5dio0bN2LevHlYsGABXn311ZBsD7bhxsqVK3H33Xdj9uzZ+O6777BixQqcOHECl112Gdxud5P3XbhwIfbu3YurrroKlZWVjZ778ccfY/z48ejSpQu++eYbfPLJJ6itrcWoUaNQVlbmc25BQQHmzp2LkSNH4ptvvsF3332HSy65BLfeeituvfVWn3O974XjOL9neo+FkqCbIAiCIIizkP8nQf5f6OzduxeHDx/GsGHDfMob2yzF4/H4PPP333/HhAkTkJeXhy+//BKbNm3CU0895ZPnsbCwEHv27MF9992HL774AuvXr8e0adNw66234osvvvB7xpIlS/D888/j3nvvxfr16/HKK69g8+bNmDZt2jnXlSBaJSJBEHENAPFf//qXX3lhYaEIQPzpp5/kspycHHHBggWiKIriO++8I6ampooOh8Pv2gkTJoizZ88WRVEU3333XRGAWFtb26Qtt99+u5iWliZaLJaQ7R8zZoyYk5Mj9urVS0xISBCTkpLEESNGiO+9917I96hPWlqauHjxYp+yo0ePigDEHj16iE6n0+fYkSNHRI1GIz700EM+5eXl5WJCQoL49ttvy2VeLe6++26/515++eXi2LFjfcpmzZolpqWliWVlZT7lRUVFIsMwYk5OTpP1CaT/mDFjRJZlxR07dvicW1xcLKrVanH58uVN3lcURXH16tVicnKymJmZKS5dulTked7vHKvVKqakpIjXX3+9T7nD4RA7deokPvzwwz73AyCuWLHC7z4ffvihCED87LPP5LIff/xRBCAePXrU7/xAx8JpiwRBEAQRz5D/5wv5f6H5f977lpaWiqIoimVlZeKqVavEzp07i6NHj/bTafHixUHtbXjsH//4h9irV68mbQjE5MmTxYkTJ/qU5eTkiCaTSSwuLvYp37Ztm18bJwiicWjGIEG0IjiOQ1lZGVavXo2pU6fimmuuwejRowOe+5e//AU8z/tM7weAkpISfPPNN2EvI/nxxx/xyiuv4JlnnkFSUlLI19166614/PHH8fbbb2P9+vVYtmwZunbtiptuugl33313WDY0xdVXXw2dTudTtmLFCqhUKixYsMCnPD09HVOnTsV7773nd5958+b5lY0bN85vac6XX36JmTNnIiMjw6d8wIABmDBhwrlWA4C0Y+CgQYN8ytq3b4+ePXsGXSLUkKuvvhoHDhzAJZdcgrlz52Lo0KF+165ZswbV1dVYuHChT7ler8eNN97oo8/SpUvRr18/zJw50+9Zf/nLX9CvXz+89tproVaRIAiCIIgQIP+vccj/8yc7OxtqtRqZmZmYPn26PMuvoU7h0KZNG1RWVuLMmTNhX9uvX7+AKWomT56M9u3b+5QNGzYMCQkJYdWXIFo7FBgkiFbAXXfdBbVaDY1GgzZt2mDOnDmYPXs2Vq5cGfQao9GIWbNm+eX0WL58Obp164YLL7ww5OefOnUK119/PWbNmoXZs2eHZft1112HG264AcOHD8fgwYNx9dVXY/ny5Xjqqafw0ksvYd++fWHdrzEGDBjgV1ZUVIT+/fvDbDb7HevRo0dAJ6Vz585+ZampqT7LaquqqlBdXY2BAwcGtOV8d/8NZEMgO5oiKysLK1euxMaNG+F0OjF8+HBs3rxZPl5UVITMzEz07NnT79oePXrg5MmT8lLgwsJCTJo0CQzD+J3LMAwmTpyI7du3h2wbQRAEQRDBIf8vNMj/82fr1q3YuXMnNmzYgFdffRUlJSUYNGjQeeUqnDFjBoYNG4a+ffvimWeeQW1tbcDzfvnlFxQUFGDgwIHIzMyE0WjEkiVLYLPZ/M5trvoSRGvHf9sogiDijv/93//FjBkzwDAMEhIS0LFjx4DBmYbMnTsXeXl5+P3339GjRw8AwLvvvouCgoKQn22z2TBp0iR07NixyZ3uwuHOO+/Egw8+iB9++AF9+/ZtlnsGyrdjtVqxffv2gLvsiaIIlUrlV67RaPzKGuptt9sBIKDDCUDOb3OuBLLBa4fYYJOPUBg5ciR++eUXjB8/HrNmzcKhQ4eg0WhgtVpRVlYWVB9BEFBWVoZ27drBYrH4jY7XJzMzE9XV1WHbRhAEQRCEP+T/hQb5f/706tULCQkJAIBRo0Zhzpw5mDx5Mq677rpz3l1ao9Fg7dq1+Pzzz7F48WI8/fTTuOeee3DvvffKOr/55puYM2cO8vPzceONN6J3794wm81Yvnw5vvzyy4D3DMS5+rsE0VqhwCBBtALatm17Ts5T/STU//znP7FhwwYcPXoUN954Y0jXcxyHa6+9FtXV1fj555+h1+vDtiEYBoMBGRkZPruxnS+BnLyEhASMHj0aL7/8csBrgjkkTZGYmAgAQQNh0bjbrtFoxJNPPomxY8di165dyM/PR0JCArp27YpPP/004DUsy6Jt27YAgJSUFL+d/OpTVlaGtLQ0+WevM90wsTYgLWkiCIIgCCI45P+FBvl/TaNSqVBQUICpU6eitLRU9u0YhgnopwHBfbWJEydi4sSJePvttzFv3jxUVFTg2Wefhc1mwz333IMbb7wRy5cv97lm2bJlzVofgiB8oaXEBEE0ypw5c7B8+XK43W688847mDhxIrKyskK6du7cudiyZYvPDm/NhcViQWVlJXJzc5v1vg3p3bs3Tp48iT59+qBv375+H+9IergkJyejQ4cOQUddv/nmm/MxWzG8yzi8Tn7v3r1RUlKCLl26BNSnd+/ecoBvxIgR+OyzzwKO4IqiiC+++AKjRo2SywwGAwAEzEVTWFjY7HUjCIIgCEKC/D/y/xrCslLowJsiBpB8tbKysoC+XVO+2s0334z7778fS5cuhSiKOHDgAKxWK2699Va/c3/99dfztJ4giMagwCBBEI1y3XXXwePxYPny5Vi1alXIy0gWLVqEFStW4NNPP0WvXr2a3a6FCxciKSkJl112WbPfuz7XXHMNjhw5gqVLlzb7va+77jp8+OGHfjlQVq9eHbW59t566y106tQJffr0ASAlffZ4PHj00UebvPa+++7D3r17sWLFCr9jK1euxJ49e3DvvffKZd27d4dKpcLXX3/tc+6ZM2cCJv0mCIIgCKJ5IP+P/L/6CIKAt956C507d0aHDh3k8l69esHtduPHH3/0Of+rr77C3r17Q7qvx+OBKIowmUwAgIqKCp9ztm3b5pPfmiCI5oeWEhME0SjeJNR333030tLScMUVVzR5zcqVK/H444/jgQceQHp6ul+CaIZh0KtXL3nksTGuueYaTJkyBV27dgXDMDh06BBef/11FBYW4qOPPgprh7tzYdCgQbjjjjswf/587Nq1CzNmzEBCQgJOnTqFTz/9FAsWLDjnHDcPPPAAPvnkE4wZMwaPPfYYcnNzsWnTJjz44IO4/vrrsXHjxmauTejMnTsXaWlpGDNmDNLT01FcXIylS5fip59+whdffCG/u6ysLCxZsgT33HMPjhw5gltuuQVpaWk4c+YMvvzyS0yePBnjx48HIM0YnDdvHm6++Wbs3bsXU6ZMAcMwWLNmDV544QXceeedPkm3zWYzrrvuOjzzzDPIzMzE2LFjcezYMdx5553461//iueeey4i2hAEQRBEvEP+X+v0/7z89ttvMBgMqK2txf79+/HOO+9g586dWLt2rc95l156KXJzczF79my8+OKL6NGjBzZs2ID7778ft956Kz777DP53BUrVqC6uhoDBgyATqfD+vXr8eyzz2LevHlgWRY9e/bE0KFDcffdd8PtdqNTp07YvHkzHn74Ydx0001Yt25dS8tAEK0GCgwSRJyj0WhCzoOi1Wqh1Wr9yufOnYvXXnsNc+fO9XPmtFotWJb1yc+yfv16AMCSJUuwZMmSgM8qLi5G+/bt5Z/nzJmDnTt3YvPmzdDpdHK52WzGI488gtLSUnAch3bt2uGiiy7C0qVLz8khC1RHjUYDhmEC1h0AXnrpJeTl5eHNN9/EihUrwHEc2rZti9GjR8s5Vrz3DqZ1oGMpKSnYuHEjHnjgAcybNw92ux39+/fH6tWrUVlZiZ9//jmk+jTUP9h7bOpYffLy8vDBBx/g9ddfR21tLTIyMjBx4kQcOHDAZ6QYABYsWIDc3Fy8+OKLuOaaa+B0OpGRkYERI0b4LfV59dVXMWLECLz66qt49dVXAUi5jJYvX44ZM2b42fHGG2/AbDbjiSeewIIFC9C5c2f8/e9/x1VXXYUXXnjBR9NAWhAEQRBEa4T8v6brSP5f4PMAaXdkhmFgNBrRqVMnXHTRRVi2bBm6d+/uc75Op8O3336Lv//977jxxhvB8zzy8vKwevVqnD592mdptMViwf/93/+hpKQEWq0W3bp1w1NPPYW77rpLPmfNmjX429/+hoKCArjdbgwaNAirV6+G1WrFV199FXKdQq0vQRASjEjb9RAEEQVcd911KCwsxN69e+XccgRBEARBEET8Qv4fQRBE5KHAIEEQBEEQBEEQBEEQBEG0QmjzEYIgCIIgCIIgCIIgCIJohVBgkCAIgiAIgiAIgiAIgiBaIRQYJAiCIAiCIAiCIAiCIIhWSKvYlVgQBJSUlCAxMREMw0TaHIIgCIIgiGZDFEXU1taiXbt2fjuHEhLkCxIEQRAEEa+cry/YKgKDJSUl6NChQ6TNIAiCIAiCUIyTJ08iOzs70mZEJeQLEgRBEAQR75yrLxg1gUGHw4Gnn34an3/+OQRBgNPpxCuvvIKLL74YAFBaWoqCggIUFxdDEATMnz8ft956a0j3TkxMBCCJlJSUpFgdCIIgCIIgWhqr1YoOHTrI/g7hD/mCBEEQBEHEK+frC0ZFYJDjOFxxxRUYO3YstmzZAp1OB1EUwfO8fM60adMwf/58zJo1C7W1tRg/fjw6duyICRMmNHl/75KRpKQkRZ1BQRBw9OhRdO7cmZbyKADpqxykrbKQvspC+ioHaassza0vLZENDvmCsQ9pqyykr3KQtspC+ioL6ascSmh7rr5gVLzZ999/H8nJyVi8eDF0Oh0AqUJqtRS33LNnD3iex6xZswBIo76PPfYY3njjjYjZHAhBEFBeXg5BECJtSlxC+ioHaasspK+ykL7KQdoqC+kbf9A7VQ7SVllIX+UgbZWF9FUW0lc5oknbqJgx+O9//xt33XVX0OPr1q3DmDFjfMpGjRqFa665BqIo+kVFXS4XXC6X/LPVagUgzUzkOA4AwLIsWJaFIAg+L8JbzvM8RFFsslylUoFhGHAcJx/jeR4qlQoAfGY9es8PVK5Wq/1mSTIMA5VK5WdjsHIl6hSK7S1Vp/r6xkudouk91a9XvNQpWt4TAD97Yr1O0fSeAH99Y71O0fKevP8WRdHnPrFcJyB63lP9f59PnRpeSxAEQRAEQRChEhWBwd27d8NgMGDatGk4dOgQ0tPTcd999+Hyyy8HICWMzsnJ8bnGYDBAr9ejrKwMbdq08Tm2ZMkSPProo37PKSoqgslkAgBkZGSgS5cuOHr0KMrLy+VzsrOzkZ2djYMHD8Jiscjlubm5yMzMxL59++BwOOTynj17wmw2o6ioCBzHoaamBjt37kReXh60Wi0KCwt9bBgyZAjcbjf27Nkjl6lUKuTn58NiseDAgQM+dczLy0NFRQWOHDkilycnJ6NXr14oKSlBcXGxXK5Enep/8ejfv39E61RWVibr26FDh7ioU7S8J6vVKmvLMExc1Cma3lNCQgIsFousbzzUKZreU05ODhwOh4++sV6naHlP3sCr1WrFoUOH4qJO0fSe6gdcz6dO9TUiCIIgCIIgiHBgxPrD2RFCo9Fg9OjReOWVV9CzZ0/s2bMHEydOxHvvvYeLLroIBQUFGDZsGG655Raf6zp27IiffvoJnTt39ikPNGOwQ4cOqKyslPPKKDF7QRAEnD59GllZWdBoNABib/ZCwzqFYntL1YnjOFlftVodF3WKlvfE8zxOnTqFrKwssCwbF3WKpvckiiKKi4tlfeOhTtH0ngD46dsSdeJ5Hi6Xy+c+8faeBEFAVVUVMjIyfO4dy3UCouc9CYKAyspKtGnTxm8Zidd2QRCgVqvlnwPVyWq1Ii0tDRaLhTbWCILVakVycrLiGgmCgJKSErRr107uj4jmgbRVFtJXOUhbZYmkvjzPw+PxtOgzWxpBEFBWVobMzExqv81MONpqNBrZBwzE+fo5UREY1Ol0WLt2LS677DK57Pnnn0dRURHee+89zJ8/Hz179sQdd9zhc11GRgb27t2LrKysRu/fUs4gQRAEEf+IoojTp0+jpqYm0qYQrQiz2YysrKyASaXJz2ka0oggCIJoLsgXJCKBkr5gVCwlzszMRPfu3X3Kunbtim+//RaAtCznxIkTPscdDgfq6uqQmZnZYnY2Bc/zOHjwILp3795oNJc4N0hf5SBtlYX0VZaW1tfrCGZmZsJoNMb1TrCiKMLlckGn08V1PSNFKPqKogi73Y6ysjIAQNu2bVvSRCJMqL9XDtJWWUhf5SBtlSUS+pIvSDQHoWrbEr5gVAQG8/PzsXfvXp8lwYcOHULXrl0BACNGjMC9997rc82GDRuQn58fVdNZRVGExWJBFEzCjEtIX+UgbZWF9FWWltSX53nZEUxLS1P8eZHGu9xWr9eTM6gAoeprMBgAQF5uQl8soxfq75WDtFUW0lc5SFtlaWl9yRckmotwtFXaF4yKqNptt92GBx98EKdPnwYA/Pbbb3jppZcwf/58AMDo0aPh8XjwwQcfAABqa2uxePFiv6XFBEEQBKEk3jwyRqMxwpYQrQ1vm4v3XEYEQRAEEc2QL0hECiV9waiYMThu3DjcfffdGD16NFiWhclkwuuvv46ePXsCkBJ/r1mzBnPmzMHTTz8NnudRUFCA6dOnR9hygiAIojVCI6ZES0NtjiAIgiCiB/q7TLQ0Sra5qAgMAkBBQQEKCgqCHs/JycE333zTghaFD8uyyM3NjarlzfFEOPraym1wWV1Bj+uSdDBlmJrTvJiG2q6ykL7KQvoqi06ni7QJcQ3pG19Qf6Qc5AcqC7Vd5SBtlYX0VR7yVZQjWrSNmsBgPMCybFRthhJvhKqvrdyG1TNXw15pD3qOMc2IqSunklP4J9R2lYX0VZZY1ZfngY0bgdJSoG1bYNQoINpSxzEMA41GE2kz4hbSN/6I1f4oFiA/UFmo7SoHaasssapvLPiBAPkqShJN2lJYvRnheR67d+8Gz/ORNiUuCVVfl9UFe6Udap0aerPe76PWqWGvtDc6ktzaoLarLKSvssSivqtXA506AWPHAjNnSv/v1EkqV4qCggKwLIvdu3cHPWfYsGFQq8+OGXp3QaOE6cpA+sYfsdgfxQrkByoLtV3lIG2VJRb1jYQfCJAvGG1Ek7YUGGxGRFGEw+GIihcbj4Srr9qghtak9fuoDTRRtiHUdpWF9FWWWNN39WrgmmuA4mLf8lOnpHKlnEKO4zB48GC8/fbbAY/v27cPgiD4OdaCIChjEAGA9I03Yq0/iiXID1QWarvKQdoqS6zpGyk/ECBfMBqJFm0pMEgQBEEQ54EoAjZbaB+rFbjzTumaQPcBgLvuks4L5X7h+sAzZszAmjVr4HL5z5RZtmwZ/vrXv56DAgRBENGL2+5G7enamAkaEAQRe4TqC0baDwTIFyQCQ4FBgiAIgjgP7HYgISG0T3KyNCIcDFGURpCTk0O7nz14Cq2AJCUlYezYsVizZo1POc/z+OSTT3Ddddf5lH///fe48MIL0bt3bwwaNAjr1q2Tj+3YsQOjR49G37590bdvX/zlL3+BxWKR79ehQwe8+OKL6NWrF/r27Yvx48fj5MmT4RlMEARxHnBODhUHKmA9YYXLQkuHCYJQhlB9wUj7gQD5gkRgKDDYjKhUKvTs2ROqaMwaGgeci76iIMJj98BtdytoWexDbVdZSF9lIX3D4+abb8Y777zjU/bNN99g2LBhMJvNcllxcTHuuOMOrFq1Cr/++is+/PBD3HzzzaisrAQAaLVavP/++9i3bx/27t2LpKQkPPPMMwCkd1JaWopffvkFu3fvxr59+3DJJZfgzjvvbLF6xgp6vT7SJhDNCPVHyhGutiIvovJQJUROmlLDc7GTfywSUNtVDtJWWUjf8CFfMHqIFj+QAoPNCMMwMJvNYBgm0qbEJeeir63MhrJ9ZSjfV66gZbEPtV1lIX2VJdL6Go1AXV1ony+/DO2eX34Z2v2MxvDtHT16NE6cOIETJ07IZcuWLcPs2bN9znvttddw++23o3v37mAYBj169MDll1+Ozz//HADQr18/5OTkAJDewVVXXYWdO3fK1/M8j8cffxxarRYAcNNNN2HDhg3hGxzHMAwDtVpNfUMcEen+KJ4JV1vLSQs4Byf/LPK0lLgxqO0qB2mrLNGgb6i+YDT4gQD5gtFCNPmBFBhsRjiOw/bt28FxXNMnE2ETrr6cg4OzxgmBEyBwAtw2N9w2t4+TSEhQ21UW0ldZIq0vwwAmU2ifSy8FsrOla4Ldq0MH6bxQ7neufsRNN92EZcuWAQCqq6uxc+dOjB8/3uecX3/9Fc899xz69++PAQMGYMCAAfj+++9htVrl6xYuXIgLL7wQvXr1wp133gl7gzUtHTp0kP+dnp6OqqqqczM4ThFFETabjXKfxRGR7o/imXC0FUURoiBC4AWwWhYCL8Dj8JAf2AjUdpWDtFWWaNA3VF8wWvxAgHzBaCCa/EDalquZiaVt0mORUPTVJelgTDPCXmmHx+6BwEk7/ThrnPI5xjQjdEk6xeyMRajtKgvpqyyxoq9KBbz4orTrHMP4Jo32OncvvCCdpyR//etfMXr0aDz88MP4z3/+g+nTp4NlWZ+d0RwOB5566ilceeWVMJlMfqOZkydPRv/+/fH+++8jNzcXX3zxhbx85GydIj8CGu1EgzNINC+x0h/FIg21tZXb4LL65g50VDqgNWnBu3moDWpo9Brgz67I6wuSHxgYarvKQdoqS6zoGy1+IEC+YLQQLX4gBQaJuMOUYcLUlVPhsrqw/ZXtOL3rNABg0puT5HN0STqYMkyRMpEgiFbM1KnAxx9Lu84VF58tz86WnMGpU5W3ISsrC7169cIPP/yA5cuXyyPG9enWrRu2b9+OK6+80u9YRUUF9u7di59++gksKy0+2L9/v9JmEwRByNjKbVg9czXslWdnpwi8IH2x/XNQ2JhqxGXPXwZDmsHnWvIDCYKIFNHgBwLkCxK+UGCQiEtMGSaYMkzQJemgNUk5DcydzGBVtHqeIIjIM3UqMGUKsHEjUFoKtG0LjBrVMiPEXgoKCvDQQw+BZVn06NHD7/hNN92EcePG4dJLL5WXlhw7dgydOnVCYmIiGIbBH3/8ge7du+P333/H+++/j7S0tJarAEEQrRqX1QV7pR1qnRpqg1rebESlU8Hc0QzezcPj8MCQZkBql9RIm0sQBCETDX4gQL4gcRaKkjQjKpUK/fv3px2RFOJc9OXdZ6eVCx6hkTNbN9R2lYX0VZZY1VelAi66CJgxQ/q/0uZrtVo5+TMATJgwASdOnEBBQYFcxjAMjH9msh48eDA++ugjPPTQQ+jbty8GDhyIhx56CACg0+mwYsUKXHvttcjLy8Ntt92GZ5991mcpj9Fo9Fk+Uv/exFkMBkPTJxExQ6z2R7FAMG3VBjU0Jg3qTtdB5EWInAi1QQoWAkDlwUpseGIDdr+/OxJmxwzUdpWDtFWWWNW3pf1AgHzBaCRa/ECaMdjM1P9FI5qfcPWtHxjkXBzUemrywaC2qyykr7KQvk3zxhtv+PysUqlw6tQpvzKbzSb/PG7cOIwbNw6Af46YK6+80m9pyaWXXir/u/59At2bkPAuvyHiB+qPlCOYto4Kh5Q/kAVSu6VCpVHJPqDL6sKpn0/BbXO3pKkxCbVd5SBtlYX0DQ3yBaOPaPEDo8OKOIHneRQWFsZM8tNY41z09dg9AICMvhlQaWNrFKklobarLKSvspC+ykIOnLKQvvEF9UfK0Zi27jop6JfQJkFOIePFOyhMuxE3DrVd5SBtlYX0VR7yVZQjWrSl6VNEXDP28bFw17qRkJVAswUJgiAIgiDiEI9TGgj2Lh+uj9f/8w4WEwRBEAThC0VKiLjGmGaEMY3yGBAEQRAEQcQrvFOaKaTRa/yOUWCQIAiCIBqHAoNE3GMrs4FzcjBlmmjWIEEQBEEQRBzhtrvloJ8gCHIuQe/SYY1B4/MzQRAEQRC+UJSkGVGpVBgyZEjM7YgUK4Srr9vmxr5/78Pva34HAFyy5BJk9s1U0sSYhdquspC+ykL6KovJZIq0CXEN6RtfUH+kHA211SXpYEwzwlZhg6mNCbyHh7vWd4MRY5oRxgxp5Qjv5iFwAlg1pVgPBLVd5SBtlYX0VR7yVZQjWrSlwGAz43a7o2bL6XgkHH2dNU45KAj47lBM+ENtV1lIX2UhfZVDEISo2TEtHiF94w/qj5SjvramDBOmrpwKl9UV9Hxdkg6GFOl8RsWAc3LQJtDupcGgtqscpK2ykL7KQr6KckSLtpG3II7geR579uyhHZEUIlx9vTvUydd76L0Eg9quspC+ykL6KovD4Yi0CXEN6RtfUH+kHIG0NWWYkNolNejHlGECq2Zx7SfX4i+f/oWCgo1AbVc5SFtlIX2Vh3wV5YgWbWnGIBG3+AUGacYgQRDRgLMc8FiDH9ckAfqMlrOHIAgihjm+4Tg8Dg/aDmwLU2bgJVkqLS0xJAgiSiA/kIhCaMYgEbd4bL67z1FgkCCIiOMsB7bMBDZND/7ZMlM6r5m59NJLsWHDhma/rxLYbDbcfvvtyMvLQ15eHoYOHYp169b5nPPEE08gKysLAwYMkD+TJ0/2OaekpATjx4/HgAEDMHXqVFgsFp/jo0aNwq+//hqyXW63GzfffDMEQZDLfvjhB1x88cXIy8tDv379MGnSJOzatSvg9YcPH0bPnj3xyCOP+JS/9tpr2LRpU8h2EARxlt/X/o7tL29H5cHKSJtCEATROOQHhgT5gS0PBQabGUp6qizh6Ovdlc4LBQYbh9quspC+yhIz+nqsgKsSYHWAxuz/YXXS8cZGks8Rt9sNt9vd9IkNYBim2W1pClEUceWVV6KoqAi7d+/Ga6+9hpkzZ6K0tFQ+h+M4FBQUYNeuXfJn7dq1PvdZtGiRfM7QoUPx4osvysf+85//oGfPnujdu3fIdj366KOYPXu2nAtm5cqVuP322/HSSy9h9+7d2Lt3L+677z5cffXV2Lhxo8+127Ztw+TJk9GlSxdw3NndURmGwS233IKnnnoqapaTEOdHzPRHMUggbWtLagEAie0Tg16354M92PDkBlQeouBhY1DbVQ7SVlliRt8Y9AOBlvcFyQ9seSgw2Iyo1Wrk5+dDraYV2koQrr40YzB0qO0qC+mrLFGjL+9s5NPAEVPpALXB/6PSAaIY2n1bAIZhYDKZWtwhTEhIwBVXXCE7XoMHD8aIESOwdevWsO7zyy+/YOLEiQCASZMmobCwEIDkHD/55JN4/PHHQ75XWVkZfv75Z4wcORIAYLVacccdd2DVqlXo27evfN6oUaPw6quvoqCgAGK9d3nmzBl8/vnnyM/Pl8u8+mo0GkyePBlvvvlmWPUjoo+o6Y/ikEDaumpd8k7EiW2DBwbL9pXh1LZTsJ2xKW5nrEJtVzlIW2WJKn1D9QVVAXxA2Q8UAMHd9H1biEj4guQHtjwUGGxGRFFETU2NTwMgmo9w9fXmGNQl69Dz6p5I7ZKqpHkxDbVdZSF9lSVq9N04Pfjn1yW+59bsByoL/T81ewFnqe+5224OfM9m5I8//sDEiRORm5uL3NxczJo1C2VlZRBFEYsXL/Zb8nD99ddj1KhRPmVvv/02Fi5cCACorKzEtddei27duqFHjx544IEH5GUXW7ZswdSpU7FkyRIMHDgQL730Ukg2VlVVQa/Xh1UvlmXlZOQcx8kO5ssvv4xp06YhKysr5Hu9/fbbuO666+Sf165di6FDh6JPnz5+53qd2foO7JQpU9C5c2ef80RRBMdxEEUR119/Pd56662w6kdEH1HTH8UhgbT1zhY0phuh1gcPCmgMGgCAx+EJek5rh9qucpC2yhJV+objC1btDOwH1h0Ffn/R99xAvmAzEswPBIBHHnkEixcv9tGX/MD48wMpMNiM8DyPAwcO0I5IChGuvr2m9cIV/7oClz1/GQb+z0Bk9s1U2MLYhdquspC+ykL6nh9OpxPjxo3DtddeiyNHjuDIkSPo378/rr76agDAxRdfjP/+97/y+R6PB7t370ZNTQ0qK88uy1u9erU8KnvTTTfhsssuw6FDh7Bv3z4cOHBAdnbcbje2b9+OxMREFBUV4c4772zSxv379+Po0aO4+OKLw6rbmDFj8NZbb0EURbzzzjsYOXIkqqur8e677+Kee+4J615ff/01xo8fL/9cVFTkM+rbkCFDhmDnzp1N3tfplEb9ExISkJqaimPHjoVlFxFdNOyPbOU2VB2uCvqxldMMtlAJ1NfXnpICgwntEhq9Vm2QgoYeOwUGg0F/S5WDtFUW0vf8aMoPnDBhAtasWSOfT36gRLz5gVEw35YglEGXqIMuURdpMwiCaC2MWtXIwQbjcOY+gDrA7pmcDXD7JkbGBW+ft2mNsXLlSuTl5eHGG2+Uy+6//358+OGHWL9+PYYMGYLy8nKcOnUK7du3x8aNGzF69GgYDAZ8/fXXmDVrFmw2G/bv349hw4bh0KFDOH36NG6++WYAgEajwX333YcHH3wQc+bMAQBYLBbMnTs3JPsEQcDcuXPx2GOP+YwUMwyDjz76COvWrYPFYkH//v2xePFin1wxjz76KObNm4cBAwZg5MiRuOOOO/DAAw/gb3/7GzweD66//nrs378fF1xwAV544QXodMH/Zpw8eRI5OTnyzxaLBbm5uUHPb9OmDazW8HIE9erVCwcOHECnTp3Cui7eOHDgAPLy8vDggw9i8eLFAIDS0lIUFBSguLgYgiBg/vz5uPXWWyNsaePYym1YPXM17JX2oOcY04yYunIqTBmBd9MlGsd6SvodS2qf1Oh5GqM0Y5BzcI2eRxAEcV405QvaT579MXWQ/ymcDXDXAD3u8i1X0Bdsyg8cPXo0KioqcOrUKWRnZ5Mf+Cfx5gfSjEEi7vE4PLCV2eC0tFwuBoIgWiEqfSMfbYOT2eCfhjlcgt2zmdi7d6+cL6U+F154Ifbs2QOGYTBhwgR8+eWXAIDPP/8ckyZNwpVXXimXffvttxg/fjxYlsWvv/6KP/74w2eXuDlz5sDjOTtTp2vXrtBoNCHZt3DhQrRt2xazZ8/2Kb/77ruxe/dubNu2DXv37sUVV1yB8ePHo6qqSj7HbDbjww8/xO7du/HKK6/g1KlT2LRpE2666SY89NBDGDlyJIqKipCSkoJ//etfjdrRcIlSYmIizpw5E/T8M2fOICMjI6Q6eklJSfGxv7Vy11134eKLL/ZpM9OmTcPMmTOxe/dubNmyBcuWLZPbX7Tisrpgr7RDrVNDb9b7fdQ6NeyVdrisrkibGrOEsvEIUG8pMc0YJAhCSZrDF2RYgNU2fd9mIhQ/8LLLLiM/MM79QAoMNiMMw8BgMERkB8fWQLj6HvjvAez79z7sfHMn1t68FntW7FHYwtiF2q6ykL7KEpP68g5pVLjhh2/53ciC7eQniiJUKhVYlsXkyZNl5+/HH3/E2LFjMXLkSGzbtg2CIGDt2rW46qqrAAAOhwPDhw/32SVu79692LRpk3xvo9EYkm0rV67EV199hWXLlvkdS05OhsFgACAlHr/pppvQq1cvn+c05IEHHsATTzwBlmWxadMmzJo1CwAwY8YMbN68OSSbvPTt2xfbt28PerywsDBg3pmGePPdAEB1dTVSU1t3PtxPPvkEbdq0wbBhw+SyPXv2gOd5+X0lJibisccewxtvvBEpM4MSqD9SG9TQmrR+H+/yViI0Amk7eM5gXPzUxegwvEOj13pnDFJgMDgx+bc0RiBtlSUm9Y0hPxAAJk6ciK+++goA+YFe4s0PpMBgM6JSqZCXlxc726XHGOHqe+jLQ9j7wV55JJ52JQ4OtV1lIX2VJab01SQBujRAcAGeGv+P4JKOaxpfFtecDBo0CBs3bvQr37JlCwYNGgSj0Yhx48Zh69at2L17N3Jzc6HT6aDRaDBgwABs27YNP/30Ey655BIAQLdu3bBr1y6fkeFzYePGjVi4cCE+++wzmEyhLbPkeT7oroQ///wzrFYrLr30Uvlc75cIlmXBcY0vMezQoYNP3pcpU6Zg48aN+O233/zO/frrr+F0OjF8+PBG78kwDIxGo2zHb7/9hh49ejR6TTxjt9uxaNEiPP300z7l69atw5gxY3zKRo0ahR9++CFosnmXywWr1erzAaTk496PNxG6IAgBy3meD6nca4P333369IEoinK5KIoQREH+iN7//jyH53i5/XkTkXs/3pxZDW0MVq5EnRqWN7SxsfLmrBPDMLK23nJDigHpvdOhS9U1WidGy0CECI/DE1V1iqb3xLKsj77xUKdoeU8syyIvL8/PnliuUzS9J4ZhkJeXB4ZhWqxO3rJAH2+dAparEyFq0yAKLoieGoh/+n/ef4uCSzquTmz8PudQHuz4wIEDsXHjRr/yLVu2YMCAAQCkPINbt27Frl27kJubC61WC7VajQEDBmDr1q346aefcPHFF0MURXTt2hW7du2C2+0O2ZZAtm3YsAELFy7E2rVrYTQaQ6orz/NQqVQBj23btg1WqxXjx4+Xz/Xex9t2Grt3hw4dcPToUfnnyZMny35gw3O/+uorOJ1OXHDBBY2+JwBycBOQ/MDu3bs32r7qfwL9Pp0rNFTZjAiCgIqKCqSnp/tEfonmIVx9PTbpS6k+RZpqTYHB4FDbVRbSV1liSl99BjBiJeBpJOeIJkk6r4W45ppr8PDDD+Pdd9/F7NmzIYoilixZguTkZAwfPhwejwc6nQ7Dhw/Hvffei5kzZ8rXTpgwAYsXL8bAgQPlvC+DBg1CmzZt8MADD+Af//gHWJaFxWKBIAhISUkJyaaDBw9ixowZWLNmDTp0CDwT6OTJk8jOzgbDMOB5HkuXLsWJEycwduzYgOffd999ePnll+WfBw0ahH//+98oKCjA559/jsGDBzdq0+WXX47vvvsOt9xyCwAgPT0d//znPzFt2jSsWrVKHhXevHkzCgoKsGzZsiZnL3idOrVaDZvNhsrKSr8d61oTTz31FGbNmoV27dr5lJeUlPjk9QEkR1qv16OsrAxt2rTxu9eSJUvw6KOP+pUXFRXJgeaMjAx06dIFR48eRXl5uXxOdnY2srOzcfDgQVgsZ3N+5ubmIjMzE/v27YPDcXZWR8+ePWE2m1FUVASe5+F2u6HVatEhoQNEUUSttRashwUDqT0km5MhClK5x+7B3r17kWhNRH5+PiwWCw4cOOBTz7y8PFRUVODIkSNyeXJyMnr16oWSkhIUFxfL5UrVyUv//v2h1WpRWFjoo+uQIUPgdruxZ8/Z1RkqlapZ63TkyBGUlJRAq9WGXSchQ8Clb12KtMw0FBYWRk2douk9VVdXY9++fbK+8VCnaHlP3bt3B8dxOHbsmByUivU6RdN7Sk9PR1JSEqxWKyoqKlqkTl6fRxAEn3swDAOTyQSe5+VNJQAp8G40GsGpU+Aa8AYYTkqDoGJV0Ov18Hjc8oCqqE6EmkmCHtIgV/2Aj1arhVarhdPp9LHRO2DrcDh82pher4darYbdbpdtstlsMBgMYFkWNpsNV1xxBR5++GG8/vrruPXWW8HzPB5//HEkJCQgLy8PdrsdWq0WF1xwARYsWIDp06fDZrOBZVnZD+zXrx94nofNZkPv3r3Rpk0b3H///Xj00UdlP5BlWbRt2xYej0c+N1idDh06hJkzZ2LNmjVIT0+Xz61fp4MHD6Jdu3ayH/j+++/jxIkTGDp0qM/5JpMJgiDgnnvuwbPPPgubzQaGYTBo0CCsXLkSs2bNwurVq9GvXz84HA7pPXEcXK6zaT5UKhUuv/xyfP3117jhhhvkdrpkyRJMmzYNK1asQPfu3QEAW7duxS233IJly5bB5XL5vSdACj57bRRFEQaDAU6nE+Xl5cjMzJSP1X9P+LM9uN1u8DwPh8Ph8/tUvx2eC4zoDVXGMVarFcnJybBYLEhKUm4WBsdxKCwsxJAhQ4LOWCDOnXD0FUURH039CAInoO+Mvtj34T60G9oOYx4e0+h1rRVqu8pC+ipLS+rrdDpx9OhRdO7c2ScBcixwySWX4Pjx40hIOLt756JFizB16lQcO3YMd999N/bu3QsAGD16NJ599lmkpKTAZrPBZDLh/fffxy233IKTJ08iM1Pa5b20tBQ5OTlYtmyZT8CwrKwMf/vb37Bjxw45gPPWW2+hT58+2Lp1Kx566CF8//33QW296667sHz5cr/ky1OnTsWiRYsAAI8//jg++OAD6HQ6iKKIoUOHYvHixQEDiZ9++im++uorn6WnJ0+exA033ICqqip07twZy5cvh9lsDmrTmTNncO211+Knn37yKV+9ejWeeeYZ2Gw22O12lJaWYt26dUFnCz711FPgOA6LFi2CKIqyvq+//jrcbjfuuuuugNc11vZays9RksOHD2PixIkoKiqCXq/HI488Ao7j8MQTT6CgoADDhg2Tg7JeOnbsiJ9++ilgMNXlcvk49VarFR06dEBlZaWsEcuyYFkWgiD4fJHylvM8j/pucrBylUolzzbgeR47d+7EoEGDUHeyDh9f+zF0yTp4bB7UHK8BAJg7mmHKMsFd54azxolp/56GlC4pUKvVPrMYAOlLpkql8rMxWLkSdaqPd2Z2w90/g5U3Z53cbjd27NiBQYMGQaVSwXrCihMbT8Cca0b28OyYrFM0vSePx4PCwkJZ33ioU7S8J1EUsWPHDgwcONBndUMs1yma3pMgCHK/W3+AWKk6OZ1OnDhxIqgvyDAMAoVYIl0+btw4Pz/w4Ycflv3Av/3tbz5+4D//+U+kpqZCFEXY7XZ8/PHHmDt3Lk6cOCH7gadPn0ZOTg7effddHz+wvLzczw9888030bdvX2zZsgUPP/ww1q1bF9T2u+66C++9956fH3j11Vdj0aJFYBgGjz32GFauXCn7gfn5+WH5gcXFxT5+4LJly2A2m4PqWFZWhmuvvRbr16/3u3dDP/C7777DiBEjAt5nyZIl8Hg8sh9ot9thNBqxdOlSuFyuoH4g4O8L1v+9sVqtSEtLO2dfkAKDzQh9+VeWcPTlnBxWTZd2hcqfn4/tr2xHmwFtcPHj4W1x3lqgtqsspK+yUGBQOeoHrmIqd49CPPDAAxg/fjwuvjjw3xJBEDB9+nTk5OTgueeea/J+Xn21Wi0mTZqETz/9NGjenXgPDE6cOBGzZ8/GtGnTAMAnMDh//nz07NkTd9xxh881GRkZ2Lt3L7Kyspq8fyR8QetxK1ZNXwW9WQ97uR22sj9nAKQZkNolFW6bFBicvmo6Uru07tySodCwrz/01SEUvlqIdvntMGYRDfyeL+SrKAdpqywtrS/5gq2XSPqBgLK+YJSvuSKIc8NtcwMAGBUDbaK0JIKWEhMEQRDnwyOPPILly5cHHAEGpFkIH3zwAfbs2YMnn3wy5PsuXboUDz30UMjJuOONr7/+Gna7XQ4KNiQ7OxsnTpzwKXM4HKirq5NnLUQznIOD0+qEwAkQOAHOGifcNjc4x/nlA2rt1J4KbUdiALCV2bDthW3Y/mrwRPEEQRAE0Rjx7AfSkEUzwjAMkpOTW30kXSnC0debX1Br0kKllaZ/Cx6hsUtaNdR2lYX0VRbSV1liYlOXFkKn02H58uWNnqPX632WxzSFSqXC7bff3qrb79GjR1FcXCwnOQek5UmAFDR89tlnce+99/pcs2HDBuTn50ddXtH6/ZEuSQdjmhH2SjvcVjdEQfoiIXACHFUOMCwDY5oRuiRdhK2ODRr29bUlUmAwqX3TMyM4J4ej3x+FLkmH/NvyFbUzVqG/pcpB2ioL6as85AtKxLMfSIHBZkSlUqFXr16RNiNuCUdf74xBjUmDhKwEdLm8CxLaJDRxVeuF2q6ykL7KQvoqB8MwPrulEc0L6Ssxb948zJs3z6es/lJiURTh8XjwwQcfYNasWaitrcXixYuxYMGCCFkcnPr9kSnDhKkrp6LmaA3W/e86MCoGukQdnDVODF8wHOk906FL0sGUEdqu262dhn299ZS0iVNiu6ZnDKoN0lcej/38dkuPZ+hvqXKQtspC+ioL+SrKEU3aRtcwa4wjCAKKi4t9kqESzUc4+qbkpuCKf12BC++/EMkdkjF0/lD0vqZ3C1gZm1DbVRbSV1lIX+UQRRFutzvokgni/CB9g6PRaKDRaABIjvOaNWvw3nvvoV+/fhg2bBiuvfZaTJ8+PcJW+tOwPzJlmABGWsGQ3jMd7fLbQWvSgnfxSO2SSkHBMKivrcAJsJ2WcjaGspRYY5TaksAJ4D2UWiYQ9LdUOUhbZSF9lYV8FeWIJm1pxmAz4u2UsrKyom5pSzwQjr5qnRrmTuaWMSwOoLarLKSvspC+yuJ2u+UADdH8kL6BWbhwoc/POTk5+OabbyJkTegE6o9qjtUAAMw5Zpg7mVG8pRhVf1RF0MrYpL629jN2iIIIlU4FQ2rTsy3U+rNfeTgHB5WGlsU1hP6WKgdpqyykr/KQr6Ic0aIt/eYQcY8oiHDVuuCockTaFIIgCIIgWhmGFAPSe6cjrUcaUrumIqFtAgxp0bF0KFbx5hdMbJcYUl4mVsVCpZOCgbScmCAIgiB8oRmDRFxyetdpVByoQEbvDJgyTfjsls+g1qsxfVX0LTsiCIIgCCJ+yR2Xi9xxufLPk96YFEFr4oN2Q9phyrtT4K5zh3yNxqAB7+LhcVBgkCAIgiDqQ4HBZoRlWWRkZNAUZoUIR9+SHSX4fc3v6Dm1J3pO6QkA4N2UUyYY1HaVhfRVlljT11Zug8vqCno82jYjUKvJVVAS0je+iLX+KJaory3DMDCmG2FMN4Z8vdqoBmpoxmAwqO0qB2mrLLGmb6z5gQD5KkoSLdpGhxVxAsuy6NKlS6TNiFvC0ddjk5w+rUkLlVZaOiIKIgReAKuKjT8aLQm1XWUhfZUllvS1lduweuZq2CvtQc8xphkxdeXUZncKb7nlFowcORJ//etffcqPHz+O8ePH4+DBg37XMAwDvV7frHaEgs1mw/3334+NGzcCAHQ6HZ566imMGzdOPueJJ57Ayy+/jKysLLmsY8eOWLt2rfxzSUkJ/vrXv6K8vBy5ubl49913kZycLB8fNWoUli5dit69Q9ucyu12Y968eXjzzTflLyA//PADnnjiCVRWVkIQBHTq1AmPP/44BgwYIF+3b98+zJs3DzU1NRBFEYmJiXj44YcxYcIE6PV6vPbaa+jXrx9Gjhx5TnoR0UPD/ohzcQCk3Mf1EUURHrsHWpO2Re2LZc63r7/0mUuh0qrkJcWEL7H0tzTWIG2VJZb0jTU/EIiML0h+YMtDEZJmRBAEHD58mHZEUohw9HXbpKUl2oSzgUGAZg0Gg9quspC+yhJL+rqsLtgr7VDr1NCb9X4ftU4Ne6W90ZHkc8Xj8cDj8Z8p4/F44HYHXo4niiKcTmeL75YmiiKuvPJKFBUVYffu3Xjttdcwc+ZMlJaWyudwHIeCggLs2rVL/tR3BgFg0aJF8jlDhw7Fiy++KB/7z3/+g549e4bsDALAo48+itmzZ8vO4MqVK3H77bfjpZdewu7du7F3717cd999uPrqq2VnFpAc1X//+9/Yu3cv9u3bh+effx433HADduzYAafTiYKCAjz11FNwOCgXbqzTsD86ufkkVk1fhS3/3CKfc2z9MXxy3Sf45eVfImVmTFJf219e+QW7398dVl+pS9JBrVeHlJOwNRJLf0tjDdJWWWJJ31jzA4HI+ILkB7Y8FBhsRgRBQHl5eUx0SrFIOPp6c85oE7RgNWebOQUGA0NtV1lIX2WJFn05Jxf007DvUelUUBvUfh+VTuXneAW7Z4vVi2u5Z3lJSEjAFVdcITtegwcPxogRI7B169aw7vPLL79g4sSJAIBJkyahsLAQgDTi++STT+Lxxx8P+V5lZWX4+eef5dFcq9WKO+64A6tWrULfvn3l80aNGoVXX30VBQUF8rtMSkpC+/bt5XMuuOACzJgxA19//TU4joNarcbkyZPx5ptvhlU/Ivpo2B/VHKsBRECbeHZmoN6sh8fuoZ2Jw8SrrdvuxuGvD+PXj34FKMbXbETL39J4hLRVlmjSN1RfMJAPKPuBgujnN0bSDwRa3hckP7DloaXERFziDQxqTBowDANWzULgBAieyP/BIAgiPlk1fVXQY22HtMVFiy+Sfy7fXw6G9f9GK3CCz2AGAKy9eW3AkeMZn804d2Mb4dJLL8Vtt92GZ599FrW1tXC5XHj66acxZcoUANLo6IEDB3D06FH8+uuvqK6uxqRJk/Dss8/KeVIqKysxb948FBUVgWVZTJ06FU8++SRYlsWWLVvwz3/+E/n5+fjoo48we/Zs3HnnnU3aVVVVFfZSFpZlwfOSc81xnOxgvvzyy5g2bZrP8pOmePvtt3HdddfJP69duxZDhw5Fnz59/M694oor8Pe//x1bt27FiBEjAt6vuroaQ4YMkX++/vrrMWLEiJC0IGKHmmM1AABzJ7Nclto1FQBgO22Du84NbQItJw6HutI6AFKwVZeoC/m6oz8exZndZ5A9PBvZw7KVMo8giFZMU75g/+v7yz+f3nkaouA7GCxwAgROwLYXt2HS62c3qgrkC7aUH+jxeLBo0SJce+21AMgP9BJvfiDNGCTikvo5BgHI+WS8uX4IgiCIwHhHUVetWoWioiK8/vrr+J//+R+UlJTIx1944QVMmzYNO3bswL59+7Bnzx6f5Rk33XQTLrvsMhw6dAj79u3DgQMH8NZbb8nXb9++HYmJiSgqKgrJAdq/fz+OHj2Kiy++OKy6jBkzBm+99RZEUcQ777yDkSNHorq6Gu+++y7uueeesO719ddfY/z48fLPRUVFyM/PD3r+kCFDsHPnTr/yyspKPP/88zhy5AhmzDjr1CckJCA1NRXHjh0Lyy4iurEctwDwDQxqE7QwZUm5o2jWYPjUnqoFACS2TwzruooDFTj6/VHSnCAIohHq+4G7du3Cu+++i3nz5pEfGOd+IM0YbEZYlkV2dnbM7IgUa4SjrzcwqDFpAAA5Y3IgeASo9dTkA0FtV1lIX2WJFn2nr5oe9FjD2YEZfTLk/qk+HpsHTovTp2zy25Obx8AwuPvuu5GVlQVRFDF8+HBMnToVH374IRYsWAAAGDZsGK666ioAgNFoxJNPPom5c+diwYIFOHToEE6fPo2bb74ZAKDRaHDffffhwQcfxJw5cwAAFosFc+fODckWQRAwd+5cPPbYYz4jxQzD4KOPPsK6detgsVjQv39/LF682CdXzKOPPop58+ZhwIABGDlyJO644w488MAD+Nvf/gaPx4Prr78e+/fvxwUXXIAXXngBOl3w2UcnT55ETk6O/LPFYkFubm7Q89u0aQOr1Sr/vGnTJsyePRvHjh1Dbm4uvvjiC2i1Wp98Z7169cKBAwfQqVOnkLQhoo/6/ZHL6oKjSsoXZM4x+5yX2jUVttM2VP1RhawBoc9YaM14ta3eVA0ASGqfFNb1GqPU53IOGiQORLT8LY1HSFtliSZ9m/IFLSct8s9Zg/z7fo/NA2eNExfcdYFPeUv7gl4/EADy8/Nx9dVX48MPP5SDaeQHxp8fSFGSZsTbKRHKEI6+lzx9Cdy1biS0SQAA5M8LHs0nqO0qDemrLNGibzgDDwzLBHRgGZbxS4wfiQEN705qDMNAq9Wif//++P333/2Oe+nXrx+OHj0KAPj111/xxx9/+JzD87zPLnBdu3aFRuMfGA3EwoUL0bZtW8yePdun/O6778Z9990Hg8EAjuOwYsUKjB8/Hnv37kVqqrRU02w248MPP5SvOXLkCDZt2oR//vOfuPPOOzFy5EisWLECDz74IP71r381OnrcMPdjYmIizpw5E/T8M2fOoEePHvLPI0eOxKFDh8DzPD777DNcdtll2Lp1KzIzM+VzUlJSUFVFs5limfr9kXcZsSnL5Pd7nNo1FSc3naTZa2Hg1fZk6UkAQGK78GYMagxSn+Ox+yffJ6Lnb2k8QtoqSzTpG47PFtQPZBmfzTPDvW9zUN+HYxgGAwYMID8wzv3AyIfV4wie5/Hbb7/J69iJ5iUcfc05ZmT2zfTrVInAUNtVFtJXWWJRX87BwW1z+32UnMliNBp9Ri691NbWwmQy+ZR5d60TRREOhwM2mw0Gg8HvuBe73S4fdzgcGD58uM8ucXv37sWmTZt8bAmFlStX4quvvsKyZcv8jiUnJ8vPVKvVuOmmm9CrVy+f5zTkgQcewBNPPAGWZbFp0ybMmjULADBjxgxs3rw5JJu89O3bF9u3bw96vLCwMGDeGZVKhauuugqXX345PvzwQzgcDtnZrK6ulp1ZIjap3x/J+QUbzBYEzuYZpMBg6Hi1tZ6U+rFwlxKrDdIXa4+DAoOBiMW/pbECaasssahvrPiBgOQLWiwWn9l65AfGnx9IgcFmxPtL05JbebcmzkdfgRPgtrkhcLT5SCCo7SoL6asssaSvLkkHY5oRnIuDs8bp9+FcHIxpRuiSQk+oHyr9+vXDli1b/Mp//vlnv5HfXbt2yf/meR47d+70WZpR/zgA7NixQz7erVs37Nq1y89pDJeNGzdi4cKF+Oyzz/wc1mDwPC8nvm7Izz//DKvViksvvVQ+1zs7k2XZJnfc69Chg0/elylTpmDjxo347bff/M79+uuv4XQ6MXz48KD3s1gsEATB54vMb7/95jO6TMQe9fuj5I7J6HxJZ7Qb0s7vvNSuqcgalIWcMTkx0XdFA15tbeU2ALSUuLmJpb+lsQZpqyyxpG8s+oEAyA9EK/ADxSjg/fffF1NSUsS8vDz5M3ToUJHjOFEURbGkpEScMGGC2L9/f7Fv377ia6+9Ftb9LRaLCEC0WCxKmC/j8XjErVu3ih6PR9HntFZC1ddWYRP3frhXPPzdYbnsmwXfiCsnrhRPbjuptJkxCbVdZSF9laUl9XU4HOKvv/4qOhyOc75HXVmdWPlHZdBPXVldM1p8FqvVKnbq1ElcunSpXLZ161axQ4cO4s6dO+WyMWPGiP369RNLSkpEQRDEzz77TGzXrp1os9lEURTFd999V9TpdOKqVatEURTF6upqcfDgweJHH30kiqIoCoIgDhgwQFywYIHI87woiqJYU1MjVlVViaIoij/++KN44YUXNmrr77//LrZv317cvn170HNOnDghCoIgiqIochwnvvLKK2Jubq5ot9sDnj969Ghxz5498s833nij+Oabb4qiKIpPP/20uHjx4kZtevLJJ8U33njDp+y1114Te/XqJe7bt08u27Rpk9i+fXvxu+++k8uOHj0qayEIgvjee++JWVlZYklJiVhbWysKgiDW1taKffv2Dfr8xtpeS/k5sUxr8gUj1ccojVdbt8st1p6uFXkPH9b1JzafEFdOXCl+e++3ClkY20RD241XSFtlaWl9z9cXjCU/UBRF8bvvvhPbtm0r1tVJdpEfeJaW9ANFUVlfMCpyDHIchwkTJmDFihUBj0+bNg3z58/HrFmzUFtbi/Hjx6Njx46YMGFCC1tKxAJ1pXXY+8FeJLZPRO44KSGod0kx746dKeYEQcQnpgwTTBmhjXw2J4mJidi0aRMefPBBPP/881CpVMjKysJ//vMfDBw40Ofc++67D5MnT4bVaoVOp8NXX33ls+zjtttuwyeffIJFixahtrYWCxYswPTpUsJthmHwzTff4G9/+xt69+4Ng8EAvV6Pt956CykpKdDpdI0mdwaAV155BXV1dSgoKPApnzp1KhYtWgQAWLZsGT744APodDqIooihQ4di/fr1PkuevXz66afo0aMH+vXrJ5c98cQTuOGGG/DSSy+hc+fOWL58eaM23Xzzzbj22mtxyy23yGW33norMjMzUVBQAJvN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p3w1IYSIdCGiyZw5c5CamorNmzdj2bJlOOeccyJdpLjBbNVivmoxX3WYrVrMVx1mG3+4TtVivuowW7WYr1rMVx1mq1a85GuIdAGihRACFosFu3btwunTp/Htt9+iR48ekS5WXGC2ajFftZivOsxWLearDrONP1ynajFfdZitWsxXLearDrNVK97yZY/BOtavX4/09PSYbemNZsxWLearFvNVh9mqxXzVYbbxh+tULearDrNVi/mqxXzVYbZqxUu+bBgkIiIiIiIiIiJqhjj5CBERERERERERUTPEhkEiIiIiIiIiIqJmiA2DREREREREREREzRAbBomIiIiIiIiIiJohNgwSERERERERERE1Q2wYJCIiIiIiIiIiaobYMEhERERERERERNQMsWGQiMiH1157DZqmuX4yMjIwbNgwPPDAAygsLGzQc3777bf48MMPw1xSIiIiIgon1gOJqDlhwyARkQ9WqxU9evRAYWEhzp49iy1btuCuu+7Cl19+ib59+2Lbtm0hP+cXX3yBd955R0FpiYiIiChcWA8kouaEDYNERH7odDpkZGQgMzMTXbt2xeWXX45vvvkG06ZNw4wZM1BZWRnpIhIRERGRAqwHElFzwYZBIqIQaJqGp59+GtXV1Vi5ciUAeVb5rrvuQrdu3ZCYmIgOHTrg+uuvR0lJCQBg/fr10DQNDz74IJYtWwZN0zB58mTXc545cwZXXnkl0tLSkJGRgblz5yIvLy8i74+IiIiIfGM9kIjiERsGiYhCZDabMXPmTHz66acAgIMHD6KoqAjLli3DwYMH8c4772DNmjW45557AACjRo1CYWEh7rrrLsyZMweFhYX4z3/+AwCoqqrCL37xC9jtdnz77bdYt24dqqqqMGPGjIi9PyIiIiLyjfVAIoo3bBgkImqAc845B/v37wcA9O7dGy+++CLGjh2Ldu3a4dxzz8W9996LDz74AABcg1YnJCTAZDIhIyMDiYmJAICXXnoJOp0Ob7zxBgYMGIBzzjkHr732Gvbu3Ys1a9ZE7P0RERERkW+sBxJRPGHDIBFRAyQnJ6O8vNzv7Tk5OTh+/Hi9z/O///0PV155JTRNcy1LSEjAqFGjsGHDhrCUlYiIiIjCh/VAIoonhkgXgIgoFhUWFiIzM9P1/+eff45XXnkFO3bsQH5+PsrLy+FwOOp9niNHjmDRokV47LHHPJZXVFSga9euYS83ERERETUO64FEFE/YMEhE1ACbNm3CoEGDAABLlizBzTffjOuvvx6PPPIIOnXqhP379+OKK64I6rnuu+8+zJ4922u5e4WTiIiIiKID64FEFE/YMEhEFKLc3FysWrXKNXD04sWL8fjjj+N3v/ud6z579+71epz7ZSJO7du3R0lJCbp06aKsvEREREQUHqwHElG84RiDREQhKCkpwa9+9StMmDAB559/PgDg9OnTOOecczzu995773k9NiEhAVar1WPZeeedh3//+9+orKxUV2giIiIiajTWA4koHrFhkIjID4fDgaKiIpw8eRIbN27EY489hnPOOQc6nQ6vv/66635jx47F448/jj179mD//v246667cOTIEa/n69SpE9asWYM9e/Zg27ZtqKysxE033QSHw4Hzzz8fP/zwA3Jzc7F582YsXry4Cd8pEREREbljPZCImgs2DBIR+WAwGLB//35kZmaiR48emDNnDrZu3Yp//vOf+PLLL5GWlua674oVK5Ceno5x48Zh5MiRKCgowBtvvAG9Xu9xZnj69OkYOnQohg4dipkzZ6KgoADZ2dn49ttv0aFDB1x44YXo2LEjZsyYgdzc3Ei8bSIiIqJmj/VAImpONCGEiHQhiIiIiIiIiIiIqGmxxyAREREREREREVEzxIZBIiIiIiIiIiKiZogNg0RERERERERERM0QGwaJiIiIiIiIiIiaITYMEhERERERERERNUNsGCQiIiIiIiIiImqG2DBIRERERERERETUDLFhkIiIiIiIiIiIqBliwyAREREREREREVEzxIZBIiIiIiIiIiKiZogNg0RERERERERERM0QGwaJiIiIiIiIiIiaITYMEhERERERERERNUNsGCQiIiIiIiIiImqG2DBIRERERERERETUDLFhkIiIiIiIiIiIqBliwyARURN57bXX0KNHj3rv98wzz6BVq1Y4fvx4E5Qq/K677jpMnjw50sUgIiIiigrNpQ4YrObyPoliBRsGiWJQQkICNE1z/SQlJWHgwIH4xz/+Abvd7nHfXr16QdM03HrrrUE997Jly6BpGgwGA6qqqjxu+/rrr/HrX/8aPXv2RFJSErp27Yr58+fj6NGjIZV/ypQpHuV3/xk3blzAx65bt87vY91/Jk2aFFKZmoLVaoXVaq33funp6Wjfvj2MRmNYX//RRx9Fu3btwvqcvlgsFlgsFuWvQ0RE1NywDsg6YEO8/vrrHhmZTCa0bdsWkyZNwpNPPony8vKwvl59VL1PImoYTQghIl0IIgqNpmm45557MGfOHABAZWUlNmzYgPvuuw9TpkzBm2++6bpvly5dUF1djcrKSpw8eRJJSUkBn3vkyJH4+eefcebMGZSWliIlJcV1W8uWLXHJJZfgoosuQpcuXfDzzz/jL3/5C/Lz8/Hjjz+iU6dOQZV/4sSJyMjIwKJFi7xuS0tLC/g8FosF+/fvh/uua9y4cZgzZw5uuukm17KMjAx06NAhqPI0laVLl+KBBx7AkSNHIvL6DzzwAJ599lnk5+crfZ358+fjyJEjWL16tdLXISIiam5YB2QdsKGvv2DBAmzcuBGJiYmwWCw4ffo01q5di1dffRWapmHVqlUYNWpURMpHRJFliHQBiKhh2rZti379+rn+Hz58OHJycnDJJZfgpptuwoQJE1y3zZgxAytXrsRbb72F+fPn+33OnTt3YuPGjbjjjjvwt7/9zev2U6dOwWCo3W2MGDECY8aMQZ8+ffDEE0/gySefDLr8GRkZHuUPlslkwjnnnOOxTK/Xo1WrVg16PiIiIqJYwjpgLdYBQ9OnTx+PBt+pU6fi7rvvxpVXXokLLrgAW7ZsQc+ePSNYQiKKBF5KTBRHLr74YmRmZuLTTz/1WJ6UlIR58+ZhyZIlAR//8ssvY+TIkejbt6/P290rhE7t2rXDuHHjsHnz5oYXnIiIiIgajHVAaqi0tDS89dZbaN++PW6//fZIF4eIIoANg0RxpkOHDj4vFb3uuuuwfv167Ny50+fjrFYrVqxYgYULF4b8mpWVlfVentLUTpw4AZ1Oh7179+Kxxx5Dq1atkJWV5XEJx1tvvYXhw4cjMTERrVq1wm9+8xvk5eV5PM/SpUvRt29f7N+/H9OmTUNWVhbMZjP69euHFStW+Hzt7du3Y/r06cjMzERSUhKGDRuG1157Leiyr1y5Enq9HpWVla5lEydOxOOPP47ly5dj4MCBSEpKQlpaGi699FLs27cvtHDcdOnSBW+++Sb+8Y9/oFevXkhISEB2djauvPJKnD592udjtmzZgl/96ldo3bo1DAYDMjIycOmll3rdb/ny5Rg2bBiSk5ORmJiIMWPG4Ntvv/X5nF999RXGjx+P5ORkZGZm4rLLLsOhQ4e87ieEwKuvvopzzz0XKSkpSElJwbnnnotXX30VdUfGaMi6IyIiilWsA0qsA4YuKSkJd9xxBz766COv+t+LL76IcePGoWXLljCZTOjUqRNuv/12r3EoAeDQoUP41a9+haysLCQnJ2PMmDH48ssvve732muvwWQyeS3fsmULpk6dirS0NKSmpmLy5MnYsmWLzzK///77OO+885Cenu4x1mbdsRxXr16NpKQknD59GvPmzUOrVq1gMpnQvXt3PPHEE6HERBS32DBIFGcKCwvRokULr+UDBgzAyJEj/Z4x/uCDD1BRUYHZs2eH9HpnzpzBd999h4suuqhB5VXFarVCCIElS5Zg9erVeOedd/DRRx+hVatWAIAnnngCc+bMwcSJE7F69WosW7YMP/30E8477zxUV1d7PFd+fj7OO+88tGjRAq+99hq+/PJLTJgwAVdddRU+++wzj/vu27cPY8eOxf79+/Hiiy9i7dq1uPHGG3H77bfj+eefD6rsFosFDofDaxDxlStX4rbbbsOCBQvw+eefY8WKFTh69CimTJnSqMk+Fi9ejH/84x+44447sHr1ajz33HNYt24dLrvsMq/7vvbaaxg5ciQcDgeWLFmCH374Ae+99x6uuOIKj/t9//33uO2223DFFVfg448/xgcffACTyYQpU6Z4DVT+zjvvYNKkSejWrRs+/fRTvPvuuygtLcW4ceOQm5vrcd9rrrkG119/PcaOHYtPP/0Un3/+Oc4//3zccMMNuOGGG7zKG8q6IyIiimWsA0qsAzbM5MmT4XA48N1333mU5+WXX8bs2bPxxhtvYN26dbjvvvuwdOlS3HfffR6P37dvH0aOHInjx49jxYoV+PrrrzFs2DBceOGFXuNO+5qMZd26dRgzZgwMBgPef/99fPLJJ2jRogXGjx+P3bt3e9z34YcfxowZM9CtWze8//77WL16Na688ko88MADmD59uld+1dXVmDx5MsrKyvCvf/0La9aswZw5c3DnnXfipZdeCkN6RDFOEFHMASCeeeYZr+WbNm0SAMSaNWtcyzp37ixuv/12IYQQr7zyisjKyhKVlZVej506dapYsGCBEEKIV199VQAQpaWl9Zbl5ptvFtnZ2aK4uDjo8k+YMEF07txZ9OnTR6SkpIi0tDQxevRo8e9//zvo53CXnZ0t7r//fo9lhw8fFgBEr169RFVVlcdt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b18sWbIE3bp183tJiPvrf/DBB1i0aJHXehNC4H//+5/PS1CIiIhIYh2QdUBffv75Zzz11FP4/e9/D5PJ5Fq+ceNG3HPPPR6NggCwa9cuj//79u0LQF6O3JBG6759+6KiogJpaWno1KlTwPuOHj0ar7/+OiorK33WHT/88EMMHTo0qKFviEjiGINEzdDs2bNhtVqxbNkyvP3220FfQvKXv/wFK1aswHvvvYc+ffqEvVz33nsv0tLSMGXKlLA/t7tZs2bh0KFDePHFF8P+3LNnz8brr7/uNVbJqlWrfI5/F0tuuOEGVFZW4o477gjbc06bNg1WqxUPPvhgvfe98847sX37dqxYscLrtpUrV+Knn34Ka9mIiIjiDeuArAPWtX37dkyePBndunXDnXfe6XFbcnIy8vPzPZadPXsWr7zyiseynj17on///rjnnns8howJ1oQJE9CiRQvcdddd9d73tttuQ2FhIf7+97973fbtt9/iww8/9HofRBQYewwSNUPOAahvu+02ZGdn46KLLqr3MStXrsTDDz+Mu+++Gy1atPAaHFrTNPTp08djJjF/Zs2ahenTp6N79+7QNA379+/HCy+8gE2bNuGtt94KaXa7hhgyZAhuueUW/Pa3v8XWrVsxZ84cpKSk4MSJE3jvvfdw++23N3h8m7vvvhvvvvsuJkyYgIceegg5OTn49ttvcc8992DevHlYu3ZtmN9N0+nZsyeeeeYZ3HjjjcjNzcUNN9yATp06oaioCEePHsW8efNCfs42bdpg8eLF+OMf/4hDhw7h2muvRXZ2Ns6cOYOPPvoI06ZNw6RJkwDIM8Q33ngjFi5ciO3bt2P69OnQNA3vv/8+nnzySdx6662NHtybiIgonrEO2LzrgLt374bRaERxcTF27dqFTz75BB9++CGmTZuGJUuWePWyu/rqq/H0008jJycHI0eOxJEjR3DXXXfh4osv9mpcff755zF58mQMHz4c99xzD7p164aioiJ89913MJvNXjNBuzObzXj++ecxe/Zs5Obm4ve//z3at2+P/Px8fPXVV+jbty+uuuoqAECXLl2waNEi/OlPf8LRo0cxd+5cJCUl4fPPP8df//pXTJs2DbNmzQp/eERxjA2DRDHIaDQGPQaKyWTyuCTA6frrr8c///lPXH/99V4VOZPJBJ1O5zE2y+rVqwEAixcvxuLFi32+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QEpKcD/p6fKslz9CyLNk6enBPV+F/2GC/EpLS8N5552H999/32O53W7Hu+++i9mzZ3ss//LLLzF48GD06dMHQ4YMwRdffOG67ccff8T48ePRr18/9OvXD7/61a9QXFzser6OHTviqaeeQp8+fdCvXz9MmjQJx44dC73QREREREQUU4I9TorVY6QxY8agb9++PEaKY2wYDCO9Xo/evXtDH42jhsaBhuRrq7Sh7GQZKvIasNdsRuJ12124cCFeeeUVj2WffvopRo4ciYyMDNey48eP4+abb8a7776L3bt34/XXX8fChQtRUFAAADCZTFi+fDl27NiB7du3Iy0tDX/7298AyOxOnTqFjRs3Ytu2bdixYwfOP/983HrrrR6vm5CQoPbNNmPxuv1GA2arFvONP1yn6jQ024qCCljKLDFzmWGkcNtVh9mqxXxDF8ox0i233IK3334bu3btUnKM1NxFyzEiGwbDSNM0ZGRkQNO0SBclLjUkX7tNjo+gM3BTDySYbJOSgLKy4H4++ii41/3oo+CeLympYe9r/PjxOHr0KI4ePepatnTpUixYsMDjfv/85z9x8803IycnBwDQq1cvXHjhhfjwww8BAP3790fnzp0ByKx++ctfYvPmza7H2+12PPzwwzCZTACA+fPn45tvvnHdrmkaDAYD9w2KcN+rDrNVi/nGH65TdRqSrcPuQOHBQuTtyoOlzKKwdLGP2646zFataMg32OOkWD1G6tmzJzRNC/sxUnMXTceIbC0JI5vNhh9++AE2my3SRYlLoeZrq7TBUmaBw+ZAdUk1LOUWWMotsFVy/dQVTLaaBiQnB/czeTLQoYN8jL/n6thR3i+Y52vMvnL+/PlYunQpAKCwsBCbN2/GpEmTPO6za9cuPPHEExg0aJDr58svv0RJSYnrcffeey/GjBmDPn364NZbb0VFnb77HTt2dP3dokULnD171vW/EALl5eXsraAI973qMFu1mK+0YsUKZGVleeyDR44c6Rr8/NSpU7j44osxcOBA9O/fHy+88EKES+wf16k6DakHVhZWwmFzwGFzoPJsJeuBAXDbVYfZqhUN+QZ7nBSrx0gDBgxQcozU3EXTMSKn5QqzWJomPRYFk685zYyk7CRUFFSgqqjKVSGsKqpy3ScpOwnmNLPKosaccG67ej3w1FNyZi1N8xwY1/kF9uST8n6qXX31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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Visualization of PM25 variable trends over time by month\n", + "\n", + "import matplotlib.dates as mdates\n", + "\n", + "# Function to calculate monthly PM25 averages\n", + "def get_monthly_trend(df, variable):\n", + " # Calculate monthly mean, Q1, Q3 based on 'year' and 'month' columns\n", + " monthly = df.groupby(['year', 'month'])[variable].agg(['mean', \n", + " lambda x: x.quantile(0.25), \n", + " lambda x: x.quantile(0.75)]).reset_index()\n", + " monthly.columns = ['year', 'month', 'mean', 'q1', 'q3']\n", + " # Create date column (first day of month)\n", + " monthly['date'] = pd.to_datetime(monthly['year'].astype(str) + '-' + monthly['month'].astype(str).str.zfill(2) + '-01')\n", + " monthly = monthly.sort_values('date')\n", + " return monthly\n", + "\n", + "# List of city data\n", + "cities = [seoul, busan, incheon, daejeon, daegu, gwangju]\n", + "city_names = ['Seoul', 'Busan', 'Incheon', 'Daejeon', 'Daegu', 'Gwangju']\n", + "\n", + "# Create 3x2 subplots\n", + "fig, axes = plt.subplots(3, 2, figsize=(13, 15))\n", + "axes = axes.flatten()\n", + "\n", + "for idx, (city, name) in enumerate(zip(cities, city_names)):\n", + " trend = get_monthly_trend(city, 'PM25')\n", + " ax = axes[idx]\n", + " \n", + " # Mean values\n", + " ax.plot(trend['date'], trend['mean'], 'o-', color='blue', label='Mean')\n", + " # Q1, Q3\n", + " ax.plot(trend['date'], trend['q1'], 's--', color='orange', alpha=0.7, label='Lower 25% (Q1)')\n", + " ax.plot(trend['date'], trend['q3'], 's--', color='purple', alpha=0.7, label='Upper 25% (Q3)')\n", + " \n", + " # Linear trend line\n", + " if len(trend) > 1:\n", + " z = np.polyfit(range(len(trend)), trend['mean'], 1)\n", + " p = np.poly1d(z)\n", + " ax.plot(trend['date'], p(range(len(trend))), \"r--\", linewidth=1, alpha=0.6)\n", + " slope = z[0]\n", + " # ax.text(trend['date'].iloc[0], trend['mean'].max(), \n", + " # f'Monthly change rate: {slope:.4f}/month', fontsize=10, color='darkred')\n", + " \n", + " ax.set_title(f'PM2.5 Trend in {name}', fontsize=14)\n", + " ax.set_xlabel('Date', fontsize=12)\n", + " ax.set_ylabel('PM2.5', fontsize=12)\n", + " ax.grid(True, linestyle='--', alpha=0.7)\n", + " ax.legend()\n", + " ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))\n", + " plt.setp(ax.xaxis.get_majorticklabels(), rotation=45)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Analysis_code/find_reason/wasserstein_distance.ipynb b/Analysis_code/find_reason/wasserstein_distance.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..cd92bde0d757dfec9665606fd8b36c5ae25bbedf --- /dev/null +++ b/Analysis_code/find_reason/wasserstein_distance.ipynb @@ -0,0 +1,541 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# 분석에 필요한 라이브러리 임포트\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from scipy import stats\n", + "from scipy.spatial import distance\n", + "from scipy.stats import wasserstein_distance, entropy, ks_2samp\n", + "from sklearn.manifold import TSNE\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.ensemble import RandomForestRegressor\n", + "from sklearn.ensemble import RandomForestClassifier # Added\n", + "from sklearn.model_selection import train_test_split # Added\n", + "from sklearn.metrics import roc_auc_score # Added\n", + "from statsmodels.distributions.empirical_distribution import ECDF # Added\n", + "import ot\n", + "\n", + "\n", + "# 한글 폰트 설정\n", + "plt.rcParams['font.family'] = 'NanumGothic'\n", + "plt.rcParams['axes.unicode_minus'] = False" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "seoul = pd.read_feather(\"../../data/data_for_modeling/df_seoul.feather\")\n", + "seoul= seoul[['datetime','hm','PM10','PM25','year','month','hour','multi_class']]\n", + "\n", + "busan = pd.read_feather(\"../../data/data_for_modeling/df_busan.feather\")\n", + "busan= busan[['datetime','hm','PM10','PM25','year','month','hour','multi_class']]\n", + "\n", + "incheon = pd.read_feather(\"../../data/data_for_modeling/df_incheon.feather\")\n", + "incheon= incheon[['datetime','hm','PM10','PM25','year','month','hour','multi_class']]\n", + "\n", + "daegu = pd.read_feather(\"../../data/data_for_modeling/df_daegu.feather\")\n", + "daegu= daegu[['datetime','hm','PM10','PM25','year','month','hour','multi_class']]\n", + "\n", + "daejeon = pd.read_feather(\"../../data/data_for_modeling/df_daejeon.feather\")\n", + "daejeon= daejeon[['datetime','hm','PM10','PM25','year','month','hour','multi_class']]\n", + "\n", + "gwangju = pd.read_feather(\"../../data/data_for_modeling/df_gwangju.feather\")\n", + "gwangju= gwangju[['datetime','hm','PM10','PM25','year','month','hour','multi_class']]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.5920662 0.92351786]\n", + "[0.60414398 0.9190468 ]\n", + "[0.60250035 0.9391276 ]\n", + "[0.60112832 0.92493121]\n", + "[0.58469137 0.90476229]\n", + "[0.617718 0.93503164]\n" + ] + } + ], + "source": [ + "from sklearn.decomposition import PCA\n", + "\n", + "# 특성 선택 (예: PM10, PM25, hm 등)\n", + "features = ['PM10','PM25', 'hm']\n", + "# 스케일링\n", + "scaler = StandardScaler()\n", + "scaled_features = scaler.fit_transform(seoul[features])\n", + "pca = PCA(n_components=2)\n", + "pca.fit(scaled_features)\n", + "print(pca.explained_variance_ratio_.cumsum())\n", + "seoul_pca = pca.transform(scaled_features)\n", + "seoul.drop(columns=['PM25', 'hm'], inplace=True)\n", + "seoul[['pca_x', 'pca_y']] = seoul_pca\n", + "\n", + "\n", + "scaled_features = scaler.fit_transform(busan[features])\n", + "pca = PCA(n_components=2)\n", + "pca.fit(scaled_features)\n", + "print(pca.explained_variance_ratio_.cumsum())\n", + "busan_pca = pca.transform(scaled_features)\n", + "busan.drop(columns=['PM25', 'hm'], inplace=True)\n", + "busan[['pca_x', 'pca_y']] = busan_pca\n", + "\n", + "scaled_features = scaler.fit_transform(incheon[features]) \n", + "pca = PCA(n_components=2)\n", + "pca.fit(scaled_features)\n", + "print(pca.explained_variance_ratio_.cumsum())\n", + "incheon_pca = pca.transform(scaled_features)\n", + "incheon.drop(columns=['PM25', 'hm'], inplace=True)\n", + "incheon[['pca_x', 'pca_y']] = incheon_pca\n", + "\n", + "scaled_features = scaler.fit_transform(daegu[features])\n", + "pca = PCA(n_components=2)\n", + "pca.fit(scaled_features)\n", + "print(pca.explained_variance_ratio_.cumsum())\n", + "daegu_pca = pca.transform(scaled_features)\n", + "daegu.drop(columns=['PM25', 'hm'], inplace=True)\n", + "daegu[['pca_x', 'pca_y']] = daegu_pca\n", + "\n", + "scaled_features = scaler.fit_transform(daejeon[features])\n", + "pca = PCA(n_components=2)\n", + "pca.fit(scaled_features)\n", + "print(pca.explained_variance_ratio_.cumsum())\n", + "daejeon_pca = pca.transform(scaled_features)\n", + "daejeon.drop(columns=['PM25', 'hm'], inplace=True)\n", + "daejeon[['pca_x', 'pca_y']] = daejeon_pca\n", + "\n", + "scaled_features = scaler.fit_transform(gwangju[features])\n", + "pca = PCA(n_components=2)\n", + "pca.fit(scaled_features)\n", + "print(pca.explained_variance_ratio_.cumsum())\n", + "gwangju_pca = pca.transform(scaled_features)\n", + "gwangju.drop(columns=['PM25', 'hm'], inplace=True)\n", + "gwangju[['pca_x', 'pca_y']] = gwangju_pca\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "seoul_2018 = seoul[seoul['year'] == 2018]\n", + "seoul_2019 = seoul[seoul['year'] == 2019]\n", + "seoul_2020 = seoul[seoul['year'] == 2020]\n", + "seoul_2021 = seoul[seoul['year'] == 2021]\n", + "years = [2018, 2019, 2020, 2021]\n", + "\n", + "\n", + "busan_2018 = busan[busan['year'] == 2018]\n", + "busan_2019 = busan[busan['year'] == 2019]\n", + "busan_2020 = busan[busan['year'] == 2020]\n", + "busan_2021 = busan[busan['year'] == 2021]\n", + "years = [2018, 2019, 2020, 2021]\n", + "\n", + "\n", + "incheon_2018 = incheon[incheon['year'] == 2018]\n", + "incheon_2019 = incheon[incheon['year'] == 2019]\n", + "incheon_2020 = incheon[incheon['year'] == 2020]\n", + "incheon_2021 = incheon[incheon['year'] == 2021]\n", + "years = [2018, 2019, 2020, 2021]\n", + "\n", + "\n", + "daegu_2018 = daegu[daegu['year'] == 2018]\n", + "daegu_2019 = daegu[daegu['year'] == 2019]\n", + "daegu_2020 = daegu[daegu['year'] == 2020]\n", + "daegu_2021 = daegu[daegu['year'] == 2021]\n", + "years = [2018, 2019, 2020, 2021]\n", + "\n", + "\n", + "daejeon_2018 = daejeon[daejeon['year'] == 2018]\n", + "daejeon_2019 = daejeon[daejeon['year'] == 2019]\n", + "daejeon_2020 = daejeon[daejeon['year'] == 2020]\n", + "daejeon_2021 = daejeon[daejeon['year'] == 2021]\n", + "years = [2018, 2019, 2020, 2021]\n", + "\n", + "\n", + "gwangju_2018 = gwangju[gwangju['year'] == 2018]\n", + "gwangju_2019 = gwangju[gwangju['year'] == 2019]\n", + "gwangju_2020 = gwangju[gwangju['year'] == 2020]\n", + "gwangju_2021 = gwangju[gwangju['year'] == 2021]\n", + "years = [2018, 2019, 2020, 2021]\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 2018 2019 2020 2021\n", + "2018 0.0 0.130217 0.063132 1.081307\n", + "2019 0.130217 0.0 0.059051 0.830648\n", + "2020 0.063132 0.059051 0.0 0.039927\n", + "2021 1.081307 0.830648 0.039927 0.0\n" + ] + } + ], + "source": [ + "# 연도별 데이터 준비\n", + "years = [2018, 2019, 2020, 2021]\n", + "data_dict = {\n", + " 2018: seoul_2018[['pca_x', 'pca_y']].values,\n", + " 2019: seoul_2019[['pca_x', 'pca_y']].values,\n", + " 2020: seoul_2020[['pca_x', 'pca_y']].values,\n", + " 2021: seoul_2021[['pca_x', 'pca_y']].values\n", + "}\n", + "\n", + "\n", + "# 결과를 저장할 데이터프레임 생성\n", + "result_df = pd.DataFrame(index=years, columns=years)\n", + "\n", + "for i, year1 in enumerate(years):\n", + " for j, year2 in enumerate(years):\n", + " if year1 == year2:\n", + " result_df.iloc[i, j] = 0.0\n", + " if j < i:\n", + " # 이미 계산된 값 사용\n", + " result_df.iloc[i, j] = result_df.iloc[j, i]\n", + " else:\n", + " X = data_dict[year1]\n", + " Y = data_dict[year2]\n", + " a = np.ones(len(X)) / len(X)\n", + " b = np.ones(len(Y)) / len(Y)\n", + " W = ot.emd2(a, b, ot.dist(X, Y))\n", + " result_df.iloc[i, j] = W\n", + " result_df.iloc[j, i] = W # 대칭 위치에 동일 값 저장\n", + "\n", + "# 결과 출력\n", + "print(result_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 2018 2019 2020 2021\n", + "2018 0.0 0.116261 0.10445 1.424479\n", + "2019 0.116261 0.0 0.09933 1.164067\n", + "2020 0.10445 0.09933 0.0 1.075336\n", + "2021 1.424479 1.164067 1.075336 0.0\n" + ] + } + ], + "source": [ + "# 연도별 데이터 준비\n", + "years = [2018, 2019, 2020, 2021]\n", + "data_dict = {\n", + " 2018: busan_2018[['pca_x', 'pca_y']].values,\n", + " 2019: busan_2019[['pca_x', 'pca_y']].values,\n", + " 2020: busan_2020[['pca_x', 'pca_y']].values,\n", + " 2021: busan_2021[['pca_x', 'pca_y']].values\n", + "}\n", + "\n", + "\n", + "# 결과를 저장할 데이터프레임 생성\n", + "result_df = pd.DataFrame(index=years, columns=years)\n", + "\n", + "for i, year1 in enumerate(years):\n", + " for j, year2 in enumerate(years):\n", + " if year1 == year2:\n", + " result_df.iloc[i, j] = 0.0\n", + " if j < i:\n", + " # 이미 계산된 값 사용\n", + " result_df.iloc[i, j] = result_df.iloc[j, i]\n", + " else:\n", + " X = data_dict[year1]\n", + " Y = data_dict[year2]\n", + " a = np.ones(len(X)) / len(X)\n", + " b = np.ones(len(Y)) / len(Y)\n", + " W = ot.emd2(a, b, ot.dist(X, Y))\n", + " result_df.iloc[i, j] = W\n", + " result_df.iloc[j, i] = W # 대칭 위치에 동일 값 저장\n", + "\n", + "# 결과 출력\n", + "print(result_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 2018 2019 2020 2021\n", + "2018 0.0 0.080291 0.074071 0.449094\n", + "2019 0.080291 0.0 0.060171 0.384189\n", + "2020 0.074071 0.060171 0.0 0.04047\n", + "2021 0.449094 0.384189 0.04047 0.0\n" + ] + } + ], + "source": [ + "# 연도별 데이터 준비\n", + "years = [2018, 2019, 2020, 2021]\n", + "data_dict = {\n", + " 2018: incheon_2018[['pca_x', 'pca_y']].values,\n", + " 2019: incheon_2019[['pca_x', 'pca_y']].values,\n", + " 2020: incheon_2020[['pca_x', 'pca_y']].values,\n", + " 2021: incheon_2021[['pca_x', 'pca_y']].values\n", + "}\n", + "\n", + "\n", + "# 결과를 저장할 데이터프레임 생성\n", + "result_df = pd.DataFrame(index=years, columns=years)\n", + "\n", + "for i, year1 in enumerate(years):\n", + " for j, year2 in enumerate(years):\n", + " if year1 == year2:\n", + " result_df.iloc[i, j] = 0.0\n", + " if j < i:\n", + " # 이미 계산된 값 사용\n", + " result_df.iloc[i, j] = result_df.iloc[j, i]\n", + " else:\n", + " X = data_dict[year1]\n", + " Y = data_dict[year2]\n", + " a = np.ones(len(X)) / len(X)\n", + " b = np.ones(len(Y)) / len(Y)\n", + " W = ot.emd2(a, b, ot.dist(X, Y))\n", + " result_df.iloc[i, j] = W\n", + " result_df.iloc[j, i] = W # 대칭 위치에 동일 값 저장\n", + "\n", + "# 결과 출력\n", + "print(result_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 2018 2019 2020 2021\n", + "2018 0.0 0.127512 0.112157 0.731476\n", + "2019 0.127512 0.0 0.094651 0.647071\n", + "2020 0.112157 0.094651 0.0 0.041217\n", + "2021 0.731476 0.647071 0.041217 0.0\n" + ] + } + ], + "source": [ + "# 연도별 데이터 준비\n", + "years = [2018, 2019, 2020, 2021]\n", + "data_dict = {\n", + " 2018: daegu_2018[['pca_x', 'pca_y']].values,\n", + " 2019: daegu_2019[['pca_x', 'pca_y']].values,\n", + " 2020: daegu_2020[['pca_x', 'pca_y']].values,\n", + " 2021: daegu_2021[['pca_x', 'pca_y']].values\n", + "}\n", + "\n", + "\n", + "# 결과를 저장할 데이터프레임 생성\n", + "result_df = pd.DataFrame(index=years, columns=years)\n", + "\n", + "for i, year1 in enumerate(years):\n", + " for j, year2 in enumerate(years):\n", + " if year1 == year2:\n", + " result_df.iloc[i, j] = 0.0\n", + " if j < i:\n", + " # 이미 계산된 값 사용\n", + " result_df.iloc[i, j] = result_df.iloc[j, i]\n", + " else:\n", + " X = data_dict[year1]\n", + " Y = data_dict[year2]\n", + " a = np.ones(len(X)) / len(X)\n", + " b = np.ones(len(Y)) / len(Y)\n", + " W = ot.emd2(a, b, ot.dist(X, Y))\n", + " result_df.iloc[i, j] = W\n", + " result_df.iloc[j, i] = W # 대칭 위치에 동일 값 저장\n", + "\n", + "# 결과 출력\n", + "print(result_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 2018 2019 2020 2021\n", + "2018 0.0 0.273013 0.053969 0.877338\n", + "2019 0.273013 0.0 0.137817 0.780071\n", + "2020 0.053969 0.137817 0.0 0.042294\n", + "2021 0.877338 0.780071 0.042294 0.0\n" + ] + } + ], + "source": [ + "# 연도별 데이터 준비\n", + "years = [2018, 2019, 2020, 2021]\n", + "data_dict = {\n", + " 2018: daejeon_2018[['pca_x', 'pca_y']].values,\n", + " 2019: daejeon_2019[['pca_x', 'pca_y']].values,\n", + " 2020: daejeon_2020[['pca_x', 'pca_y']].values,\n", + " 2021: daejeon_2021[['pca_x', 'pca_y']].values\n", + "}\n", + "\n", + "\n", + "# 결과를 저장할 데이터프레임 생성\n", + "result_df = pd.DataFrame(index=years, columns=years)\n", + "\n", + "for i, year1 in enumerate(years):\n", + " for j, year2 in enumerate(years):\n", + " if year1 == year2:\n", + " result_df.iloc[i, j] = 0.0\n", + " if j < i:\n", + " # 이미 계산된 값 사용\n", + " result_df.iloc[i, j] = result_df.iloc[j, i]\n", + " else:\n", + " X = data_dict[year1]\n", + " Y = data_dict[year2]\n", + " a = np.ones(len(X)) / len(X)\n", + " b = np.ones(len(Y)) / len(Y)\n", + " W = ot.emd2(a, b, ot.dist(X, Y))\n", + " result_df.iloc[i, j] = W\n", + " result_df.iloc[j, i] = W # 대칭 위치에 동일 값 저장\n", + "\n", + "# 결과 출력\n", + "print(result_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 2018 2019 2020 2021\n", + "2018 0.0 0.105633 0.08202 1.00155\n", + "2019 0.105633 0.0 0.069322 0.892938\n", + "2020 0.08202 0.069322 0.0 0.480667\n", + "2021 1.00155 0.892938 0.480667 0.0\n" + ] + } + ], + "source": [ + "# 연도별 데이터 준비\n", + "years = [2018, 2019, 2020, 2021]\n", + "data_dict = {\n", + " 2018: gwangju_2018[['pca_x', 'pca_y']].values,\n", + " 2019: gwangju_2019[['pca_x', 'pca_y']].values,\n", + " 2020: gwangju_2020[['pca_x', 'pca_y']].values,\n", + " 2021: gwangju_2021[['pca_x', 'pca_y']].values\n", + "}\n", + "\n", + "\n", + "# 결과를 저장할 데이터프레임 생성\n", + "result_df = pd.DataFrame(index=years, columns=years)\n", + "\n", + "for i, year1 in enumerate(years):\n", + " for j, year2 in enumerate(years):\n", + " if year1 == year2:\n", + " result_df.iloc[i, j] = 0.0\n", + " if j < i:\n", + " # 이미 계산된 값 사용\n", + " result_df.iloc[i, j] = result_df.iloc[j, i]\n", + " else:\n", + " X = data_dict[year1]\n", + " Y = data_dict[year2]\n", + " a = np.ones(len(X)) / len(X)\n", + " b = np.ones(len(Y)) / len(Y)\n", + " W = ot.emd2(a, b, ot.dist(X, Y))\n", + " result_df.iloc[i, j] = W\n", + " result_df.iloc[j, i] = W # 대칭 위치에 동일 값 저장\n", + "\n", + "# 결과 출력\n", + "print(result_df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Analysis_code/model_voting_test_best_sample/ensemble__voting_best_sample.ipynb b/Analysis_code/model_voting_test_best_sample/ensemble__voting_best_sample.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..bee2b13b969ca8d40d54cb1a1758b2a8bbb22ddd --- /dev/null +++ b/Analysis_code/model_voting_test_best_sample/ensemble__voting_best_sample.ipynb @@ -0,0 +1,2642 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.preprocessing import StandardScaler, LabelEncoder\n", + "import torch\n", + "from torch.utils.data import DataLoader, TensorDataset\n", + "import random\n", + "from collections import Counter\n", + "import sys\n", + "sys.path.append('../../../../../../../../mnt/workspace/LightGBM/python-package')\n", + "from lightgbm import LGBMClassifier\n", + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.inspection import permutation_importance\n", + "from sklearn.metrics import confusion_matrix,accuracy_score, recall_score, precision_score\n", + "from sklearn.model_selection import StratifiedKFold\n", + "from xgboost import XGBClassifier\n", + "from warnings import filterwarnings\n", + "filterwarnings('ignore')\n", + "import sys\n", + "sys.path.append('../../')\n", + "import torch\n", + "import torch.nn as nn\n", + "import torch.optim as optim\n", + "import optuna\n", + "import pandas as pd\n", + "import numpy as np\n", + "import random\n", + "from models.ft_transformer import FTTransformer\n", + "from models.resnet_like import ResNetLike\n", + "from models.deepgbm import DeepGBM\n", + "from pytorch_tabnet.tab_model import TabNetClassifier\n", + "from sklearn.metrics import accuracy_score, f1_score, roc_auc_score, confusion_matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Python 및 Numpy 시드 고정\n", + "seed = 42\n", + "random.seed(seed)\n", + "np.random.seed(seed)\n", + "\n", + "# PyTorch 시드 고정\n", + "torch.manual_seed(seed)\n", + "torch.cuda.manual_seed(seed)\n", + "torch.cuda.manual_seed_all(seed) # Multi-GPU 환경에서 동일한 시드 적용\n", + "\n", + "# PyTorch 연산의 결정적 모드 설정\n", + "torch.backends.cudnn.deterministic = True # 실행마다 동일한 결과를 보장\n", + "torch.backends.cudnn.benchmark = True # 성능 최적화를 활성화 (가능한 한 빠른 연산 수행)\n", + "\n", + "# 전처리 함수\n", + "def preprocessing(df):\n", + " df = df[df.columns].copy()\n", + " df.loc[df['wind_dir']=='정온', 'wind_dir'] = \"0\"\n", + " df['wind_dir'] = df['wind_dir'].astype('int')\n", + " df['lm_cloudcover'] = df['lm_cloudcover'].astype('int')\n", + " df['cloudcover'] = df['cloudcover'].astype('int')\n", + " return df\n", + "\n", + "# 데이터셋 준비 함수\n", + "def prepare_dataset(region, data_sample='pure', target='multi', fold=3):\n", + "\n", + " # 데이터 경로 지정\n", + " dat_path = f\"../../data/data_for_modeling/{region}_train.csv\"\n", + " if data_sample == 'pure':\n", + " train_path = dat_path\n", + " else:\n", + " train_path = f'../../data/data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv'\n", + " train_path = f'../../data/data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv'\n", + " test_path = f\"../../data/data_for_modeling/{region}_test.csv\"\n", + " drop_col = ['binary_class','multi_class','visi','year']\n", + " target_col = f'{target}_class'\n", + " \n", + " # 데이터 로드\n", + " region_dat = preprocessing(pd.read_csv(dat_path, index_col=0))\n", + " if data_sample == 'pure':\n", + " region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :]\n", + " else:\n", + " region_train = preprocessing(pd.read_csv(train_path))\n", + " region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :]\n", + " region_test = preprocessing(pd.read_csv(test_path))\n", + "\n", + " # 컬럼 정렬 (일관성 유지)\n", + " common_columns = region_train.columns.to_list()\n", + " train_data = region_train[common_columns]\n", + " val_data = region_val[common_columns]\n", + " test_data = region_test[common_columns]\n", + "\n", + " # 설명변수 & 타겟 분리\n", + " X_train = train_data.drop(columns=drop_col)\n", + " y_train = train_data[target_col]\n", + " X_val = val_data.drop(columns=drop_col)\n", + " y_val = val_data[target_col]\n", + " X_test = test_data.drop(columns=drop_col)\n", + " y_test = test_data[target_col]\n", + "\n", + " # 범주형 & 연속형 변수 분리\n", + " categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns\n", + " numerical_cols = X_train.select_dtypes(include=['float64']).columns\n", + "\n", + " # 범주형 변수 Label Encoding\n", + " label_encoders = {}\n", + " for col in categorical_cols:\n", + " le = LabelEncoder()\n", + " le.fit(X_train[col]) # Train 데이터 기준으로 학습\n", + " label_encoders[col] = le\n", + "\n", + " # 변환 적용\n", + " for col in categorical_cols:\n", + " X_train[col] = label_encoders[col].transform(X_train[col])\n", + " X_val[col] = label_encoders[col].transform(X_val[col])\n", + " X_test[col] = label_encoders[col].transform(X_test[col])\n", + "\n", + " # 연속형 변수 Standard Scaling\n", + " scaler = StandardScaler()\n", + " scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습\n", + "\n", + " # 변환 적용\n", + " X_train[numerical_cols] = scaler.transform(X_train[numerical_cols])\n", + " X_val[numerical_cols] = scaler.transform(X_val[numerical_cols])\n", + " X_test[numerical_cols] = scaler.transform(X_test[numerical_cols])\n", + "\n", + " return X_train, X_val, X_test, y_train, y_val, y_test, categorical_cols, numerical_cols\n", + "\n", + "# 데이터 변환 및 dataloader 생성 함수\n", + "def prepare_dataloader(region, data_sample='pure', target='multi', fold=3, random_state=None):\n", + "\n", + " # 데이터 경로 지정\n", + " dat_path = f\"../../data/data_for_modeling/{region}_train.csv\"\n", + " if data_sample == 'pure':\n", + " train_path = dat_path\n", + " else:\n", + " train_path = f'../../data/data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv'\n", + " train_path = f'../../data/data_oversampled/{data_sample}/{data_sample}_{fold}_{region}.csv'\n", + " test_path = f\"../../data/data_for_modeling/{region}_test.csv\"\n", + " drop_col = ['binary_class','multi_class','visi','year']\n", + " target_col = f'{target}_class'\n", + " \n", + " # 데이터 로드\n", + " region_dat = preprocessing(pd.read_csv(dat_path, index_col=0))\n", + " if data_sample == 'pure':\n", + " region_train = region_dat.loc[~region_dat['year'].isin([2021-fold]), :]\n", + " else:\n", + " region_train = preprocessing(pd.read_csv(train_path))\n", + " region_val = region_dat.loc[region_dat['year'].isin([2021-fold]), :]\n", + " region_test = preprocessing(pd.read_csv(test_path))\n", + "\n", + " # 컬럼 정렬 (일관성 유지)\n", + " common_columns = region_train.columns.to_list()\n", + " train_data = region_train[common_columns]\n", + " val_data = region_val[common_columns]\n", + " test_data = region_test[common_columns]\n", + "\n", + " # 설명변수 & 타겟 분리\n", + " X_train = train_data.drop(columns=drop_col)\n", + " y_train = train_data[target_col]\n", + " X_val = val_data.drop(columns=drop_col)\n", + " y_val = val_data[target_col]\n", + " X_test = test_data.drop(columns=drop_col)\n", + " y_test = test_data[target_col]\n", + "\n", + " # 범주형 & 연속형 변수 분리\n", + " categorical_cols = X_train.select_dtypes(include=['object', 'category', 'int64']).columns\n", + " numerical_cols = X_train.select_dtypes(include=['float64']).columns\n", + "\n", + " # 범주형 변수 Label Encoding\n", + " label_encoders = {}\n", + " for col in categorical_cols:\n", + " le = LabelEncoder()\n", + " le.fit(X_train[col]) # Train 데이터 기준으로 학습\n", + " label_encoders[col] = le\n", + "\n", + " # 변환 적용\n", + " for col in categorical_cols:\n", + " X_train[col] = label_encoders[col].transform(X_train[col])\n", + " X_val[col] = label_encoders[col].transform(X_val[col])\n", + " X_test[col] = label_encoders[col].transform(X_test[col])\n", + "\n", + " # 연속형 변수 Standard Scaling\n", + " scaler = StandardScaler()\n", + " scaler.fit(X_train[numerical_cols]) # Train 데이터 기준으로 학습\n", + "\n", + " # 변환 적용\n", + " X_train[numerical_cols] = scaler.transform(X_train[numerical_cols])\n", + " X_val[numerical_cols] = scaler.transform(X_val[numerical_cols])\n", + " X_test[numerical_cols] = scaler.transform(X_test[numerical_cols])\n", + "\n", + " # 연속형 변수와 범주형 변수 분리\n", + " X_train_num = torch.tensor(X_train[numerical_cols].values, dtype=torch.float32)\n", + " X_train_cat = torch.tensor(X_train[categorical_cols].values, dtype=torch.long)\n", + "\n", + " X_val_num = torch.tensor(X_val[numerical_cols].values, dtype=torch.float32)\n", + " X_val_cat = torch.tensor(X_val[categorical_cols].values, dtype=torch.long)\n", + "\n", + " X_test_num = torch.tensor(X_test[numerical_cols].values, dtype=torch.float32)\n", + " X_test_cat = torch.tensor(X_test[categorical_cols].values, dtype=torch.long)\n", + "\n", + " # 레이블 변환\n", + " if target == \"binary\":\n", + " y_train_tensor = torch.tensor(y_train.values, dtype=torch.float32) # 이진 분류 → float32\n", + " y_val_tensor = torch.tensor(y_val.values, dtype=torch.float32)\n", + " y_test_tensor = torch.tensor(y_test.values, dtype=torch.float32)\n", + " elif target == \"multi\":\n", + " y_train_tensor = torch.tensor(y_train.values, dtype=torch.long) # 다중 분류 → long\n", + " y_val_tensor = torch.tensor(y_val.values, dtype=torch.long)\n", + " y_test_tensor = torch.tensor(y_test.values, dtype=torch.long)\n", + " else:\n", + " raise ValueError(\"target must be 'binary' or 'multi'\")\n", + "\n", + " # TensorDataset 생성\n", + " train_dataset = TensorDataset(X_train_num, X_train_cat, y_train_tensor)\n", + " val_dataset = TensorDataset(X_val_num, X_val_cat, y_val_tensor)\n", + " test_dataset = TensorDataset(X_test_num, X_test_cat, y_test_tensor)\n", + "\n", + " # DataLoader 생성\n", + " if random_state == None:\n", + " train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)\n", + " else:\n", + " train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True, generator=torch.Generator().manual_seed(random_state))\n", + " val_loader = DataLoader(val_dataset, batch_size=64, shuffle=False)\n", + " test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)\n", + " \n", + " return X_train, categorical_cols, numerical_cols, train_loader, val_loader, test_loader" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import torch\n", + "# 디바이스 설정 (CUDA 사용 가능하면 GPU로, 아니면 CPU로)\n", + "import glob\n", + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "\n", + "def calculate_csi(Y_test, pred):\n", + "\n", + " cm = confusion_matrix(Y_test, pred) # 변수 이름을 cm으로 변경\n", + " # 혼동 행렬에서 H, F, M 추출\n", + " H = (cm[0, 0] + cm[1, 1])\n", + " \n", + " F = (cm[1, 0] + cm[2, 0] +\n", + " cm[0, 1] + cm[2, 1])\n", + "\n", + " M = (cm[0, 2] + cm[1, 2])\n", + " \n", + " # CSI 계산\n", + " CSI = H / (H + F + M + 1e-10)\n", + " return CSI\n", + "\n", + "def csi_metric(y_true, pred):\n", + " y_pred_binary = np.argmax(pred, axis=1)\n", + " score = calculate_csi(y_true, y_pred_binary)\n", + " return 'CSI', score, True # higher_better=True\n", + "\n", + "\n", + "def eval_metric_csi(y_true, pred_prob):\n", + "\n", + " pred = np.argmax(pred_prob, axis=1)\n", + " y_true = y_true\n", + " y_pred = pred\n", + " csi = calculate_csi(y_true, y_pred)\n", + " return -1*csi\n", + "\n", + "from sklearn.metrics import matthews_corrcoef, accuracy_score\n", + "\n", + "def multiclass_mcc(y_val, y_pred):\n", + " \"\"\"\n", + " 다중 분류에서도 sklearn의 matthews_corrcoef를 그대로 사용할 수 있음.\n", + " \"\"\"\n", + " return matthews_corrcoef(y_val, y_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import torch\n", + "# 디바이스 설정 (CUDA 사용 가능하면 GPU로, 아니면 CPU로)\n", + "import glob\n", + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "def calculate_csi(Y_test, pred):\n", + "\n", + " cm = confusion_matrix(Y_test, pred) # 변수 이름을 cm으로 변경\n", + " # 혼동 행렬에서 H, F, M 추출\n", + " H = (cm[0, 0] + cm[1, 1])\n", + " \n", + " F = (cm[1, 0] + cm[2, 0] +\n", + " cm[0, 1] + cm[2, 1])\n", + "\n", + " M = (cm[0, 2] + cm[1, 2])\n", + " \n", + " # CSI 계산\n", + " CSI = H / (H + F + M + 1e-10)\n", + " return CSI\n", + "\n", + "# Soft Voting 앙상블\n", + "def get_proba(region, model_choose, data_sample, fold, target='multi'):\n", + " _, _, _, _,val_loader , test_loader = prepare_dataloader(region=region, data_sample=data_sample, target=target,fold=fold ,random_state=120)\n", + " _ ,_,_ ,_ , y_val,_ ,_ ,_ = prepare_dataset(region=region, data_sample=data_sample, target=target, fold=fold)\n", + "\n", + " folder_path = f'../save_model/{model_choose}/{data_sample}'\n", + " model_paths = [path for path in glob.glob(f'{folder_path}/*.pth') if f'{region}' in path]\n", + "\n", + " model = torch.load(model_paths[fold-1], weights_only=False).to(device)\n", + " model.eval()\n", + "\n", + " val_preds = []\n", + "\n", + "\n", + " with torch.no_grad():\n", + " for x_num_batch, x_cat_batch, _ in val_loader:\n", + " output = model(x_num_batch.to(device), x_cat_batch.to(device))\n", + " output = torch.softmax(output, dim=1)\n", + " val_preds.extend(output.cpu().numpy())\n", + "\n", + "\n", + " return val_preds, y_val\n", + "\n", + "\n", + "from sklearn.metrics import matthews_corrcoef\n", + "\n", + "def multiclass_mcc(y_val, y_pred):\n", + " \"\"\"\n", + " 다중 분류에서도 sklearn의 matthews_corrcoef를 그대로 사용할 수 있음.\n", + " \"\"\"\n", + " return matthews_corrcoef(y_val, y_pred)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "df_seoul = pd.read_csv(\"../../data/data_for_modeling/seoul_train.csv\")\n", + "df_seoul_test = pd.read_csv(\"../../data/data_for_modeling/seoul_test.csv\")\n", + "\n", + "df_busan = pd.read_csv(\"../../data/data_for_modeling/busan_train.csv\")\n", + "df_busan_test = pd.read_csv(\"../../data/data_for_modeling/busan_test.csv\")\n", + "\n", + "df_daegu = pd.read_csv(\"../../data/data_for_modeling/daegu_train.csv\")\n", + "df_daegu_test = pd.read_csv(\"../../data/data_for_modeling/daegu_test.csv\")\n", + "\n", + "df_daejeon = pd.read_csv(\"../../data/data_for_modeling/daejeon_train.csv\")\n", + "df_daejeon_test = pd.read_csv(\"../../data/data_for_modeling/daejeon_test.csv\")\n", + "\n", + "df_incheon = pd.read_csv(\"../../data/data_for_modeling/incheon_train.csv\")\n", + "df_incheon_test = pd.read_csv(\"../../data/data_for_modeling/incheon_test.csv\")\n", + "\n", + "df_gwangju = pd.read_csv(\"../../data/data_for_modeling/gwangju_train.csv\")\n", + "df_gwangju_test = pd.read_csv(\"../../data/data_for_modeling/gwangju_test.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def preprocessing_df(df):\n", + " df = df[df.columns].copy()\n", + " df['year'] = df['year'].astype('int')\n", + " df['month'] = df['month'].astype('int')\n", + " df['hour'] = df['hour'].astype('int')\n", + " df['binary_class'] = df['binary_class'].astype('int')\n", + " df['multi_class'] = df['multi_class'].astype('int')\n", + "\n", + " df.loc[df['wind_dir']=='정온', 'wind_dir'] = \"0\"\n", + " df['wind_dir'] = df['wind_dir'].astype('int')\n", + " df= df[['temp_C', 'precip_mm', 'wind_speed', 'wind_dir', 'hm',\n", + " 'vap_pressure', 'dewpoint_C', 'loc_pressure', 'sea_pressure',\n", + " 'solarRad', 'snow_cm', 'cloudcover', 'lm_cloudcover', 'low_cloudbase',\n", + " 'groundtemp', 'O3', 'NO2', 'PM10', 'PM25', 'year',\n", + " 'month', 'hour', 'ground_temp - temp_C', 'hour_sin', 'hour_cos',\n", + " 'month_sin', 'month_cos','multi_class']]\n", + " return df\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "df_seoul_test= preprocessing_df(df_seoul_test).copy()\n", + "df_busan_test= preprocessing_df(df_busan_test).copy()\n", + "df_daegu_test= preprocessing_df(df_daegu_test).copy()\n", + "df_gwangju_test= preprocessing_df(df_gwangju_test).copy()\n", + "df_daejeon_test= preprocessing_df(df_daejeon_test).copy()\n", + "df_incheon_test= preprocessing_df(df_incheon_test).copy()\n", + "\n", + "df_seoul= preprocessing_df(df_seoul).copy()\n", + "df_busan= preprocessing_df(df_busan).copy()\n", + "df_daegu= preprocessing_df(df_daegu).copy()\n", + "df_gwangju= preprocessing_df(df_gwangju).copy()\n", + "df_daejeon= preprocessing_df(df_daejeon).copy()\n", + "df_incheon= preprocessing_df(df_incheon).copy()\n", + "\n", + "df_seoul_test.drop(columns=['year'], inplace=True)\n", + "df_busan_test.drop(columns=['year'], inplace=True)\n", + "df_daegu_test.drop(columns=['year'], inplace=True)\n", + "df_daejeon_test.drop(columns=['year'], inplace=True)\n", + "df_incheon_test.drop(columns=['year'], inplace=True)\n", + "df_gwangju_test.drop(columns=['year'], inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import joblib\n", + "\n", + "lgb_seoul= joblib.load('../save_model/LGB_optima/lgb_seoul_smote.pkl')\n", + "lgb_busan= joblib.load('../save_model/LGB_optima/lgb_busan_smote.pkl')\n", + "lgb_incheon= joblib.load('../save_model/LGB_optima/lgb_incheon_smote.pkl')\n", + "lgb_daegu= joblib.load('../save_model/LGB_optima/lgb_daegu_smote.pkl')\n", + "lgb_daejeon= joblib.load('../save_model/LGB_optima/lgb_daejeon_smote.pkl')\n", + "lgb_gwangju= joblib.load('../save_model/LGB_optima/lgb_gwangju_smote.pkl')\n", + "\n", + "xgb_seoul= joblib.load('../save_model/XGB_optima/xgb_seoul_smote.pkl')\n", + "xgb_busan= joblib.load('../save_model/XGB_optima/xgb_busan_ctgan20000.pkl')\n", + "xgb_incheon= joblib.load('../save_model/XGB_optima/xgb_incheon_smote.pkl')\n", + "xgb_daegu= joblib.load('../save_model/XGB_optima/xgb_daegu_smote.pkl')\n", + "xgb_daejeon= joblib.load('../save_model/XGB_optima/xgb_daejeon_smote.pkl')\n", + "xgb_gwangju= joblib.load('../save_model/XGB_optima/xgb_gwangju_smote.pkl')\n", + "\n", + "lgb_seoul_1= lgb_seoul[0]\n", + "lgb_seoul_2= lgb_seoul[1]\n", + "lgb_seoul_3= lgb_seoul[2]\n", + "\n", + "lgb_busan_1= lgb_busan[0]\n", + "lgb_busan_2= lgb_busan[1]\n", + "lgb_busan_3= lgb_busan[2]\n", + "\n", + "lgb_incheon_1= lgb_incheon[0]\n", + "lgb_incheon_2= lgb_incheon[1]\n", + "lgb_incheon_3= lgb_incheon[2]\n", + "\n", + "lgb_daegu_1= lgb_daegu[0]\n", + "lgb_daegu_2= lgb_daegu[1]\n", + "lgb_daegu_3= lgb_daegu[2]\n", + "\n", + "lgb_daejeon_1= lgb_daejeon[0]\n", + "lgb_daejeon_2= lgb_daejeon[1]\n", + "lgb_daejeon_3= lgb_daejeon[2]\n", + "\n", + "lgb_gwangju_1= lgb_gwangju[0]\n", + "lgb_gwangju_2= lgb_gwangju[1]\n", + "lgb_gwangju_3= lgb_gwangju[2]\n", + "\n", + "\n", + "xgb_seoul_1= xgb_seoul[0]\n", + "xgb_seoul_2= xgb_seoul[1]\n", + "xgb_seoul_3= xgb_seoul[2]\n", + "\n", + "xgb_busan_1= xgb_busan[0]\n", + "xgb_busan_2= xgb_busan[1]\n", + "xgb_busan_3= xgb_busan[2]\n", + "\n", + "xgb_incheon_1= xgb_incheon[0]\n", + "xgb_incheon_2= xgb_incheon[1]\n", + "xgb_incheon_3= xgb_incheon[2]\n", + "\n", + "xgb_daegu_1= xgb_daegu[0]\n", + "xgb_daegu_2= xgb_daegu[1]\n", + "xgb_daegu_3= xgb_daegu[2]\n", + "\n", + "xgb_daejeon_1= xgb_daejeon[0]\n", + "xgb_daejeon_2= xgb_daejeon[1]\n", + "xgb_daejeon_3= xgb_daejeon[2]\n", + "\n", + "xgb_gwangju_1= xgb_gwangju[0]\n", + "xgb_gwangju_2= xgb_gwangju[1]\n", + "xgb_gwangju_3= xgb_gwangju[2]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **Soft Voting**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **서울**" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "deepgbm=[] #DeepGBM\n", + "ft_transformer=[] #FT-transformer\n", + "resnet_like=[] #ResNet-like\n", + "XGBoost=[] #XGBoost\n", + "LightGBM=[] #LightGBM\n", + "val= []\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "\n", + "\n", + "# 1 Fold\n", + "probas = []\n", + "val_preds, y_val = get_proba('seoul', 'deepgbm', 'ctgan20000', 1)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('seoul', 'resnet_like', 'smote', 1)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('seoul', 'ft_transformer', 'smote', 1)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul.loc[df_seoul['year'].isin([2018, 2019]), df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'].isin([2018, 2019]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "XGBoost.append(xgb_seoul_1.predict_proba(X_val))\n", + "LightGBM.append(lgb_seoul_1.predict_proba(X_val))\n", + "val.append(Y_val)\n", + "\n", + "\n", + "# 2 Fold\n", + "probas = []\n", + "val_preds, y_val = get_proba('seoul', 'deepgbm', 'ctgan20000', 2)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('seoul', 'resnet_like', 'smote', 2)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('seoul', 'ft_transformer', 'smote', 2)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul.loc[df_seoul['year'].isin([2018, 2020]), df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'].isin([2018, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "XGBoost.append(xgb_seoul_2.predict_proba(X_val))\n", + "LightGBM.append(lgb_seoul_2.predict_proba(X_val))\n", + "val.append(Y_val)\n", + "\n", + "# 3 Fold\n", + "probas = []\n", + "val_preds, y_val = get_proba('seoul', 'deepgbm', 'ctgan20000', 3)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('seoul', 'resnet_like', 'smote', 3)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('seoul', 'ft_transformer', 'smote', 3)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_seoul.loc[df_seoul['year'].isin([2019, 2020]), df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, df_seoul.columns != 'multi_class'], df_seoul.loc[df_seoul['year'].isin([2019, 2020]), 'multi_class'], df_seoul.loc[df_seoul['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "XGBoost.append(xgb_seoul_3.predict_proba(X_val))\n", + "LightGBM.append(lgb_seoul_3.predict_proba(X_val))\n", + "val.append(Y_val)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "model = [deepgbm, ft_transformer, resnet_like, XGBoost, LightGBM]\n", + "model_name = [\"deepgbm\", \"ft_transformer\", \"resnet_like\", \"XGBoost\", \"LightGBM\"]\n", + "voting = []\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy = []\n", + " for k in range(3):\n", + " result = []\n", + " result.append(model[i][k])\n", + " result.append(model[j][k])\n", + " \n", + " soft.append(calculate_csi(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[k],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " \n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy = []\n", + " for l in range(3):\n", + " result = []\n", + " result.append(model[i][l])\n", + " result.append(model[j][l])\n", + " result.append(model[k][l])\n", + "\n", + " soft.append(calculate_csi(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[l],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " \n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " for l in range(k+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy = []\n", + " for m in range(3):\n", + " result = []\n", + " result.append(model[i][m])\n", + " result.append(model[j][m])\n", + " result.append(model[k][m])\n", + " result.append(model[l][m])\n", + " \n", + " soft.append(calculate_csi(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[m],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " \n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " for l in range(k+1, len(model)):\n", + " for m in range(l+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy = []\n", + " for n in range(3):\n", + " result = []\n", + " result.append(model[i][n])\n", + " result.append(model[j][n])\n", + " result.append(model[k][n])\n", + " result.append(model[l][n])\n", + " result.append(model[m][n])\n", + "\n", + " soft.append(calculate_csi(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[n],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " \n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}+{model_name[m]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " # voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}+{model_name[m]}\"+\"_hard_voting\", np.mean(hard)))\n", + " \n", + "\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
modelCSIMCCAccuracyregiondata_sample
0deepgbm+ft_transformer0.6992420.8049780.961705seoulbest
1deepgbm+resnet_like0.7090720.8135000.963958seoulbest
2deepgbm+XGBoost0.6692270.7828380.957995seoulbest
3deepgbm+LightGBM0.6935150.8015720.962094seoulbest
4ft_transformer+resnet_like0.6252730.7509360.948804seoulbest
5ft_transformer+XGBoost0.6142840.7403120.947094seoulbest
6ft_transformer+LightGBM0.6085690.7359330.946637seoulbest
7resnet_like+XGBoost0.6194270.7446570.947822seoulbest
8resnet_like+LightGBM0.6136850.7410960.945773seoulbest
9XGBoost+LightGBM0.5861110.7149060.942197seoulbest
10deepgbm+ft_transformer+resnet_like0.6821690.7946630.959626seoulbest
11deepgbm+ft_transformer+XGBoost0.6730330.7867570.958448seoulbest
12deepgbm+ft_transformer+LightGBM0.6764760.7902020.959055seoulbest
13deepgbm+resnet_like+XGBoost0.6784380.7915050.959138seoulbest
14deepgbm+resnet_like+LightGBM0.6775630.7913210.959024seoulbest
15deepgbm+XGBoost+LightGBM0.6325380.7547270.951200seoulbest
16ft_transformer+resnet_like+XGBoost0.6332310.7561340.950061seoulbest
17ft_transformer+resnet_like+LightGBM0.6306550.7545890.949681seoulbest
18ft_transformer+XGBoost+LightGBM0.6052880.7319680.945577seoulbest
19resnet_like+XGBoost+LightGBM0.6103490.7369460.946037seoulbest
20deepgbm+ft_transformer+resnet_like+XGBoost0.6729970.7875850.958111seoulbest
21deepgbm+ft_transformer+resnet_like+LightGBM0.6719560.7873720.958034seoulbest
22deepgbm+ft_transformer+XGBoost+LightGBM0.6531340.7716410.954997seoulbest
23deepgbm+resnet_like+XGBoost+LightGBM0.6495280.7692030.953974seoulbest
24ft_transformer+resnet_like+XGBoost+LightGBM0.6233310.7475110.948277seoulbest
25deepgbm+ft_transformer+resnet_like+XGBoost+Lig...0.6569120.7752230.955378seoulbest
\n", + "
" + ], + "text/plain": [ + " model CSI MCC \\\n", + "0 deepgbm+ft_transformer 0.699242 0.804978 \n", + "1 deepgbm+resnet_like 0.709072 0.813500 \n", + "2 deepgbm+XGBoost 0.669227 0.782838 \n", + "3 deepgbm+LightGBM 0.693515 0.801572 \n", + "4 ft_transformer+resnet_like 0.625273 0.750936 \n", + "5 ft_transformer+XGBoost 0.614284 0.740312 \n", + "6 ft_transformer+LightGBM 0.608569 0.735933 \n", + "7 resnet_like+XGBoost 0.619427 0.744657 \n", + "8 resnet_like+LightGBM 0.613685 0.741096 \n", + "9 XGBoost+LightGBM 0.586111 0.714906 \n", + "10 deepgbm+ft_transformer+resnet_like 0.682169 0.794663 \n", + "11 deepgbm+ft_transformer+XGBoost 0.673033 0.786757 \n", + "12 deepgbm+ft_transformer+LightGBM 0.676476 0.790202 \n", + "13 deepgbm+resnet_like+XGBoost 0.678438 0.791505 \n", + "14 deepgbm+resnet_like+LightGBM 0.677563 0.791321 \n", + "15 deepgbm+XGBoost+LightGBM 0.632538 0.754727 \n", + "16 ft_transformer+resnet_like+XGBoost 0.633231 0.756134 \n", + "17 ft_transformer+resnet_like+LightGBM 0.630655 0.754589 \n", + "18 ft_transformer+XGBoost+LightGBM 0.605288 0.731968 \n", + "19 resnet_like+XGBoost+LightGBM 0.610349 0.736946 \n", + "20 deepgbm+ft_transformer+resnet_like+XGBoost 0.672997 0.787585 \n", + "21 deepgbm+ft_transformer+resnet_like+LightGBM 0.671956 0.787372 \n", + "22 deepgbm+ft_transformer+XGBoost+LightGBM 0.653134 0.771641 \n", + "23 deepgbm+resnet_like+XGBoost+LightGBM 0.649528 0.769203 \n", + "24 ft_transformer+resnet_like+XGBoost+LightGBM 0.623331 0.747511 \n", + "25 deepgbm+ft_transformer+resnet_like+XGBoost+Lig... 0.656912 0.775223 \n", + "\n", + " Accuracy region data_sample \n", + "0 0.961705 seoul best \n", + "1 0.963958 seoul best \n", + "2 0.957995 seoul best \n", + "3 0.962094 seoul best \n", + "4 0.948804 seoul best \n", + "5 0.947094 seoul best \n", + "6 0.946637 seoul best \n", + "7 0.947822 seoul best \n", + "8 0.945773 seoul best \n", + "9 0.942197 seoul best \n", + "10 0.959626 seoul best \n", + "11 0.958448 seoul best \n", + "12 0.959055 seoul best \n", + "13 0.959138 seoul best \n", + "14 0.959024 seoul best \n", + "15 0.951200 seoul best \n", + "16 0.950061 seoul best \n", + "17 0.949681 seoul best \n", + "18 0.945577 seoul best \n", + "19 0.946037 seoul best \n", + "20 0.958111 seoul best \n", + "21 0.958034 seoul best \n", + "22 0.954997 seoul best \n", + "23 0.953974 seoul best \n", + "24 0.948277 seoul best \n", + "25 0.955378 seoul best " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df= pd.DataFrame(voting, columns=['model', 'CSI', 'MCC','Accuracy'])\n", + "df['region'] = 'seoul'\n", + "df['data_sample'] = 'best'\n", + "df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **부산**" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "deepgbm=[] #DeepGBM\n", + "ft_transformer=[] #FT-transformer\n", + "resnet_like=[] #ResNet-like\n", + "XGBoost=[] #XGBoost\n", + "LightGBM=[] #LightGBM\n", + "val= []\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "\n", + "# 1 Fold\n", + "val_preds, y_val = get_proba('busan', 'deepgbm', 'pure', 1)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('busan', 'resnet_like', 'ctgan10000', 1)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('busan', 'ft_transformer', 'pure', 1)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_busan.loc[df_busan['year'].isin([2018, 2019]), df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2020, df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'].isin([2018, 2019]), 'multi_class'], df_busan.loc[df_busan['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "val.append(Y_val)\n", + "LightGBM.append(lgb_busan_1.predict_proba(X_val))\n", + "XGBoost.append(xgb_busan_1.predict_proba(X_val))\n", + "\n", + "\n", + "# 2 Fold\n", + "val_preds, y_val = get_proba('busan', 'deepgbm', 'pure', 2)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('busan', 'resnet_like', 'ctgan10000', 2)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('busan', 'ft_transformer', 'pure', 2)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_busan.loc[df_busan['year'].isin([2018, 2020]), df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2019, df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'].isin([2018, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "val.append(Y_val)\n", + "\n", + "LightGBM.append(lgb_busan_2.predict_proba(X_val))\n", + "XGBoost.append(xgb_busan_2.predict_proba(X_val))\n", + "\n", + "\n", + "# 3 Fold\n", + "val_preds, y_val = get_proba('busan', 'deepgbm', 'pure', 3)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('busan', 'resnet_like', 'ctgan10000', 3)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('busan', 'ft_transformer', 'pure', 3)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_busan.loc[df_busan['year'].isin([2019, 2020]), df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'] == 2018, df_busan.columns != 'multi_class'], df_busan.loc[df_busan['year'].isin([2019, 2020]), 'multi_class'], df_busan.loc[df_busan['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "val.append(Y_val)\n", + "LightGBM.append(lgb_busan_3.predict_proba(X_val))\n", + "XGBoost.append(xgb_busan_3.predict_proba(X_val))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "model = [deepgbm, ft_transformer, resnet_like, XGBoost, LightGBM]\n", + "model_name = [\"deepgbm\", \"ft_transformer\", \"resnet_like\", \"XGBoost\", \"LightGBM\"]\n", + "voting = []\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy= []\n", + " for k in range(3):\n", + " result = []\n", + " result.append(model[i][k])\n", + " result.append(model[j][k])\n", + " \n", + " soft.append(calculate_csi(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[k],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy= []\n", + " for l in range(3):\n", + " result = []\n", + " result.append(model[i][l])\n", + " result.append(model[j][l])\n", + " result.append(model[k][l])\n", + "\n", + " soft.append(calculate_csi(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[l],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " for l in range(k+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy= []\n", + " for m in range(3):\n", + " result = []\n", + " result.append(model[i][m])\n", + " result.append(model[j][m])\n", + " result.append(model[k][m])\n", + " result.append(model[l][m])\n", + " \n", + " soft.append(calculate_csi(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[m],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " for l in range(k+1, len(model)):\n", + " for m in range(l+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy= []\n", + " for n in range(3):\n", + " result = []\n", + " result.append(model[i][n])\n", + " result.append(model[j][n])\n", + " result.append(model[k][n])\n", + " result.append(model[l][n])\n", + " result.append(model[m][n])\n", + "\n", + " soft.append(calculate_csi(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[n],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}+{model_name[m]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " # voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}+{model_name[m]}\"+\"_hard_voting\", np.mean(hard)))\n", + " \n", + "\n", + "\n", + "\n", + "tm_df= pd.DataFrame(voting, columns=['model', 'CSI', 'MCC','Accuracy'])\n", + "tm_df['region'] = 'busan'\n", + "tm_df['data_sample'] = 'best'\n", + "\n", + "df = pd.concat([df, tm_df], axis=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **인천**" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "deepgbm=[] #DeepGBM\n", + "ft_transformer=[] #FT-transformer\n", + "resnet_like=[] #ResNet-like\n", + "XGBoost=[] #XGBoost\n", + "LightGBM=[] #LightGBM\n", + "val= []\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "\n", + "\n", + "# 1 Fold\n", + "\n", + "val_preds, y_val = get_proba('incheon', 'deepgbm', 'pure', 1)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('incheon', 'resnet_like', 'smote', 1)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('incheon', 'ft_transformer', 'pure', 1)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon.loc[df_incheon['year'].isin([2018, 2019]), df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'].isin([2018, 2019]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "val.append(Y_val)\n", + "LightGBM.append(lgb_incheon_1.predict_proba(X_val))\n", + "XGBoost.append(xgb_incheon_1.predict_proba(X_val))\n", + "\n", + "\n", + "# 2 Fold\n", + "\n", + "val_preds, y_val = get_proba('incheon', 'deepgbm', 'pure', 2)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('incheon', 'resnet_like', 'smote', 2)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('incheon', 'ft_transformer', 'pure', 2)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon.loc[df_incheon['year'].isin([2018, 2020]), df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'].isin([2018, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "val.append(Y_val)\n", + "\n", + "LightGBM.append(lgb_incheon_2.predict_proba(X_val))\n", + "XGBoost.append(xgb_incheon_2.predict_proba(X_val))\n", + "\n", + "\n", + "# 3 Fold\n", + "\n", + "val_preds, y_val = get_proba('incheon', 'deepgbm', 'pure', 3)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('incheon', 'resnet_like', 'smote', 3)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('incheon', 'ft_transformer', 'pure', 3)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_incheon.loc[df_incheon['year'].isin([2019, 2020]), df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, df_incheon.columns != 'multi_class'], df_incheon.loc[df_incheon['year'].isin([2019, 2020]), 'multi_class'], df_incheon.loc[df_incheon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "val.append(Y_val)\n", + "\n", + "LightGBM.append(lgb_incheon_3.predict_proba(X_val))\n", + "XGBoost.append(xgb_incheon_3.predict_proba(X_val))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "model = [deepgbm, ft_transformer, resnet_like, XGBoost, LightGBM]\n", + "model_name = [\"deepgbm\", \"ft_transformer\", \"resnet_like\", \"XGBoost\", \"LightGBM\"]\n", + "voting = []\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy = []\n", + " for k in range(3):\n", + " result = []\n", + " result.append(model[i][k])\n", + " result.append(model[j][k])\n", + " \n", + " soft.append(calculate_csi(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[k],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy = []\n", + " for l in range(3):\n", + " result = []\n", + " result.append(model[i][l])\n", + " result.append(model[j][l])\n", + " result.append(model[k][l])\n", + "\n", + " soft.append(calculate_csi(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[l],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " for l in range(k+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy = []\n", + " for m in range(3):\n", + " result = []\n", + " result.append(model[i][m])\n", + " result.append(model[j][m])\n", + " result.append(model[k][m])\n", + " result.append(model[l][m])\n", + " \n", + " soft.append(calculate_csi(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[m],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " for l in range(k+1, len(model)):\n", + " for m in range(l+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy = []\n", + " for n in range(3):\n", + " result = []\n", + " result.append(model[i][n])\n", + " result.append(model[j][n])\n", + " result.append(model[k][n])\n", + " result.append(model[l][n])\n", + " result.append(model[m][n])\n", + "\n", + " soft.append(calculate_csi(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[n],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}+{model_name[m]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " # voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}+{model_name[m]}\"+\"_hard_voting\", np.mean(hard)))\n", + " \n", + "\n", + "\n", + "\n", + "tm_df= pd.DataFrame(voting, columns=['model', 'CSI', 'MCC','Accuracy'])\n", + "tm_df['region'] = 'incheon'\n", + "tm_df['data_sample'] = 'best'\n", + "\n", + "df = pd.concat([df, tm_df], axis=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대구**" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "deepgbm=[] #DeepGBM\n", + "ft_transformer=[] #FT-transformer\n", + "resnet_like=[] #ResNet-like\n", + "XGBoost=[] #XGBoost\n", + "LightGBM=[] #LightGBM\n", + "val= []\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "\n", + "# 1 Fold\n", + "val_preds, y_val = get_proba('daegu', 'deepgbm', 'smote', 1)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('daegu', 'resnet_like', 'smote', 1)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('daegu', 'ft_transformer', 'pure', 1)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu.loc[df_daegu['year'].isin([2018, 2019]), df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'].isin([2018, 2019]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "val.append(Y_val)\n", + "\n", + "LightGBM.append(lgb_daegu_1.predict_proba(X_val))\n", + "XGBoost.append(xgb_daegu_1.predict_proba(X_val))\n", + "\n", + "\n", + "# 2 Fold\n", + "val_preds, y_val = get_proba('daegu', 'deepgbm', 'smote', 2)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('daegu', 'resnet_like', 'smote', 2)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('daegu', 'ft_transformer', 'pure', 2)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu.loc[df_daegu['year'].isin([2018, 2020]), df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'].isin([2018, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "val.append(Y_val)\n", + "\n", + "\n", + "LightGBM.append(lgb_daegu_2.predict_proba(X_val))\n", + "XGBoost.append(xgb_daegu_2.predict_proba(X_val))\n", + "\n", + "\n", + "# 3 Fold\n", + "val_preds, y_val = get_proba('daegu', 'deepgbm', 'smote', 3)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('daegu', 'resnet_like', 'smote', 3)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('daegu', 'ft_transformer', 'pure', 3)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_daegu.loc[df_daegu['year'].isin([2019, 2020]), df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, df_daegu.columns != 'multi_class'], df_daegu.loc[df_daegu['year'].isin([2019, 2020]), 'multi_class'], df_daegu.loc[df_daegu['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "val.append(Y_val)\n", + "\n", + "\n", + "LightGBM.append(lgb_daegu_3.predict_proba(X_val))\n", + "XGBoost.append(xgb_daegu_3.predict_proba(X_val))\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "model = [deepgbm, ft_transformer, resnet_like, XGBoost, LightGBM]\n", + "model_name = [\"deepgbm\", \"ft_transformer\", \"resnet_like\", \"XGBoost\", \"LightGBM\"]\n", + "voting = []\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy= []\n", + " for k in range(3):\n", + " result = []\n", + " result.append(model[i][k])\n", + " result.append(model[j][k])\n", + " \n", + " soft.append(calculate_csi(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[k],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy= []\n", + " for l in range(3):\n", + " result = []\n", + " result.append(model[i][l])\n", + " result.append(model[j][l])\n", + " result.append(model[k][l])\n", + "\n", + " soft.append(calculate_csi(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[l],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " for l in range(k+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy= []\n", + " for m in range(3):\n", + " result = []\n", + " result.append(model[i][m])\n", + " result.append(model[j][m])\n", + " result.append(model[k][m])\n", + " result.append(model[l][m])\n", + " \n", + " soft.append(calculate_csi(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[m],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " for l in range(k+1, len(model)):\n", + " for m in range(l+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy= []\n", + " for n in range(3):\n", + " result = []\n", + " result.append(model[i][n])\n", + " result.append(model[j][n])\n", + " result.append(model[k][n])\n", + " result.append(model[l][n])\n", + " result.append(model[m][n])\n", + "\n", + " soft.append(calculate_csi(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[n],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}+{model_name[m]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " # voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}+{model_name[m]}\"+\"_hard_voting\", np.mean(hard)))\n", + " \n", + "\n", + "\n", + "\n", + "tm_df= pd.DataFrame(voting, columns=['model', 'CSI', 'MCC','Accuracy'])\n", + "tm_df['region'] = 'daegu'\n", + "tm_df['data_sample'] = 'best'\n", + "\n", + "df = pd.concat([df, tm_df], axis=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **대전**" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "deepgbm=[] #DeepGBM\n", + "ft_transformer=[] #FT-transformer\n", + "resnet_like=[] #ResNet-like\n", + "XGBoost=[] #XGBoost\n", + "LightGBM=[] #LightGBM\n", + "val= []\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "\n", + "\n", + "# 1 Fold\n", + "\n", + "val_preds, y_val = get_proba('daejeon', 'deepgbm', 'pure', 1)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('daejeon', 'resnet_like', 'pure', 1)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('daejeon', 'ft_transformer', 'pure', 1)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon.loc[df_daejeon['year'].isin([2018, 2019]), df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'].isin([2018, 2019]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "LightGBM.append(lgb_daejeon_1.predict_proba(X_val))\n", + "XGBoost.append(xgb_daejeon_1.predict_proba(X_val))\n", + "val.append(Y_val)\n", + "\n", + "# 2 Fold\n", + "\n", + "val_preds, y_val = get_proba('daejeon', 'deepgbm', 'pure', 2)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('daejeon', 'resnet_like', 'pure', 2)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('daejeon', 'ft_transformer', 'pure', 2)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon.loc[df_daejeon['year'].isin([2018, 2020]), df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'].isin([2018, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "LightGBM.append(lgb_daejeon_2.predict_proba(X_val))\n", + "XGBoost.append(xgb_daejeon_2.predict_proba(X_val))\n", + "val.append(Y_val)\n", + "\n", + "# 3 Fold\n", + "\n", + "val_preds, y_val = get_proba('daejeon', 'deepgbm', 'pure', 3)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('daejeon', 'resnet_like', 'pure', 3)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('daejeon', 'ft_transformer', 'pure', 3)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_daejeon.loc[df_daejeon['year'].isin([2019, 2020]), df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, df_daejeon.columns != 'multi_class'], df_daejeon.loc[df_daejeon['year'].isin([2019, 2020]), 'multi_class'], df_daejeon.loc[df_daejeon['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "LightGBM.append(lgb_daejeon_3.predict_proba(X_val))\n", + "XGBoost.append(xgb_daejeon_3.predict_proba(X_val))\n", + "val.append(Y_val)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "model = [deepgbm, ft_transformer, resnet_like, XGBoost, LightGBM]\n", + "model_name = [\"deepgbm\", \"ft_transformer\", \"resnet_like\", \"XGBoost\", \"LightGBM\"]\n", + "voting = []\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy= []\n", + " for k in range(3):\n", + " result = []\n", + " result.append(model[i][k])\n", + " result.append(model[j][k])\n", + " \n", + " soft.append(calculate_csi(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[k],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy= []\n", + " for l in range(3):\n", + " result = []\n", + " result.append(model[i][l])\n", + " result.append(model[j][l])\n", + " result.append(model[k][l])\n", + "\n", + " soft.append(calculate_csi(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[l],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " for l in range(k+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy= []\n", + " for m in range(3):\n", + " result = []\n", + " result.append(model[i][m])\n", + " result.append(model[j][m])\n", + " result.append(model[k][m])\n", + " result.append(model[l][m])\n", + " \n", + " soft.append(calculate_csi(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[m],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " for l in range(k+1, len(model)):\n", + " for m in range(l+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy= []\n", + " for n in range(3):\n", + " result = []\n", + " result.append(model[i][n])\n", + " result.append(model[j][n])\n", + " result.append(model[k][n])\n", + " result.append(model[l][n])\n", + " result.append(model[m][n])\n", + "\n", + " soft.append(calculate_csi(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[n],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}+{model_name[m]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " # voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}+{model_name[m]}\"+\"_hard_voting\", np.mean(hard)))\n", + " \n", + "\n", + "\n", + "tm_df= pd.DataFrame(voting, columns=['model', 'CSI', 'MCC','Accuracy'])\n", + "tm_df['region'] = 'daejeon'\n", + "tm_df['data_sample'] = 'best'\n", + "\n", + "df = pd.concat([df, tm_df], axis=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **광주**" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.stats import mode # 최다 득표수 계산을 위한 mode 함수\n", + "\n", + "# 1 Fold\n", + "val_preds, y_val = get_proba('gwangju', 'deepgbm', 'pure', 1)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('gwangju', 'resnet_like', 'pure', 1)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('gwangju', 'ft_transformer', 'pure', 1)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju.loc[df_gwangju['year'].isin([2018, 2019]), df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'].isin([2018, 2019]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2020, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "LightGBM.append(lgb_gwangju_1.predict_proba(X_val))\n", + "XGBoost.append(xgb_gwangju_1.predict_proba(X_val))\n", + "\n", + "\n", + "\n", + "# 2 Fold\n", + "val_preds, y_val = get_proba('gwangju', 'deepgbm', 'pure', 2)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('gwangju', 'resnet_like', 'pure', 2)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('gwangju', 'ft_transformer', 'pure', 2)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju.loc[df_gwangju['year'].isin([2018, 2020]), df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'].isin([2018, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2019, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "LightGBM.append(lgb_gwangju_2.predict_proba(X_val))\n", + "XGBoost.append(xgb_gwangju_2.predict_proba(X_val))\n", + "\n", + "\n", + "# 3 Fold\n", + "val_preds, y_val = get_proba('gwangju', 'deepgbm', 'pure', 3)\n", + "deepgbm.append(val_preds)\n", + "val_preds, y_val = get_proba('gwangju', 'resnet_like', 'pure', 3)\n", + "resnet_like.append(val_preds)\n", + "val_preds, y_val = get_proba('gwangju', 'ft_transformer', 'pure', 3)\n", + "ft_transformer.append(val_preds)\n", + "\n", + "X_tr, X_val, Y_tr, Y_val = df_gwangju.loc[df_gwangju['year'].isin([2019, 2020]), df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, df_gwangju.columns != 'multi_class'], df_gwangju.loc[df_gwangju['year'].isin([2019, 2020]), 'multi_class'], df_gwangju.loc[df_gwangju['year'] == 2018, 'multi_class']\n", + "X_tr.drop(columns=['year'], inplace=True)\n", + "X_val.drop(columns=['year'], inplace=True)\n", + "\n", + "\n", + "LightGBM.append(lgb_gwangju_3.predict_proba(X_val))\n", + "XGBoost.append(xgb_gwangju_3.predict_proba(X_val))\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "model = [deepgbm, ft_transformer, resnet_like, XGBoost, LightGBM]\n", + "model_name = [\"deepgbm\", \"ft_transformer\", \"resnet_like\", \"XGBoost\", \"LightGBM\"]\n", + "voting = []\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " for k in range(3):\n", + " result = []\n", + " result.append(model[i][k])\n", + " result.append(model[j][k])\n", + " \n", + " soft.append(calculate_csi(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[k],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[k], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy = []\n", + " for l in range(3):\n", + " result = []\n", + " result.append(model[i][l])\n", + " result.append(model[j][l])\n", + " result.append(model[k][l])\n", + "\n", + " soft.append(calculate_csi(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[l],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[l], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " for l in range(k+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy = []\n", + " for m in range(3):\n", + " result = []\n", + " result.append(model[i][m])\n", + " result.append(model[j][m])\n", + " result.append(model[k][m])\n", + " result.append(model[l][m])\n", + " \n", + " soft.append(calculate_csi(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[m],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[m], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " #voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}\"+\"_hard_voting\", np.mean(hard)))\n", + "\n", + "\n", + "for i in range(len(model)-1):\n", + " for j in range(i+1, len(model)):\n", + " for k in range(j+1, len(model)):\n", + " for l in range(k+1, len(model)):\n", + " for m in range(l+1, len(model)):\n", + " soft = []\n", + " hard = []\n", + " mcc= []\n", + " accuracy = []\n", + " for n in range(3):\n", + " result = []\n", + " result.append(model[i][n])\n", + " result.append(model[j][n])\n", + " result.append(model[k][n])\n", + " result.append(model[l][n])\n", + " result.append(model[m][n])\n", + "\n", + " soft.append(calculate_csi(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " hard.append(calculate_csi(val[n],mode(np.argmax(result, axis=2), axis=0).mode[0]))\n", + " mcc.append(multiclass_mcc(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " accuracy.append(accuracy_score(val[n], np.argmax(np.mean(result, axis=0), axis=1)))\n", + " # 모델 조합과 함께 평균 CSI 저장\n", + " voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}+{model_name[m]}\", np.mean(soft), np.mean(mcc), np.mean(accuracy)))\n", + " # voting.append((f\"{model_name[i]}+{model_name[j]}+{model_name[k]}+{model_name[l]}+{model_name[m]}\"+\"_hard_voting\", np.mean(hard)))\n", + " \n", + "\n", + "\n", + "\n", + "tm_df= pd.DataFrame(voting, columns=['model', 'CSI', 'MCC','Accuracy'])\n", + "tm_df['region'] = 'gwangju'\n", + "tm_df['data_sample'] = 'best'\n", + "\n", + "df = pd.concat([df, tm_df], axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
modelCSIMCCAccuracyregiondata_sample
2deepgbm+XGBoost0.6574070.7732790.954158daejeonbest
3deepgbm+LightGBM0.6615430.7763460.955109daejeonbest
4ft_transformer+resnet_like0.5874780.7124930.944881daejeonbest
5ft_transformer+XGBoost0.5819130.7079800.943359daejeonbest
6ft_transformer+LightGBM0.5805330.7070990.943739daejeonbest
7resnet_like+XGBoost0.5621090.6925990.938989daejeonbest
8resnet_like+LightGBM0.5552710.6862530.938609daejeonbest
9XGBoost+LightGBM0.5288440.6634740.932714daejeonbest
10deepgbm+ft_transformer+resnet_like0.6606000.7743700.955334daejeonbest
11deepgbm+ft_transformer+XGBoost0.6495240.7651990.953663daejeonbest
12deepgbm+ft_transformer+LightGBM0.6556850.7699590.955032daejeonbest
13deepgbm+resnet_like+XGBoost0.6463770.7644360.952637daejeonbest
14deepgbm+resnet_like+LightGBM0.6441720.7623630.952752daejeonbest
15deepgbm+XGBoost+LightGBM0.6104940.7355160.947010daejeonbest
16ft_transformer+resnet_like+XGBoost0.5926720.7169510.945338daejeonbest
17ft_transformer+resnet_like+LightGBM0.5868500.7120670.944805daejeonbest
18ft_transformer+XGBoost+LightGBM0.5697750.6978540.940813daejeonbest
19resnet_like+XGBoost+LightGBM0.5568420.6879640.938342daejeonbest
20deepgbm+ft_transformer+resnet_like+XGBoost0.6464480.7628620.953283daejeonbest
21deepgbm+ft_transformer+resnet_like+LightGBM0.6432760.7603030.953017daejeonbest
22deepgbm+ft_transformer+XGBoost+LightGBM0.6268590.7470250.950128daejeonbest
23deepgbm+resnet_like+XGBoost+LightGBM0.6179900.7412690.948493daejeonbest
24ft_transformer+resnet_like+XGBoost+LightGBM0.5778770.7046850.942678daejeonbest
25deepgbm+ft_transformer+resnet_like+XGBoost+Lig...0.6251710.7454100.950090daejeonbest
0deepgbm+ft_transformer0.6798480.7672370.954138gwangjubest
1deepgbm+resnet_like0.6656800.7714600.954373gwangjubest
2deepgbm+XGBoost0.6574070.7719140.954319gwangjubest
3deepgbm+LightGBM0.6615430.7728010.954477gwangjubest
4ft_transformer+resnet_like0.5874780.7627500.952878gwangjubest
5ft_transformer+XGBoost0.5819130.7549250.951518gwangjubest
6ft_transformer+LightGBM0.5805330.7489470.950546gwangjubest
7resnet_like+XGBoost0.5621090.7426860.949262gwangjubest
8resnet_like+LightGBM0.5552710.7370430.948196gwangjubest
9XGBoost+LightGBM0.5288440.7303550.946789gwangjubest
10deepgbm+ft_transformer+resnet_like0.6606000.7743700.955334gwangjubest
11deepgbm+ft_transformer+XGBoost0.6495240.7651990.953663gwangjubest
12deepgbm+ft_transformer+LightGBM0.6556850.7699590.955032gwangjubest
13deepgbm+resnet_like+XGBoost0.6463770.7644360.952637gwangjubest
14deepgbm+resnet_like+LightGBM0.6441720.7623630.952752gwangjubest
15deepgbm+XGBoost+LightGBM0.6104940.7355160.947010gwangjubest
16ft_transformer+resnet_like+XGBoost0.5926720.7169510.945338gwangjubest
17ft_transformer+resnet_like+LightGBM0.5868500.7120670.944805gwangjubest
18ft_transformer+XGBoost+LightGBM0.5697750.6978540.940813gwangjubest
19resnet_like+XGBoost+LightGBM0.5568420.6879640.938342gwangjubest
20deepgbm+ft_transformer+resnet_like+XGBoost0.6464480.7628620.953283gwangjubest
21deepgbm+ft_transformer+resnet_like+LightGBM0.6432760.7603030.953017gwangjubest
22deepgbm+ft_transformer+XGBoost+LightGBM0.6268590.7470250.950128gwangjubest
23deepgbm+resnet_like+XGBoost+LightGBM0.6179900.7412690.948493gwangjubest
24ft_transformer+resnet_like+XGBoost+LightGBM0.5778770.7046850.942678gwangjubest
25deepgbm+ft_transformer+resnet_like+XGBoost+Lig...0.6251710.7454100.950090gwangjubest
\n", + "
" + ], + "text/plain": [ + " model CSI MCC \\\n", + "2 deepgbm+XGBoost 0.657407 0.773279 \n", + "3 deepgbm+LightGBM 0.661543 0.776346 \n", + "4 ft_transformer+resnet_like 0.587478 0.712493 \n", + "5 ft_transformer+XGBoost 0.581913 0.707980 \n", + "6 ft_transformer+LightGBM 0.580533 0.707099 \n", + "7 resnet_like+XGBoost 0.562109 0.692599 \n", + "8 resnet_like+LightGBM 0.555271 0.686253 \n", + "9 XGBoost+LightGBM 0.528844 0.663474 \n", + "10 deepgbm+ft_transformer+resnet_like 0.660600 0.774370 \n", + "11 deepgbm+ft_transformer+XGBoost 0.649524 0.765199 \n", + "12 deepgbm+ft_transformer+LightGBM 0.655685 0.769959 \n", + "13 deepgbm+resnet_like+XGBoost 0.646377 0.764436 \n", + "14 deepgbm+resnet_like+LightGBM 0.644172 0.762363 \n", + "15 deepgbm+XGBoost+LightGBM 0.610494 0.735516 \n", + "16 ft_transformer+resnet_like+XGBoost 0.592672 0.716951 \n", + "17 ft_transformer+resnet_like+LightGBM 0.586850 0.712067 \n", + "18 ft_transformer+XGBoost+LightGBM 0.569775 0.697854 \n", + "19 resnet_like+XGBoost+LightGBM 0.556842 0.687964 \n", + "20 deepgbm+ft_transformer+resnet_like+XGBoost 0.646448 0.762862 \n", + "21 deepgbm+ft_transformer+resnet_like+LightGBM 0.643276 0.760303 \n", + "22 deepgbm+ft_transformer+XGBoost+LightGBM 0.626859 0.747025 \n", + "23 deepgbm+resnet_like+XGBoost+LightGBM 0.617990 0.741269 \n", + "24 ft_transformer+resnet_like+XGBoost+LightGBM 0.577877 0.704685 \n", + "25 deepgbm+ft_transformer+resnet_like+XGBoost+Lig... 0.625171 0.745410 \n", + "0 deepgbm+ft_transformer 0.679848 0.767237 \n", + "1 deepgbm+resnet_like 0.665680 0.771460 \n", + "2 deepgbm+XGBoost 0.657407 0.771914 \n", + "3 deepgbm+LightGBM 0.661543 0.772801 \n", + "4 ft_transformer+resnet_like 0.587478 0.762750 \n", + "5 ft_transformer+XGBoost 0.581913 0.754925 \n", + "6 ft_transformer+LightGBM 0.580533 0.748947 \n", + "7 resnet_like+XGBoost 0.562109 0.742686 \n", + "8 resnet_like+LightGBM 0.555271 0.737043 \n", + "9 XGBoost+LightGBM 0.528844 0.730355 \n", + "10 deepgbm+ft_transformer+resnet_like 0.660600 0.774370 \n", + "11 deepgbm+ft_transformer+XGBoost 0.649524 0.765199 \n", + "12 deepgbm+ft_transformer+LightGBM 0.655685 0.769959 \n", + "13 deepgbm+resnet_like+XGBoost 0.646377 0.764436 \n", + "14 deepgbm+resnet_like+LightGBM 0.644172 0.762363 \n", + "15 deepgbm+XGBoost+LightGBM 0.610494 0.735516 \n", + "16 ft_transformer+resnet_like+XGBoost 0.592672 0.716951 \n", + "17 ft_transformer+resnet_like+LightGBM 0.586850 0.712067 \n", + "18 ft_transformer+XGBoost+LightGBM 0.569775 0.697854 \n", + "19 resnet_like+XGBoost+LightGBM 0.556842 0.687964 \n", + "20 deepgbm+ft_transformer+resnet_like+XGBoost 0.646448 0.762862 \n", + "21 deepgbm+ft_transformer+resnet_like+LightGBM 0.643276 0.760303 \n", + "22 deepgbm+ft_transformer+XGBoost+LightGBM 0.626859 0.747025 \n", + "23 deepgbm+resnet_like+XGBoost+LightGBM 0.617990 0.741269 \n", + "24 ft_transformer+resnet_like+XGBoost+LightGBM 0.577877 0.704685 \n", + "25 deepgbm+ft_transformer+resnet_like+XGBoost+Lig... 0.625171 0.745410 \n", + "\n", + " Accuracy region data_sample \n", + "2 0.954158 daejeon best \n", + "3 0.955109 daejeon best \n", + "4 0.944881 daejeon best \n", + "5 0.943359 daejeon best \n", + "6 0.943739 daejeon best \n", + "7 0.938989 daejeon best \n", + "8 0.938609 daejeon best \n", + "9 0.932714 daejeon best \n", + "10 0.955334 daejeon best \n", + "11 0.953663 daejeon best \n", + "12 0.955032 daejeon best \n", + "13 0.952637 daejeon best \n", + "14 0.952752 daejeon best \n", + "15 0.947010 daejeon best \n", + "16 0.945338 daejeon best \n", + "17 0.944805 daejeon best \n", + "18 0.940813 daejeon best \n", + "19 0.938342 daejeon best \n", + "20 0.953283 daejeon best \n", + "21 0.953017 daejeon best \n", + "22 0.950128 daejeon best \n", + "23 0.948493 daejeon best \n", + "24 0.942678 daejeon best \n", + "25 0.950090 daejeon best \n", + "0 0.954138 gwangju best \n", + "1 0.954373 gwangju best \n", + "2 0.954319 gwangju best \n", + "3 0.954477 gwangju best \n", + "4 0.952878 gwangju best \n", + "5 0.951518 gwangju best \n", + "6 0.950546 gwangju best \n", + "7 0.949262 gwangju best \n", + "8 0.948196 gwangju best \n", + "9 0.946789 gwangju best \n", + "10 0.955334 gwangju best \n", + "11 0.953663 gwangju best \n", + "12 0.955032 gwangju best \n", + "13 0.952637 gwangju best \n", + "14 0.952752 gwangju best \n", + "15 0.947010 gwangju best \n", + "16 0.945338 gwangju best \n", + "17 0.944805 gwangju best \n", + "18 0.940813 gwangju best \n", + "19 0.938342 gwangju best \n", + "20 0.953283 gwangju best \n", + "21 0.953017 gwangju best \n", + "22 0.950128 gwangju best \n", + "23 0.948493 gwangju best \n", + "24 0.942678 gwangju best \n", + "25 0.950090 gwangju best " + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.tail(50)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "df.to_csv(\"../model_result/best_sample/ensemble_best_sample.csv\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Analysis_code/models/__init__.py b/Analysis_code/models/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..77c997a6b97a317d3fe276cb22b9ea24b6ab6b2b --- /dev/null +++ b/Analysis_code/models/__init__.py @@ -0,0 +1,10 @@ +""" +모델 정의 패키지 +""" + +from .ft_transformer import FTTransformer +from .deepgbm import DeepGBM +from .resnet_like import ResNetLike + +__all__ = ['FTTransformer', 'DeepGBM', 'ResNetLike'] + diff --git a/Analysis_code/models/deepgbm.py b/Analysis_code/models/deepgbm.py new file mode 100644 index 0000000000000000000000000000000000000000..8f40df47cc0b8f2ac8f062ea6196e489579d7fd3 --- /dev/null +++ b/Analysis_code/models/deepgbm.py @@ -0,0 +1,49 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F +import warnings +warnings.filterwarnings('ignore') +class DeepGBM(nn.Module): + def __init__(self, num_features, cat_features, d_main=128, d_hidden=64, n_blocks=4, dropout=0.2, num_classes=2): + super(DeepGBM, self).__init__() + + self.num_classes = num_classes + + # 연속형 변수 처리 (Linear) + self.num_linear = nn.Linear(num_features, d_main) + + # 범주형 변수 처리 (Embedding) + self.cat_embedding = nn.ModuleList([ + nn.Embedding(cat_size, d_main) for cat_size in cat_features + ]) + + # ResNet-like 블록 + self.blocks = nn.ModuleList([ + nn.Sequential( + nn.Linear(d_main, d_hidden), + nn.ReLU(), + nn.Dropout(dropout), + nn.Linear(d_hidden, d_main), + nn.ReLU() + ) for _ in range(n_blocks) + ]) + + if num_classes == 2: + self.output_layer = nn.Linear(d_main, 1) # Binary classification + elif num_classes > 2: + self.output_layer = nn.Linear(d_main, num_classes) # Multi classification + + def forward(self, x_num, x_cat): # 두 개의 입력을 받음 + x_num = self.num_linear(x_num) + + # 범주형 변수를 임베딩 후 합산 + x_cat = [embed(x_cat[:, i]) for i, embed in enumerate(self.cat_embedding)] + x_cat = torch.stack(x_cat, dim=1).sum(dim=1) + x = x_num + x_cat # 연속형 + 범주형 결합 + + for block in self.blocks: + x = x + block(x) # Residual connection + x = self.output_layer(x) + + return x + diff --git a/Analysis_code/models/ft_transformer.py b/Analysis_code/models/ft_transformer.py new file mode 100644 index 0000000000000000000000000000000000000000..28dde6272245bb8ae3c30dffec5b7351a0c82aa2 --- /dev/null +++ b/Analysis_code/models/ft_transformer.py @@ -0,0 +1,58 @@ +import torch +import torch.nn as nn +import warnings +warnings.filterwarnings('ignore') +# FT-Transformer Implementation +class FTTransformer(nn.Module): + def __init__(self, num_features, cat_cardinalities, d_token=192, n_blocks=6, n_heads=8, attention_dropout=0.2, ffn_dropout=0.2, num_classes=2): + super(FTTransformer, self).__init__() + + self.num_classes = num_classes # 클래스 개수 저장 + + # Embedding layers for categorical features + self.cat_embeddings = nn.ModuleList([ + nn.Embedding(num_categories, d_token) for num_categories in cat_cardinalities + ]) + + # Linear layer for numerical features + self.num_linear = nn.Linear(num_features, d_token) + + # Transformer blocks + self.transformer_blocks = nn.ModuleList([ + nn.TransformerEncoderLayer( + d_model=d_token, + nhead=n_heads, + dim_feedforward=4 * d_token, + dropout=attention_dropout, + activation='gelu' + ) for _ in range(n_blocks) + ]) + + self.ffn_dropout = nn.Dropout(ffn_dropout) + if num_classes == 2: + self.output_layer = nn.Linear(d_token, 1) # Binary classification + elif num_classes > 2: + self.output_layer = nn.Linear(d_token, num_classes) # Multi classification + + def forward(self, x_num, x_cat): + # Numerical feature embedding + x_num = self.num_linear(x_num) + + # Categorical feature embedding + x_cat = [embed(x_cat[:, i]) for i, embed in enumerate(self.cat_embeddings)] + x_cat = torch.stack(x_cat, dim=1) + + # Combine numerical and categorical embeddings + x = x_num.unsqueeze(1) + x_cat + + # Pass through transformer blocks + for block in self.transformer_blocks: + x = block(x) + + # Pooling and output + x = x.mean(dim=1) + x = self.ffn_dropout(x) + x = self.output_layer(x) + + return x + diff --git a/Analysis_code/models/resnet_like.py b/Analysis_code/models/resnet_like.py new file mode 100644 index 0000000000000000000000000000000000000000..600f89556758decd43bdf0d1ec8cccec9754a10b --- /dev/null +++ b/Analysis_code/models/resnet_like.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F +import warnings +warnings.filterwarnings('ignore') +# ResNet-like Implementation +class ResNetLike(nn.Module): + def __init__(self, input_dim, d_main=128, d_hidden=64, n_blocks=4, dropout_first=0.25, dropout_second=0.0, num_classes=2): + super(ResNetLike, self).__init__() + + self.num_classes = num_classes # 클래스 개수 저장 + + # Input layer + self.input_layer = nn.Linear(input_dim, d_main) + + # Residual blocks + self.blocks = nn.ModuleList([ + nn.Sequential( + nn.Linear(d_main, d_hidden), + nn.ReLU(), + nn.Dropout(dropout_first), + nn.Linear(d_hidden, d_main), + nn.Dropout(dropout_second) + ) for _ in range(n_blocks) + ]) + + if num_classes == 2: + self.output_layer = nn.Linear(d_main, 1) # Binary classification + elif num_classes > 2: + self.output_layer = nn.Linear(d_main, num_classes) # Multi classification + + def forward(self, x_num, x_cat): # 두 개의 입력을 받음 + x = torch.cat([x_num, x_cat], dim=1) # 두 개를 하나로 합쳐서 모델에 전달 + x = F.relu(self.input_layer(x)) + + for block in self.blocks: + x = x + block(x) # Residual connection + x = self.output_layer(x) + + return x + diff --git a/Analysis_code/visualization/model_visualize.ipynb b/Analysis_code/visualization/model_visualize.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..c340b733a91b3f52f4d1b39a8d665d20a05fb1d0 --- /dev/null +++ b/Analysis_code/visualization/model_visualize.ipynb @@ -0,0 +1,2418 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using device: cpu\n" + ] + } + ], + "source": [ + "import torch\n", + "device = torch.device(\"cuda:1\" if torch.cuda.is_available() else \"cpu\")\n", + "print(f\"Using device: {device}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd \n", + "import numpy as np \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "a= pd.read_csv(\"./model_result/deepgbm_sampled_data_test.csv\")\n", + "b= pd.read_csv(\"./model_result/ft_transformer_sampled_data_test.csv\")\n", + "c= pd.read_csv(\"./model_result/lightgbm_sampled_data_test.csv\")\n", + "d= pd.read_csv(\"./model_result/xgboost_sampled_data_test.csv\")\n", + "e= pd.read_csv(\"./model_result/resnet_like_sampled_data_test.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "models= pd.concat([a,b,c,d,e], axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "region\n", + "seoul 25\n", + "busan 25\n", + "incheon 25\n", + "daegu 25\n", + "daejeon 25\n", + "gwangju 25\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "models['region'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "data_sample\n", + "pure 30\n", + "smote 30\n", + "ctgan20000 30\n", + "ctgan10000 30\n", + "ctgan7000 30\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "models['data_sample'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "model\n", + "deepgbm 30\n", + "ft_transformer 30\n", + "LightGBM 30\n", + "XGBoost 30\n", + "resnet_like 30\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "models['model'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "import warnings\n", + "warnings.filterwarnings('ignore')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "models['model_data'] = models['model'] + '_' + models['data_sample']" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
regionmodeldata_sampleCSIMCCAccuracymodel_data
0seouldeepgbmpure0.6442510.7660970.957526deepgbm_pure
1busandeepgbmpure0.6818640.8049990.974908deepgbm_pure
2incheondeepgbmpure0.5671290.6887070.909057deepgbm_pure
3daegudeepgbmpure0.5768400.7158560.975236deepgbm_pure
4daejeondeepgbmpure0.6879670.7976280.957317deepgbm_pure
........................
25busanresnet_likectgan70000.4605070.6382400.947905resnet_like_ctgan7000
26incheonresnet_likectgan70000.5343320.6644530.899439resnet_like_ctgan7000
27daeguresnet_likectgan70000.4453010.6174980.967371resnet_like_ctgan7000
28daejeonresnet_likectgan70000.5092620.6496900.918171resnet_like_ctgan7000
29gwangjuresnet_likectgan70000.4927020.6375370.927253resnet_like_ctgan7000
\n", + "

150 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " region model data_sample CSI MCC Accuracy \\\n", + "0 seoul deepgbm pure 0.644251 0.766097 0.957526 \n", + "1 busan deepgbm pure 0.681864 0.804999 0.974908 \n", + "2 incheon deepgbm pure 0.567129 0.688707 0.909057 \n", + "3 daegu deepgbm pure 0.576840 0.715856 0.975236 \n", + "4 daejeon deepgbm pure 0.687967 0.797628 0.957317 \n", + ".. ... ... ... ... ... ... \n", + "25 busan resnet_like ctgan7000 0.460507 0.638240 0.947905 \n", + "26 incheon resnet_like ctgan7000 0.534332 0.664453 0.899439 \n", + "27 daegu resnet_like ctgan7000 0.445301 0.617498 0.967371 \n", + "28 daejeon resnet_like ctgan7000 0.509262 0.649690 0.918171 \n", + "29 gwangju resnet_like ctgan7000 0.492702 0.637537 0.927253 \n", + "\n", + " model_data \n", + "0 deepgbm_pure \n", + "1 deepgbm_pure \n", + "2 deepgbm_pure \n", + "3 deepgbm_pure \n", + "4 deepgbm_pure \n", + ".. ... \n", + "25 resnet_like_ctgan7000 \n", + "26 resnet_like_ctgan7000 \n", + "27 resnet_like_ctgan7000 \n", + "28 resnet_like_ctgan7000 \n", + "29 resnet_like_ctgan7000 \n", + "\n", + "[150 rows x 7 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "models" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **단일 모델 성능 비교 by 원데이터**" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# plt.figure(figsize=(20, 10))\n", + "# sns.barplot(x='region', y='CSI', hue='model', data=models.loc[models['data_sample']=='pure',:], ci=None)\n", + "# plt.title('Single Model Using Pure', fontsize=15, fontweight='bold') # 제목 볼드 및 크기 조정\n", + "# plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left')\n", + "# plt.ylabel('csi', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "# plt.xlabel('', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "# plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **증강데이터에 대한 각 모델별 성능 확인**" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def model_filter(model_name, df):\n", + " return df.loc[df['model'].str.contains(model_name), :]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **증강데이터에 따른 XGBoost 모델 성능 비교**" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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IioCLu1FRERERERE5U6hUOCrr75CeHg4zMzMyns4REREREQqnJFCREREREREZWbhwoVo0aIFjh8/jps3b+Kff/5BcnIytLS0UKFCBdSsWRMeHh4YOHAgXFxcynu4REREREQSCkEQhPIeBBERERERERERERER0YeIM1JKIDc3F4mJiTA2NoZCoSjv4RARERERERERUTkRBAEZGRmwtraGhgZX0Sci+jdiIKUEEhMTYWNjU97DICIiIiIiIiKiD8T9+/dRrVq18h4GERGVAQZSSsDY2BjA21+QJiYm5TwaIiIiIiIiIiIqL+np6bCxsVFdLyIion8fBlJKQLmcl4mJCQMpRERERERERETE5d+JiP7FuHAjERERERERERERERGRGgykEBERERERERERERERqcFAChERERERERERERERkRoMpBAREREREREREREREanBQAoREREREREREREREZEaDKQQERERERERERERERGpwUAKERERERERERERERGRGlrlPQAiIiIiIiIiIiL698rKykJOTk55D4OICACgoaEBbW1tKBSKIrdhIIWIiIiIiIiIiIhKXXp6OpKTk5GZmVneQyEiEtHU1ISBgQEqVaoEHR2dQuszkEJERERERERERESlKj09HQ8fPoSRkREsLCyKffc3EVFZEAQBOTk5ePXqFZ49e4Z79+6hWrVqMDAwKLAdAylERERERERERERUqpKTk2FkZIRq1aoxgEJEHxwjIyOYm5sjPj4eycnJsLW1LbD+R5tsftu2bWjYsCH09fVhbm6OXr164c6dO4W2u3v3Lnx8fFClShXo6OigcuXK6Ny5M549e/YeRk1ERERERERERPTvlpWVhczMTJiamjKIQkQfLE1NTZibm+PFixfIzs4usO5HOSNl3bp1GDZsGADAwcEBKSkpCAoKQnh4OK5evQorKyvZdrdv30azZs2QkpICAwMD1KpVC2/evMHRo0eRkZEBU1PT93kYRERERERERERE/zrKxPLa2trlPBIiooLp6uoCALKzs6GlpT5c8tHNSHnz5g2mTp0KAOjZsyfi4uJw48YNGBsb48mTJ/jll1/Utv3222+RkpKC1q1b4+HDh7h69Spu3LiBZ8+eqQ2+EBERERERERERUfFxNgoRfeiK+jn10QVSoqKikJycDOBtIAUArK2t0bRpUwDA4cOHZds9ffoU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iZkzZ6J27dqyY/b19YWzszMWLFigmvXj7u6OKVOmoEuXLsV4lopOIZRGVp3/mPT0dJiamuLZs2elkrSm0eRNpTCqkvm5V6ty23fd0M7ltm/jZgPKbd9dbuwrt31HjI0ovBIRlRv+Pnj/+PuAiIiIiN5VaV8n+jd4/fo17t69CwcHB+jp6ZX3cIjKzahRo7BmzRps27ZNFRijD0tRP6+YI4WIiIiIiIiIiIiIqARSU1NFeW2Utm/fjrVr18LMzKzMZknQ+8OlvYiIiIiIiAjBkQnltu9OTWzLbd9ERERE7+L27dvw8PBA/fr14ejoCAC4ceMGbt26BU1NTaxZswaGhoblPEp6VwykEBEREREREREREdFHJzk5GZMmTSpS3Zo1a2Lq1KmlPgZHR0d88803OHHiBE6ePIkXL17AwsICPXr0wKRJk+Dh4VHq+6T3j4EUIiIiIiIiIiIiIvroPH/+HBs3bixSXS8vrzIJpFSqVAnLly8v9X7pw8JAChERERERERERERF9dOzt7SEIQnkPg/4DmGyeiIiIiIiIiIiIiIhIDQZSiIiIiIiIiIiIiIiI1GAghYiIiIiIiIiIiIiISA0GUoiIiIiIiIiIiIiIiNRgIIWIiIiIiIiIiIiIiEgNrfIeABERERERERHRhyA4MqHc9t2piW257ZuIiIgKxhkpREREREREREREREREajCQQkREREREREREREREpAYDKURERERERERERERERGowkEJERERERERERERUhjZt2gSFQoF69eohKytLts758+ehqakJCwsLJCUlibYJgoCgoCD06dMH9vb2MDAwgL6+Puzt7dG9e3cEBAQgPT1d0qePjw8UCoXkYWpqiqZNm8Lf3x/Z2dllcsxU/pKTk7Fu3TqMGDECbm5u0NLSgkKhQGBgYKFt//rrL3zxxRewtLSEvr4+6tWrhyVLliA3N1dtm6dPn2LcuHGws7ODrq4u7OzsMH78eKSlpaltk5OTg8WLF6NevXrQ19eHpaUlevfujRs3bhQ4vgMHDsDLywsmJiYwMTFBq1atcOjQoUKPq6Q+2mTz27Ztw/z583Hjxg3o6+ujTZs2mDdvHpycnNS28fHxwcaNGyXlVatWxYMHD8pyuERERERERIVqNHlTue37516tym3fRERE/3YDBw7E5s2bcezYMcyfPx/Tp08Xbc/KysLw4cOR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5Yr9hw0blnXWWScTJkzI+PHjM2/evHTq1Cn7779/TjrppGy99dYV+1955ZU5+eSTc+edd+Yvf/lLFi5cmA8//LDGQUqS/Pa3v82AAQNy6aWXZtKkSZk4cWI6dOiQHXfcMYcffnjFvksWfr/xxhtz/fXX58MPP8zOO+9cHpnTp0+fPPDAA/nhD3+YcePG5fnnn0+vXr0yevTovPHGG7nkkkvStm3bimP+7ne/S8+ePXPVVVfl7rvvTuvWrTNgwID8/Oc/z9VXX13j81mehx9+uNq2F198sTytW5MmTaqV77DDDpk0aVLOOOOM3HvvvZk8eXLWX3/9nHLKKTnhhBPK67ksrV27dpk4cWLOPPPM/POf/8yoUaPSsWPHHH/88TnrrLOqjeZJknr16uXvf/97LrzwwvzhD3/ILbfckubNm2fIkCE566yzsvHGGy/znE488cR07949v/rVr8qjfrbeeuuceuqp2XPPPWvy3/OJVZVWxqo6XzBz5sxJ69at884776yURWu+qD8kbnr7HrXWdssdDq61tveccmOttT3huAkfvxNQazwPVj/PA+CzxrNg9TO112eP+2D18zPRilnZfyf6PPjf//6XadOmZb311lvmH2nhi+KYY47J5Zdfnuuuu64cjPHZ8km/XxmRAgAAALWg70V9a61toToArBxvvvlm5syZU7H4epJcf/31ufLKK7PGGmusslESrD6CFAAAAAAA+BSeffbZ9OnTJ5tvvnm6deuWJJkyZUqmTp2a+vXr5/LLL0/z5s1ruZesKEEKAAAAAAB1zuzZs3PyySd/on179uyZ4cOHr/Q+dOvWLccee2zuueeejB07NvPmzUu7du0yePDgnHzyyenTp89Kb5PVT5ACAAAAAECd8+677+baa6/9RPvuvPPOqyRI6dChQy6++OKVflw+WwQpAAAAfGG9dde5td0FAOBT6tq1a0qlUm13gy+AerXdAQAAAAAAgM8qQQoAAAAAAEABQQoAAAAAAEABQQoAAAAAAEABQQoAAAAAAEABQQoAAAAAAEABQQoAAAAAAEABQQoAAAAAAEABQQoAAAAAAEABQQoAAAAAAEABQQoAAAAAwCr0xz/+MVVVVdlss82yYMGCZe7z0EMPpX79+mnXrl1ef/31irJSqZSRI0dm//33T9euXdOsWbM0bdo0Xbt2zb777psrrrgic+bMqXbMQw89NFVVVdU+Wrdune233z4XXXRRPvzww1VyztS+rl27LvPrv/RHt27dlln3qaeeyn777Zf27dunadOm2WyzzXLBBRdk0aJFhe299dZbOeGEE9KlS5c0btw4Xbp0yfe+9728/fbbhXUWLlyY3/zmN9lss83StGnTtG/fPl//+tczZcqUFT39lapBbXcAAAAAAPhi6XtR39ruwicy4bgJK+U43/rWt/KnP/0pd911V84999z84Ac/qChfsGBBvv3tb2fRokU577zz0r59+3LZjBkzMnjw4Dz88MOpqqrKFltska233jr169fPf/7zn9x222258cYbM3z48EyYMCE9e/as1n7fvn3TvXv3JMmHH36Yl19+OQ888EAefvjh3Hbbbbn11ltTVVW1Us51VXjppZey3nrrZeedd8699967WtuuqqpKly5d8tJLL63WdleGoUOHZvbs2cssu++++/LSSy+lX79+1coefPDB9O/fP++//3623XbbdO3aNePGjcuJJ56YBx54INdff32162X27Nnp06dPnn/++XTr1i377rtvnnrqqVx44YW57bbb8uCDD6ZNmzYVdRYtWpT99tsvo0aNyhprrJE99tgjs2fPzg033JBbb701Y8eOzbbbbrvy/kNWgCAFAAAAAGAVu/zyy7PpppvmZz/7Wb7+9a+nR48e5bJzzjknTz75ZAYMGJBDDjmkvH3OnDnZeeed8/zzz2f33XfPRRddVG0EwbvvvpurrroqP/vZzwr/aH7kkUfm0EMPrdj2yCOPZKeddsptt92WUaNGZfDgwSvvZPlM+PWvf73M7YsWLco666yTJDn44IMryhYsWJCDDjoo77//fs4///yceOKJSRZfZ1/+8pfz97//Pbvvvnu16+l73/tenn/++QwePDjXX399GjRYHD0cf/zxueiiizJs2LBcc801FXX+8Ic/ZNSoUenRo0fGjx+fjh07JklGjhyZoUOH5qCDDsqUKVPKx6pNpvYCAAAAAFjFunXrlrPOOiv/+9//ctRRR5W3T506NT/72c/StGnTXHbZZRV1Tj311Dz//PP5yle+kptuummZ0zC1aNEiJ5xwQp544onCaZqWZeutt87QoUOTJOPGjfuUZ0VddPfdd2fmzJn50pe+lN12262ibNSoUZk2bVq22GKLcoiSLL7OLr744iTJeeedV1Fn5syZ+etf/5pGjRrl0ksvrQg+fvWrX6V9+/YZMWJEZs2aVVHv/PPPT5Kce+655RAlSYYMGZK99947zz//fG688caVc9IrSJACAAAAALAanHjiidlyyy1z77335qqrrkqpVMpRRx2V+fPn58wzz8z6669f3nf27Nm55pprUlVVld/+9repX7/+co+91lprpVOnTjXqT4cOHZJkmeukfPjhh7nooouy1VZbpUWLFmnRokW23Xbb/O53v8vChQuXebw33ngjp5xySnr06JEmTZqkTZs2GTRoUO64445l7v/yyy/n//2//5cNNtggzZo1S5s2bbLJJpvk6KOPztSpU5MkZ555ZtZbb70ki6ejWnp9j4+OiqiJMWPGZO+9907Hjh3TuHHjrLvuutlzzz0zcuTIJCn/3y/p59Lt7rLLLhXHevzxx7PXXntljTXWSMuWLbPTTjvlzjvvzL333rvMfs6cOTPnnntudt5553zpS19Ko0aNstZaa2Xw4MGZNGnSMvu7ZL2TJLnyyiuz+eabp2nTpllrrbVy9NFHL3cdko8aMWJEkuTAAw9MvXqVEcGtt96aJOWQbWm9e/dOt27d8uSTT1ZMdTZmzJgsWrQo/fr1qwhEkqRx48bZa6+9snDhwowePbq8fdq0aZkyZUqaNm2aPfbYo1pbS9q/+eabP/F5rUq1PyYGAAAAAOALoEGDBrniiiuy3Xbb5ZRTTsmMGTMybty49OrVK8OGDavYd+zYsZk/f3622mqrbLDBBqukP4888kiSZKONNqrYvnDhwuyzzz4ZPXp0WrVqlYEDB6ZUKuWee+7Jd77zndx555254YYbKv4I/+qrr2annXbKiy++mM6dO2fffffN66+/nrvuuiu33357xTRRSfLKK6+kd+/eefPNN9OjR4/svvvuWbhwYV5++eVcccUV6dOnTzbccMP06tUrQ4YMyciRI9OxY8cMGjSofIwdd9zxU533SSedlPPPPz/16tVLnz590rlz58yYMSMTJkzIf/7znwwZMiTdu3fPIYcckmuvvTbNmzevCBaWXofmwQcfzIABA/Lee+9l8803z8Ybb5wXXnghgwYNyrHHHrvM9m+88cZ8//vfz4YbbpjNN988rVq1ynPPPZdRo0bllltuyS233JIvf/nLy6x76qmn5sILL8wuu+yS7t27Z8KECfn973+fKVOmlIOm5Xn//fczatSoJMk3v/nNauWTJ09Osjg0WZbevXvnxRdfzOOPP56uXbt+4jp/+MMf8vjjj1drZ9NNN03Dhg2XWSdJRZ3aJEgBqEXTf7JZrbXdcoeDP36nVWTNAafWWtsAAABQm7baaqt873vfy3nnnZcf//jHqV+/fq644opq60As+UPzlltuuVLb//DDDzN9+vRcfPHFue+++7LuuutWWyfjggsuyOjRo7PJJpvk7rvvLo8ymDlzZnbdddeMGjUql156ab773e+W6xxzzDF58cUXc+CBB+bqq69Oo0aNkiT3339/vvKVr+SUU07Jrrvuml69eiVZPKrizTffzHe/+91cdNFFFe1Pnz49CxYsSJLsu+++6dWrV0aOHJmePXtWW2ejpkaMGJHzzz8/nTp1yq233lruT7I4ZLj//vuTLA5pdtxxx1x77bVp167dMttdtGhRDj300Lz33nv5+c9/ntNPP71cdtVVV+XII49cZh/69u2bJ598MptssknF9ttvvz177713vvOd7+S5555bZijypz/9KY8//ng23HDDJP+3yPv48eMzduzYalN1fdQ///nPzJ07N5tvvnk233zzauXTp09PkvIaKh+1ZPvLL7+82uvUJlN7AQAAAACsRsOGDSv/kfyQQw7J1ltvXW2fN954I0nSrl27ZR7jV7/6VQ499NCKjyuvvHKZ+x522GHlaakaNmyY9ddfP7/5zW9y4IEH5sEHH0yrVq0q9v/tb3+bZPEaFktP1bT22mvnV7/6VZLkwgsvLG9/8cUXc8stt6RFixa56KKLyiFKsjiQOOaYY7Jw4cJccskl5e2vv/56kmTAgAHV+tu5c+eKac5WprPPPjvJ4nNbOkRJkqZNm2bgwIGf+Fj33HNPnn322fTo0SPDhw+vKDviiCPSt2/fZdbbbLPNqoUoSfKVr3wl++23X1544YU8+eSTy6z705/+tByiJIuvj2OOOSbJJ1vr5k9/+lOS6ovML/Huu+8mSZo1a7bM8ubNmydJ5s6du9rr1CYjUgAAAAAAVqMzzjgjpVIpyeJRCHPnzk3Lli1rdIzbb789d999d7XtyxoF0bdv33Tv3j1JUiqV8t///jePPPJI/va3v2XNNdfMhRdeWF6DZfr06Zk+fXrat2+/zOml9txzz6yxxhp5/vnn89///jdrrbVWeRTHoEGD0qZNm2p1Dj744Jx//vkZP358edtWW22VJDn99NNTv379DBgwIE2aNKnR/0FNzZgxI1OmTMkaa6yRr3/96yt8vAkTJiRZvDj6R9caSZL999+/vM9HzZ8/P2PGjMnEiRPz+uuv54MPPkiSPPHEE0mS5557LpttVn0mk2V9TZZM/TZz5szl9nfWrFm58847U69evRx44IHL3ZdKghTgC2/0w9Nrre1Na61lAAAAoDaMGzcuV111VdZee+1st912+ec//5kf/OAH5VEgS7Rt2zbJ4qmbluWuu+4qf37dddflgAMOKGzzyCOPrLbg+dy5c/ONb3wjl1xySdq0aZOf/OQnSRaHDUnSpUuXZR6rqqoqXbp0ydtvv51XX301a621VrnOkjUzPmrJ9ldffbW87dBDD80dd9yRv/3tb9lrr73SpEmTbLPNNhk0aFAOP/zwrLXWWoXn82m98sorSZJu3bp97Foin8SS4GLdddddZnnnzp2Xuf2JJ57I3nvvXbFg+0cVjcRY1lRYS0K4+fPnL6+7ue666/Lhhx9m4MCB6dSp0zL3adGiRd5666289957yyyfN29eRZtL6iRZ5XVqk6m9AAAAAABWg/nz5+eoo45KqVTKRRddlMsuuyxrrrlmLrnkkkyaNKli3y222CJJ8uijj66SvrRs2TLnnntuklRbo+Tj1DSEWNb+9evXz/XXX59///vfOeOMM7LNNtvk4Ycfzg9+8INssMEGeeCBB2rURl1RKpXy9a9/PS+99FKOOeaYPPbYY5kzZ04WLVqUUqmU0047rbzfsixr5MsnNWLEiCTLXmR+iSXhz3/+859lli/ZvnTQtrrq1CZBCgAAAADAavCzn/0sU6dOzd57750hQ4akY8eOOffcc7No0aJ8+9vfzocffljed9ddd03jxo3z73//O88999wq6c96662XJHn77bfLa5YsGamwvEW+l5R96Utf+kR1loy8WLL/0rbccsuceeaZGTduXF5//fWceOKJmTt3br73ve/V/IQ+xpKRIy+++GJhUFETa6+9dpL/G+nyUcva/swzz+SZZ57J1ltvnd/97nfZYost0rJly3LY9OKLL65wv5bl2WefzaRJk9KsWbMMHjy4cL8lAd6///3vZZYv2b70QvUrUufJJ5/MggULPlGd2mRqLwBWu74XLXuxtdVhwnHLnpsUoDanetx9u2UP+QcA4PPjySefzDnnnJOWLVtWLLp+xBFH5I9//GPGjx+f3/zmNznllFOSLF5E/NBDD83ll1+e4447Lrfeemt5HZOVZckf7auqqsqLfnfu3DmdO3fO9OnTc/fdd6d///4VdW699da89dZb6d69e3n6rR133DFJMmbMmLz99ttZY401KuosGQnRr1+/5fanVatW+cUvfpELLrigYrH1JYvXLx00fRqdOnXKRhttlClTpuTvf//7J1onpWHDhoXtLllMftSoUTn77LOrjbz529/+Vq3OW2+9lWTZU3S99dZbufPOOz+2T5/Gkq/B1772tfK0Wsuyxx575I9//GNuuOGG/PCHP6woe/TRR/Piiy9m0003rZjGbdCgQalXr17Gjx+fWbNmpUOHDuWy+fPn5+abb079+vWz++67l7evt9565a/Frbfemn333beirRtuuCFJstdee33aU16pBCnAZ8JWp/yx1tr+6dBdaq1tAAAA4PNvyYiTBQsW5Lzzzqv4I3pVVVUuv/zy9OrVK2eeeWb222+/8h+pzznnnNx11125/fbbs/fee+eiiy5Kt27dKo79wQcf5JFHHqlxn+bOnZtTTz01SbLzzjunefPm5bLjjjsup5xySoYNG5a77ror7du3T5L897//LQc9J5xwQnn/bt26ZY899sitt96aE044IVdeeWUaNmyYJHnwwQfzu9/9LvXr18+xxx5brvOnP/0pW265ZTbdtHIF2dtuuy2lUqli3ZF27dqlYcOGeeGFF7Jw4cIVCpSGDx+eQw45JMOGDUvPnj0rRjz873//y/jx4zNw4MDytk6dOuXVV19dZkC02267pUePHpk6dWrOPffcfP/73y+XXXPNNRk/fny19rt375569erlnnvuyXPPPZcePXqU2z7mmGPy5ptvfupzW54///nPSZKDDz54uft97Wtfy3rrrZfJkyfnN7/5TU488cQki9csWfL1O+mkkyrqrL322jnggAPy5z//Od/5zndy3XXXpUGDxdHDqaeemtdffz2HHHJIRcCSJMOGDcu3v/3tnHrqqdlhhx3K5f/4xz9y0003pXv37tlnn31W/ORXAkEKAAAAAMAqdOmll+ahhx7KdtttVxEmLLHRRhtl+PDh+clPfpLvfOc7GT16dJKkdevWGTduXAYPHpzRo0fntttuyxZbbFH+Y/yMGTPyxBNP5J133smaa65Z8Y7/pV155ZW59957kyxee+O1117LpEmT8uabb6Zdu3YVI2SS5MQTT8w999yT2267LT169Mhuu+2WUqmUu+++O3Pnzs2+++6b73znOxV1Lr/88vTr1y9//OMfc99996VPnz55/fXXc++992bhwoU577zz0qtXr/L+I0eOzLe+9a2sv/762WyzzdK0adNMmzYtDz/8cOrVq5ef/exn5X0bNWqUQYMG5eabb84WW2yR3r17p1GjRunbt28OO+ywGn0tvvWtb+WRRx7JRRddlN69e6dPnz5Zd911M3PmzDz22GPp0qVLHnvssfL+SwKs3r17Z4cddkiTJk2y4YYb5pRTTkm9evVy7bXXZsCAARk+fHj++te/ZuONN84LL7yQSZMm5dhjj80ll1xSHlGTJB06dMgRRxyRK664IltssUV22223NG3aNOPHj8/ChQtz6KGH5pprrqnROX2cBx54IC+++GLWWmutDBgwYLn7NmzYMCNGjMiAAQMybNiwXH/99enSpUvGjx+fmTNnZujQoTnkkEOq1bvgggvy0EMPZeTIkenZs2e23nrrPPXUU3nyySfTo0ePnH/++dXqHH744Rk9enRGjRqVnj17pn///pk9e3buu+++NG3aNCNGjCgHMrXNGikAAAAAAKvIf/7zn5x++ulp0KBBrrjiisLFwk8//fRssMEGue2223L99deXt3fq1CkPPvhgbrjhhgwZMiRvvPFGbrnlltx00015+eWXs9NOO+V3v/tdpk2bVjhV1YQJE3Lttdfm2muvzR//+MeMGzcua621Vk466aQ88cQT2XjjjSv2r1+/fm666aZceOGF6datW26//fbccccd2XDDDXPJJZfkhhtuqHYeX/rSlzJp0qScdNJJadCgQf7xj3/kX//6V/r375/bb789w4YNq9h/2LBhOfbYY9OyZcuMHz8+o0aNyqxZs7L//vvn4Ycfzn777Vex/5VXXpmDDz44b7zxRv7yl7/kqquuyn333feJvw5L++1vf5sbb7wxAwYMyNNPP52RI0fm+eefz4477pgzzjijYt9f/OIX+e53v5sPP/ww119/fa666qrceuut5fI+ffrkgQceyJ577plp06blpptuSsOGDTN69Oj06dMnSdK2bduKY/7ud7/Leeedl/XWWy933313xo8fnwEDBuSRRx5ZJYurL5nW64ADDvhEo3l22GGHTJo0KUOGDMnzzz+fm266KW3atMn555+f66+/vtoUZsniUUMTJ07Mcccdlw8++CCjRo3KO++8k+OPPz4TJ05MmzZtqtWpV69e/v73v+e8885Lp06dcsstt+SJJ57IkCFD8sgjj2S77bZb8ZNfSapKK2NVnS+YOXPmpHXr1nnnnXfSqlWrFT7eF3VKo01v36PW2m65w/KHsK1Ke065sdba/iyvDeE+WP3cB5897oPVz33A0qyRwmeBZ8Hq51nw2eM+WP3cBytmZf+d6PPgf//7X6ZNm5b11lsvTZo0qe3uQK055phjcvnll+e6667L/vvvX9vdYRk+6fcrI1IAAAAAAOBTePPNN/PSSy9V23799dfnyiuvzBprrJE999xz9XeMleqzMcEYAAAAAADUMc8++2z69OmTzTffPN26dUuSTJkyJVOnTk39+vVz+eWXp3nz5rXcS1aUIAUAAAAAgDpn9uzZOfnkkz/Rvj179szw4cNXeh+6deuWY489Nvfcc0/Gjh2befPmpV27dhk8eHBOPvnk8jop1G2CFAAAAAAA6px3330311577Sfad+edd14lQUqHDh1y8cUXr/Tj8tkiSAEAAAAAoM7p2rVrSqVSbXeDLwCLzQMAAAAAABQQpAAAAAAAABQQpAAAAAAAABQQpAAAAAAAK521K4DPuk/6fUqQAgAAAACsNPXr10+SLFiwoJZ7ArB88+fPT5I0aNBgufsJUgAAAACAlaZhw4Zp3Lhx3nnnHaNSgM+shQsX5s0330zz5s0/NkhZfikAAAAAQA21a9cur776av7zn/+kdevWadiwYaqqqmq7W8AXXKlUysKFC/P+++/nnXfeyaJFi7L22mt/bD1BCgAAAACwUrVq1SpJMnv27Lz66qu13BuASvXr10+zZs3SoUOHNGrU6GP3F6QAAAAAACtdq1at0qpVqyxYsCALFy6s7e4AJEnq1atX41FyghQAAAAAYJVp2LBhGjZsWNvdAPjULDYPAAAAAABQQJACAAAAAABQQJACAAAAAABQQJACAAAAAABQQJACAAAAAABQQJACAAAAAABQQJACAAAAAABQQJACAAAAAABQQJACAAAAAABQQJACAAAAAABQQJACAAAAAABQQJACAAAAAABQQJACAAAAAABQQJACAAAAAABQQJACAAAAAABQQJACAAAAAABQQJACAAAAAABQoEFtdwAAAKg9b911bq21veaAU2utbQAAgE/KiBQAAAAAAIACghQAAAAAAIACghQAAAAAAIACghQAAAAAAIACghQAAAAAAIACDWq7AwAA8EU3/Seb1VrbLXc4uNbaBgAAqAsEKQAAfGZsdcofa63tnw7dpdbaBgAA4LPL1F4AAAAAAAAFBCkAAAAAAAAFBCkAAAAAAAAFBCkAAAAAAAAFBCkAAAAAAAAFGtR2BwAAgC+mvhf1rbW2Jxw3odbaBgAA6hYjUgAAAAAAAAoIUgAAAAAAAAoIUgAAAAAAAAoIUgAAAAAAAAoIUgAAAAAAAAoIUgAAAAAAAArU2SDluuuuS+/evdO0adO0adMmQ4cOzQsvvPCJ6i5cuDA77LBDqqqqUlVVleHDh6/i3gIAAAAAAHVRnQxSrrrqqhxwwAF59NFHs/baa2fhwoUZOXJkdthhh/z3v//92Po/+clP8uCDD66GngIAAAAAAHVZnQtSPvjgg/IIkiFDhuTFF1/MlClT0rJly8yaNStnn332cus/8MAD+fnPf56vf/3rq6O7AAAAAABAHVbngpRJkyZl9uzZSRYHKUnSqVOnbL/99kmSMWPGFNadM2dOvvnNb6ZTp065/PLLP3Gb8+fPz5w5cyo+AAAAAACAz786F6S88sor5c87dOhQ/rxjx45JkunTpxfWPfbYY/Pyyy9nxIgRWWONNT5xm7/4xS/SunXr8se6665b844DAAAAAAB1Tp0LUoqUSqXllo8aNSojRozI6aefnp122qlGxz7ttNPyzjvvlD+WDnMAAAAAAIDPrzoXpCw9GmTWrFnVPu/cufMy602ePDlJcv7556dFixZp0aJFuez888/POuusU9hm48aN06pVq4oPAAAAAADg86/OBSnbbLNN2rZtmyQZOXJkkmTGjBl56KGHkiSDBg1KkvTs2TM9e/bMxRdfXFH/vffey7x58zJv3rzytgULFuTdd99dHd0HAAAAAADqkDoXpDRq1Chnn312ksVBSrdu3bLRRhtl7ty5adeuXYYPH54kmTp1aqZOnVpemP7MM89MqVSq+Fji+9//ft5+++3Vfi4AAAAAAMBnW50LUpLkqKOOyogRI9KrV6/MmDEjVVVVGTx4cB544IF06tSptrsHAAAAAAB8TjSo7Q58WgcddFAOOuigwvKPW3z+k+4DAAAAAAB8cdXJESkAAAAAAACrgyAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACggCAFAAAAAACgQIOaVvjJT36y0jvx4x//eKUfEwAAAAAAYEXVOEg588wzU1VVtVI7IUgBAAAAAAA+i2ocpCRJqVRaaR1Y2aEMAAAAAADAylLjIGXs2LGroh8AAAAAAACfOTUOUnbeeedV0Q8AAAAAAIDPnHq13QEAAAAAAIDPKkEKAAAAAABAgU+12HxNzJs3L3fddVeef/75VFVVpVu3bhkwYEBatGixqpsGAAAAAABYITUOUkqlUu68884kybrrrpuNNtqocN9rr702J510Ut56662K7c2bN8/Pf/7zHHfccTVtHgAAAAAAYLWpcZAyceLEDBo0KFVVVbnhhhsKg5Q//elPOeyww1JVVZVSqVRR9u677+Z73/teFixYkGHDhn26ngMAAAAAAKxiNV4j5a677kqSdOjQIfvuu+8y93nrrbdywgknJFk8gqV79+750Y9+lN/97nc54ogj0qBBg5RKpfzoRz/Kq6+++ul7DwAAAAAAsArVOEiZOHFiqqqqsvfee6eqqmqZ+1x77bV5++23U1VVlX79+uWxxx7LWWedlaOPPjpXXHFFbr311tSrVy//+9//8qc//WmFTwIAAAAAAGBVqHGQ8uyzzyZJ+vbtW7jPqFGjyp9fcMEFadasWUX5wIEDs99++6VUKmXs2LE17QIAAAAAAMBqUeMgZcaMGUmSHj16LLN8wYIF5VErPXr0yJZbbrnM/fbZZ58kydNPP13TLgAAAAAAAKwWNQ5S3nvvvSRJ8+bNl1k+efLkzJ8/P0nSr1+/wuN07949yeL1VAAAAAAAAD6LahykLJmmqygAefjhh8ufb7XVVoXHadCgQZLFI1gAAAAAAAA+i2ocpKyzzjpJkkmTJi2z/L777it/vv322xce54033kiStGzZsqZdAAAAAAAAWC1qHKRsv/32KZVKueKKK6qNJpk9e3ZuvfXWJEm7du3Sq1evwuM8+eSTSZIuXbrUtAsAAAAAAACrRY2DlG9961tJkueffz777rtvnnnmmSxYsCCPP/54Bg8enPfffz9VVVU58MADl3uc++67L1VVVdl0000/Xc8BAAAAAABWsQY1rbDzzjtnn332yY033pgxY8ZkzJgx1fZp0aJFTjnllMJjvPXWWxk9enSS5S9IDwAAAAAAUJtqPCIlSUaMGJEvf/nLKZVK1T6aNWuWv/zlL+nUqVNh/csuuywffPBBkmTQoEGfrucAAAAAAACrWI1HpCRJ8+bNM2bMmIwePTo33nhjpk+fnkaNGqV379454ogjygvSF5k+fXqGDBmSL33pSx+7LwAAAAAAQG35VEHKErvvvnt23333Gtf73e9+tyLNJkmuu+66nHvuuZkyZUqaNm2a3XbbLeecc07WX3/9wjqnnXZa/vnPf+bVV1/NBx98kI4dO6Z///4544wzLHoPAAAAAABU86mm9qptV111VQ444IA8+uijWXvttbNw4cKMHDkyO+ywQ/773/8W1rv99tszb9689OjRI+uuu26mT5+eq6++Ol/5yldWY+8BAAAAAIC64lMFKbfddlt69+6d3r175y9/+UuN6v7lL38p173rrrtq3PYHH3yQ4cOHJ0mGDBmSF198MVOmTEnLli0za9asnH322YV1H3jggUyfPj3/+te/8txzz+Wb3/xmkmTq1Kl54403atwXAAAAAADg863GQUqpVMqJJ56YyZMnp3379jnwwANrVP+AAw5Iu3bt8thjj+Wkk06qafOZNGlSZs+enWRxkJIknTp1yvbbb58kGTNmTGHdJk2a5NJLL812222XHj16ZMSIEUmSjTfeOG3atKlxXwAAAAAAgM+3Ggcp99xzT5599tnUq1cvv/nNb2rcYFVVVS644ILUr18/Tz75ZO67774a1X/llVfKn3fo0KH8eceOHZMsXsh+eaZPn56JEyfm+eefT5JsueWWufPOO1NVVVVYZ/78+ZkzZ07FBwAAAAAA8PlX4yBl5MiRSZKBAwdm4403/lSNbrzxxuV1SW644YZPdYyPKpVKn2i/X/7yl/nwww/zzDPPZNddd82jjz6agw46KAsXLiys84tf/CKtW7cuf6y77rorpc8AAAAAAMBnW42DlIkTJ6aqqip77bXXCjW85557plQq5aGHHqpRvaVDjFmzZlX7vHPnzh97jPr162fDDTfM9773vSTJvffem7vvvrtw/9NOOy3vvPNO+WPpUTEAAAAAAMDnV42DlJdffjlJsuGGG65QwxtssEGS5KWXXqpRvW222SZt27ZN8n+jY2bMmFEOZAYNGpQk6dmzZ3r27JmLL744SfLcc8/lpptuyqJFi5IkixYtqlhPZd68eYVtNm7cOK1atar4AAAAAAAAPv8a1LTCO++8kyQrvDj7kvo1XW+kUaNGOfvss3P00Udn5MiR6datW954443MnTs37dq1y/Dhw5MkU6dOTZLywvSvvvpq9tlnn7Ro0SLdunXLa6+9ltdeey1Jss4666R///4rdD4AAAAAAMDnT41HpCwZjfH222+vUMNL6rds2bLGdY866qiMGDEivXr1yowZM1JVVZXBgwfngQceSKdOnZZZp3Pnztl3332z5pprZurUqXnrrbey/vrr5+ijj86DDz5olAkAAAAAAFBNjUektG/fPm+99Vaefvrp7LLLLp+64SlTpiRJOnTo8KnqH3TQQTnooIMKyz+6+Hy3bt0yatSoT9UWAAAAAADwxVTjESnbbrttSqVSbr755hVq+MYbb0xVVVW22WabFToOAAAAAADAqlLjIOWrX/1qkuSOO+7I/fff/6kaHTduXO64446K4wEAAAAAAHzW1DhIGTJkSLp27ZpS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AAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAoIUAAAAAACAAnU2SLnuuuvSu3fvNG3aNG3atMnQoUPzwgsvfGy9iy66KBtvvHEaN26cDh065PDDD89rr722GnoMAAAAAADUNXUySLnqqqtywAEH5NFHH83aa6+dhQsXZuTIkdlhhx3y3//+t7Dej370oxx//PGZMmVKunTpknfffTdXX311dtlll7z33nur8QwAAAAAAIC6oM4FKR988EGGDx+eJBkyZEhefPHFTJkyJS1btsysWbNy9tlnL7Pea6+9lnPOOSdJctJJJ+XZZ5/NQw89lKqqqjzzzDO57LLLVts5AAAAAAAAdUOD2u5ATU2aNCmzZ89OsjhISZJOnTpl++23z5133pkxY8Yss95dd92VBQsWVNTbfPPN07179zz33HMZM2ZMhg0btsy68+fPz/z588uv33nnnSTJnDlzVso5LZz//ko5zqfx3ry5tdb23P8trLW2S/P+V2ttf/j+h7XW9sq6ZlcF98Hq5z747HEfrH7ug88e98Hq5z74bHEPrH7ugc8e98Hq5z5YOccplUor5XgAfPZUlerYd/nrrrsuBxxwQJLF4Uj//v2TJAcffHBGjBiRxo0b53//q/4DwC9/+cucdtppSZLnn38+66+/fpKkX79+uf/++7PhhhvmmWeeWWabZ555Zs4666xVcToAAAAAfA688sorWWeddWq7GwCsAnVuREqRT5sHfZJ6p512WsVolUWLFuXNN99M27ZtU1VV9anaZcXMmTMn6667bl555ZW0atWqtrsDtcJ9wBedewDcB5C4DyBxH9S2UqmUuXPnplOnTrXdFQBWkToXpKy77rrlz2fNmlXt886dO3+iektGpHxcvSRp3LhxGjduXLFtjTXWqFnHWSVatWrlh0S+8NwHfNG5B8B9AIn7ABL3QW1q3bp1bXcBgFWozi02v80226Rt27ZJkpEjRyZJZsyYkYceeihJMmjQoCRJz54907Nnz1x88cVJkv79+6dBgwYV9R5//PE8//zzFfUAAAAAAACWqHNBSqNGjXL22WcnWRyIdOvWLRtttFHmzp2bdu3aZfjw4UmSqVOnZurUqeWF6ddaa62ccsopSZLzzjsvG264YbbffvuUSqX06NEjRx99dO2cEAAAAAAA8JlV54KUJDnqqKMyYsSI9OrVKzNmzEhVVVUGDx6cBx54YLnzUf785z/PBRdckJ49e2batGlp3rx5DjnkkIwbNy7NmzdfjWfAimrcuHHOOOOMalOuwReJ+4AvOvcAuA8gcR9A4j4AgFWtqvRpV2kHAAAAAAD4nKuTI1IAAAAAAABWB0EKAAAAAABAAUEKAAAAAABAAUEKFLj33ntTVVVV/rjmmmtqu0t8hrg++Lz6rFzbXbt2Lfdhl112qZU+wIo488wzK+6ll156qba7BCvNZ+X6fumllyr6ceaZZ9ZKP+CL6pprrqm4B++9997a7hIArDKCFAAAAAAAgAINarsDAMBnR/v27TNkyJDy665du9ZeZwBgOZo3b17xzNp4441rsTfwxdO1a9eKe7B9+/a12BsAWLUEKQBA2SabbJIbbrihtrsBAB+rffv2nllQi3bZZRdTsALwhWFqL1bYv/71r3zzm99Mt27d0rRp0zRp0iTrrLNO+vTpkxNOOCF33HFHxf6lUikjR47M3nvvnU6dOqVRo0ZZY4010rdv31xyySX54IMPCtt64IEH8s1vfjPrrbdemjZtmhYtWmSjjTbKsccem6lTp1bb/+Pm+jenKyvT008/ncGDB6dt27Zp1qxZ+vTpk3/+858V+3zcNfdxc47fddddGTx4cDp37pzGjRunWbNm6dKlS3beeeeceuqpeeihhyr2//vf/54jjzwyW2+9ddZZZ53yPdq5c+d87Wtfy80337zMc/no+hTz5s3LGWeckR49eqRx48b50pe+lOOPPz5z585d0f82PmOKvm8uax76l19+OUcccUTWXnvtNG7cOD179syFF15YeOzXXnstZ5xxRrbbbrusueaaadSoUdZee+3svPPO+dWvfrXcfs2fPz8/+9nPsuGGG6ZJkyYfew3OmzcvF1xwQXbaaae0bds2jRo1SseOHbPXXnvl1ltvLWxn0aJF+etf/5rdd989a621VvkZte222+anP/1p3nzzzWp1lnVf33///dl9992zxhprpFmzZtlhhx2qPQ/5fLjqqquy5ZZbpmnTpunYsWMOOeSQ/Oc//yncf8aMGfnxj3+c3XffPT169EibNm3SsGHDrLHGGtl6661z+umn57XXXius/8wzz+TYY4/NRhttlBYtWqRp06bZYIMNctxxxy13nYqbb745ffv2TfPmzdOmTZvss88+eeyxx5b7XFrRZxZ132f9+v4ka6R4HlBT11xzTfm679ChQ775zW9m2rRpy/yed9ddd1Vsu/POO8vHmT59ekXZ008/XS574IEHKsqW/M5QKpVy7rnnZv/9988mm2ySjh07plGjRmnRokV69uyZI488MpMnT67W55Xxc1pNznvpOp4hAHxhlGAF3HnnnaWGDRuWkhR+9O/fv7z/vHnzSl/96leXu/+2225bmj17drW2TjnllOXWa9SoUenqq6+uqDN27NiKfT5afvXVV1eUjx079hPX5Yvto9fHkUceWWratOkyr83f/OY35XrLu+ZKpVLpjDPOqCifNm1aYd1lfRxxxBEVx+vbt+/H1jnhhBOqnV+XLl3K5Ztssklp0003Lby/Fy1atBL/Z6ltRd/7pk2bVrF90KBBpdatWy/zuvjJT35S7bijR48urbnmmoXXYevWrSv2X/oa3HLLLUvbbbfdJ74Gp06dWurRo8dyr/sjjzyyWr05c+aUdtttt+XWW3vttUuPPPJIRb2P3ptf//rXS1VVVdXq1q9fv3TPPfes+BeJz4wTTjhhmddJ+/btS9/4xjeW+f38zjvv/Njvyx06dChNnTq1WnuXXXbZcn/uatGiRWn06NHV6l100UWFPzsddNBBhc+lFXlmUffVhev7o8+mM844o6Lc84CaOumkk5b59V5jjTVKX/va16pd9/PmzSs1atSovO3HP/5x+Vh//vOfK/a//PLLy2W//OUvy9urqqpKb7zxRqlUKpUWLFjwsfdQw4YNS3/7298q+r2iP6fV9LyXWN5zwjMEgM8bI1JYIeecc04WLFiQJKlfv3769u2bvfbaK1tttVXatGlTbf9vf/vbue2228qvu3btmj322CO9evUqb5s4cWIOPvjginqXXHJJxbuVGzVqlH79+mWbbbZJVVVVkuSDDz7IkUcemQkTJqzMU4RP5Morr0xVVVV23XXXbLrpphVlp5xySp588skVbuPnP/95+fMmTZpk1113Ld8/LVu2LKzXrFmz9O7dOwMGDMg+++yTfv36pXnz5uXyCy+8sNpIlqU99dRTefLJJ7PBBhtkl112ScOGDctld999d+67774VPDPqojFjxmTu3LnZbrvtstVWW1WUnXPOOXn33XfLr5988skMGTIkb731Vnlb27Zts9tuu2XgwIFZc801l9vWo48+mocffvgTXYPvv/9+dt999zz33HPlbb169coee+yRLl26lLddeeWV1UbBHH744bnnnnvKr9dcc80MHDgw3bt3L2+bOXNm9txzz7z99tuF/f3b3/6WZs2aZdddd61YY2bhwoU566yzlnuu1B233XZbtXf2br311unXr1/efvvtXHfddcut37Vr1/LPTV/96lezwQYblMtmzZqV448/vmL/22+/Pf/v//2/8s9dzZo1S//+/TNw4MA0adIkSfLuu+/m61//el544YVyvaeeeirDhg2rONZGG22UXXfdNfXr18+f//znmp88n3t15fpeHs8DauqOO+7IeeedV7Gtd+/e2XHHHfPuu+9m1KhR1eo0a9Ys22yzTfn10r+LfvT30vvvv3+Zn2+++ebVfndu3759tt1223z1q18t/35dv379JMmCBQtyzDHHZN68eYXnUpOf0z7NeQPAF1JtJznUbT179iy/g+TnP/95RdmiRYtKDz30UOmvf/1rqVQqlZ544omKd5x85zvfqXj317nnnltRPmHChFKptPhdOe3bt6949+TEiRPL9a666qqKegMHDiyXGZHCqvLR66NFixalp556qlx+6qmnVpQfddRRpVJpxd6Z1aRJk/L2P//5zxX1FixYUBo7dmzp5ptvrtj+1FNPlebPn1+t/7NmzSq1aNGifLyTTz65onzp0QBJSscff3y5bMSIEct99yd12ycdkZKkNHLkyHK9I488svDa3m+//SrKDjrooNK7775bLp8/f37pT3/6U0U/Pu01+NF33l933XXlsg8//LC09957l8tat25deu+990qlUqk0efLkinobbrhh6bXXXiuVSqXSwoULS4ceemhF+dLPvI/e1+3atSu/2/q9994rbbbZZhXvIl3WPUndM3DgwIqv+6WXXlouGzt2bLV3oS/5fv7GG2+Upk+fvsxjfv/73y/vX69evdI777xTLttqq63KZV27di3NnDmzXPbCCy+UWrZsWS7/9re/XS476qijKvrxve99r1w2efLkUrNmzbybmGrqyvW9vBEpngfU1Je//OWKr9/So8rvuOOOwuv+Bz/4QcXvBB9++GGpVCqVNt9881KyeARSktJ6661XKpUW/57cpk2bcp2lR4cvWrSoNHny5GWO+L7tttsq2r/lllvKZSvyc9qnPe9SyYgUAL5YjEhhhSz9rqwRI0bk0ksvzdixYzNz5sxUVVVlu+22yze+8Y0kyejRoyvqPvPMM9lvv/0ydOjQDB06NHfddVdF+ZKRK//617/y+uuvl7cPHTq04l0/hx9+eMW73O69997873//W3knCZ/AQQcdlI033rj8+oc//GEaN25cfj127NgVbmPp++3iiy/OlVdemfvvvz+zZ89OgwYNsssuu2TPPfesqNOlS5dcdNFF2XnnnctzLFdVVaVDhw4V70R79tlnC9tt1qxZfvrTn5Zff/WrX60onzlz5oqeGnXQjjvumMGDB5dfF10XCxcurBiJ2KZNm1x22WUVo6IaNWqUb37zm4Vt1eQaXPpZU79+/fz9738vP2f233//vPLKK+Xyd955Jw888ECSVPQxSU466aR06NAhSVKvXr2cffbZFeVjxowp7O8xxxxTfi41bdq0YhHWBQsW5I033iisS93w4YcfZvz48eXX6667bo4++ujy61122SUDBw5cZt02bdrk1VdfzaGHHpqePXumRYsWqVevXqqqqnLOOeeU91u0aFH5nfevvfZa/vWvf5XL6tevn+9+97vla/vUU09NgwYNyuVLX89Lv6u+cePGFe+C33zzzXPggQd+mv8CPsfq0vW9PJ4H1MSHH36YcePGlV8vWYttiYEDB6Z///7LrLv01/Xdd9/NY489ljlz5pRHpO+3335JkmnTpmXGjBl5+umnK9bYWbp+VVVV1lxzzZx66qnZaqutsuaaa6ZBgwapqqqq9vPP8n5+/6Q/p63IeQPAF02Dj98Fig0fPjy33XZbFi5cmClTpuTYY48tl3Xq1Cl77bVXTj/99HTu3Lna4nFL/2K/LC+//HLFv0tssskm1fbdZJNNyj9ILliwIDNnzsx66633aU4JPpWlQ5QkadmyZTp37lyeTmLpX9Y/rR/84Ac54IADkiQPPvhgHnzwwXLZeuutlyFDhmT48OFp27ZtkmTu3LnZYYcdPtG0YnPmzCksW3/99dOqVavy69atW1eUz58/v0bnwefDlltuWfG66Lp44403KkK7zTffPC1atKhRWzW5Bpd+1ixcuDAjR45c7rE/6bNm7bXXzpprrlmenuyj+y/tk/7fUHfNnj274k0bPXv2TL16le9P2mSTTZa5oPQf/vCHHHnkkSmVSh/bzpLvzR+93l544YXlTm/06quvZuHChalfv37FwuCdO3euuJeSVJuOEurS9b08ngfUxBtvvFFx3W+88cbVrvtNN9202pv/kmSHHXZIo0aN8sEHHyRZPG3X66+/nkWLFiVJvv/975enw7v//vsrpjqtqqrKTjvtVH792GOPZZdddsk777zzsX1e3s/vNfk57dOeNwB80QhSWCF9+/bNpEmTcskll2Ts2LGZNm1a+RenGTNm5PLLL8/tt9+eyZMn1/jY77333srubhYuXFjx+rXXXlvpbUBN1OSa/MY3vpG11lorv//97zN+/PiKP45NmzYtv/71rzNu3LhMmDAhDRo0yCWXXFIRojRv3jzbb7991lhjjSSL33G55D5b3h88Pjpn88f94YIvhtV5XazKtlbFs8Y988WzZL22jzN//vyceOKJFd9zN9poo/To0SMNGzbMyy+/nEceeaRc9kn+GL0spVIp77//frXQ8pP2s4ifo76Y6sr1vaI8D1haTb5fLlknZcmaKBMmTMjs2bOTLB4d3qtXr2y44YaZOnVqtSDlo+ujDB8+vCJEWXvttdOrV680a9Ys7733XsWIqVXx8/uKPieWxzMEgLrO1F6ssC233DJXXnllXnjhhbz33nt54oknKqaNeOmllzJ69OiKRR2T5L777kupVCr8uOGGG5Isfvfk0p5++ulqfVh6W8OGDbP22msnWTxdzNKW/qE1ScU7+mFFfPS6fPfddytGoay77rpJVvya3GWXXfKXv/wlr7zySt599938+9//zne+851y+cSJE8t/pFgyRUWyeDqXqVOn5q677soNN9yQ66+/fpX+ogRLtG3btuKPXY8//njFCJWVbelnTbNmzfL+++8v91nz3e9+N8nHP2tmzpxZcb9+dH++WNq1a1deADtZPF3pR/+gNWXKlGr1nnrqqYp3EB977LF5+umnc+ONN+aGG27IkCFDltneR6+3ww47bLnXdalUKt93S9d95ZVXqv2xeHmjFv0c9cVUl67v5fE8oCbatWuXpk2bll9PnTq12nW/vO+XS0/PNWHChPJi8n379q349/77769YaH7peknlz+9bbrll+XfpG264IT/+8Y9rdlKfwIqe9/J4hgDweSNIYYVcffXVueeee8rvLmnSpEk23XTTHHTQQRX7vfzyy9XmZf3+979fbV7gDz/8MPfcc08OPPDA8rvtt95667Rr1668zw033FAxj/K1116bqVOnll/vvPPO5V/+1lprrYrjX3fddZk3b16S5Prrr89NN930qc4bPurPf/5zxS/aZ599dsUw+SW/JH30mrzmmmvK98+vf/3r5Y7e+u1vf5uHHnqo/MtN8+bNs+WWW1bMf5z83xQTCxYsKG+rV69e+b4olUo566yzyvcCrEr169fPoEGDyq/ffPPNHHPMMRXX34cffpi//OUvK6W9pZ817733Xk4++eTyVBtLzJ07N3/9618r1mX56DPqvPPOK7+bdNGiRfnhD39YUb70OfHF06BBg+y4447l19OnT8/vf//78uvx48cvc9qjpb8vJ6lYK+jll1/OxRdfvMz21lprrYppWv7617/m7rvvrrbf888/n5/+9Ke57LLLytt222238ufvv/9+fvGLX5RfP/7448u991bkmUXdVZeu7+XxPKAm6tevn5133rn8+uWXX84f/vCH8us777xzmdflEksHIjNmzKgWpCy5pyZPnlwx7dxHg5Sl76PGjRunYcOGSRZfw2eccUbNTuoTWNHzXh7PEAA+d1bmyvV88eyxxx6lJKU11lij1Ldv39I+++xT+vKXv1xq1apVKUn544YbbiiVSqXSfvvtV7G9WbNmpZ122qm09957l/r06VNq0aJFuWzatGnldi688MKKeo0bNy7ttNNOpW233bZUVVVV3l6vXr3SuHHjKvrYuXPnirrNmzcvdezYsWLbko+xY8eW640dO7ai7Oqrr14N/6PUFR+9PpZcz7vttltps802q9jeoEGD0uOPP14qlUqlOXPmlJo1a1ZRvuaaa5batGmzzGty6ftgk002KSUptW/fvrTzzjuX9t1339Kuu+5aatKkSUWdRx55pFQqlUo/+tGPKrZ36NChtMcee5Q23HDDUpKKe2fnnXeuOL8uXboUlpVKpYrjHnLIIavof5naUPS9b9q0aRXbzzjjjE9Ur1QqlR5//PFq12nbtm1L/fv3L33lK18ptWvXrtS6deuK433aa3DevHmlrl27Vrv2Bw4cWNpzzz1LW2yxRalhw4alJKUuXbpUHPNrX/taRb02bdqUvvzlL5d69OhR7XhvvPFGud7VV19d+CwplUqlM844o/C+pu669dZbq33P3mabbUo77bRTqVGjRsv8fj537txS06ZNK7b36dOnNGDAgFKzZs0qvi9/9Fq65ZZbqpVvttlmpb322qs0YMCA0rrrrrvM+/Opp54qX/NL19t1112r9eWjba7IM4u6ra5c38t7NnkeUFN33HFHxdenqqqqtM0225R23HHHUoMGDZb7PW/evHnLvDcee+yxUqlUKj377LPVyqqqqiqun1KpVOrXr1/FPhtuuGFp9913L6211lrV7pFPei+USsv/OW1Fznt517xnCACfN0aksFK8/fbbmTBhQm688cbccccdFcP6+/Xrl3322SfJ4gUov/KVr5TL3nvvvYwbNy433XRTHnzwwYrpXpaex/X444/PiSeeWH49f/78jBs3LhMnTiy/O79hw4a5/PLL069fv4q+nXnmmRWv582bl9deey1NmzbNwQcfvOInD0n233//LFiwIPfcc0+eeOKJirJf/vKX2WyzzZIsXoT+5JNPrih/66238uabb6Zdu3bVRpcsy+uvv5777rsv//znPzN27NiKkS/f+MY3stVWWyVJjjvuuHzpS18ql82aNSu33nprpk6dmiOPPNJUFKw2m222Wf7+979XLHT6xhtv5O67787tt99efqfvytCsWbOMHj0666+/fnnbrFmzcuedd+aWW27J5MmTy+/2/Oh84ddcc03FuzLffPPN3HHHHXnuuefK2zp27Jibb7652tzjfPHsvvvuOfbYYyu2TZo0KePGjUuTJk2y1157VavTokWL/OhHP6rY9uCDD+auu+5KgwYNqj0flrbHHnvk4osvLr87OUmeeOKJ3HzzzbnrrrsqppNc+treeOONc95551Uc64knnsjYsWNTKpVyyCGHVJQtPRXLynhmUTfVlet7eTwPqKmBAwfmpJNOKr8ulUqZNGlS7r///rRu3TpDhw6t2H/p75dL1klZWqtWrcq/A/To0SMdOnSoKP/o+ihJ8rOf/SwNGvzfUrZTp07N6NGj89prr1VMn70yrch5L49nCACfN4IUVsiPf/zj/OhHP8quu+6arl27pkWLFmnQoEHatWuXnXbaKRdeeGHuvPPO8g+DLVq0yG233ZZ//OMf+drXvpZ11lknjRs3TqNGjbLOOutk4MCB+fnPf55nn322vKbEEueff37GjRuXAw88MF26dEnjxo3TtGnTbLDBBjnmmGMyefLkHHnkkdX6eNhhh2XEiBHZYost0qhRo7Rp0yZDhw7Nv//974rpLmBFDBo0KA899FD23HPPrLnmmmnatGm22267jBw5suIXk2RxuPeb3/wmG264YRo1apSOHTvmsMMOy2OPPVb+ZWtZLrzwwpx66qnp27dv1l133TRt2jQNGzbMWmutlS9/+cu5+uqr8+c//7m8f/v27fPggw/mgAMOSJs2bdKkSZNssskmueCCCyqm6IDVYc8998yUKVPywx/+MFtvvXVat26dBg0apGPHjunXr19OP/30ldbWRhttlMmTJ+e3v/1tdt1117Rr1y4NGjRIs2bN0r179wwZMiSXXXZZJk6cWFGvVatWufvuu/OnP/0pgwYNSocOHdKgQYO0bNkyW2+9dc4888w89dRT2XbbbVdaX6nbLrroovz+97/P5ptvnsaNG6ddu3bZf//9869//Su9e/deZp3TTjstV155ZTbddNM0bNgwbdu2zZAhQzJp0qRsvPHGy23vO9/5Tp544okcf/zx2WyzzdKyZcvUr18/a665Zrbaaqsce+yxue2226rdT8cdd1xuuumm9OnTJ02bNs2aa66ZvffeOxMnTqwWqn90KpZP+8yi7qsL1/dHp+paOohJPA+ouV//+tf5wx/+kF69eqVx48Zp3759DjzwwPzrX/+qWEukfv36FdNPJ9Wn6dp+++1Tr97//cllyTRfRfsnyU477ZSxY8dml112SbNmzdKiRYv069cvo0ePXqVvAvy05/1x96BnCACfJ1Wl0kdWEgMAAD43Xn311ay11lrV3nX/2muvZauttsqrr76aZPGi2UvW2YK64JZbbqkYHXPllVfmiCOOqMUeUddNnz59maO2p0yZkm233bY8g8JOO+2U++67b3V3b5X5tOd98sknV4x6fP755ytGgQHA50mDj98FAACoq37605/mH//4R3bbbbess846adSoUV5++eXcdNNNFdOq/vjHP67FXsInN3bs2Nxzzz259tpry9uqqqqy66671mKv+Dw46qij8vTTT2ennXYqT5H7wgsv5Oabby6PvqiqqsoPf/jD2uzmSlfT8/7jH/+Yf/3rX7niiivKx+jSpYsQBYDPNUEKAAB8zr3++uu5/vrrl1lWr169/OAHP/BOfuqMG2+8MRdeeGHFtqOPPjrdunWrpR7xefLKK69UTJe7tMaNG+fCCy/MwIEDV3OvVr2anPf555+fyZMnV+zzy1/+cpX3EQBqkyAFAAA+xw4++OCUSqU8+OCDmTlzZt5+++00a9YsXbt2Tb9+/fLtb387W2yxRW13E2qsYcOG6datWw4//PDlLmYPn9Txxx+fjh07ZuLEiXnttdcyd+7ctGjRIt27d8+uu+6ao48++nM56uLTnnfTpk2zxRZb5LTTTsvee+9dCz0HgNXHGikAAAAAAAAF6tV2BwAAAAAAAD6rBCkAAAAAAAAFBCkAAAAAAAAFBCkAAAAAAAAFBCkAAAAAAAAFBCkAAAAAAAAFBCkAAAAAAAAFBCkAAAAAAAAFBCkAAAAAAAAF/j9sycIWTdK9hAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "plt.figure(figsize=(15, 8))\n", + "palette = sns.color_palette(\"tab20\", n_colors=len(model_filter(\"XGBoost\", models))) # 더 많은 색상 지원\n", + "\n", + "sns.barplot(x='region', y='CSI', hue='model_data', ci=None, data=model_filter(\"XGBoost\", models), palette=palette)\n", + "\n", + "plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', fontsize=15)\n", + "plt.title('XGBoost Models with Different Oversampling Methods', fontsize=20, fontweight='bold') # 제목 볼드 및 크기 조정\n", + "plt.ylabel('CSI', fontsize=20) # y축 라벨 변경 및 스타일 조정\n", + "plt.xlabel('', fontsize=20) # x축 라벨 제거\n", + "\n", + "# x축(도시명) 글씨 크기 조정\n", + "plt.xticks(fontsize=15, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.yticks(fontsize=10, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **증강데이터에 따른 LightGBM 모델 성능 비교**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABl0AAAK4CAYAAAD+0juYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADViUlEQVR4nOzdeVzN2f8H8NdtT/siilKIokFSUiGVnSxhGIbQdxj7vo1tMDQYS/aZsWSYsY5laLJHUiFkkF0IgxrJ0t79/dGj++v2+dy61SXL6/l43Ifu+ZzzOedzP3fzed/zPhKpVCoFERERERERERERERERlYtaRQ+AiIiIiIiIiIiIiIjoU8CgCxERERERERERERERkQow6EJERERERERERERERKQCDLoQERERERERERERERGpAIMuREREREREREREREREKsCgCxERERERERERERERkQow6EJERERERERERERERKQCDLoQERERERERERERERGpAIMuREREREREREREREREKsCgC9EnQiKRyN1sbW3feZ+zZ88W9Ltp06Z33i9RaW3atEnwXJ09e/Y77dPW1lbQ56fuXb4nBAYGCvYdERGhkn1XhIiICMHxBAYGKqyflpaGefPmwd3dHSYmJlBXV5dru3fvXrn6WVlZCAkJQcuWLWFubg4NDQ25+suWLXunx0dEHyZlvi9WxGcmvR/e3t6Cc5uYmFjRwyqVT+37ABEREX2aGHQhqmBiFym9vb0relgftZSUFPzyyy/4+uuvUb9+fVSpUgVaWlrQ1dWFhYUFmjRpgq+++gorVqzAtWvXFO5H7D91hW8aGhowMjJCrVq10K5dOyxYsAD37t0rdmxi57vg9uuvv5Z4bJ6engrbl5XYxd+CW79+/Ups/9133ylsz/8E08csMTFR9HmtpqYGbW1tGBgYwNraGo0bN0aPHj3www8/ID4+XuXjePz4MZydnTFjxgzExsYiNTUVeXl5Cuu/fv0aXl5eGD16NE6dOoWUlBTk5uaqfFykWtevX8cPP/wAPz8/2NnZwcDAALq6uqhevTqaNm2KiRMn8j2VSMXEAkwFt+nTp5fYvm/fvgrbf2zBDCIiIiJSHQZdiOiDUd5fVqampmLkyJGwsbHBN998gy1btuDatWt49uwZsrOzkZGRgefPnyMuLg5//PEHRo0ahfr166Nx48ZISUkp9Xhz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aNeuHUJCQhAbG4tXr16hWrVq6NChAyZNmgRra2vRmWXm5uYVMNqysbW1RWRkJE6dOoXt27cjOjoaDx48wMuXL6GpqQlTU1PY29ujcePG8PPzg4+Pj8LP/+XLl8PFxQWbNm1CfHw8UlNTkZeX916Px83NDdevX8eOHTuwf/9+nDt3Ds+ePUNmZiZMTExgb28Pb29v/O9//ysx9eDUqVPh7e2Nn376CadPn8aLFy9gYWGBli1bYty4cWjcuHGJwWJANe8dREREROUhkaryf41E9EkYN24cli5dKle2cOFCpssiIiIieo9sbW0FQaHP+b9vly9fRsOGDeXK6tWrh6tXr1bQiIiIiIiIhPhTbKLPTEhICHbu3ClbmLMwqVSKzZs3Y8WKFXLlEokEnTp1el9DJCIiIqLPzMWLFzFnzhyF63XcunULffr0EZT7+/u/66EREREREZUKZ7oQfWYCAwMRGhoKPT09uLq6olatWtDV1UVKSgpiYmJw7949QZs+ffoozL9MRERERO/G5zTTJSIiAq1atYJEIoGTkxO++OILmJiYIDMzEwkJCYiOjhakzjI0NMTt27ffWxpcIiIiIiJlcE0Xos/UmzdvEBERgYiIiGLrOTk5YfXq1e9nUERERET0WZNKpfjnn3/wzz//FFtPQ0MD27dvZ8CFiIiIiD44TC9GRKIkEgn69euHyMhIGBsbV/RwiIiIiIgAAHXq1MHJkyfRrl27ih4KEREREZEA04sRfWZSUlKwd+9eHDt2DNevX8fTp0+RnJwMDQ0NmJiYwMHBAc2aNUP//v1hb29f0cMlIiIi+mx9TunFcnNzcfz4cYSFheH8+fN4/Pgxnj9/joyMDBgZGaF69epwdXWFv78/OnToADU1/n6QiIiIiD5MDLoQERERERERERERERGpANd0KYO8vDw8fvwYBgYGkEgkFT0cIiIiIiIiIiKqIFKpFK9evYKVlRVn4hEREYMuZfH48WNYW1tX9DCIiIiIiIiIiOgD8fDhQ1SvXr2ih0FERBWMQZcyMDAwAJD/YWpoaFjBoyEiIiIiIiIiooqSlpYGa2tr2fUiIiL6vDHoUgYFKcUMDQ0ZdCEiIiIiIiIiIqagJyIiAAATTRIREREREREREREREakAgy5EREREREREREREREQqwKALERERERERERERERGRCjDoQkRERERERERERERE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jg5u3bqF+Ph4AMDixYtRo0aNCh4llQeDLkREREREREREREQfialTpyIsLAznz59Hamoq9PX10aJFCwQFBaFv374VPbwPXmBgoFL1zM3NsXjxYpX3b2RkhAkTJuDIkSM4c+YM0tLSYGxsjPbt22PkyJFo3769yvuk94tBFyIiIiIiIiIiIqKPxKxZszBr1qyKHsZHKzQ0VKl6NWrUeCdBF11dXSxatEjl+6UPB4MuRERERERERERERPRZkEqlFT0E+sSpVfQAiIiIiIiIiIiIiIiIPgUMuhAREREREREREREREakAgy5EREREREREREREREQqwKALERERERERERERERGRCjDoQkREREREREREREREpAIMuhAREREREREREREREanARxt02bZtGxo3bgxdXV2YmpqiR48euHPnTrFtAgMDIZFIBLfq1au/p1ETEREREREREREREdGnSqOiB1AW69evR1BQEADAzs4OKSkp2L17NyIjIxEfH4+qVasW275atWpygRYLC4t3Ol4iIiIiIiIiIiIiIvr0fXQzXbKysjBlyhQAQEBAAO7evYuEhAQYGBjg2bNnmD9/fon7CAoKQkxMjOy2f//+dz1sIiIiIiIiIiIiIiL6xH10QZdz584hOTkZQH7QBQCsrKzg7u4OAAgPDy9xH8uWLYO2tjasra3Ru3fvEtOSZWZmIi0tTe5GREREREREREREpKyCpQ6UsWnTJkgkEsyePbvc/apyX2Levn2LkJAQtGnTBpaWltDW1oaBgQHq1auHwMBA7N+/H7m5uYJ2tra2gmUg1NXVYWFhgfbt2+PgwYOi/RVeQmLIkCEKx5WZmQlTU1NZ3YiICFUd8ifrzZs3+O233zBy5Eg0bdoU2traSj93kpKSMHDgQFhZWUFHRwd16tTBrFmzkJGRobBNeno6Zs6ciTp16kBHRwdWVlYYNGgQHj16VGxfmzZtgpubG/T19WFqaooOHTrgzJkzxbaJiopChw4dYGpqCn19fbi5uWHz5s0lHldZfHRBl4cPH8r+LpwWrEqVKgCABw8eFNteS0sLlpaWqF69OpKSkrB9+3a4uroWeyIXLFgAIyMj2c3a2rqcR0FERERERERERET0YYqIiIBEIkFgYGCx9aKiolC7dm2MHj0akZGRsLe3R7du3eDn5wcNDQ2EhoaiS5cuaNCggcJ9BAQEYMCA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/ffn1FNPTZs2bXLLLbdk7733LpctXry4HFj169cv1157bf7xj39kwYIFtf7ckuSEE07IW2+9lRNOOCFXXHFFObS68847c+CBB9Zap2/fvpkwYUIGDBhQsfyJJ57IXnvtlVNPPTWHH354rft75ZVX5oEHHsjOO++cJHn33XczePDgjB8/Pn/4wx/KP7e6TJgwIVOmTEmnTp2y77771iifOnVqktQahCy/fNkIoE+qTuvWrbPuuuvmnXfeybx589K2bdsV7tcnyUgXAAAAAIA13Pz583PDDTekSZMmufzyy8uBS7L0W/4nnXTSCutvtNFGGTVqVDlwSZKTTjopHTp0yMMPP5wPPvhgpfsya9asJKnznjPHHntsvv71r1c86rqvy0YbbVSehqtVq1bp379/xo0blwsuuCB/+tOfVtiPtm3b5sADD8x9992XN954I8nSURmlUqmwqcUuvvjilEqlfPvb364IXJKl9y3Zb7/9VnpbL730Uu65556su+66+dGPflQxSuiLX/xiDj/88FrrbbTRRjUCl2Rp6HXiiSdm7ty5GTduXK11Tz311HLgkiStWrXKaaedlmRpoPRxfv/73ydJjjjiiDRr1qxG+fz588vbrc2ykT/z5s37ROvUVa8hGOkCAAAAALCGe/zxx/P+++9nwIABtd635Stf+UouvPDCOuvvsccead68ecWypk2bZqONNsq//vWvzJo1K+uvv34hfb3uuuuyZMmSGu3vuuuuNdYdOnRoeYTG4sWL8/rrr2fChAn5yU9+kg033PBjR2IcddRR+dOf/pQbb7wxZ555Zm644YZ07dq1PHJndSxevDj/+Mc/kiTHHXfcam/voYceSpIMGTKk1lEpX/nKV8pTeX3UkiVLcs8992T8+PF58803s3DhwiRLb3K//L8fVdvPYdNNN02SvPnmmyvs76JFi8rB19FHH73Cdfk/QheABjT1e1s2WNs9z3u6wdoGAAAA6mfZH8g33HDDWst79uy5wvp1Tcu0bBqmZX/EXxmdOnVKsvQeM7VZvHhx+fkJJ5yQX//613Vu69JLL631RvO77bZbjj322PTu3XuFU6cNGTIknTp1yg033JB99tknzz77bE4++eQ0bbr6f/qeNWtW3nvvvXTs2DEdOnRY7e2t6v/h66+/ngMOOKA8rVtt6hrdUdv/+8r+n99xxx2ZNWtW+vTpk5122qnWdZaFR++++26t5QsWLKho85OqU1e9hmB6MQAAAACAtdzy04qtrq233jrJ0nuKfBJ69+6ds88+O0nys5/9bIXrNmvWLIcffngmTpyYc845J0ntN3xvzIYPH56JEydm6NCheeSRRzJ79uwsWbIkpVKpHGiVSqVa667O//v111+fZMU/z2VB0euvv15r+bLlvXr1+kTrLFiwILNnz06HDh0aPHQx0gWAT93Anw9ssLYfOvmhBmsbAAAAVtWyqb9ee+21WsvrWv5J2HffffOLX/wif/7zn3PJJZdU3JukKBtttFGSuqfNWt5RRx2VX/7ylxkzZkw23XTT7LjjjoX0oXPnzmnZsmXefvvtzJ49O+uuu+5qbW9V/g8XLFiQsWPHplu3bvnjH/9Y42f98ssvr1af6jJ37tzcdtttSVYcumy99da59dZb869//avW8mXLt9pqq4o6y5etTJ2+ffumuro6b731Vt54441ssMEGH1unoRjpAgAAAACwhuvfv39atGiRf/7zn5k6dWqN8o+76Xx9LLv3y/LThC1vv/32y2abbZapU6fmoosuKqzd5S0LE2q798lH7bLLLtl6663TqVOnj70HTH00adIke+yxR5LkN7/5zUrVWdHPbpdddkmS3HnnneWpsJZX2//hnDlz8uGHH2b99devEbgsWrQot9xyy0r1q75uvvnmvP/++xk4cGA23njjOtfbf//9kyS33XZbjenKpk+fngceeCAdOnTIwIH/9wXcgQMHpn379pkyZUqefPLJWttOkgMPPLC8rGXLluVp5v785z+vVJ2GInQBAAAAAFjDtWnTJsOGDcvixYvzrW99q+IP3BMnTszPf/7zwtrq3r17kmTy5Mm1lq+zzjr5/e9/n+rq6px77rk566yzMmfOnBrrzZo1q85trMi///3v/PCHP0yyNOBZGU8++WRmzpxZnpasKGeffXaqqqpy4YUXZty4cRVlixcvzu23316xbEU/uz59+mTvvffOO++8k7PPPjsffvhhuWzs2LG56aabatTp2rVr2rdvn2eeeSYPPfR/s3csWbIkZ599dl544YXV2r+6LJta7Oijj17hejvuuGMGDhyYGTNmVPzsFy9enG9+85tZtGhRTjnllDRr1qxc1rx585x00klJkhNPPLEigPrJT36Sp556Krvvvnv69+9f0dZpp52WJPnBD35QMQJqwoQJ+fWvf5111103xx577CrucXFMLwYAAAAA8CkZMGBAnWXDhw/P8OHD6yy/+OKLc9999+Uvf/lLPve5z2XXXXfN7Nmzc++99+b444/PFVdcUR5psTp69+6drbbaKv/85z+z4447ZosttkiTJk1y0EEH5aCDDkqydOTN3XffncMOOyw/+tGP8rOf/Sw77bRTunfvnvfffz+vv/56Jk6cmEWLFqVfv37Zfvvta23rjDPOKI9mWbx4cV5//fVMmDAhH3zwQXbcccecfvrpq70/q2P33XfPD3/4w5x11lnZa6+9sv3226dPnz6ZOXNmJk6cmIULF2b27Nnl9Q866KDcd9992XvvvbPnnnumdevW6dy5cy6++OIkyS9/+csMHDgwV155Ze66665sv/32mTZtWh544IF885vfrPF/2LRp05x11ln59re/nd133z177bVXOnbsmEceeSTTp0/PiSeemCuvvLLQfX799ddz3333pXnz5jn88MM/dv1rrrkmO++8cy6//PLce++92XzzzfPYY4/l5Zdfzi677JKRI0fWqPOd73wnd999d8aPH58+ffpk0KBBefXVV/PII4+kS5cu+d3vflejzj777JNvfetbufzyy7PNNttk8ODB+eCDDzJ27NiUSqVcc801qz0FXBGELgAAAAAAn5JHHnmkzrIhQ4assG7nzp0zfvz4nHvuubn11lvzl7/8JRtvvHF+9KMf5ZBDDskVV1yRTp06FdLP0aNH58wzz8wDDzyQxx9/PB9++GF69OhRDl2SZNddd82UKVNy1VVX5a9//WueeeaZTJgwIdXV1dlggw1y+OGH59BDD80BBxyQpk1r/1P06NGjy8+rqqrStm3bbLfddjn88MNz4oknFhIira4zzjgjO+20U37605/moYceysSJE9O5c+dsueWWOfLIIyvWPeWUU/LOO+/kD3/4Q0aPHp1FixalV69e5dClT58+eeSRR/Ltb387d911V/7yl7+kX79+ue6667LRRhvV+n94zjnnpEePHrnsssvy0EMPpWXLltl1113zve99r877oqyOG2+8MR9++GH233//dOjQ4WPX79OnT5544omcd955GTNmTG655Zb07Nkz5557bs4555xUV1fXqNOiRYuMGzcuF110UW688cb85S9/SceOHfP1r3893//+99OjR49a27rsssuy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xfLWrVvnwgsvzMknn1zf5gEAAAAAANZI9Q5dHn300QwZMiRVVVW5+eab6wxdfv/73+cb3/hGqqqqUiqVKsrmz5+f//7v/86iRYty2mmnrVrPAQAAAAAA1iD1vqfL3XffnSTp2rVrvvSlL9W6zjvvvJNvfetbSZaOjNlkk01y7rnn5pe//GWOPfbYNG3aNKVSKeeee27eeOONVe89AAAAAADAGqLeocujjz6aqqqqHHTQQamqqqp1neuuuy6zZ89OVVVVBg0alCeffDLf/e53c/zxx+e3v/1t/v73v2edddbJ+++/n9///vervRMAAAAAAAANrd6hywsvvJAkGThwYJ3r3HLLLeXnl112WVq1alVRPnjw4Bx22GEplUoZN25cfbsAAAAAAACwxql36DJt2rQkSZ8+fWotX7RoUXk0TJ8+fbLtttvWut7BBx+cJHnuuefq2wUAAAAAAIA1Tr1Dl3fffTdJ0rp161rLJ06cmIULFyZJBg0aVOd2NtlkkyRL7/8CAAAAAADQ2NU7dFk2VVhdYckjjzxSft6/f/86t9O0adMkS0fGAAAAAAAANHb1Dl169OiRJHnsscdqLb/vvvvKzwcMGFDndmbNmpUkadu2bX27AAAAAAAAsMapd+gyYMCAlEql/Pa3v60xSmXmzJn5+9//niTp3Llzttlmmzq388wzzyRJevXqVd8uAAAAAAAArHHqHbr8v//3/5IkL730Ur70pS/l+eefz6JFi/LUU0/lkEMOyXvvvZeqqqp89atfXeF27rvvvlRVVeXzn//8qvUcAAAAAABgDdK0vhV23333HHzwwbn11lszZsyYjBkzpsY6bdq0yZlnnlnnNt55553cfvvtSZJBgwbVtwsAAAAAAABrnHqPdEmS66+/Pl/4whdSKpVqPFq1apUbb7wx3bt3r7P+r371q3zwwQdJkiFDhqxSx2+66aZst912admyZTp27JhDDz00U6ZMWWGdkSNHZrPNNku7du3SokWL9OrVK8ccc0xeffXVVeoDAAAAAADAMvUe6ZIkrVu3zpgxY3L77bfn1ltvzdSpU9O8efNst912OfbYY9OjR48V1p86dWqGDh2aDTbY4GPXrc3VV1+d4cOHJ0k22mijzJo1K6NHj84DDzyQiRMnZr311qu13p133pkFCxakT58+mTt3bl566aVcc801GT9+fJ5//vl69wMAAAAAAGCZVQpdltlvv/2y33771bveL3/5y1Vu84MPPsiIESOSJEOHDs3NN9+cadOmpV+/fpkxY0ZGjRqVn/3sZ7XWHT9+fFq0aFF+ffTRR+f666/P5MmTM2vWrHTq1GmV+wUAAAAAAHy2rVbo0hAee+yxzJw5M8nS0CVJunfvngEDBmTs2LG13mNmmRYtWuQXv/hFrrvuurz99tt56aWXkiSbb755OnbsWGe9hQsXZuHCheXXc+fOLWJXAAAAAACAtcgq3dPljjvuyHbbbZftttsuN954Y73q3njjjeW6d999d73bfu2118rPu3btWn7erVu3JEunLluRqVOn5tFHHy0HLttuu23Gjh2bqqqqOutcdNFFad++ffmx4YYb1rvfAAAAAADA2q3eoUupVMqpp56aiRMnpkuXLvnqV79ar/pHHnlkOnfunCeffDKnn356fZtfYb9WxsUXX5zFixfn+eefz5577pknnngiw4YNy5IlS+qsM3LkyMyZM6f8WD74AQAAAAAASFYhdLn33nvzwgsvZJ111slPf/rTejdYVVWVyy67LE2aNMkzzzyT++67r171lx9lMmPGjBrPe/bs+bHbaNKkSfr27Zv//u//TpL84x//yD333FPn+tXV1WnXrl3FAwAAAAAAYHn1vqfL6NGjkySDBw/O5ptvvkqNbr755vniF7+YO+64IzfffHN23333la67ww47pFOnTpk1a1ZGjx6dI488MtOmTcvDDz+cJBkyZEiSpF+/fkmSk046KSeddFJefPHFTJo0KQcccEDWWWedfPjhhxX3f1mwYMEq7QsAAMXpf+b/NFjb3z90jwZrGwAAgLVDvUe6PProo6mqqsqBBx64Wg0fcMABKZVK5bBkZTVv3jyjRo1KsjQA2njjjbPZZptl3rx56dy5c0aMGJEkmTx5ciZPnpyZM2cmSd54440cfPDBad++fbbeeut07949v/zlL5MkPXr0yN57771a+wMAAAAAAHy21Tt0efXVV5Mkffv2Xa2GN9100yTJv//973rXPe6443L99ddnm222ybRp01JVVZVDDjkk48ePT/fu3Wut07Nnz3zpS19Khw4dMnny5Lzzzjv53Oc+l+OPPz4TJkwwZRgAAAAAALBa6j292Jw5c5IkHTt2XK2Gl9WfO3fuKtUfNmxYhg0bVmd5qVSqeL3xxhvnlltu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dcU1a/PNN2/A3sBnT+/evSvOwS5dujRgbwBgzSF0AQDKtthii9x8880N3Q0A+FhdunRxzYIGtMcee5gGFgBqYXoxVtvjjz+eo446KhtvvHFatmyZFi1apEePHtl5553zrW99K3fddVfF+qVSKaNHj85BBx2U7t27p3nz5ll33XUzcODAXHnllfnggw/qbGv8+PE56qijstFGG6Vly5Zp06ZNNttss5x44omZPHlyjfU/7t4E5qClSM8991wOOeSQdOrUKa1atcrOO++cv/zlLxXrfNwx93FzpN9999055JBD0rNnz1RXV6dVq1bp1atXdt9995x11ll5+OGHK9b/85//nOHDh2f77bdPjx49yudoz5498+Uvfzm33XZbrfvy0ftpLFiwIOeff3769OmT6urqbLDBBjnllFMyb9681f2xsYap632ztnnzX3311Rx77LFZf/31U11dnX79+uXyyy+vc9vTp0/P+eefn5122ikdOnRI8+bNs/7662f33XfPj370oxX2a+HChfnBD36Qvn37pkWLFh97DC5YsCCXXXZZdtttt3Tq1CnNmzdPt27dcuCBB+bvf/97ne18+OGH+cMf/pD99tsv6623XvkateOOO+b73/9+3n777Rp1ajuvH3zwwey3335Zd91106pVq+yyyy41roesHa6++upsu+22admyZbp165avfe1ref311+tcf9q0aTnvvPOy3377pU+fPunYsWOaNWuWddddN9tvv33OOeecTJ8+vc76zz//fE488cRsttlmadOmTVq2bJlNN900J5988grvq3Hbbbdl4MCBad26dTp27JiDDz44Tz755AqvS6t7zaLxW9OP75W5p4vrAfV17bXXlo/7rl275qijjsorr7xS63ve3XffXbFs7Nix5e1MnTq1ouy5554rl40fP76ibNnvDKVSKT/84Q/zla98JVtssUW6deuW5s2bp02bNunXr1+GDx+eiRMn1uhzEZ/T6rPfy9dxDQGAWpRgNYwdO7bUrFmzUpI6H3vvvXd5/QULFpT23XffFa6/4447lmbOnFmjrTPPPHOF9Zo3b1665pprKuqMGzeuYp2Pll9zzTUV5ePGjVvpuny2ffT4GD58eKlly5a1Hps//elPy/VWdMyVSqXS+eefX1H+yiuv1Fm3tsexxx5bsb2BAwd+bJ1vfetbNfavV69e5fItttii9PnPf77O8/vDDz8s8CdLQ6vrve+VV16pWD5kyJBS+/btaz0uvve979XY7u23317q0KFDncdh+/btK9Zf/hjcdtttSzvttNNKH4OTJ08u9enTZ4XH/fDhw2vUmzt3bmmvvfZaYb3111+/9M9//rOi3kfPzcMPP7xUVVVVo26TJk1K99577+r/J7HG+Na3vlXrcdKlS5fSEUccUev7+dixYz/2fblr166lyZMn12jvV7/61Qo/d7Vp06Z0++2316j385//vM7PTsOGDavzurQ61ywav8ZwfH/02nT++edXlLseUF+nn356rf/f6667bunLX/5yjeN+wYIFpebNm5eXnXfeeeVt3XDDDRXr//rXvy6XXXzxxeXlVVVVpVmzZpVKpVJp0aJFH3sONWvWrPSnP/2pot+r+zmtvvu9zIquE64hAHyWGenCarnkkkuyaNGiJEmTJk0ycODAHHjggenfv386duxYY/3/+q//yh133FF+3bt37+y///7ZZpttysseffTRHH300RX1rrzyyopvQTdv3jyDBg3KDjvskKqqqiTJBx98kOHDh+ehhx4qchdhpVx11VWpqqrKnnvumc9//vMVZWeeeWaeeeaZ1W7jwgsvLD9v0aJF9txzz/L507Zt2zrrtWrVKtttt1322WefHHzwwRk0aFBat25dLr/88strjJBZ3rPPPptnnnkmm266afbYY480a9asXHbPPffkvvvuW809ozEaM2ZM5s2bl5122in9+/evKLvkkksyf/788utnnnkmQ4cOzTvvvFNe1qlTp+y1114ZPHhwOnTosMK2nnjiiTzyyCMrdQy+99572W+//fLiiy+Wl22zzTbZf//906tXr/Kyq666qsbommOOOSb33ntv+XWHDh0yePDgbLLJJuVlb775Zg444IDMnj27zv7+6U9/SqtWrbLnnntW3BNnyZIl+e53v7vCfaXxuOOOO2p8Y3j77bfPoEGDMnv27Nx0000rrN+7d+/y56Z99903m266ablsxowZOeWUUyrWv/POO/P//X//X/lzV6tWrbL33ntn8ODBadGiRZJk/vz5OfzwwzNlypRyvWeffTannXZaxbY222yz7LnnnmnSpEluuOGG+u88a73GcnyviOsB9XXXXXflxz/+ccWy7bbbLrvuumvmz5+fW265pUadVq1aZYcddii/Xv530Y/+Xvrggw/W+nyrrbaq8btzly5dsuOOO2bfffct/37dpEmTJMmiRYtywgknZMGCBXXuS30+p63KfgMAH6OhUx8at379+pW/mXLhhRdWlH344Yelhx9+uPSHP/yhVCqVSk8//XTFN1m++c1vVnyr7Ic//GFF+UMPPVQqlZZ+26dLly4V38p89NFHy/WuvvrqinqDBw8ulxnpwiflo8dHmzZtSs8++2y5/KyzzqooP+6440ql0up946tFixbl5TfccENFvUWLFpXGjRtXuu222yqWP/vss6WFCxfW6P+MGTNKbdq0KW/vjDPOqChffpRBktIpp5xSLrv++utX+K1SGreVHemSpDR69OhyveHDh9d5bB922GEVZcOGDSvNnz+/XL5w4cLS73//+4p+rOox+NFv9N90003lssWLF5cOOuigcln79u1L7777bqlUKpUmTpxYUa9v376l6dOnl0qlUmnJkiWlr3/96xXly1/zPnped+7cufwt7nfffbe05ZZbVnw7tbZzksZn8ODBFf/vv/jFL8pl48aNq/Ht9mXv57NmzSpNnTq11m2effbZ5fXXWWed0pw5c8pl/fv3L5f17t279Oabb5bLpkyZUmrbtm25/L/+67/KZccdd1xFP/77v/+7XDZx4sRSq1atfEuZGhrL8b2ikS6uB9TXF77whYr/v+VHq9911111Hvff/va3K34nWLx4calUKpW22mqrUrJ0ZFOS0kYbbVQqlZb+ntyxY8dyneVHnX/44YeliRMn1jqS/I477qho/29/+1u5bHU+p63qfpdKRroAQF2MdGG1LP9tr+uvvz6/+MUvMm7cuLz55pupqqrKTjvtlCOOOCJJcvvtt1fUff7553PYYYfl0EMPzaGHHpq77767onzZiJjHH388b731Vnn5oYceWvFtomOOOabi23P/+Mc/8v777xe3k7AShg0bls0337z8+jvf+U6qq6vLr8eNG7fabSx/vl1xxRW56qqr8uCDD2bmzJlp2rRp9thjjxxwwAEVdXr16pWf//zn2X333ctzQldVVaVr164V33B74YUX6my3VatW+f73v19+ve+++1aUv/nmm6u7azRCu+66aw455JDy67qOiyVLllSMcOzYsWN+9atfVYy2at68eY466qg626rPMbj8taZJkyb585//XL7OfOUrX8lrr71WLp8zZ07Gjx+fJBV9TJLTTz89Xbt2TZKss846GTVqVEX5mDFj6uzvCSecUL4utWzZsuIGs4sWLcqsWbPqrEvjsHjx4jzwwAPl1xtuuGGOP/748us99tgjgwcPrrVux44d88Ybb+TrX/96+vXrlzZt2mSdddZJVVVVLrnkkvJ6H374Yfkb/dOnT8/jjz9eLmvSpElOOumk8rF91llnpWnTpuXy5Y/n5b+tX11dXfHt+q222ipf/epXV+VHwFqsMR3fK+J6QH0sXrw4999/f/n1snvHLTN48ODsvffetdZd/v91/vz5efLJJzN37tzySPfDDjssSfLKK69k2rRpee655yruCbR8/aqqqnTo0CFnnXVW+vfvnw4dOqRp06apqqqq8flnRZ/fV/Zz2ursNwBQt6YfvwrUbcSIEbnjjjuyZMmSTJo0KSeeeGK5rHv37jnwwANzzjnnpGfPnjVujLf8HwFq8+qrr1b8u8wWW2xRY90tttii/KFz0aJFefPNN7PRRhutyi7BKlk+cEmStm3bpmfPnuUpLZb/xX5Vffvb386RRx6ZJJkwYUImTJhQLttoo40ydOjQjBgxIp06dUqSzJs3L7vssstKTW02d+7cOss+97nPpV27duXX7du3ryhfuHBhvfaDtcO2225b8bqu42LWrFkVAd9WW22VNm3a1Kut+hyDy19rlixZktGjR69w2yt7rVl//fXToUOH8hRpH11/eSv7s6HxmjlzZsUXPPr165d11qn8LtMWW2xR682yf/e732X48OEplUof286y9+aPHm9TpkxZ4RRLb7zxRpYsWZImTZpU3PS8Z8+eFedSkhpTYkJjOr5XxPWA+pg1a1bFcb/55pvXOO4///nP1/iiYJLssssuad68eT744IMkS6cOe+utt/Lhhx8mSc4+++zylHwPPvhgxXSrVVVV2W233cqvn3zyyeyxxx6ZM2fOx/Z5RZ/f6/M5bVX3GwCom9CF1TJw4MA89thjufLKKzNu3Li88sor5V+ypk2bll//+te58847M3HixHpv+9133y26u1myZEnF6+nTpxfeBtRHfY7JI444Iuutt15+85vf5IEHHqj4Q9orr7ySSy+9NPfff38eeuihNG3aNFdeeWVF4NK6desMGDAg6667bpKl3+Rcdp6t6I8jH51j+uP+yMFnw6d5XHySbX0S1xrnzGfPsvvLfZyFCxfm1FNPrXjP3WyzzdKnT580a9Ysr776av75z3+Wy1bmD9e1KZVKee+992oEnCvbz7r4HPXZ1FiO79XlesDy6vN+uey+Lsvu4fLQQw9l5syZSZaOOt9mm23St2/fTJ48uUbo8tH7uYwYMaIicFl//fWzzTbbpFWrVnn33XcrRmJ9Ep/fV/c6sSKuIQB8lphejNW27bbb5qqrrsqUKVPy7rvv5umnn66YuuLf//53br/99oobVibJfffdl1KpVOfj5ptvTrL0W5nLe+6552r0YfllzZo1y/rrr59k6ZQ1y1v+A26SipECsDo+elzOnz+/YnTLhhtumGT1j8k99tgjN954Y1577bXMnz8///rXv/LNb36zXP7oo4+W/6CxbJqMZOmUMpMnT87dd9+dm2++OX/84x8/0V+qYJlOnTpV/GHsqaeeqhj5UrTlrzWtWrXKe++9t8JrzUknnZTk4681b775ZsX5+tH1+Wzp3Llz+ebeydIpUz/6x69JkybVqPfss89WfDP5xBNPzHPPPZdbb701N998c4YOHVprex893r7xjW+s8LgulUrl8275uq+99lqNPyyvaDSkz1GfTY3p+F4R1wPqo3PnzmnZsmX59eTJk2sc9yt6v1x+irCHHnooDz74YJKlX1Jc/t8HH3ywXPbReknl5/dtt922/Lv0zTffnPPOO69+O7USVne/V8Q1BIDPMqELq+Waa67JvffeW/7WSosWLfL5z38+w4YNq1jv1VdfrTGP7Nlnn11jHuPFixfn3nvvzVe/+tXyt/i33377dO7cubzOzTffXDHv83XXXZfJkyeXX+++++7lXxTXW2+9iu3fdNNNWbBgQZLkj3/8Y/7617+u0n7DR91www0Vv5SPGjWqYqj+sl+oPnpMXnvtteXz59JLL13hqLCf/exnefjhh8u/CLVu3TrbbrttxXzNyf9Nc7Fo0aLysnXWWad8XpRKpXz3u98tnwvwSWrSpEmGDBlSfv3222/nhBNOqDj+Fi9enBtvvLGQ9pa/1rz77rs544wzytN9LDNv3rz84Q9/qLiPzEevUT/+8Y/L31L98MMP853vfKeifPl94rOnadOm2XXXXcuvp06dmt/85jfl1w888ECtUy8t/76cpOLeRq+++mquuOKKWttbb731KqaK+cMf/pB77rmnxnovvfRSvv/97+dXv/pVedlee+1Vfv7ee+/loosuKr9+6qmnVnjurc41i8arMR3fK+J6QH00adIku+++e/n1q6++mt/97nfl12PHjq31uFxm+fBk2rRpNUKXZefUxIkTK6a++2josvx5VF1dnWbNmiVZegyff/759duplbC6+70iriEAfKaVYDXsv//+pSSlddddtzRw4MDSwQcfXPrCF75QateuXSlJ+XHzzTeXSqVS6bDDDqtY3qpVq9Juu+1WOuigg0o777xzqU2bNuWyV155pdzO5ZdfXlGvurq6tNtuu5V23HHHUlVVVXn5OuusU7r//vsr+tizZ8+Kuq1bty5169atYtmyx7hx48r1xo0bV1F2zTXXfAo/URqLjx4fy47nvfbaq7TllltWLG/atGnpqaeeKpVKpdLcuXNLrVq1qijv0KFDqWPHjrUek8ufB1tssUUpSalLly6l3XffvfSlL32ptOeee5ZatGhRUeef//xnqVQqlc4999yK5V27di3tv//+pb59+5aSVJw7u+++e8X+9erVq86yUqlUsd2vfe1rn9BPmYZQ13vfK6+8UrH8/PPPX6l6pVKp9NRTT9U4Tjt16lTae++9S1/84hdLnTt3LrVv375ie6t6DC5YsKDUu3fvGsf+4MGDSwcccEBp6623LjVr1qyUpNSrV6+KbX75y1+uqNexY8fSF77whVKfPn1qbG/WrFnletdcc02d15JSqVQ6//zz6zyvabz+/ve/13jP3mGHHUq77bZbqXnz5rW+n8+bN6/UsmXLiuU777xzaZ999im1atWq4n35o8fS3/72txrlW265ZenAAw8s7bPPPqUNN9yw1vPz2WefLR/zy9fbc889a/Tlo22uzjWLxq2xHN8ruja5HlBfd911V8X/T1VVVWmHHXYo7brrrqWmTZuu8D1vwYIFtZ4bTz75ZKlUKpVeeOGFGmVVVVUVx0+pVCoNGjSoYp2+ffuW9ttvv9J6661X4xxZ2XOhVFrx57TV2e8VHfOuIQB8lhnpQiFmz56dhx56KLfeemvuuuuuiqkFBg0alIMPPjjJ0ptrfvGLXyyXvfvuu7n//vvz17/+NRMmTKiYcmb5eWdPOeWUnHrqqeXXCxcuzP33359HH320/K3/Zs2a5de//nUGDRpU0bcLLrig4vWCBQsyffr0tGzZMkcfffTq7zwk+cpXvpJFixbl3nvvzdNPP11RdvHFF2fLLbdMkrRt2zZnnHFGRfk777yTt99+O507d64xaqU2b731Vu6777785S9/ybhx4ypG1BxxxBHp379/kuTkk0/OBhtsUC6bMWNG/v73v2fy5MkZPny46TD41Gy55Zb585//XHET11mzZuWee+7JnXfeWf4GcRFatWqV22+/PZ/73OfKy2bMmJGxY8fmb3/7WyZOnFj+FulH5ze/9tprK77t+fbbb+euu+7Kiy++WF7WrVu33HbbbTXmSuezZ7/99suJJ55Yseyxxx7L/fffnxYtWuTAAw+sUadNmzY599xzK5ZNmDAhd999d5o2bVrj+rC8/fffP1dccUX5W89J8vTTT+e2227L3XffXTGl5fLH9uabb54f//jHFdt6+umnM27cuJRKpXzta1+rKFt+Opgirlk0To3l+F4R1wPqa/DgwTn99NPLr0ulUh577LE8+OCDad++fQ499NCK9Zd/v1x2X5fltWvXrvw7QJ8+fdK1a9eK8o/ezyVJfvCDH6Rp0/+79e7kyZNz++23Z/r06RVTeBdpdfZ7RVxDAPgsE7qwWs4777yce+652XPPPdO7d++0adMmTZs2TefOnbPbbrvl8ssvz9ixY8sfHNu0aZM77rgj//u//5svf/nL6dGjR6qrq9O8efP06NEjgwcPzoUXXpgXXnihfA+MZX7yk5/k/vvvz1e/+tX06tUr1dXVadmyZTbddNOccMIJmThxYoYPH16jj9/4xjdy/fXXZ+utt07z5s3TsWPHHHroofnXv/5VMeUGrI4hQ4bk4YcfzgEHHJAOHTqkZcuW2WmnnTJ69OiKX2KSpUHgT3/60/Tt2zfNmzdPt27d8o1vfCNPPvlk+Rez2lx++eU566yzMnDgwGy44YZp2bJlmjVrlvXWWy9f+MIXcs011+SGG24or9+lS5dMmDAhRx55ZDp27JgWLVpkiy22yGWXXVYxTQh8Gg444IBMmjQp3/nOd7L99tunffv2adq0abp165ZBgwblnHPOKaytzTbbLBMnTszPfvaz7LnnnuncuXOaNm2aVq1aZZNNNsnQoUPzq1/9Ko8++mhFvXbt2uWee+7J73//+wwZMiRdu3ZN06ZN07Zt22y//fa54IIL8uyzz2bHHXcsrK80bj//+c/zm9/8JltttVWqq6vTuXPnfOUrX8njjz+e7bbbrtY6I0eOzFVXXZXPf/7zadasWTp16pShQ4fmsccey+abb77C9r75zW/m6aefzimnnJItt9wybdu2TZMmTdKhQ4f0798/J554Yu64444a59PJJ5+cv/71r9l5553TsmXLdOjQIQcddFAeffTRGgH8R6eDWdVrFo1fYzi+Pzpd2PKhTeJ6QP1deuml+d3vfpdtttkm1dXV6dKlS7761a/m8ccfr7j3SZMmTSqmwE5qThU2YMCArLPO//3JZdlUY3WtnyS77bZbxo0blz322COtWrVKmzZtMmjQoNx+++2f6BcGV3W/P+4cdA0B4LOqqlT6yF3SAACAtcYbb7yR9dZbr8a3+adPn57+/fvnjTfeSLL0huDL7gsGjcHf/va3ilE3V111VY499tgG7BGN3dSpU2sdDT5p0qTsuOOO5ZkZdtttt9x3332fdvc+Mau632eccUbFaMqXXnqpYnQZAHxWNf34VQAAgMbq+9//fv73f/83e+21V3r06JHmzZvn1VdfzV//+teKqV3PO++8BuwlrLxx48bl3nvvzXXXXVdeVlVVlT333LMBe8Xa4Ljjjstzzz2X3XbbrTxN75QpU3LbbbeVR3VUVVXlO9/5TkN2s3D13e//+Z//yeOPP57f/va35W306tVL4AIA/39CFwAAWMu99dZb+eMf/1hr2TrrrJNvf/vbRgjQaNx66625/PLLK5Ydf/zx2XjjjRuoR6xNXnvttYope5dXXV2dyy+/PIMHD/6Ue/XJq89+/+QnP8nEiRMr1rn44os/8T4CQGMhdAEAgLXY0UcfnVKplAkTJuTNN9/M7Nmz06pVq/Tu3TuDBg3Kf/3Xf2Xrrbdu6G5CvTVr1iwbb7xxjjnmmBo37IZVccopp6Rbt2559NFHM3369MybNy9t2rTJJptskj333DPHH3/8WjmaY1X3u2XLltl6660zcuTIHHTQQQ3QcwBYM7mnCwAAAAAAQAHWaegOAAAAAAAArA2ELgAAAAAAAAUQugAAAAAAABRA6AIAAAAAAFAAoQsAAAAAAEABhC4AAAAAAAAFELoAAAAAAAAUQOgCAAAAAABQAKELAAAAAABAAf5/o9Ru80vFiVoAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15, 8))\n", + "palette = sns.color_palette(\"tab20\", n_colors=len(model_filter(\"LightGBM\", models))) # 더 많은 색상 지원\n", + "sns.barplot(x='region', y='CSI', hue='model_data', ci=None, data=model_filter(\"LightGBM\", models), palette=palette)\n", + "plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', fontsize=15)\n", + "plt.title('LightGBM Models with Different Oversampling Methods', fontsize=20, fontweight='bold') # 제목 볼드 및 크기 조정\n", + "plt.ylabel('CSI', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "plt.xlabel('', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "# x축(도시명) 글씨 크기 조정\n", + "plt.xticks(fontsize=15, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.yticks(fontsize=10, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **증강데이터에 따른 DeepGBM 모델 성능 비교**" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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JUvg6OiIK1euYMeOHYiLi4OtrS3mzp2LUaNGKZSxt7fHlStXMG3aNFhYWCA2Nha7du1CQkICnJ2dsWzZMvTu3VvQlra2NqKiotCzZ0/ExsYiIiIClpaWmDdvnmgQxN3dHWfOnIG/vz8SExOxb98+aGpq4tChQ/JAhLLF17t27Yp9+/ZBXV0de/fuxcOHD9GlSxecPXsWzs7OpTiy5c/NzQ3Tpk1Ds2bNEB8fjz/++AMXL16Ek5MT1q1bJ5/+rKKoq6tj3759WLx4MWxtbREREYEjR46gXr16WLZsGXbs2AE1NcVb+4GBgVi4cCEsLCywf/9+rF27FmvXrpVvV1NTw8aNG7F37174+voiMTERO3fuxOnTp6Gjo4PRo0cLRh5RyUmkYhPtUZEyMzNhZGSEjIwMGBoaVnZ3Pln3p3xWaW3XmXC90tomcc1Gb6y0ti/N7VNpbRMREREVxN9ERESfHt4nEsrKykJiYiJsbGygo6NT2d2hIiQlJcHGxgaenp6Ijo4ulzoHDhyIlStXYtu2bejWrVu51ElUmUpyTeMIFyIiIiIiIiIiIiJSWWpqKpKSkgTp27dvx5o1a2BsbAx/f/8P3zGiSsY1XIiIiIiIiIiIiIhIZQkJCXB3d4eTkxNsbW0BAH///Tfi4+Ohrq6OlStXQl9fv5J7SfThMeBCRERERERERERERCqztbXF4MGDERUVhePHj+P169cwMzNDYGAgRo0aVaELypfGrVu3MGvWLJXyenh4ICwsrIJ7RP9WDLgQERERERERERER/QdZW1ujNEt8m5ubY+nSpRXQo4rx5MkTbNiwQeX8DLhQaTHgQkRERERERERERET/Wl5eXqUKLBGVlFpld4CIiIiIiIiIiIiIiOhTx4ALERERERERERERERFRGTHgQkREREREREREREREVEYMuBAREREREREREREREZURAy5ERERERERERERERERlxIALERERERERERERERFRGTHgQkREREREREREREREVEYMuBAREREREREREREREZURAy5ERERERERERERERERlxIALERERERERERERERFRGTHgQkRERERERERERFSJJk2aBIlEgvDw8MruSoUJCQmBRCJBdHR0ZXeFCsjLy8OpU6fwww8/oFmzZqhSpQq0tbVRt25dDBw4EImJiUWWj4mJQceOHWFiYgIDAwO4urpi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NUOfPn1w6tQpxMfHIysrCzVq1MDXX3+NsWPHwtHRsdzbpA+PARciIiIiIiIiIiKi/yBra2uUZolvc3NzLF26tAJ6VDGePHmCDRs2qJy/IgIu9vb2WLduXbnXSx8XBlyIiIiIiIiIiIiI6F/Ly8urVIElopJSq+wOEBERERERERERERERfeo4wuU/7tC5+5XWdqNKa5mIiIiIiIiIiIiIqHwx4EJEREREREREH41mozdWWtuX5vaptLaJiIjo08cpxYiIiIiIiIiIiIiIiMqII1yIiIiIiKhStPqlVaW1HfNdTKW1TURERERE/04c4UJERERERERERERERFRGDLgQERERERERERERERGVEQMuREREREREREREREREZcSACxERERERERERERERURkx4EJERERERERERERUiSZNmgSJRILw8PDK7kqFCQkJgUQiQXR0dGV3hQp58OABli9fjpCQEDRo0ABqamoqf1YxMTHo2LEjTExMYGBgAFdXV2zcuLHIMg8fPkRoaChq1aoFHR0dODg4YOLEicjKylJa5u3bt5gwYQIcHBygo6ODWrVqoV+/fnj06FGRbYWHh8PV1RUGBgYwMTFBx44dcebMmWL3q7QYcCEiIiIiIiIiIiIiKqWkpCRIJBJ4eXlVdldKZefOnRg8eDA2bNiAW7duQSqVqlzO09MThw8fhpOTE/z8/HD79m307dsXo0aNEi1z584dODs7Izw8HKampujSpQtyc3MxZcoU+Pj44N27d4IyWVlZ8Pb2xtSpU/Hq1St06dIFlpaWWL9+PZydnXHv3j3RtoYNG4bQ0FDcuHEDPj4+cHV1xdGjR9GmTRvs2bNH5eNTEhoVUisRERERERERERGREmnH5lR2F1RS1eeHyu4CUYWztbXFsGHD4OLiAhcXFwwZMgRHjhwpskxqair69euH3Nxc7Ny5E4GBgQCAp0+fwsPDA/Pnz4e/v78gCBUSEoIXL17g+++/x+LFiwEA79+/R9euXbF7927MnDkTkyZNUigzbdo0xMbGwt3dHUeOHIGBgQEAYMGCBRg5ciT69esnGI1z7NgxLF68GKampjh79izs7e0BAGfPnoWXlxdCQ0Ph5eUFY2Pj0h00JT7ZES7btm1D06ZNoaurCxMTEwQHB+Pu3bvFlktMTERISAhq1qwJLS0tVK9eHZ06dUJGRsYH6DURERER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97t8/PHH5bKPPvoow4cPT5JcdNFF5bAlSY477rhsvPHGue+++/LEE08suxUvQOACAAAAAPAluPHGG7P11lunefPmadu2bQYOHJiXX365xvnnzJmTM888M5tuumlatGiRFi1apHfv3rnyyitrrPPee+/lhBNOSI8ePdKsWbO0bt06O+20U26++eZq877xxhupqqpK3759M2PGjPzoRz9K586d07Rp02ywwQb57W9/m08++WSR7TzzzDPZa6+9ssoqq6Rly5bZfvvtc9ddd+Xee+9NVVVVDj300Br7eNttt2W77bZLixYtsuqqq2bAgAF56aWXqs13xRVXpKqqKqeeemrGjx+f/fbbL+3atUurVq2y22675YUXXkjy6QiJYcOGle/vse666+aiiy6qsf0lVSqV8o9//CP9+vVL27Zt07Rp03Tp0iX77bdf7r777iSf3n9n7bXXTpLcd999Ffc9+ex7cN9992WnnXZKy5Yts+qqq2b33XfP448/XrGeC3v11Vdz6qmnZuutt87qq6+exo0bp1OnTvn2t79d43ZTVVWVLl26ZP78+Tn77LOz3nrrpUmTJuncuXN+8YtfZO7cuUu8/ldddVWS5JBDDqlWdssttyRJBg0aVK1sjz32SNOmTTNy5MiK+7IsqLPXXntVu2xYhw4d0qdPn7z//vt54IEHytMffPDBTJ8+Peuss0423XTTam0taP+mm25a4vX6IglcAAAAAAC+YBdffHH23nvvPPLII+nVq1f69euXJ554IltuuWXGjx9fbf4pU6Zk6623zoknnph33nknO+ywQ7bffvu89NJLOfTQQ3PMMcdUq/Pyyy+nZ8+eOeuss/K///0vu+66a7bYYos88sgj2WuvvRZ5T40kmTt3bnbaaaf89a9/zZZbbpl+/fplwoQJOe6443L44YdXm//hhx/O1ltvnZtvvjlrrbVW9txzz3z44Yfp379/rrvuusW+D//+97+zxx575KOPPspee+2Vjh075vrrr0/v3r0zduzYRdZ5/fXXs+WWW+a5557LN77xjXTp0iW33357+vbtm3feeSeDBg3KOeeckw033DB9+/bNm2++mR/+8If5y1/+sti+LM78+fOz//7756CDDsr999+fTTbZJN/61rfSqVOn3HLLLfn973+fJOnZs2cGDhyY5NPQ4Dvf+U75sd1225WXd91112XnnXfOqFGjstFGG6V///6ZOHFitttuuzzyyCOL7MMll1yS008/PbNnz06vXr3yzW9+M61atcrf/va39OrVK88880yN/T/ooIPym9/8Juuvv3522WWXzJw5M+ecc06OOOKIJVr/iRMnZvTo0WnUqFH233//auUL/q8222yzamWNGzfORhttlA8//LAiGFpcnYWnL7xeS1OnLrmHCwAAAADAF2jChAn5yU9+kkaNGuWmm27KrrvumiSZN29eDjvssPJIgoUddthheeaZZ/KjH/0oZ599dnlEwOTJk7Pnnntm+PDh2WOPPdK/f/8knwYEgwYNyptvvplzzjknxx9/fFZa6dPz7V999dXssssuGTp0aPr375+NNtqooq0xY8Zk4403ziuvvJJ27dolScaPH5/tt98+V155ZfbZZ5/ss88+SZJPPvkkhx56aObMmZMzzjgjJ554Ynk5l156aYYMGbLY9+IPf/hD/vznP+e73/1ukk9HkZxwwgk5++yzc+ihh+app56qVuevf/1rhg4dmmHDhqWqqiqlUimHH354rrjiiuy8885ZaaWV8sorr2S11VZLktx99935xje+kTPOOKPcTm2deeaZ+fe//50ePXrk5ptvLo9iSZLp06fn6aefTpLss88+6dmzZ0aMGJHu3bsv8n4oM2bMyHe/+93Mnz8/V199dQ466KBy2cknn5xf//rXi+zDPvvsk6OOOqqi7SS5/PLLc/jhh+fHP/5x7rnnnmr1JkyYkObNm+eVV17J6quvnuTT0GqzzTbL1VdfndNOOy3rrLPOYtf/6quvTqlUym677Za2bdtWW5/p06cnSTp16rTI+p06dcrjjz+eCRMmZOONN07yaYjzeXUW9H+BpalTlwQufCW9P/Kcz58JAAAAAJaByy67LB9++GG+/e1vl8OWJGnUqFEuvPDCXH/99ZkzZ055+tNPP51bb701vXr1yvnnn18OTpJPR1H8+c9/zmabbZY//vGP5cDlpptuyrPPPpuBAwfmZz/7WUX76667bs4777wMGDAgf/nLX8o3K1/YueeeWw5bkmSdddbJSSedlO9///sZPnx4OXC555578vLLL6dbt24ZOnRoxTKOOOKIXH755XnwwQdrfC+22WabihCkqqoqv/71r3P11Vfn6aefzgMPPFAxMiRJunbtmtNPPz1VVVXlOj/5yU9yxRVX5IUXXsjIkSPLYUuS7Lzzztl0003z1FNP5Y033kiXLl1q7M+ifPTRR+X7j1x22WXVAo/WrVtnhx12WOLl/etf/8p7772XnXfeuSJsST4NXP76178uMjDo3bv3Ipd32GGH5dJLL829996b6dOnp3Xr1tXm+d3vflcOW5Jk7bXXzsEHH5zhw4dn9OjRnxu4LO5yYrNmzSo/b968+SLrr7zyykmSmTNnVqv3RdepSwIXACC3PjKxztrefas166xtAACAL8Po0aOTJAcccEC1srZt22aXXXbJf/7zn/K0O++8M8mnIxwWDlsWWHBPl0cffbRanYVvYL6wPn36JElFnQXatGmTfv36VZt+4IEH5vvf/34eeuihfPLJJ1lppZXKYcrAgQMX2bf9999/sYHLot6DRo0aZdCgQbngggsyevToaoFL375906hRo4ppXbt2Ldft27dvtWV27do1Tz31VN5+++1aBy6PP/54Pvjgg2yyySbZaqutalV3URa8H/vuu2+1soYNG2bgwIE5//zzF1l31qxZuemmm/L000/nvffey7x585Ikb7/9dkqlUsaPH1/tcluNGjXKjjvuWG1Z6623Xrnu4jz55JN54YUXssoqq2Svvfb6/BWkTOACAAAAAPAFmjRpUpJkrbXWWmT5ZwOBN954I0nyy1/+Mr/85S9rXO7CNyRfUGfw4MEZPHhwjXWmTp1abVpN/WrdunVWWWWVfPDBB3n//ffTtm3b8h/rO3fuvMg6a665+JPqPu89WPBeLexrX/tatWktWrRIkqy++upp0KBBjeW1uUn8Am+++WaSfO4okCW1tO/ZPffckwMOOCDvvvtujcte1MiOmt6Tli1bJvn892TB6JZ999232s3tk/97b5Nkzpw5adWqVbV5Zs+eXdHmwvUWHs31RdSpSwIXAAAAqAPb/n7bOmv7wWNqPvMYgLr3ySefJEm22267Jf6j/4I6/fv3T4cOHWqcb+HLhtUXixpJsyRl9dmsWbOy33775b333svJJ5+cAw44IGuttVaaNWuWqqqqHHTQQfnHP/6RUqlUrW6R92T+/Pm55pprkiQHH3zwIudp1apVWrdunenTp+e///1vevToUW2e//73v0kqA7Y111wzTz31VLlsSessXLYkdeqSwAUAAIA6vbzkRp8/CwDUa2ussUbGjRuXCRMmLPKP05+9f8eCG4Hvs88+Of7445eojQV1hgwZkoEDB9aqfwtuTP5ZM2bMyAcffJBmzZpllVVWSfLpuiT/Nwrks2qavkBNNzdfML1jx45L0uUv1IKRKOPHj18my1ua92z06NGZNm1aBg0alNNOO61a+WuvvbZM+vZZd999d95+++2stdZa5cvQLcomm2yS+++/P08++WS1bXrevHl57rnn0rRp0/JlzBbUueGGG/Lkk08ucpkLpm+88cYVdRYuW5I6dUngAgAAX2HvjzynrrsAALDC69OnT+69997861//ym677VZR9t5775Xvv7JAv379ctJJJ+X6669f4sClX79+ufTSS3P99dfXOnCZNm1a7r777uy8884V0xeMdNh6663Ll6jadttPR2hef/31GTZsWPlG9gv861//Wmxb//rXv3LMMcdUTPv4448zYsSIJKl2/5a6sPnmm2eVVVbJ2LFj8+ijj2bLLbdc7PyNGzdO8ul6LMq2226bK664IiNGjMhRRx1VUTZ//vxcd9111eq8//77Sf4vSFvYq6++WmMAUdSCy4kdfPDB1f5vF7bHHnvk/vvvz7XXXlttJMzNN9+cDz/8MHvuuWeaNm1aUef000/PTTfdlLlz51Zcrmzy5MkZPXp0Vl111fI2lnz63rVu3Trjx4/P008/nZ49e1a0de211ybJcnOvmRVzvBUAAAAAwHLisMMOS5MmTXL11Vdn5MiR5enz5s3LT37yk/J9KBbYaqut0q9fvzz44IM5+uijM2PGjGrLHDt2bG6//fby64EDB6ZHjx65+uqr8+tf/7rafTpKpVIefPDBGm9o/9Of/jTTpk0rv3799ddz+umnJ0mOPvro8vSddtop3bp1y7hx43LOOZUn71xxxRUZPXr0Yt+LBx54IJdddlnFtFNOOSUTJ07MxhtvvNhRFV+WJk2a5Cc/+UmS5Igjjqg2Kmf69Om57777yq/btWuXRo0aZfz48Zk/f3615e27775p06ZN7rrrrnKItcBvfvObvP7669XqLBgZct1111Xcw+WDDz7IEUcckXnz5i39CtZgzpw5uf7665MkhxxyyGLnHTJkSFq1apUbbrihIjCaMmVKfv7znydJtbBwyy23zLbbbpspU6bkF7/4RXn6xx9/nB/84AeZN29ejj322DRq1Khc1rhx4/zwhz9M8ul2uPC+cv755+eZZ57JDjvskM0333wp13rZMsIFAAAAIHV7ab3dt1r8TaaB+m3ttdfOeeedlx/+8IfZdddds/3222f11VfPmDFj8v7772fw4MG5+uqrK+pcddVV6d+/f/7whz/k73//e3r27JmOHTtm+vTpeeaZZ/Lmm2/mRz/6Ufr3758kadiwYf7zn/9k1113zcknn5zhw4dn4403Tvv27TN16tQ8/fTTmTJlSn77299WjCBIkt69e+ejjz7Kuuuum5122inz5s3L3XffnTlz5uTggw/OgAEDyvOutNJKufLKK/ONb3wjQ4cOzT/+8Y/06NEj48ePz2OPPZajjz46F110UXnUx2d9//vfz5AhQ/KnP/0p66yzTp555pk8//zzadWqVa644opl+8YXcOKJJ+app57Kf/7zn6y33nrp06dP2rdvnzfffDNPPvlk+vXrlx122CHJp6FA//79c9NNN2WTTTbJZpttlsaNG2fbbbfNYYcdltatW+cvf/lL9ttvvxx44IH53e9+ly5duuTZZ5/Nyy+/nCOPPDJ//vOfK96zLbbYIv369ctdd92V9dZbL3379k2S3HvvvWnXrl323nvv3HDDDct0nf/zn/9k1qxZ6dWrV9Zff/3FztumTZtcdtll2W+//TJo0KD07ds3bdu2zciRI/PBBx/kuOOOK/d5YZdffnm23nrrXHjhhbnnnnvSo0ePPPbYY3nttdeyzTbb5IQTTqhW51e/+lVGjhyZhx56KN26dUufPn0yYcKEPPLII1lttdWqBXh1yQgXAAAAAIAv2NFHH53rr78+vXr1yiOPPJI77rgjm2yyScaMGZN111232vzt27fPQw89lN/97nfp0aNHnnrqqVx77bV55pln0rVr1/y///f/8tOf/rSiTrdu3fLUU0/lN7/5TTp16pQxY8bkuuuuy8svv5xNN900F1100SJvhN6kSZPcc889OeiggzJmzJjccccd6dy5c84999xFhiBbb711Hnrooey55555/fXXc+ONN6ZRo0a59dZbs/XWWydJ2rZtu8j3Yb/99suNN96YBg0a5IYbbsh///vf7L333nn44Yez6aabLsU7+8Vo2LBhRowYkSuuuCK9e/fO448/nuuuuy7//e9/s+eee+bHP/5xxfyXXHJJDjnkkEybNi1///vfc+mll1aMghkwYEBGjhyZvn375plnnsktt9ySjh07ZvTo0eUbw3/2Pbvhhhvyy1/+Mquttlpuu+22PPHEEznggAMyZsyY8j11lqWFLye2JAYOHJj7778/u+66a5566qnceuutWXfddXPFFVfkvPPOW2SdBdvooYcemnfffTfXX399VlpppZx00km5++67Ky4ztkDTpk0zatSonHTSSWnevHn+85//ZMKECTn00EPz5JNPpmvXrku/0stYValUKtV1J+qbGTNmpHXr1pk+fXpatWpVeHmb/+yvy6BXS+fXg/rWWdsb3bFHnbXdcpvFD4n7Iu354rJNnmvjwWMWPWR0eWA/+PLZD5Y/X9X9wNmcLMx+8OWry3u4OB5U91XdB+ryO9GaJz9bZ21v+/ttP3+mL8jyug8kX9394Kv6nWhF2A+W9d+JVgQffvhhXn/99ay99toV929g+fPGG29k7bXXzg477JB77713mSzze9/7Xv70pz/lmmuuyf77779Mlrmi69+/f+64446MGTMmW221VV13h8+ozWeaES4AAAAAACyx9957L2+88Ua16f/85z9zySWXZJVVVsmee+755XdsOfbWW29l8uTJFdM++eST/Pa3v80dd9yR9dZbL1tuuWUd9Y5lxT1cAAAAAABYYi+//HK23nrrbLzxxuXLOb344osZN25cGjRokD/96U9ZeeWV67iXy5fRo0fn4IMPzqabbpq11lorc+fOzXPPPZc33ngjzZs3zyWXXJKqqqq67iYFCVwAAAAAAFhiXbt2zdFHH5177rkno0aNyuzZs9OuXbsMGDAgP/3pT8v3cVlevPTSSznrrLOWaN7tttsuQ4YMWeZ92HzzzfPtb387o0ePzrhx4/Lhhx9m9dVXzyGHHJKhQ4emR48ey7xNvnwCFwAAAACAr6AuXbpkaW7x3b59+wwfPvwL6NEX45133smVV165xPN/EYFLt27dctllly3z5bJ8EbgAAAAAALDC6tu371IFS1BbK9V1BwAAAAAAAOo7gQsAAAAAAEBBLikGAADAV9b7I8+p6y4AALCCMMIFAAAAAFjm3DMDWBHU5rNM4AIAAAAALDMNGjRIksybN6+OewJQ3ILPsgWfbYsjcAEAAAAAlplGjRqlSZMmmT59ulEuQL1WKpUyffr0NGnSJI0aNfrc+d3DBQAAAABYptq1a5e33nor//3vf9O6des0atQoVVVVdd0tgCVSKpUyb968TJ8+PbNmzcrXvva1JaoncAEA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Jfl0RMy6666bk046KX/84x9zxBFHpGHDhimVSjnppJPy1ltvLX3vAQAAAAAAlgO1DlweffTRVFVV5Zvf/GaqqqoWOc+VV16ZDz74IFVVVenTp0+efvrpnHbaaTnqqKPyl7/8JbfccktWWmmlfPjhh/nb3/5WeCUAAAAAAADqUq0Dl5dffjlJsu2229Y4z/XXX19+fsEFF6R58+YV5f369cu+++6bUqmUUaNG1bYLAAAAAAAAy5VaBy6TJk1KknTr1m2R5fPmzSuPgunWrVs23XTTRc639957J0leeOGF2nYBAAAAAABguVLrwGXOnDlJkpVXXnmR5WPHjs3cuXOTJH369KlxOeuuu26ST+/3AgAAAAAAUJ/VOnBZcHmwmoKSRx55pPx88803r3E5DRs2TPLpiBgAAAAAAID6rNaBS6dOnZIkjz322CLL77vvvvLz3r1717icadOmJUlatmxZ2y4AAAAAAAAsV2oduPTu3TulUil/+ctfqo1OmTp1am655ZYkSbt27dKzZ88al/Pcc88lSdZaa63adgEAAAAAAGC5UuvA5dvf/naS5NVXX80+++yTl156KfPmzcszzzyTAQMG5H//+1+qqqpy0EEHLXY59913X6qqqrLRRhstXc8BAAAAAACWEw1rW2GHHXbI3nvvnRtuuCG33357br/99mrztGjRIj/72c9qXMb777+fW2+9NUnSp0+f2nYBAAAAAABguVLrES5JctVVV2WXXXZJqVSq9mjevHn+/ve/p2PHjjXWv/jii/PRRx8lSfr37790PQcAAAAAAFhO1HqES5KsvPLKuf3223PrrbfmhhtuyMSJE9O4ceNsttlmOeKII9KpU6fF1p84cWIGDhyYr33ta587LwAAAAAAwPJuqQKXBXbffffsvvvuta73xz/+sUizAAAAAAAAy5WluqQYAAAAAAAA/2epApfbbrstm222WTbbbLP8/e9/r1Xdv//97+W6I0eOXJrmAQAAAAAAliu1DlxKpVJ+8pOfZOzYsVlttdVy0EEH1ar+gQcemHbt2uXpp5/O8ccfX9vmAQAAAAAAlju1DlzuueeevPzyy1lppZXy29/+ttYNVlVV5YILLkiDBg3y3HPP5b777qv1MgAAAAAAAJYntQ5cRowYkSTp169fevTosVSN9ujRI7vuumuS5Nprr12qZQAAAAAAACwvah24PProo6mqqspee+1VqOE999wzpVIpY8aMKbQcAAAAAACAulbrwGXChAlJkvXXX79Qw+utt16S5I033ii0HAAAAAAAgLpW68Bl+vTpSZI2bdoUanhB/RkzZhRaDgAAAAAAQF2rdeDSqlWrJMkHH3xQqOEF9Vu2bFloOQAAAAAAAHWt1oHLaqutliR54YUXCjX84osvJknat29faDkAAAAAAAB1rdaBy5ZbbplSqZSbbrqpUMM33HBDqqqq0qtXr0LLAQAAAAAAqGu1Dlx22223JMmdd96ZBx54YKkavf/++3PnnXdWLA8AAAAAAKC+qnXgMnDgwHTp0iWlUin77rtvXnnllVrVf/nll7PffvulqqoqXbp0yaBBg2rbBQAAAAAAgOVKrQOXRo0a5dxzz02STJkyJZtvvnkuvPDCzJ49e7H1Zs2alQsuuCBbbLFFpkyZkiQ577zz0rBhw6XoNgAAAAAAwPJjqdKOAQMG5LTTTsspp5yS2bNn57jjjstJJ52UPn36ZPPNN0/79u2z8sorZ/bs2Zk8eXKefPLJjB49OrNnz06pVEqSnHbaadlnn32W5boAAAAAAADUiaUeXnLSSSelU6dOOeaYYzJnzpzMmjUrt99+e26//fZFzr8gaGnevHmGDx+eQw89dGmbBgAAAAAAWK7U+pJiCzvssMPy8ssv57jjjku7du1SKpVqfLRr1y7HH398Xn75ZWELAAAAAACwQil8A5WOHTvm3HPPzbnnnpvnn38+Y8eOzbRp0zJz5sy0bNkybdu2zSabbJINN9xwWfQXAAAAAABgubNM71i/4YYbClYAAAAAAICvnEKXFAMAAAAAAEDgAgAAAAAAUJjABQAAAAAAoCCBCwAAAAAAQEECFwAAAAAAgIIELgAAAAAAAAUJXAAAAAAAAAoSuAAAAAAAABQkcAEAAAAAAChI4AIAAAAAAFCQwAUAAAAAAKAggQsAAAAAAEBBAhcAAAAAAICCBC4AAAAAAAAFCVwAAAAAAAAKErgAAAAAAAAUJHABAAAAAAAoSOACAAAAAABQkMAFAAAAAACgIIELAAAAAABAQQIXAAAAAACAggQuAAAAAAAABQlcAAAAAAAAChK4AAAAAAAAFCRwAQAAAAAAKEjgAgAAAAAAUJDABQAAAAAAoCCBCwAAAAAAQEECFwAAAAAAgIIELgAAAAAAAAUJXAAAAAAAAAqqt4HLNddck8022yzNmjVLmzZtMmjQoIwfP36xdU444YRssMEGadWqVZo2bZq11lorhx9+eCZMmPAl9RoAAAAAAFgR1cvA5dJLL82BBx6Yp556KmussUbmz5+fESNGZJtttsk777xTY7077rgjs2fPTrdu3dK5c+dMnDgxl19+eXbdddcvsfcAAAAAAMCKpt4FLh999FGGDh2aJBk4cGBee+21vPjii2nZsmWmTJmSYcOG1Vj3oYceysSJE/PEE0/klVdeycEHH5wkGTduXKZNm/al9B8AAAAAAFjxNKzrDtTWY489lqlTpyb5NHBJko4dO6Z379656667cvvtt9dYt2nTpvnDH/6QK6+8Mu+9915effXVJEmPHj3Spk2bGuvNnTs3c+fOLb+eMWPGslgVAAAAAABgBVHvRri8+eab5eft27cvP+/QoUOSZOLEiYutP3HixDz66KPlsGXTTTfNXXfdlaqqqhrrnHnmmWndunX50blz5yKrAAAAAAAArGDqXeBSk1KptETznXXWWfn444/z0ksvZccdd8xTTz2VwYMHZ/78+TXWOeGEEzJ9+vTyY+HQBwAAAAAAoN4FLguPLpkyZUq152uuuebnLqNBgwZZf/318+Mf/zhJcu+99+buu++ucf4mTZqkVatWFQ8AAAAAAIAF6l3g0qtXr7Rt2zZJMmLEiCTJpEmTMmbMmCRJ//79kyTdu3dP9+7dM3z48CTJK6+8khtvvDGffPJJkuSTTz6puN/L7Nmzv7R1AAAAAAAAViwN67oDtdW4ceMMGzYsRx11VEaMGJGuXbtm2rRpmTlzZtq1a5ehQ4cmScaNG5ckmTp1apLkrbfeyt57750WLVqka9eumTx5ciZPnpwk6dSpU3beeee6WSEAAAAAAKDeq3cjXJLkyCOPzFVXXZWePXtm0qRJqaqqyoABA/LQQw+lY8eOi6yz5pprZp999smqq66acePG5f33388666yTo446Kg8//LDLhAEAAAAAAEut3o1wWWDw4MEZPHhwjeWlUqniddeuXXP99dd/0d0CAAAAAAC+gurlCBcAAAAAAIDlicAFAAAAAACgIIELAAAAAABAQQIXAAAAAACAggQuAAAAAAAABQlcAAAAAAAAChK4AAAAAAAAFCRwAQAAAAAAKEjgAgAAAAAAUJDABQAAAAAAoCCBCwAAAAAA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8OWzDyx/7AdfPvvBsllOqVRaJssDoP6qKtWzo8E111yTAw88MMmnIcrOO++cJDnkkENy1VVXpUmTJvnww+pfFM4666yccMIJSZJXX30166yzTpKkT58+eeCBB7L++uvnpZdeWmSbp556ak477bQvYnUAAAAAWAG8+eab6dSpU113A4A6VO9GuNRkaXOjJal3wgknVIx++eSTT/Lee++lbdu2qaqqWqp2KWbGjBnp3Llz3nzzzbRq1aquuwN1wn7AV519AOwHkNgPILEf1LVSqZSZM2emY8eOdd0VAOpYvQtcOnfuXH4+ZcqUas/XXHPNJaq3YITL59VLkiZNmqRJkyYV01ZZZZXadZwvRKtWrXyZ5CvPfsBXnX0A7AeQ2A8gsR/UpdatW9d1FwBYDqxU1x2orV69eqVt27ZJkhEjRiRJJk2alDFjxiRJ+vfvnyTp3r17unfvnuHDhydJdt555zRs2LCi3jPPPJNXX321oh4AAAAAAEBt1bvApXHjxhk2bFiST4OTrl27ZoMNNsjMmTPTrl27DB06NEkybty4jBs3LlOnTk2SrL766vnZz36WJDnvvPOy/vrrp3fv3imVSunWrVuOOuqoulkhAAAAAACg3qt3gUuSHHnkkbnqqqvSs2fPTJo0KVVVVRkwYEAeeuihxV4v84wzzsgFF1yQ7t275/XXX8/KK6+c73znO7n//vuz8sorf4lrQFFNmjTJKaecUu1Sb/BVYj/gq84+APYDSOwHkNgPAGB5UVVa2rvNAwAAAAAAkKSejnABAAAAAABYnghcAAAAAAAAChK4AAAAAAAAFCRwgRrce++9qaqqKj+uuOKKuu4SyxHbByuq5WXb7tKlS7kPffv2rZM+QBGnnnpqxb70xhtv1HWXYJlZXrbvN954o6Ifp556ap30A76qrrjiiop98N57763rLgFAnRO4AAAAAAAAFNSwrjsAACw/VltttQwcOLD8ukuXLnXXGQBYjJVXXrnimNWjR4867A189XTp0qViH1xttdXqsDcAsHwQuAAAZRtuuGGuvfbauu4GAHyu1VZbzTEL6lDfvn1d+hUAPsMlxSjsiSeeyMEHH5yuXbumWbNmadq0aTp16pStt946P/rRj3LnnXdWzF8qlTJixIh885vfTMeOHdO4ceOsssoq2XbbbXPRRRflo48+qrGthx56KAcffHDWXnvtNGvWLC1atMgGG2yQo48+OuPGjas2/+fdi8A1Z1mWXnjhhQwYMCBt27ZN8+bNs/XWW+c///lPxTyft8193jXRR44cmQEDBmTNNddMkyZN0rx586y11lrZYYcd8vOf/zxjxoypmP/f//53hgwZki222CKdOnUq76NrrrlmvvWtb+Wmm25a5Lp89v4Zs2fPzimnnJJu3bqlSZMm+drXvpZjjz02M2fOLPq2sZyp6XNzUdfJnzBhQo444oisscYaadKkSbp3754LL7ywxmVPnjw5p5xySrbaaqusuuqqady4cdZYY43ssMMO+X//7/8ttl9z587Nb37zm6y//vpp2rTp526Ds2fPzgUXXJDtt98+bdu2TePGjdOhQ4fstddeueWWW2ps55NPPsk//vGP7L777ll99dXLx6gtt9wyv/71r/Pee+9Vq7Oo/fqBBx7I7rvvnlVWWSXNmzfPNttsU+14yIrh0ksvzaabbppmzZqlQ4cO+c53vpP//ve/Nc4/adKknHzyydl9993TrVu3tGnTJo0aNcoqq6ySLbbYIieeeGImT55cY/2XXnopRx99dDbYYIO0aNEizZo1y3rrrZdjjjlmsffRuOmmm7Lttttm5ZVXTps2bbL33nvn6aefXuxxqegxi/pved++l+QeLo4H1NYVV1xR3u7bt2+fgw8+OK+//voiP/NGjhxZMe2uu+4qL2fixIkVZS+88EK57KGHHqooW/CboVQq5Zxzzsn++++fDTfcMB06dEjjxo3TokWLdO/ePUOGDMnYsWOr9XlZfE+rzXovXMcxBAA+owQF3HXXXaVGjRqVktT42Hnnncvzz549u7Tbbrstdv4tt9yyNHXq1Gpt/exnP1tsvcaNG5cuv/zyijqjRo2qmOez5ZdffnlF+ahRo5a4Ll9tn90+hgwZUmrWrNkit83f/va35XqL2+ZKpVLplFNOqSh//fXXa6y7qMcRRxxRsbxtt932c+v86Ec/qrZ+a621Vrl8ww03LG200UY17t+ffPLJMnxnqWs1ffa9/vrrFdP79+9fat269SK3i9NPP73acm+99dbSqquuWuN22Lp164r5F94GN91009JWW221xNvguHHjSt26dVvsdj9kyJBq9WbMmFHaaaedFltvjTXWKD3++OMV9T67b+63336lqqqqanUbNGhQuueee4r/J7Hc+NGPfrTI7WS11VYrHXDAAYv8PL/rrrs+93O5ffv2pXHjxlVr7+KLL17s964WLVqUbr311mr1fv/739f43Wnw4ME1HpeKHLOo/+rD9v3ZY9Mpp5xSUe54QG0df/zxi/z/XmWVVUrf+ta3qm33s2fPLjVu3Lg87eSTTy4v6+qrr66Y/09/+lO57KyzzipPr6qqKk2bNq1UKpVK8+bN+9x9qFGjRqV//etfFf0u+j2ttuu9wOKOE44hAHxVGeFCIWeffXbmzZuXJGnQoEG23Xbb7LXXXtl8883Tpk2bavN/97vfzW233VZ+3aVLl+yxxx7p2bNnedqjjz6aQw45pKLeRRddVHH2c+PGjdOnT5/06tUrVVVVSZKPPvooQ4YMyYMPPrgsVxGWyCWXXJKqqqrsuOOO2WijjSrKfvazn+W5554r3MYZZ5xRft60adPsuOOO5f2nZcuWNdZr3rx5Nttss3zjG9/I3nvvnT59+mTllVcul1944YXVRsYs7Pnnn89zzz2X9dZbL3379k2jRo3KZXfffXfuu+++gmtGfXT77bdn5syZ2WqrrbL55ptXlJ199tmZNWtW+fVzzz2XgQMH5v333y9Pa9u2bXbaaaf069cvq6666mLbeuqpp/LII48s0Tb4v//9L7vvvnteeeWV8rSePXtmjz32yFprrVWedskll1QbVXP44YfnnnvuKb9eddVV069fv6y77rrlaW+//Xb23HPPfPDBBzX291//+leaN2+eHXfcseIeOPPnz89pp5222HWl/rjtttuqnSm8xRZbpE+fPvnggw9yzTXXLLZ+ly5dyt+bdtttt6y33nrlsilTpuTYY4+tmP+OO+7I97///fL3rubNm2fnnXdOv3790rRp0yTJrFmzst9++2X8+PHles8//3yOO+64imVtsMEG2XHHHdOgQYNcffXVtV95Vnj1ZfteHMcDauvOO+/MeeedVzFts802y3bbbZdZs2bl+uuvr1anefPm6dWrV/n1wr9FP/u79IEHHljk84033rjab+fVVlstW265ZXbbbbfy7+sGDRokSebNm5fvfe97mT17do3rUpvvaUuz3gDAYtR14kP91r179/IZKWeccUZF2SeffFIaM2ZM6R//+EepVCqVnn322YozWH7wgx9UnE12zjnnVJQ/+OCDpVLp07N8VltttYqzMR999NFyvUsvvbSiXr9+/cplRrjw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Xtp+++1L3/zmN0tbb711qUWLFuWy119/vdzOhRdeWFGvSZMmpe2337605ZZblqqqqsrTV1pppdL9999f0cc111yzou7KK69c6tChQ8W0BY9Ro0aV640aNaqi7PLLL/8S3lHqi89uHwu255122qn09a9/vWJ6w4YNS88880ypVCqVZsyYUWrevHlF+aqrrlpq06bNIrfJhfeDDTfcsJSktNpqq5V22GGH0j777FPacccdS02bNq2o8/jjj5dKpVLppJNOqpjevn370h577FFaf/31S0kq9p0ddtihYv3WWmutGstKpVLFcr/zne98Qe8ydaGmz77XX3+9Yvopp5yyRPVKpVLpmWeeqbadtm3btrTzzjuXdt1111K7du1KrVu3rlje0m6Ds2fPLnXp0qXatt+vX7/SnnvuWdpkk01KjRo1KiUprbXWWhXL/Na3vlVRr02bNqVddtml1K1bt2rLmzZtWrne5ZdfXuOxpFQqlU455ZQa92vqr1tuuaXaZ3avXr1K22+/falx48aL/DyfOXNmqVmzZhXTt95669I3vvGNUvPmzSs+lz+7Ld18883Vyr/+9a+X9tprr9I3vvGNUufOnRe5fz7//PPlbX7hejvuuGO1vny2zSLHLOq3+rJ9L+7Y5HhAbd15550V/z9VVVWlXr16lbbbbrtSw4YNF/uZN3v27EXuG08//XSpVCqVXn755WplVVVVFdtPqVQq9enTp2Ke9ddfv7T77ruXVl999Wr7yJLuC6XS4r+nFVnvxW3zjiEAfFUZ4cIy8cEHH+TBBx/MDTfckDvvvLPicgJ9+vTJ3nvvneTTG2nuuuuu5bI5c+bk/vvvz4033piHH3644jIzC19n9thjj81PfvKT8uu5c+fm/vvvz6OPPlo+279Ro0b505/+lD59+lT07dRTT614PXv27EyePDnNmjXLIYccUnzlIcn++++fefPm5Z577smzzz5bUXbWWWfl61//epKkZcuW+elPf1pR/v777+e9995Lu3btqo1WWZR333039913X/7zn/9k1KhRFSNpDjjggGy++eZJkmOOOSZf+9rXymVTpkzJLbfcknHjxmXIkCEugcGX5utf/3r+/e9/V9ywddq0abn77rtzxx13lM8cXhaaN2+eW2+9Neuss0552pQpU3LXXXfl5ptvztixY8tnj372euZXXHFFxVme7733Xu6888688sor5WkdOnTITTfdVO3a6Hz17L777jn66KMrpj322GO5//7707Rp0+y1117V6rRo0SInnXRSxbSHH344I0eOTMOGDasdHxa2xx57ZPjw4eWznZPk2WefzU033ZSRI0dWXMZy4W27R48eOe+88yqW9eyzz2bUqFEplUr5zne+U1G28CVglsUxi/qpvmzfi+N4QG3169cvxx9/fPl1qVTKY489lgceeCCtW7fOoEGDKuZf+PNywX1cFtaqVavyb4Bu3bqlffv2FeWfvX9LkvzmN79Jw4b/d6vdcePG5dZbb83kyZMrLtu9LBVZ78VxDAHgq0rgQiEnn3xyTjrppOy4447p0qVLWrRokYYNG6Zdu3bZfvvtc+GFF+auu+4qf2ls0aJFbrvttlx33XX51re+lU6dOqVJkyZp3LhxOnXqlH79+uWMM87Iyy+/XL7nxQLnn39+7r///hx00EFZa6210qRJkzRr1izrrbdevve972Xs2LEZMmRItT4edthhueqqq7LJJpukcePGadOmTQYNGpQnn3yy4jIbUET//v0zZsyY7Lnnnll11VXTrFmzbLXVVhkxYkTFD5jk0xDwt7/9bdZff/00btw4HTp0yGGHHZann366/KNsUS688ML8/Oc/z7bbbpvOnTunWbNmadSoUVZfffXssssuufzyy3P11VeX519ttdXy8MMP58ADD0ybNm3StGnTbLjhhrngggsqLg0CX4Y999wzL774Yn71q19liy22SOvWrdOwYcN06NAhffr0yYknnrjM2tpggw0yduzY/O53v8uOO+6Ydu3apWHDhmnevHnWXXfdDBw4MBdffHEeffTRinqtWrXK3Xffnb/97W/p379/2rdvn4YNG6Zly5bZYostcuqpp+b555/Plltuucz6Sv32+9//Pn/+85+z8cYbp0mTJmnXrl3233//PPHEE9lss80WWeeEE07IJZdcko022iiNGjVK27ZtM3DgwDz22GPp0aPHYtv7wQ9+kGeffTbHHntsvv71r6dly5Zp0KBBVl111Wy++eY5+uijc9ttt1Xbn4455pjceOON2XrrrdOsWbOsuuqq+eY3v5lHH320Wvj+2UvALO0xi/qvPmzfn71E2MKBTeJ4QO2de+65ueyyy9KzZ880adIkq622Wg466KA88cQTFfc6adCgQcVlr5Pqlwfr3bt3Vlrp//7ksuDyYjXNnyTbb799Ro0alb59+6Z58+Zp0aJF+vTpk1tvvfULPVlwadf78/ZBxxAAvoqqSqXP3BENAABYYbz11ltZffXVq53FP3ny5Gy++eZ56623knx68+8F9wGD+uDmm2+uGG1zySWX5IgjjqjDHlHfTZw4cZGjwF988cVsueWW5SsybL/99rnvvvu+7O59YZZ2vX/6059WjKJ89dVXK0aVAcBXUcPPnwUAAKivfv3rX+e6667LTjvtlE6dOqVx48aZMGFCbrzxxorLuZ588sl12EtYcqNGjco999yTK6+8sjytqqoqO+64Yx32ihXBkUcemRdeeCHbb799+dK848ePz0033VQezVFVVZVf/epXddnNZa626/3Xv/41TzzxRP7yl7+Ul7HWWmsJWwAgAhcAAFjhvfvuu/nnP/+5yLKVVlopv/zlL40MoN644YYbcuGFF1ZMO+qoo9K1a9c66hErkjfffLPiMr0La9KkSS688ML069fvS+7VF682633++edn7NixFfOcddZZX3gfAaA+ELgAAMAK7JBDDkmpVMrDDz+ct99+Ox988EGaN2+eLl26pE+fPvnud7+bTTbZpK67CbXWqFGjdO3aNYcffni1m3PD0jj22GPToUOHPProo5k8eXJmzpyZFi1aZN11182OO+6Yo446aoUcxbG0692sWbNssskmOeGEE/LNb36zDnoOAMsf93ABAAAAAAAoaKW67gAAAAAAAEB9J3ABAAAAAAAoSOACAAAAAABQkMAFAAAAAACgIIELAAAAAABAQQIXAAAAAACAggQuAAAAAAAABQlcAAAAAAAAChK4AAAAAAAAFPT/AUga0NuPzfueAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15, 8))\n", + "palette = sns.color_palette(\"tab20\", n_colors=len(model_filter(\"deepgbm\", models))) # 더 많은 색상 지원\n", + "sns.barplot(x='region', y='CSI', hue='model_data', ci=None, data=model_filter(\"deepgbm\", models), palette=palette)\n", + "plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', fontsize=15)\n", + "plt.title('DeepGBM Models with Different Oversampling Methods', fontsize=20, fontweight='bold') # 제목 볼드 및 크기 조정\n", + "plt.ylabel('CSI', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "plt.xlabel('', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "# x축(도시명) 글씨 크기 조정\n", + "plt.xticks(fontsize=15, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.yticks(fontsize=10, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "table= model_filter(\"deepgbm\", models).copy()\n", + "table['CSI'] = table['CSI'].round(3)\n", + "table['MCC'] = table['MCC'].round(3)\n", + "table['Accuracy'] = table['Accuracy'].round(3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **증강데이터에 따른 Resnet-like 모델 성능 비교**" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "table= model_filter(\"resnet_like\", models).copy()\n", + "table['CSI'] = table['CSI'].round(3)\n", + "table['MCC'] = table['MCC'].round(3)\n", + "table['Accuracy'] = table['Accuracy'].round(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABmkAAAK4CAYAAACfyhnaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADbzElEQVR4nOzdd1RU1/428GcoAtJVFIgoKCggsaKCYigiElEsGEtsaMi1xESs0ZsbhWjUqIk1idGo2IINu9gVJCgqYkMFC0XsoiAWisC8f/gyPw5nBoY6mjyftVgL9tntlDkznO/svSVSqVQKIiIiIiIiIiIiIiIiqlFqqu4AERERERERERERERHRvxGDNERERERERERERERERCrAIA0REREREREREREREZEKMEhDRERERERERERERESkAgzSEBERERERERERERERqQCDNERERERERERERERERCrAIA0REREREREREREREZEKMEhDRERERERERERERESkAgzSEBERERERERERERERqQCDNERE5ZSSkgKJRCL4cXNzE+ULCgoS5QsJCRHls7S0FOWj94O/v7/o3ERERFRbe8peW/80bm5uov1OSUmpkrr/aa8vZe8rRW7fvo2vv/4aDg4O0NfXF5XNzMwU5H/06BGmT5+Otm3bwtDQEGpqaoL8ly5dqtb9I6L3T0REhOje4e/vL8pX0++ZVHNKnldLS0tVd6nc/mmfB4iIiOifhUEaoioi78FZ8R81NTXo6+ujcePG8PLywty5c5GamqrqbpeLvAepZT0glPcPe2n56cNR2jX/559/llm+c+fOCssTfchCQkLkXtfq6urQ1taGsbExmjRpgk6dOmH48OFYsWIFHj58WOX9OHnyJFq2bIkVK1bg2rVrePXqVan5r127BgcHB/z000+4ePEisrKyIJVKq7xfVLUiIiIwdepUdOzYEQ0bNoSOjg709fVhZWUFT09P/Pjjj0hISFB1N4n+UeR9vi36OXbsWKllCwoK0LhxY7llP8TgBxERERFVHoM0RDVEKpXi1atXuHv3Lo4ePYrvvvsOzZs3x8KFC1XdtUqbM2cO8vPzVd0NmfJ+05yq3u+//17q9suXL+P06dM11Bv6p6jOETc1obCwELm5ucjMzERycjLOnDmDjRs34uuvv0bjxo0xdOjQKgve5+fnY+TIkcjOzla6zOjRo/Hs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GD169ICFhQVq166N2rVrw8LCAj179sSyZcvw8uVLpfoSGhoKd3d31KlTB7q6umjRogVmzpwpumeWpbL3DiIiIqIKkRJRlZg1a5YUgODH1dVVlC87O1uUD4D0xo0bCusODQ2VGhsbyy1X/MfJyUmalpYmt47Y2Fhp/fr1y6yj6Gfjxo2iOlxdXUX5ateuLfh79erVgjIjRowQlVm3bp3cPj59+lTas2fPMvumo6MjXb58uah848aNld6/0vpRluTkZKXOtbxrQl6b8vpd3IsXL6SOjo6iPH379pXm5eUJ8h4/flz60UcflbnvzZs3l8bHx1do/0vbv0GDBkklEons72bNmkkLCwtlZU6ePCnI36lTpzL3v7izZ89KmzZtWub+aWhoSKdPny7Nz89XWNeCBQukampqCq+xv/76S+71e/LkSbn1Xbx4UWpra1tm38zNzaWRkZFy61D22goPD5fq6ekpfa1HRUUpPA6KrFq1SlTPwYMHBXn27t0ryrNgwQJBnsTERFGeyZMnC/LIu7ckJycrPCZl/RSVlUrlv75SU1OlDg4OCss7OztLX79+Xe5jVmTdunWiOhs3blxqGX9/f1EZXV1daU5OjiBfWfcVecdS0c+IESPkXuOKfkpei69fv5aOHDlS8JpX9Hr873//Ky0oKJC77/L6HB0dLbWzsxOlz5o1S1C2Ol93O3fulOrr6yusc8KECWWe99J+yrom5DE1NRXVM3r06FLLFBYWyj2WgwcPluWR93pfuXKl3PoeP34sVVdXL/XakErfHVdnZ+cyj4ORkZF0+/btCvsv77idPHlSamRkJNpWdH9OSkqSWltbK30uZs+eLWp38uTJSpfX1taWrlixQm7/FV1fv//+u1RDQ0NufQ4ODtJHjx5Js7KypN26dVPYbv/+/QXvsWW1uXv37lLfO7744gu5r9OS793Au/tHScq+Z8o7p3///be0QYMGCvvWt29fhfeQrKws6SeffKKwbJMmTaS3b9+uktdgafs6ePBgwd/dunUTlCl5j/j888/L1afKfMaTdw7L+ilOXj8vXboktbCwqNA5Kzoepd1ji36MjIykW7ZsUVhPXl6etF+/fgrLW1hYSK9cuaLU582quHcQERERVQRH0hDVMHnfttTU1FT4bb4lS5Zg8ODBSn1TKyYmBk5OTqJROQUFBRgwYEClps5RZNy4cYK/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3NxcZGVlCX6IiIiIiIiIiIiIiIgq44ML0ihS1pCy/Px82e+enp64c+cObt++jTp16qCgoAC///67wrLz5s2DoaGh7MfCwqLK+k1ERERERERERERERP9OH1yQpniA5MmTJ6LfGzVqJLfcRx99JPvd0dEREokEhoaGaNasGYB38wsqMmPGDLx48UL2U3w0DxERERERERERERERUUV8cEGa9u3bo27dugCAsLAwAMCDBw8QExMDAPD29gYA2NrawtbWFitWrAAANG7cGDY2NgCACxcuQCqVIisrCzdv3gQA2TZ5tLS0YGBgIPghIiIiIiIiIiIiIiKqjA8uSFOrVi3MnTsXwLsgTZMmTWBnZ4eXL1+iXr16mD59OgAgMTERiYmJSE9Pl5WdP38+JBIJjh49Cmtra1hbW+P58+fQ1dXFpEmTVLI/RERERERERERERET07/TBBWkA4D//+Q82bdqE1q1b48GDB5BIJOjXrx9Onz4Nc3NzheX69euH3bt3o3379njw4AHU1NTQp08fxMbGws7Orgb3gIiIiIiIiIiIiIiI/u00VN2BihoyZAiGDBmicLtUKpWb7uvrC19f3+rqFhERERERERERERERkVI+yJE0REREREREREREREREHzoGaYiIiIiIiIiIiIjovREUFASJRIKQkBBBur+/PyQSCSIiIgTplpaWkEgkNddBoirEIA0RERERERERERERVUpERAQkEgn8/f1V3RVSUkhICCQSCYKCglTdlX+1D3ZNGiIiIiIiIiIiIvowhZ+9q+ouKKVHx0aq7gIVM2/ePEyfPh2NGvG80D8HgzRERERERERERERE9N4zMzODmZmZqrtBVKU43RkRERERERERERFRNUpJSYFEIoGbmxuysrIwadIkWFlZQVNTE4GBgQCA58+fY8aMGbC3t4eOjg4MDQ3h4eGB/fv3y60zPj4eQ4cORZMmTaCtrQ0TExO0bt0agYGBePjwoSxf8WnInj9/jrFjx8LMzAxaWlpwcHDA2rVrFfY7LS0N48ePR9OmTaGtrY06deqgZ8+eOH36tCCfv78/3N3dAQDr16+HRCKR/VTlVFqK1qRR5N69e7C3t4dEIsGCBQtk6VKpFKGhofDw8ICxsTG0tbVhZ2eHoKAgvHnzplJ9PH36NPr06YPGjRtDS0sLpqam6NChA6ZPn45Xr17J8hWfauzO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W7bEsGHDyt1ucHAwpkyZglatWsHGxgZSqRSXL1/GzZs3UadOHUyZMqUa9vadRo0a4Y8//oC/vz969eqFzp07w8LCAnFxcUhMTESDBg2wadMmQRknJyfUr18fO3bsgJubG5o0aQI1NTWMGjUKnTp1grW1NUJDQ/H555/Dz88P1tbWsLOzg66uLu7fv4+4uDi8fv0aFy9elE0lR+XHkTREREREREREREREKmRjY4OLFy9izpw5aNiwIWJiYrBz507cvHkTbdq0wa+//oqhQ4fK8s+ePRujRo2CRCLB8ePHsW/fPmRnZyMgIACXLl0SjJaoKCcnJ1y9ehXTpk2DgYEBIiMjsXv3bqSmpsLV1RUhISHw9PQUlAkLC0OfPn2QlJSEDRs2YM2aNYiLi6t0XypCQ0MDW7ZsQd++fXHs2DH07t0bOTk5UFNTw4YNG7Bnzx5069YNycnJCAsLw99//w1tbW1MnToVa9eurVCby5cvx6BBg/DmzRscPHgQhw4dgoaGBiZNmoQrV67AxsamivdSaNiwYYiKikLPnj1x48YN7NixA9nZ2Rg7diwuXLgAW1tbQX5tbW0cOHAA3bp1w6VLlxASEoI1a9bg5s2bsjy9e/fGlStXMG7cOEgkEhw9ehQHDhzAkydP0KtXL2zbtg329vbVul//dBKpVCpVdSc+NFlZWTA0NMSLFy9gYGCg6u5USvjZuypru0fHRiprm4joffRvXZOG7wdERERE9CH7Jz0nqio5OTlITk6GlZUVtLW1Vd0dIiKVUPZeyJE0REREREREREREREREKsA1aYhqWOfllR9uWlHRX0eXnYmIiIiIiIiIiIiIagSDNERERERERERERERULRISEjB//nyl8rq4uCAgIKCae6S8KVOmID09Xam8ISEh1dsZ+sdikIaIiIiIiIiIiIiIqsWjR4+wfv16pfO/T0GaHTt2IDU1Vam8DNJQRTFIQ0RERERERERERETVws3NDVKpVNXdqJCUlBRVd4H+BdRU3QEiIiIiIiIiIiIiIqJ/IwZpiIiIiIiIiIiIiIiIVIDTnRER/UtlHFugsraNPaeprG0iIiIiIiIiIqL3BUfSEBERERERERERERERqQCDNERERERERERERERERCrAIA0REREREREREREREZEKMEhDRERERERERERERESkAgzSEBERERERERERERERqYCG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ERERERHRe+jChQuitEuXLmHq1KkAgKFDh9Z0l6iKcbozUpm7P3yssrZV+c1pIiIiIiIiIiIiImV07twZpqamsLOzg4GBAZKTk2VTyY0fP162ThF9uBikISIiIiIiIiIiIqJqkZCQgPnz5yuV18XFBQEBAdXcI+VNmTKl1PVVigsJCamWPsyYMQPh4eGIjY1FZmYm9PT08MknnyAgIABDhgypljapZjFIQ0RERERERERERETV4tGjR1i/fr3S+d+nIM2OHTuQmpqqVN7qCtLMmjULs2bNqpa66f3wwa5Js2XLFrRt2xY6OjqoU6cO+vfvjzt37pRaxt/fHxKJRPTTsGHDGuo1ERERERERERER0b+Hm5sbpFKpUj/VFeioqJSUFKX7TlRRH+RImjVr1sgiqlZWVnj27BnCwsIQFRWFy5cvw9TUtNTyH330kSAwU79+/WrtLxERERERERG9/8LP3lVZ2z06NlJZ20RERKQ6H1yQJi8vD9OnTwcA+Pn5YceOHXjw4AFsbW3x5MkTzJ07F8uWLSu1joCAAAQFBdVAb4noQ8B/xIiIiIiIiIiIiEgVPrjpzs6fPy9brMnPzw8AYG5uDicnJwDAoUOHyqxjyZIl0NLSgoWFBQYNGlTmNGm5ubnIysoS/BAREREREREREREREVXGBzeSJi0tTfZ78WnKGjRoAAC4e7f0b8TXqlULZmZmyMvLQ1JSErZu3YojR47g6tWr+Oijj+SWmTdvHoKDg6ug90RERERERFTS3R8+Vlnb+p2GqaxtIiIiIqIPbiSNIsoszjRlyhQ8e/YMN27cwJ07d7By5UoAQEZGBtatW6ew3IwZM/DixQvZT/FAERERERERERERERERUUV8cEEaCwsL2e9PnjwR/d6okeL1HRwcHKCnpyf7e8iQIbLfSxuBo6WlBQMDA8EPERERERERERERERFRZXxwQZr27dujbt26AICwsDAAwIMHDxATEwMA8Pb2BgDY2trC1tYWK1askJWdNWsWnj59Kvt7y5Ytst8tLS2ru+tEREREREREREREREQyH1yQplatWpg7dy6Ad0GaJk2awM7ODi9fvkS9evUwffp0AEBiYiISExORnp4uK/vDDz/A1NQUNjY2sLa2xpdffgkAMDU1RUBAQM3vDBERERERERERERER/Wt9cEEaAPjPf/6DTZs2oXXr1njw4AEkEgn69euH06dPw9zcXGG5H3/8EZ06dUJWVhbu378Pa2trjBkzBrGxsahfv34N7gEREREREREREREREf3baai6AxU1ZMgQwZoyJUmlUlHaf//7X/z3v/+tzm4REREREREREREREREp5YMN0hARERERERER0Yet8/LOKms7+utolbVNRKULCgpCcHAw1q1bB39/f1m6v78/1q9fj5MnT8LNzU2WbmlpidTUVLlf3KfqUXQuypKamopGjRoJ0jIyMhAUFITdu3fj0aNHMDU1Rd++fREUFAQjIyO59RQUFGDZsmVYu3Ytbt++DT09Pbi7uyM4OBh2dnYK29+3bx8WLVqEixcvAgDatm2LqVOnwsfHR/mdrWYM0hAREREREREREVGNUmWArjwYzFNeREQE3N3dMWLECISEhKi6Ox8ENze3/9fencdbVRX84/9cpgvIILMQ4KyAQ87hgOKAknNApWJPZjxaOeQcVk5ZZqapaT1WjoVpJZmSiCOKEzmkOCFOCCQK4sCkIsL5/eGP8+V4uchl2t54v1+v8+Kcvfbaa+3L3mefez9nrZ37778/EydOzHrrrVd0d+pkl112qbVswoQJGTt2bNZdd91069atomzGjBnZcccd8/LLL2eDDTbIwQcfnOeeey6XXnppbr/99jzyyCNp27ZtRZ2FCxfmq1/9am6++easvfba2W+//TJjxozcdNNNue222zJ69OjssMMONfpxySWX5MQTT0yjRo2y1157pbq6OnfeeWf233//XHbZZTn22GNXzg9jBQlpAAAAAAD43Pv5z3+eoUOH1hiZweo3ZMiQDBkyZIllX//61zN27Ngcfvjhqaqqqig74YQT8vLLL2fAgAH5y1/+kkaNPokojj/++Fx22WU56aSTaoR8V199dW6++eZsvPHGeeCBB9KpU6ckyfDhwzNo0KAMHjw448ePL28r+SQoOuWUU1JdXZ3Ro0dnxx13TJK8+OKL2WmnnXLiiSemf//+2WijjVbWj2S5CWkAACDJyH9NLqztfb/kl0wAAPgsnTt3TufOnYvuBksxa9asjBgxIknyjW98o6LsjTfeyA033JAmTZrkt7/9bUWo8stf/jI33nhjhg0blgsuuCAdO3Ysl/3qV79KklxwwQXlgCZJBg4cmAMPPDC33nprbrnllgwcOLBcdumll2bBggU59thjywFNkmyyySb50Y9+lJNOOimXXnppLrvsspX7A1gODYruAAAAAADAf7PXXnstVVVV6du3b2bNmpWTTjop66+/fho3bpwTTjghSfLOO+/k9NNPT69evdKsWbO0bt06e+yxR/75z38ucZvPPvtsDj/88GywwQZp2rRpOnTokK222ionnHBC3njjjfJ69913X6qqqnLEEUfknXfeyXe/+9107tw51dXV2XzzzXP11VfX2u8pU6bk2GOPzYYbbpimTZumbdu22X///fPwww9XrHfEEUdk9913T5Jcd911qaqqKj/OPvvsFfvhfaqdqqqq3Hfffcu0/n/+85/06tUrVVVVueCCC8rLS6VSbrjhhuyxxx5p06ZNmjZtmp49e+bss8/O+++/v8L9HD9+fL797W9nvfXWS3V1dTp27Jidd945F154YT7++OPy8XD//fcnSdZff/2Kn9niZsyYke9+97vp0qVLmjVrls033zy/+c1vUiqVUlVVVWOatA8//DBXXXVVDjrooGywwQZp1qxZ1l577ey666658cYbl9jfxX+uY8aMyR577JGWLVumVatW2W+//fL8888v874PHz48H3zwQbbffvtsuummFWWjRo3KwoUL06dPn4qwJUmqq6tzwAEHZMGCBRk5cmR5+cSJEzN+/Pg0a9ZsifeRGTRoUJKUg6FFbrvttoryZalTFCNpAAAAAABWgw8++CC77bZbJk2alN122y3bbLNN2rRpkxdffDF77bVXpkyZkvXWWy/77LNPZs+enbFjx+aAAw7IL3/5y5xyyinl7TzxxBPZZZdd8uGHH2bLLbfMQQcdlPfffz+vvvpqLr300hx88ME1Rpy899572XHHHTNnzpz06dMnM2bMyJgxY/Ltb387CxcurDF11SOPPJL99tsv7777bjbddNPst99+eeutt3LHHXdk1KhRuf766/P1r389ySf3J3nzzTdzxx13ZMMNN6y4X8lWW2216n6gS/Hiiy9m7733zn/+85/84Q9/KO/fwoULc/jhh+eGG25IixYtst1226VNmzZ5/PHHc8455+T222/Pfffdl2bNmi1Xu3/729/yjW98I/PmzUvPnj3zla98JTNnzsxzzz2XU089NUOGDEmLFi3yzW9+M6NGjcq0adMycODAtGjRosa2ZsyYkZ122ikvvfRSunTpkgMPPDDvvvtuTjzxxLz00ktLbP+1117LkCFD0qVLl2y66abZYYcd8uabb+bhhx/OAw88kBdeeKHW4GzEiBG59NJLs91222XffffNU089lZEjR+Zf//pXnn322ayzzjqfuf/Dhg1Lkhx++OE1ysaNG5ck2WabbZZYd5tttsnVV1+dp59+ukadzTffPI0bN15inSQVdd57771MnvzJTAlbb711jTrdunVL+/btM2nSpMyaNSutWrX6zP1alYQ0AAAAAACrwaOPPpodd9wxr776atZee+0kyYIFC7L11ltnypQpueCCC3LyySenQYNPJkB6+eWXs/fee2fo0KHp379/Nt988yTJr3/963z44Ye58MILc/LJJ1e08cILL6R169Y12r7llltyyCGH5Nprr011dXWS5B//+Ee+8pWv5Nxzz60IaWbNmpWBAwdm1qxZGTZsWAYPHlwue/zxx7P33ntnyJAh2WOPPdKhQ4cMGTIkG220Ue64447ssssuNe4psrr9+9//Tv/+/TNr1qz89a9/zYABA8plF110UW644Yb07ds3N9xwQzl4+Oijj/K9730vV111Vc4555ycf/75dW73pZdeyv/8z/9kwYIFuf7663PYYYeVy0qlUu666640a9Ys1dXVufbaa9O3b99MmzYtF154YY0RMUkydOjQvPTSSznwwAPzl7/8JU2bNi3v3x577LHEPnTo0CF33XVX9txzz4pRORMnTswee+yRc889N0ccccQS27vkkksyfPjwHHzwwUk+OTa//vWvZ/jw4fntb3+bn/zkJ0vd/9dffz333XdfGjVqlEMOOaRG+aLgpGvXrkusv2j5pEmTVkqdNm3aZK211qq13owZMzJp0qRsscUWS92vVc10ZwAAAAAAq8mvf/3rckCTfDJ64ZlnnsnAgQNz6qmnlgOaJNloo41y0UUXZcGCBfnDH/5QXv7WW28lSfbaa68a2+/Ro8cS79vSqlWrXH755eWAJkkOPvjgbL755pk8eXJee+218vKrr746b7zxRk444YSKgCZJtttuu5xxxhmZM2dOedTE58n999+f3XffPR988EFuu+22ioDm448/zgUXXJC11lorN954Y8XIkCZNmuSyyy7LOuusk9///vdZuHBhndu++OKL8+GHH2bIkCEVAU2SVFVVZe+99674+S/NnDlzcv3116dhw4a59NJLywFN8snokWOPPXaJ9dq1a5e99tqrxrRp66+/fn70ox9l4cKFtU7zdeihh5YDmiRp2LBhTj/99CTJmDFjPrPP119/fRYuXJh99tmn4p4yi+9TkjRv3nyJ9RcFKrNnz16ldWqrVxQhDQAAAADAatC5c+dst912FcvuvPPOJKkIExbXp0+fJJ+Mwllk2223TZIcc8wxue+++/Lxxx9/Ztvbbrtt2rVrV2P5JptskiQV97FZnj59Htx6663p379/GjdunHvuuSd77rlnRfm///3v8hRin74nSpI0a9Ys2267bd59991apxNbmrvvvjtJcvTRRy/fDizmiSeeyIcffpjtt99+iaNeFk01V5sHH3wwP/3pT/Pd73433/rWt3LEEUfkb3/7W5LUum977713jWVLOj5qsyi0+8Y3vvGZ6/L/mO4MAAAAAGA16N69e41li0awDB48uMaolcXNmDGj/PzUU0/Ngw8+mPvuuy+77757WrRokR133DH77bdfjjjiiCVOd1bbdFEtW7ZMksybN69Gn3beeeel7s/iffo8GDhwYD7++OPcd9992WGHHWqUL9qvu+66q8ZIk0+bMWNGjRvff5YpU6YkSTbccMM61VuSRaFIt27dlli+pGMpSWbOnJkBAwbk3nvvrXXbtY0eWdIxsqTjY0mefvrpPPPMM2nVqlUOPPDAJa6z6L4777///hLL586dW9HmqqpTW72iCGkAAAAAAFaDxaesWmTRtFr9+/df4uiORdq3b19+3qpVq9x777156KGHMmLEiNx333259957c9ddd+XnP/95HnjggWy88cYV9RefRu2zLOrToEGDar2nR/LJ1GqfJ4ceemj+9Kc/5ZRTTsntt99e/mP9Iov2a6ONNvrMAGpJo47qgx/84Ae59957s9tuu+Wcc87J5ptvnrXXXjsNGzbMnXfemX322SelUmmJdetyjHzaolE0AwcOTLNmzZa4zqJg6T//+c8SyxctX3fddVdKnXfffTdz585d4jG8pHpFEdIAAAAAABRk0eiFIUOGZODAgctcr6qqKrvsskt22WWXJMn06dNzwgkn5IYbbsiPfvSj/PWvf12hPk2YMCFDhw4tT61WH1xzzTVZsGBB/vznP2e//fbLyJEjK/5Av+hn3aNHj1x77bUrvf1u3brlpZdeyiuvvJKtttpqhba16L5Ci0bnfFpty2+++eY0bNgwt956a1q1alVR9uqrr65Qn2qzcOHC3HDDDUmWPtXZF7/4xSSfTDu3JIuWb7nlljXqPPvss5k/f34aN278mXXWXnvtdO/ePZMnT86TTz5ZPkcWmTJlSmbMmJF11123xs+oCO5JAwAAAABQkH79+iX55I/rK6Jjx445++yzk3zyB+3V3acmTZokyTLdH2dVadiwYf74xz/mkEMOyZgxY7L//vtXTHm1/fbbp3Xr1rn//vvzzjvvrPT299prryTJ73//+2Vaf2k/s2233TZNmzbN448/nsmTJ9cory2Ee/fdd9OqVaslhg8rEtwtzX333Zf//Oc/6datW/r27Vvrev3790+DBg3ywAMPZPr06RVl8+bNy4gRI9KwYcPsu+++5eXrr79+evbsmQ8++CC33XZbjW3edNNNSZIDDjigYvl+++1XUb4sdYoipAEAAAAAKMjAgQPTq1evXH/99Tn33HNr3PujVCrloYceykMPPVRedsUVV2TixIk1tjVy5Mgktd/HZFkdffTR6dixYy644IL8/ve/L08TtsjHH3+cO+64oyIM6tKlS5JkwoQJK9T2imrYsGGGDRuWr33ta7nvvvtywAEH5IMPPkiSVFdX57TTTsvs2bMzYMCAJY4sef311/OnP/1pudo+4YQT0rRp0/zhD3/IX/7yl4qyUqmUu+66q+L/d2k/sxYtWmTw4MH5+OOP8/3vf7+i3rhx43LZZZctsQ+bbLJJ3n333RrtX3zxxRk9evRy7ddnWTTV2eDBg5d6r5/OnTvn0EMPzUcffZTvfe97FeHUaaedlrfeeiuHH354OnbsWFHvpJNOKq+zeLjz97//Pbfeems22mijHHTQQRV1vv/976dhw4a54oorMnbs2PLyl156KT/72c/SqFGjfP/731/+nV6JTHcGAAAAAFCQRo0a5R//+Ef22WefnHnmmbn88suz5ZZbpmPHjpkxY0aeeuqpTJ8+PRdffHH5PipXXHFFvvvd76ZXr17p2bNnGjVqlBdeeCHjxo1L06ZNc+aZZ65Qn9Zee+3ccsstOeCAA3L00Ufnpz/9aTbffPO0adMmb775Zv7973/nvffey80335zNN988SbLeeutlyy23zOOPP54ddtghm222WRo2bJgDDzyw1hvJryoNGzbM9ddfnwULFmT48OE58MADM2LEiDRt2jRDhw7NCy+8kD/96U/p2bNntt5666y//vr56KOPMmHChDz//PPZcsstlzptV2022WSTXHPNNfmf//mfHHLIIfnJT36SLbfcMjNnzsyzzz6bKVOm5N133011dXWS5MADD8x1112Xww47LHvvvXdat26dJLnyyiuTJOeff37uv//+/OMf/8iGG26YXXbZJe+9917uvffeHH300bn88svLo3EWOf3003P44YfnkEMOyW9+85t07do148aNywsvvJATTzwxF1988Qr+dCt9+OGHGT58eJKlT3W2yCWXXJKxY8dm+PDh6dGjR7bbbrs899xzefbZZ7PxxhvnV7/6VY06Rx55ZEaOHJmbb745PXr0yJ577pkZM2bk/vvvT7NmzTJs2LA0alQZdWy66ab55S9/mZNOOil9+vRJv3790qRJk9x555354IMP8utf/zobbbTRyvkhrCAjaQAAAAAACrTxxhvnySefzE9/+tN07do1Y8eOzd///ve8+OKL2XrrrfOb3/wmhx9+eHn9c889N0ceeWSqqqpyzz33ZMSIEfnggw8yZMiQPPXUU+UwZ0X07t07zzzzTE477bS0atWqHBZMmjQpu+22W6699try9F6LDB8+PAcffHBeffXV/PGPf8xVV11V6/1HVrVGjRrlxhtvzFe+8pXcfffdOeigg/Lhhx+mQYMG+eMf/5hbbrkl/fr1y8SJEzN8+PA8+OCDadq0aU499dRcffXVy93uIYcckscffzyHH354Zs6cmeHDh+eJJ55I9+7dc9FFF6VFixbldQcMGJCLL744Xbt2zYgRI3LVVVflqquuKpe3b98+Dz/8cI4++ugsWLAg//jHPzJ58uT88pe/zGmnnZYkadeuXUX7gwcPzm233ZbevXvnqaeeyu23354uXbrk3nvvXSVh2a233ppZs2Zl6623Tq9evT5z/fbt2+fRRx/Ncccdl48++ig333xzZs6cmeOPPz6PPvpo2rZtW6NOgwYN8re//S0XXXRRunTpkn/+85955plnMnDgwDz++OP50pe+tMS2TjzxxNx6663Zcccd88ADD+See+7JdtttlxEjRuS4445b4X1fWapKpVKp6E7UN7NmzUrr1q0zc+bMlXJjoW1P/eNK6NXyOXdQ38La3vyO/Qpru+VOdU/CV5b9x99SWNsPHffQZ69UkDX1PNj3S90La/vduy8orO02e51WWNufZ2vqeeB6sPp9nq8HRRr5r5rzPK8uRV4P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VVWlT58+eeqpp3LOOefk6KOPzh/+8IfcdtttadCgQT788MP86U9/WuGdAAAAAAAAqG/qHNK8+OKLSZKdd9651nVuvvnm8vNLLrkkzZs3ryjv169fvvrVr6ZUKmX06NF17QIAAAAAAEC9V+eQZurUqUmSjTfeeInl8+fPL4+22XjjjbP11lsvcb2DDjooSfL888/XtQsAAAAAAAD1Xp1Dmvfffz9JstZaay2xfNy4cZk3b16SpE+fPrVuZ6ONNkryyf1rAAAAAAAA1jR1DmkWTV1WW7jyr3/9q/x82223rXU7jRo1SvLJyBsAAAAAAIA1TZ1Dmq5duyZJHnvssSWW33///eXnvXv3rnU7b7/9dpKkZcuWde0CAAAAAABAvVfnkKZ3794plUr5wx/+UGMUzIwZM3LbbbclSdq3b5+tttqq1u08++yzSZJ11123rl0AAAAAAACo9+oc0vzP//xPkuTll1/OwQcfnBdeeCHz58/P008/nQEDBuSDDz5IVVVVDjvssKVu5/77709VVVU233zz5es5AAAAAABAPdaorhV22223HHTQQbnlllsyatSojBo1qsY6LVq0yKmnnlrrNt59992MHDkySdKnT5+6dgEAAAAAAKDeq/NImiQZNmxY9t5775RKpRqP5s2b589//nO6dOlSa/0rrrgiH330UZKkf//+y9dzAAAAAACAeqzOI2mSZK211sqoUaMycuTI3HLLLZk8eXKaNGmSbbbZJt/+9rfTtWvXpdafPHlyBg4cmC984QufuS4AAAAAAMB/o+UKaRbZd999s++++9a53v/93/+tSLMAAAAAAAD13nJNdwYAAAAAAMCKWa6Q5vbbb88222yTbbbZJn/+85/rVPfPf/5zue7dd9+9PM0DAAAAAADUe3UOaUqlUk488cSMGzcuHTp0yGGHHVan+oceemjat2+fp556KieffHJdmwcAAAAAAPivUOeQ5t57782LL76YBg0a5OKLL65zg1VVVbnkkkvSsGHDPPvss7n//vvrvA0AAAAAAID6rs4hzfDhw5Mk/fr1S69evZar0V69emWfffZJktx0003LtQ0AAAAAAID6rM4hzaOPPpqqqqoccMABK9Tw/vvvn1KplLFjx67QdgAAAAAAAOqjOoc0kyZNSpJsuummK9TwJptskiR57bXXVmg7AAAAAAAA9VGdQ5qZM2cmSdq2bbtCDS+qP2vWrBXaDgAAAAAAQH1U55CmVatWSZL33ntvhRpeVL9ly5YrtB0AAAAAAID6qM4hTYcOHZIkzz///Ao1PH78+CRJx44dV2g7AAAAAAAA9VGdQ5oddtghpVIpI0aMWKGGb7nlllRVVWX77bdfoe0AAAAAAADUR3UOab785S8nSe688848+OCDy9XomDFjcuedd1Zsr65uvPHGbLPNNmnWrFnatm2bQYMG5ZVXXllqndNPPz09e/ZMq1at0rRp06y77ro58sgjM2nSpOXqAwAAAAAAwPKqc0gzcODArLfeeimVSvnqV7+al156qU71X3zxxXzta19LVVVV1ltvvQwaNKiuXchVV12VQw89NE8++WQ6d+6cBQsWZPjw4dlpp53y5ptv1lrvjjvuyNy5c7PxxhunW7dumTx5cq655prss88+de4DAAAAAADAiqhzSNO4ceNceOGFSZLp06dn2223zaWXXpq5c+cutd6cOXNyySWXZLvttsv06dOTJBdddFEaNWpUp/Y/+uijDB06NMkngdGrr76a8ePHp2XLlpk+fXrOO++8Wus+/PDDmTx5cp544om89NJLOfzww5MkEyZMyNtvv12nfgAAAAAAAKyIuiUk/78BAwbknHPOyVlnnZW5c+fmpJNOyhlnnJE+ffpk2223TceOHbPWWmtl7ty5mTZtWv7973/ngQceyNy5c1MqlZIk55xzTg4++OA6t/3YY49lxowZST4JaZKkS5cu6d27d+66666MGjWq1rpNmzbNb3/721x33XV555138vLLLydJevXqlbZt29a5LwAAAAAAAMtruUKaJDnjjDPStWvXHHfccXn//fczZ86cjBo1qtaQZFE407x581x++eU54ogjlqvdKVOmlJ937Nix/LxTp05JksmTJy+1/uTJk/Poo4+WX2+99db55z//maqqqlrrzJs3L/PmzSu/njVrVp37DQAAAAAAsLg6T3e2uG9961t58cUXc9JJJ6V9+/YplUq1Ptq3b5+TTz45L7744nIHNEuzKAT6LOeff34+/vjjvPDCC9l9993z5JNPZvDgwVmwYEGtdX7+85+ndevW5Ue3bt1WVrcBAAAAAIA11HKPpFmkS5cuufDCC3PhhRfmueeey7hx4/L2229n9uzZadmyZdq1a5cvfvGL2WyzzVZGfysCkkX3tln8effu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5s2bZ8cdd8w//vGPinU+65j7rDne77777gwYMCDdu3dPdXV1mjdvnnXXXTe77bZbTjvttIwdO7Zi/b/97W8ZMmRItttuu3Tt2rV8jnbv3j1f+cpXMmLEiCXuy6fvBzJ37tycddZZ2XjjjVNdXZ0vfOELOf744zN79uwV/bHxOVPb++aS5v2fNGlSvv3tb6dz586prq5Ojx49cumll9a67WnTpuWss87Kl770pbRp0yZNmjRJ586ds9tuu+WXv/zlUvs1b968/PSnP82mm26apk2bfuYxOHfu3FxyySXZdddd065duzRp0iSdOnXKAQcckNtuu63WdhYuXJgbbrgh++67b9ZZZ53yNWqHHXbIueeem3feeadGnSWd1w8++GD23XffrL322mnevHl22mmnGtdD/jtcddVV2XrrrdOsWbN06tQp3/zmN/Of//yn1vWnTp2aM888M/vuu2823njjtG3bNo0bN87aa6+d7bbbLj/84Q8zbdq0Wuu/8MILOeaYY9KzZ8+0aNEizZo1yyabbJLjjjtuqfcFGTFiRHbeeeestdZaadu2bQ466KA89dRTS70ureg1i/rv8358L8s9aVwPqKtrr722fNx37Ngxhx9+eCZOnLjE97y77767Ytldd91V3s7kyZMryp5//vly2cMPP1xRtuh3hlKplAsuuCBf//rXs9lmm6VTp05p0qRJWrRokR49emTIkCEZN25cjT6vjM9pddnvxeu4hgDASlCCFXDXXXeVGjduXEpS62PPPfcsrz937tzSl7/85aWuv8MOO5RmzJhRo61TTz11qfWaNGlSuuaaayrqjB49umKdT5dfc801FeWjR49e5rqs2T59fAwZMqTUrFmzJR6bF198cbne0o65UqlUOuussyrKJ06cWGvdJT2+/e1vV2xv5513/sw63//+92vs37rrrlsu32yzzUqbb755ref3woULV+JPlqLV9t43ceLEiuX9+/cvtW7deonHxU9+8pMa2x05cmSpTZs2tR6HrVu3rlh/8WNw6623Ln3pS19a5mNwwoQJpY033nipx/2QIUNq1Js1a1Zpjz32WGq9zp07lx5//PGKep8+N7/2ta+VqqqqatRt2LBh6d57713x/yQ+N77//e8v8Tjp0KFD6ZBDDlni+/ldd931me/LHTt2LE2YMKFGe1dcccVSP3e1aNGiNHLkyBr1Lrvsslo/Ow0ePLjW69KKXLOo/+rD8f3pa9NZZ51VUe56QF2dfPLJS/z/XnvttUtf+cpXahz3c+fOLTVp0qS87Mwzzyxv6/rrr69Y/3e/+1257Pzzzy8vr6qqKr399tulUqlUmj9//meeQ40bNy799a9/rej3in5Oq+t+L7K064RrCAAsOyNpWCG/+MUvMn/+/CRJw4YNs/POO+eAAw7Itttum7Zt29ZY/3//939z++23l1+vt9562W+//bLVVluVlz366KP5xje+UVHvN7/5TcW3rJs0aZI+ffpk++23T1VVVZLko48+ypAhQ/LQQw+tzF2EZXLllVemqqoqu+++ezbffPOKslNPPTXPPvvsCrfxs5/9rPy8adOm2X333cvnT8uWLWut17x582yzzTbZa6+9ctBBB6VPnz5Za621yuWXXnppjRE4i3vuuefy7LPPZpNNNknfvn3TuHHjctk999yT+++/fwX3jPpo1KhRmT17dr70pS9l2223rSj7xS9+kTlz5pRfP/vssxk4cGDefffd8rJ27dpljz32SL9+/dKmTZultvXkk0/mX//61zIdgx988EH23XffvPTSS+VlW221Vfbbb7+su+665WVXXnlljdE7Rx55ZO69997y6zZt2qRfv37ZaKONysveeOON7L///nnvvfdq7e9f//rXNG/ePLvvvnvFPX0WLFiQc845Z6n7Sv1x++231/hG8nbbbZc+ffrkvffey4033rjU+uutt175c9OXv/zlbLLJJuWy6dOn5/jjj69Y/4477sh3v/vd8ueu5s2bZ88990y/fv3StGnTJMmcOXPyta99La+88kq53nPPPZeTTjqpYls9e/bM7rvvnoYNG+b666+v+87zX6++HN9L43pAXd1555256KKLKpZts8022WWXXTJnzpzcfPPNNeo0b94822+/ffn14r+Lfvr30gcffHCJz7fccssavzt36NAhO+ywQ7785S+Xf79u2LBhkmT+/Pn5zne+k7lz59a6L3X5nLY8+w0ArGRFp0TUbz169Ch/8+VnP/tZRdnChQtLY8eOLd1www2lUqlUeuaZZyq+KfO9732v4ltrF1xwQUX5Qw89VCqVPvk2UYcOHSq+9fnoo4+W61111VUV9fr161cuM5KGVeXTx0eLFi1Kzz33XLn8tNNOqyg/6qijSqXSin2jrGnTpuXl119/fUW9+fPnl0aPHl0aMWJExfLnnnuuNG/evBr9nz59eqlFixbl7Z1yyikV5YuPYkhSOv7448tlw4YNW+q3VqnflnUkTZLS8OHDy/WGDBlS67H91a9+taJs8ODBpTlz5pTL582bV/rTn/5U0Y/lPQY/PWLgxhtvLJd9/PHHpQMPPLBc1rp169L7779fKpVKpXHjxlXU23TTTUvTpk0rlUql0oIFC0pHHHFERfni17xPn9ft27cvf0v8/fffL22xxRYV335d0jlJ/dOvX7+K//ff/va35bLRo0fX+Pb8ovfzt99+uzR58uQlbvMHP/hBef0GDRqUZs6cWS7bdttty2Xrrbde6Y033iiXvfLKK6WWLVuWy//3f/+3XHbUUUdV9OOEE04ol40bN67UvHlz34KmhvpyfC9tJI3rAXW19957V/z/LT4a/s4776z1uP/Rj35U8TvBxx9/XCqVSqUtt9yylHwycipJaf311y+VSp/8nty2bdtyncVHtS9cuLA0bty4JY5Uv/322yva/+c//1kuW5HPacu736WSkTQAsLIYScMKWfzbZMOGDctvf/vbjB49Om+88UaqqqrypS99KYccckiSZOTIkRV1X3jhhXz1q1/NoEGDMmjQoNx9990V5YtG3DzxxBN56623yssHDRpU8W2lI488suLbeffdd18+/PDDlbeTsAwGDx6cXr16lV//+Mc/TnV1dfn16NGjV7iNxc+3yy+/PFdeeWUefPDBzJgxI40aNUrfvn2z//77V9RZd911c9lll2W33XYrz2ldVVWVjh07VnyD7sUXX6y13ebNm+fcc88tv/7yl79cUf7GG2+s6K5RD+2yyy4ZMGBA+XVtx8WCBQsqRlC2bds2V1xxRcVoriZNmuTwww+vta26HIOLX2saNmyYv/3tb+XrzNe//vVMmTKlXD5z5sw8/PDDSVLRxyQ5+eST07FjxyRJgwYNct5551WUjxo1qtb+fuc73ylfl5o1a1ZxQ9358+fn7bffrrUu9cPHH3+cBx54oPy6W7duOfroo8uv+/btm379+i2xbtu2bfP666/niCOOSI8ePdKiRYs0aNAgVVVV+cUvflFeb+HCheURA9OmTcsTTzxRLmvYsGGOPfbY8rF92mmnpVGjRuXyxY/nxUcDVFdXV3x7f8stt8xhhx22PD8C/ovVp+N7aVwPqIuPP/44Y8aMKb9edO+7Rfr165c999xziXUX/3+dM2dOnnrqqcyaNas8kv6rX/1qkmTixImZOnVqnn/++Yp7Gi1ev6qqKm3atMlpp52WbbfdNm3atEmjRo1SVVVV4/PP0j6/L+vntBXZbwBg5Wn02atA7YYOHZrbb789CxYsyPjx43PMMceUy7p06ZIDDjggP/zhD9O9e/caNwJc/I8GSzJp0qSKfxfZbLPNaqy72WablT+kzp8/P2+88UbWX3/95dklWC6LBzRJ0rJly3Tv3r08xcbifwhYXj/60Y9y6KGHJkkeeeSRPPLII+Wy9ddfPwMHDszQoUPTrl27JMns2bOz0047LdNUa7Nmzaq1bMMNN0yrVq3Kr1u3bl1RPm/evDrtB/8dtt5664rXtR0Xb7/9dkUguOWWW6ZFixZ1aqsux+Di15oFCxZk+PDhS932sl5rOnfunDZt2pSnbPv0+otb1p8N9deMGTMqvhDSo0ePNGhQ+d2nzTbbbIk3B7/66qszZMiQlEqlz2xn0Xvzp4+3V155ZalTPr3++utZsGBBGjZsWHGT9+7du1ecS0lqTNEJ9en4XhrXA+ri7bffrjjue/XqVeO433zzzWt8sTBJdtpppzRp0iQfffRRkk+mMnvrrbeycOHCJMkPfvCD8hSBDz74YMX0r1VVVdl1113Lr5966qn07ds3M2fO/Mw+L+3ze10+py3vfgMAK4+QhhWy884757HHHstvfvObjB49OhMnTiz/UjZ16tT87ne/yx133JFx48bVedvvv//+yu5uFixYUPF62rRpK70NqIu6HJOHHHJI1llnnfz+97/PAw88UPGHt4kTJ+bCCy/MmDFj8tBDD6VRo0b5zW9+UxHQrLXWWundu3fWXnvtJJ98U3TReba0P6Z8eo7sz/qjCGuG1XlcrMq2VsW1xjmz5ll0f7zPMm/evJx44okV77k9e/bMxhtvnMaNG2fSpEl5/PHHy2XL8ofuJSmVSvnggw9qBKLL2s/a+By1Zqovx/eKcj1gcXV5v1x0X5pF96B56KGHMmPGjCSfjGrfaqutsummm2bChAk1QppP349m6NChFQFN586ds9VWW6V58+Z5//33K0Z6rYrP7yt6nVga1xAAqJ3pzlhhW2+9da688sq88soref/99/PMM89UTKXx2muvZeTIkRU36EyS+++/P6VSqdbHTTfdlOSTb30u7vnnn6/Rh8WXNW7cOJ07d07yyRQ6i1v8A3GSipEIsCI+fVzOmTOnYvRMt27dkqz4Mdm3b9/8+c9/zpQpUzJnzpz8+9//zve+971y+aOPPlr+A8iiaTuST6a4mTBhQu6+++7cdNNN+ctf/rJKfwmDRdq1a1fxh7Snn366YmTNyrb4taZ58+b54IMPlnqtOfbYY5N89rXmjTfeqDhfP70+a5b27duXb2aefDKF66f/WDZ+/Pga9Z577rmKbz4fc8wxef7553PLLbfkpptuysCBA5fY3qePt29961tLPa5LpVL5vFu87pQpU2r8IXppoy19jloz1afje2lcD6iL9u3bp1mzZuXXEyZMqHHcL+39cvEpyx566KE8+OCDST75UuPi/z744IPlsk/XSyo/v2+99dbl36VvuummnHnmmXXbqWWwovu9NK4hALDshDSskGuuuSb33ntv+VsxTZs2zeabb57BgwdXrDdp0qQa8+D+4Ac/qDEP88cff5x77703hx12WHmUwHbbbZf27duX17npppsq5q2+7rrrMmHChPLr3XbbrfyL5TrrrFOx/RtvvDFz585NkvzlL3/Jrbfeulz7DZ92/fXXV/wSf95551VMHbDoF7BPH5PXXntt+fy58MILlzrq7Ne//nXGjh1b/sVprbXWytZbb10x33Ty/6bdmD9/fnlZgwYNyudFqVTKOeecUz4XYFVq2LBh+vfvX379zjvv5Dvf+U7F8ffxxx/nz3/+80ppb/Frzfvvv59TTjmlPP3IIrNnz84NN9xQcR+cT1+jLrroovK3YBcuXJgf//jHFeWL7xNrnkaNGmWXXXYpv548eXJ+//vfl18/8MADS5wKavH35SQV92aaNGlSLr/88iW2t84661RMXXPDDTfknnvuqbHeyy+/nHPPPTdXXHFFedkee+xRfv7BBx/k5z//efn1008/vdRzb0WuWdRf9en4XhrXA+qiYcOG2W233cqvJ02alKuvvrr8+q677lricbnI4mHL1KlTa4Q0i86pcePGVUzF9+mQZvHzqLq6Oo0bN07yyTF81lln1W2nlsGK7vfSuIYAQB2UYAXst99+pSSltddeu7TzzjuXDjrooNLee+9datWqVSlJ+XHTTTeVSqVS6atf/WrF8ubNm5d23XXX0oEHHljacccdSy1atCiXTZw4sdzOpZdeWlGvurq6tOuuu5Z22GGHUlVVVXl5gwYNSmPGjKnoY/fu3SvqrrXWWqVOnTpVLFv0GD16dLne6NGjK8quueaa1fATpb749PGx6HjeY489SltssUXF8kaNGpWefvrpUqlUKs2aNavUvHnzivI2bdqU2rZtu8RjcvHzYLPNNislKXXo0KG02267lQ4++ODS7rvvXmratGlFnccff7xUKpVKZ5xxRsXyjh07lvbbb7/SpptuWkpSce7stttuFfu37rrr1lpWKpUqtvvNb35zFf2UKUJt730TJ06sWH7WWWctU71SqVR6+umnaxyn7dq1K+25556lffbZp9S+fftS69atK7a3vMfg3LlzS+utt16NY79fv36l/fffv/TFL36x1Lhx41KS0rrrrluxza985SsV9dq2bVvae++9SxtvvHGN7b399tvletdcc02t15JSqVQ666yzaj2vqb9uu+22Gu/Z22+/fWnXXXctNWnSZInv57Nnzy41a9asYvmOO+5Y2muvvUrNmzeveF/+9LH0z3/+s0b5FltsUTrggANKe+21V6lbt25LPD+fe+658jG/eL3dd9+9Rl8+3eaKXLOo3+rL8b20a5PrAXV15513Vvz/VFVVlbbffvvSLrvsUmrUqNFS3/Pmzp27xHPjqaeeKpVKpdKLL75Yo6yqqqri+CmVSqU+ffpUrLPpppuW9t1339I666xT4xxZ1nOhVFr657QV2e+lHfOuIQCw7IykYaV477338tBDD+WWW27JnXfeWTHVQZ8+fXLQQQcl+eRmovvss0+57P3338+YMWNy66235pFHHqmYAmfxeXOPP/74nHjiieXX8+bNy5gxY/Loo4+WRxU0btw4v/vd79KnT5+Kvp199tkVr+fOnZtp06alWbNm+cY3vrHiOw9Jvv71r2f+/Pm5995788wzz1SUnX/++dliiy2SJC1btswpp5xSUf7uu+/mnXfeSfv27WuMilmSt956K/fff3/+8Y9/ZPTo0RUjdg455JBsu+22SZLjjjsuX/jCF8pl06dPz2233ZYJEyZkyJAhpudgtdliiy3yt7/9reKmtW+//Xbuueee3HHHHeVvKK8MzZs3z8iRI7PhhhuWl02fPj133XVX/vnPf2bcuHHlb6l+en72a6+9tuLbpO+8807uvPPOvPTSS+VlnTp1yogRI2rM9c6aZ999980xxxxTseyxxx7LmDFj0rRp0xxwwAE16rRo0SJnnHFGxbJHHnkkd999dxo1alTj+rC4/fbbL5dffnn5W9VJ8swzz2TEiBG5++67K6bYXPzY7tWrVy666KKKbT3zzDMZPXp0SqVSvvnNb1aULT49zcq4ZlE/1Zfje2lcD6irfv365eSTTy6/LpVKeeyxx/Lggw+mdevWGTRoUMX6i79fLrovzeJatWpV/h1g4403TseOHSvKP30/miT56U9/mkaN/t+tgydMmJCRI0dm2rRpFVOKr0wrst9L4xoCAMtOSMMKOfPMM3PGGWdk9913z3rrrZcWLVqkUaNGad++fXbddddceumlueuuu8ofNFu0aJHbb789f//73/OVr3wlXbt2TXV1dZo0aZKuXbumX79++dnPfpYXX3yxfA+PRX71q19lzJgxOeyww7Luuuumuro6zZo1yyabbJLvfOc7GTduXIYMGVKjj9/61rcybNiwfPGLX0yTJk3Stm3bDBo0KP/+978rpgCBFdG/f/+MHTs2+++/f9q0aZNmzZrlS1/6UoYPH17xS0/ySXB48cUXZ9NNN02TJk3SqVOnfOtb38pTTz1V/kVuSS699NKcdtpp2XnnndOtW7c0a9YsjRs3zjrrrJO9994711xzTa6//vry+h06dMgjjzySQw89NG3btk3Tpk2z2Wab5ZJLLqmYtgRWh/333z/jx4/Pj3/842y33XZp3bp1GjVqlE6dOqVPnz754Q9/uNLa6tmzZ8aNG5df//rX2X333dO+ffs0atQozZs3z0YbbZSBAwfmiiuuyKOPPlpRr1WrVrnnnnvypz/9Kf3790/Hjh3TqFGjtGzZMtttt13OPvvsPPfcc9lhhx1WWl+p3y677LL8/ve/z5Zbbpnq6uq0b98+X//61/PEE09km222WWKd008/PVdeeWU233zzNG7cOO3atcvAgQPz2GOPpVevXktt73vf+16eeeaZHH/88dliiy3SsmXLNGzYMG3atMm2226bY445JrfffnuN8+m4447Lrbfemh133DHNmjVLmzZtcuCBB+bRRx+tEdh/enqa5b1mUf/Vh+P709OXLR7yJK4H1N2FF16Yq6++OltttVWqq6vToUOHHHbYYXniiScq7t3SsGHDiim5k5pTl/Xu3TsNGvy/P7ksmvqstvWTZNddd83o0aPTt2/fNG/ePC1atEifPn0ycuTIVfoFw+Xd7886B11DAGDZVJVKn7orHAAA8F/j9ddfzzrrrFNjtMC0adOy7bbb5vXXX0/yyQ3QF93XDOqDf/7znxWjeq688sp8+9vfLrBH1HeTJ09e4mjz8ePHZ4cddijP/LDrrrvm/vvvX93dW2WWd79POeWUitGaL7/8csXoNQBg2TT67FUAAID66txzz83f//737LHHHunatWuaNGmSSZMm5dZbb62YavbMM88ssJew7EaPHp1777031113XXlZVVVVdt999wJ7xX+Do446Ks8//3x23XXX8rTBr7zySkaMGFEeNVJVVZUf//jHRXZzpavrfv/xj3/ME088kT/84Q/lbay77roCGgBYTkIaAAD4L/fWW2/lL3/5yxLLGjRokB/96EdGIFBv3HLLLbn00ksrlh199NHZYIMNCuoR/02mTJlSMYXw4qqrq3PppZemX79+q7lXq15d9vtXv/pVxo0bV7HO+eefv8r7CAD/rYQ0AADwX+wb3/hGSqVSHnnkkbzxxht577330rx586y33nrp06dP/vd//zdf/OIXi+4m1Fnjxo2zwQYb5Mgjj6xxg3JYHscff3w6deqURx99NNOmTcvs2bPTokWLbLTRRtl9991z9NFH/1eOFlne/W7WrFm++MUv5vTTT8+BBx5YQM8B4L+De9IAAAAAAAAUoEHRHQAAAAAAAFgTCWkAAAAAAAAKIKQBAAAAAAAogJAGAAAAAACgAEIaAAAAAACAAghpAAAAAAAACiCkAQAAAAAAKICQBgAAAAAAoABCGgAAAAAAgAL8f0MK4TZAeGVhAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15, 8))\n", + "palette = sns.color_palette(\"tab20\", n_colors=len(model_filter(\"resnet_like\", models))) # 더 많은 색상 지원\n", + "sns.barplot(x='region', y='CSI', hue='model_data', ci=None, data=model_filter(\"resnet_like\", models), palette=palette)\n", + "plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', fontsize=15)\n", + "plt.title('ResNet-like Models with Different Oversampling Methods', fontsize=20, fontweight='bold') # 제목 볼드 및 크기 조정\n", + "plt.ylabel('CSI', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "plt.xlabel('', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "# x축(도시명) 글씨 크기 조정\n", + "plt.xticks(fontsize=15, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.yticks(fontsize=10, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **증강데이터에 따른 FT-transformer 모델 성능 비교**" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "table= model_filter(\"ft_transformer\", models).copy()\n", + "table['CSI'] = table['CSI'].round(3)\n", + "table['MCC'] = table['MCC'].round(3)\n", + "table['Accuracy'] = table['Accuracy'].round(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABo4AAAK4CAYAAABK9A/SAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADgYElEQVR4nOzdeVxN+f8H8NdN+64FlbSgQvZEikpKQ5YvxmAGFYYZuyGGGWrGjHWM3SyIGUNjhDAGJSVRETLGjCVlyzdKiyJt9/dH3+6v27nVbXMZr+fj0YM+57Odc88993Te9/P5iMRisRhERERERERERERERET01lNSdAeIiIiIiIiIiIiIiIjo9cDAEREREREREREREREREQFg4IiIiIiIiIiIiIiIiIj+h4EjIiIiIiIiIiIiIiIiAsDAEREREREREREREREREf0PA0dEREREREREREREREQEgIEjIiIiIiIiIiIiIiIi+h8GjoiIiIiIiIiIiIiIiAgAA0dERERERERERERERET0PwwcEdG/1uXLl+Hv7w8bGxtoaWlBJBJJfvT19RXdPSIJS0tLqfNTJBI1ans7d+4UtBcYGNiobb4OKu+zpaVlg9SbmpoqqNvNza1B6lYUNzc3wT6lpqZWmT8qKgqjR4+GlZUVNDQ0pMp16dJFkJ/XZyKqLDAwUHDd2blzpyDfq/7MpFcjKipK8Lr6+voqulu18m+8HyAiIqK3FwNH9K8m6w9QeX5mz54tqaMu5WX9VP7DR9YfvXX54R8jsu3evRuOjo4IDg7GrVu38Pz5c0V3iepI1gNskUgEJSUl3Lp1q9qyOTk5gofSfO/Qv4Wvr6/Mc1tZWRkaGhowMjKCjY0NPDw88PHHH2PPnj2Nci1csWIF3N3d8euvvyI1NRUFBQXV5uf1+c1TWFiIX3/9FZMmTULHjh3RvHlzqKqqwsDAAG3btsXIkSOxefNmZGZmKrqrRP8qVf29oK2tjZycnGrL3rx5E0pKSnL9XUJEREREVBkDR0T0r5OVlYWPP/4YxcXFiu4KNSKxWIzvvvuu2jw7d+7kQ2mqtcYamfSqlJSUoKCgAJmZmbh16xYiIyOxdetWvP/++zA3N8eiRYvw4sWLBmnrxo0bWLx4sdz5eX1uOK/q2/k//fQT2rZti9GjR2P79u24du0aHj9+jKKiImRlZeH27dsIDQ3F9OnTYWlpiUWLFqGwsLDB+0FE/y8/Px8//fRTtXm2bt0KsVj8inokjSNviIiIiN58yoruABFRQzt58iSePXsmlaauro5hw4ahefPmAAANDQ1FdI0a2M6dO/HVV19BXV1d5vaaAkv0dpk1a5bU7wYGBgrqieI8ffoUy5cvxx9//IEDBw7AyspKZr6RI0cKppjT1dUV5Dt06BBKS0ul0vT09DB06FA0bdoUAGBmZibZxuvzm6OkpATTpk3D999/L3eZvLw8LF++HNHR0Th06BCMjY0bsYf0tvL398fTp08V3Q2F++677zBjxgyZ2168eCFzmj8iIiIiInkxcERvHTMzM4wcObLaPK6urpL/V37QWO7BgwcIDQ0VpFeV39HRUer3qv7ozc3NRXBwsCDdz89P5kO7Nm3ayGzvbZaSkiJIW7RoET7//HMF9IYa09OnT/Hrr79iwoQJgm2RkZH4559/FNArel2tW7dO0V1odO3atYOXlxdKS0uRlZWFa9eu4erVq4LgzpUrV9C3b19cvHhRErCpaPr06XK1J+t6u3HjRowbN07u/Lw+v54WLlwoM2ikpqaGfv36wcLCAk+fPkVkZCQyMjKk8pw7dw7/+c9/cPr0aaioqLyqLtNbYsmSJYruwmvh+vXriI6Olvq7pdzevXuRnZ396jtFRERERP8aDBzRW6dNmza1enhYVd6oqCiZgSN5667qj97U1FSZgaMlS5a8cdMlKYqs9TXMzc0V0BN6FbZu3SozcLRlyxYF9IZIsRwdHQWfQykpKViwYAF+++03qfQHDx5g1KhRiI6OrnN7tb3e8vr8ZoiIiMCaNWsE6W5ubtizZw9MTEwkaS9fvkRAQAA2bNgglTc2NhZffvklvvjii0bvL9HbauvWrTIDR1u3blVAb4iIiIjo34RrHBG94dzc3ARziJcvTr569Wr06NEDTZs2hUgkQmBgoKTcn3/+ie+//x6TJk1Cr1690KZNGxgYGEBFRQV6enpo06YNhg8fjh9//BF5eXlVtl/dGgv//PMPpkyZAisrK6irq8PQ0BDvvPMOTp48We0+paenY9myZXBzc4OpqSk0NDSgpqYGU1NTdOrUCcOGDUNgYCBOnToltY5C+QLCQUFBgjr9/Pyk+ljxWJQTi8U4evQo/Pz8YGdnB319faiqqqJZs2ZwdHTEvHnz8NdffzX461HdPPCXLl3CmDFjYGpqCk1NTbRr1w6BgYHIzc2VtFlaWopt27ahV69e0NPTg66uLnr16oXvv/8eJSUl1fYXKFv0fOfOnRg1ahSsra2hq6sLdXV1mJubY9iwYfjpp5+qXY+kunMgISEBH3zwAVq1agVVVVWIRKIa+yMPVVVVyf/j4+Nx+fJlqe1paWkICwuTmV9e2dnZ+PbbbzFw4ECYm5tDU1MTmpqaMDc3h4+PDzZs2CCYcqsqe/fuhbu7OwwMDKClpYUOHTpgyZIlNS5sXZW8vDxs2rQJQ4YMQatWraClpQUtLS1YWVlhzJgxOHToUIOta5CUlITZs2fD0dERRkZGUFVVhZaWFiwsLODg4IAPPvgAa9euxaVLl+pUf8uWLaXOne7duwvyHDhwQLAoeOVz8vr164LzcN68eVJ5qlu7aOfOnZL0yu7evVvndY/S09Mxf/582NnZQVNTE/r6+nB1dcXevXvlKt8QrKyssG/fPsycOVOw7cyZMzh69KggvaprWbnytF27dgnKuru7S5XbuXNnva/PQNk0d5MnT4a9vT0MDAygqqqKFi1awM3NDStXrqzx2/VVvYYPHz7E3LlzYWtrCy0tLYhEIkRFRQnK1/d9V/Ecq7yv5ddKc3NzqKmpoXnz5hgxYgQuXLggqMfX1xcikQju7u6Cbbt27WqQdY9kvU5t27bF0aNHpYJGQNkIpPXr12PMmDGCMuvXr5e8Lrm5udDU1JTqW9euXavsw4sXL6CrqyuV39raWuYxVuTnWF3vWco11P1YdedXaGgoPDw8YGBgAD09PfTs2RM7duyQOpZZWVkIDAxEu3btoKGhASMjIwwcOBARERF1avPs2bN47733YGZmBjU1NZiZmWHcuHG4evVqlfXJq/x6UvGnssa4PwWAnJwcLF68WOo4ubm5YdeuXRCLxa9k7bGK9zQHDhxAenq61PaEhARcvHhRZn55ZWRkYOXKlfDy8kLLli2hoaEBHR0d2NjYwN/fH6dPn5ZZLjAwECKRSOY0qNHR0XVe9+j27dv4+OOP0bp161q/ZgCQnJyMRYsWwdnZGc2bN4eqqir09PTQtm1bvP/++/jtt9/kumd+8eIFli9fji5dukBLSwsGBgZwdnbGjz/+KBjZW5P6XjuIiIiIGp2Y6F9s6dKlYgBSP66urg1S9+nTpwV1N8RbKiUlRWa9KSkpMvO7uroK8sbGxorbtWsnSF+6dKmkXPfu3WW2I+vHzMxMHB0dLfdxmDBhgnjz5s1iVVXVKuv89ttvZdZ37Ngxsba2ttx9i4mJkZS1sLCQu1zFYyEWi8U3b94Ud+vWrcZyIpFI7OfnJ87Pz2+w10PWa+7q6ireunWrWFlZWWY/7O3txf/973/Fubm5Yk9Pzyr7O3LkSHFpaanMvorFYvGpU6fEZmZmNe63ra2t+Nq1a7U6B9asWSNu0qRJvd8jso7pmDFjpH6fPHmyVJnK7/2xY8fW6loQHBws1tHRqfG46Ovri0NCQqqsp7CwUDx8+PAqy5ubm4uvXr0q89ytyt69e8VNmzatsW+9evUS379/v8r9q+k9IRaLxUFBQWKRSCTXe6pJkyZV9rk6lV+bJk2aiJ89eyaVZ+7cuYL2EhISpPJ8//33gjxHjhyRylN5u4WFRbXHpLqfimWreg+Hh4eLDQwMqqxj1qxZdTpm5SZMmCDzvVeVwsJCcdu2bQVlPDw8BHllve8qfg7V5lgFBwfX6/qckpIidnJykuv9+Ntvv1W5/7Jew9OnT4v19fUF206fPi1VtjHfd4sWLRIrKSnJrE9ZWVmwT7Je9+p+qjsnZPnnn39k1rN3795qy92/f1/mNf/777+X5JF1Lf7nn39k1rd///4azw2xWLGfY/W5ZynXUPdjss6vzz//XDx+/Pgq63vvvffEJSUl4uvXr4utra2rzLdhwwa521y6dKl48eLFVX52qKioiH/88UeZ9cm6bw8ODhbkk+czs6HvT8Visfivv/6q9lzz9vYWHzt2rN7vwZr2tfI90FdffSVVpvI1Qtb7rro+ffvtt2INDY0az0cfHx9xVlaWVFlZr2F1PxXvxap6zXbv3l1tf6p7zQoLC8WzZs2S+T6u/GNnZye+cuVKlXU9ePBAbGdnV2X5Pn36iJOSkqrdx3INce0gIiIiamwMHNG/2tsaOGrZsqXMOuoaOAIg1tXVFd++fVuu42BsbFxjfcrKyoIHOJmZmTIf4Mn7h1RdH0z+/ffftW7XxcVF/PLlywZ5PWS95k2bNq3xgf27775bbVCi/KeqBzShoaFVPqys6hyQ9dBN1jlQ3YOV2pJ1TI8ePSrW1dWV/K6lpSXOyckRi8VicVFRkdjU1FSyTUlJSRwdHS2oo6prwYoVK2p1LgAQb968WWZdkyZNqrGsiYmJzAfSsnz77be16peZmZk4LS1NUI88gaPIyMhatVXXwNEPP/wgqCsiIkIqj6OjoyDP2rVrpfKMGzdO0J/s7GypPJXraMzAUYsWLeR68HbixIk6HTexuPaBI7FYLF67dq2gjJqamvj58+dS+V6XwNGtW7fERkZGcpcViUTiXbt2ydz3ynl1dHSkriMVfyoGjhrzfdesWbMa69PV1RU/fvy42te9up/aPrTesmWLoA4NDQ3xixcvaizr5uYmKDt69GjJ9pMnTwq2BwUFyazr3XffFby2d+7ckcqjyM+x+t6zlGuo+zFZ55ehoWGN9X311VfVBo2AsmDP9evX5WqzVatWNbYpEonEx44dE9TX2IGjut6flr/eFe8tqvqxsrKq93uwpn2NioqSOu8tLCzEJSUlkn6qq6tLtunp6YmPHj0qd59mzZpVq/OxU6dO4ry8PEn5hg4cWVhY1Pger+o1KykpEQ8aNKhW/dHU1BRfuHBBUFdBQYG4Q4cONZaXlafy/WZDXTuIiIiIGhvXOKK3zu3btzF79uxq8yxfvhwaGhqvpkON4MGDBwAAW1tb9OnTB4WFhYKpvMrZ2trCwsIChoaGMDAwQHFxMR48eICYmBip6dByc3Px1VdfYceOHTW2/+TJEwBl61YMGDAAmZmZgil8iouL8f3330utiXDs2DHBVENmZmZwc3ODvr4+8vLycOfOHVy9elXmFF/+/v54+vQp4uLiEB8fL7XN09MT7du3l/zeq1cvAEBJSQlGjBghaFdNTQ3e3t4wMTFBUlISzp8/L7X97Nmz+Pzzz7Fy5coaj0dtXo9yWVlZkjKurq64cuUKEhISpPJUXK+kX79+sLKywokTJyTtldu4cSMmTZoklXbv3j2MGzdOMK2GtbU1evfuDWVlZZw9exa3b9+WbMvNzcXIkSPx559/Qlm5+o+Phw8fAgDU1dXh6ekJMzMzPHz4EJGRkdWWk5eWlhbGjx+PTZs2AQDy8/Px008/Yfr06QgLC0NaWpok76BBg9CqVSu56o2NjcWnn34qSDc3N4enpydKS0tx4sQJPHr0SGr7rFmz4OLigk6dOknSYmJisG3bNkFdJiYmeOedd1BcXIxjx44J6qpKQkICPvnkE0G6vb09HBwcUFRUhKioKMmxB8peh/HjxyM8PFyuNir65ZdfBGmdO3dG9+7doa6ujuzsbNy4cQN//vlnvaZQkTVNTWxsLDw8PACUTQsj6/0SGxuLOXPmSP1eUZcuXaCnpyd3P9q3b49Zs2YBKJteqyIdHR34+/tLpRkYGFRb33//+18AgJGREQYNGoTCwkIcOHAAL1++lMq3adMmeHl5yd3P+pJ1vF++fImrV6+iZ8+ectdTfqxOnjyJv//+W2rbiBEj0LJlS8nv7du3r9P1ubS0FCNGjEBGRoZUfn19ffTv3x9NmzbFtWvXpK7PYrEYU6dORe/evdGmTZtq96HiVJN9+vRBhw4dkJWVhZiYGEl6Y7/vHj9+DACws7ODq6sr7ty5IyiXm5uLn3/+GXPnzgUAeHl5QV9fHw8ePBCstdiuXTvB+eTo6FhjPyq6cuWKIM3e3h7q6uo1lu3Ro4dgmr+K718PDw+0bNlS6nPq119/Faz7mJ+fj99//10qrW/fvlLTXyn6c6y+9yyVNcb9WGZmJgDA1dUVbdq0walTp6SmnASAxYsXAyi77xkyZAhUVVVx8OBBPH/+XJKnqKgI3333neDaKMu9e/cAAF27dkXPnj2Rnp6OY8eOSV37xGIxPvzwQyQnJ9dpGrW6quv9KQB8+umnUvcW5Xr27ImuXbtK3rspKSmNuxMALCwsMHDgQMk0o3fv3sWxY8fg4+OD4OBgqbXkxo8fDy0tLbnqDQ0NlfkaOzo6olOnTnj27BnCw8Px9OlTybarV69i9uzZ+PHHHwGUXb9nzZqF3NxcwZqtZmZmGDlypFRaTdfpu3fvAqjba7Zy5UrBdQQAunXrBkdHR2RkZODYsWNS5/rz588xYsQI3LhxQ+qat2rVKpnTVXfq1Am9e/eWnOc1TWkNNPy1g4iIiKjRKDRsRdTIavutt/KfytMuyPI6jzgCIP7iiy8EU5RVnP7pxIkT4gcPHlTZj8ePH4tbt24tVWfTpk0FdVZ1HDw8PKS+wb5x40ZBns6dO0vV9dVXX0ltb9Wqlcwp4UpKSsQXLlwQL1y4UPznn38Ktsv7jVWxWCz+5ZdfBHl1dXUFU1XI+sa5hoaG+MmTJ1L56vJ6VPWae3t7iwsLCyX7XNVUTcuXL5fU+fDhQ7Gampogz9OnT6Xa/uijjwR5AgICJN9YFYvLRu74+fkJ8lX+Nn9V50Dr1q0F3w6vPAWZPGQd09OnT4uvXbsm+JanWCwW9+vXTyr92LFjVU4lVpmsaf+8vb2lvmn/7NkzsbOzsyDfu+++K1XXiBEjBHkcHR2ljkFmZmaV32Ct7J133hHk2bhxo1Se58+fiwcMGCDIV3lqI3lGHFU+FiNHjpT5+jx//lx84sQJwXSBtVH5W9xeXl6SbVWdXy1atJDkSUtLE2z/5JNPBO1UzlNx1FBd8pWr6j1sb28vzszMlOQ7cuSIII++vn7tDlYFdRlx9PTpU5l9rTytX00jjqrrQ+Vp3iqqzfX5119/FeR1d3cX5+bmSuXbvn27IJ+fn5+gPln7ra6uLj5+/LhUvuLiYsnnV2O/7wCIx40bJy4uLpbk++STTwR5hg4dKtifqqZ1qi9ZI1mHDx8uV9n169cLyhoaGkrl+fTTTwV5rl69KpVn7969gjw7duyQyqPoz7GGumdpqPuxqs6vL7/8UpLnyZMnYi0tLUGeJk2aSI1oCA0NFeSpfM9WXZvz58+XypeYmCiz3V9++UUqX2OPOALqdn9aeRRP+U/lz819+/bJbLOhRxylpKSIf//9d6m0gQMHiktLS8Vt2rSRSv/rr7/kvlZUnlZZWVlZfPDgQak8T58+FXfq1Elw/iQnJ0vlk/e+q6KGfM3y8vJkjuaWNVW1rJFoFUeSFxUViVu0aCHIM23aNKn3YVXneeX9bqhrBxEREVFjY+CI/tXe1sCRu7u73O1lZmaKDx8+LP7mm2/EixcvFs+ZM0c8a9Ys8axZs2TO4135AUpVx6HyQ6CCggLB/OK6urpSeTZs2CC1vVmzZuJ79+7JvS/lavNgUtbD/aqmzenatasgb+WHHnV5Pap6zStPu7FkyRJBHlNTU3FRUZFUPnd3d0G+S5cuSbaXlpYKpkcyMTGRethW7uHDh4K6Bg8eLJWnqnOgqnUYaquqwJFYLBb37dtXKr3yOjdWVlbikpISuR5gZGdnC85RkUgkTk1NFfTpypUrgvq0tLSkAn2y1kg6d+6coK7KD39kXUtycnIE6105OjrKPF6xsbGCumbMmCGVR57AUeWHxx4eHlWu7VVflddr0NXVlZyPy5Ytk6T37t1bagrHW7duicVi2Q/rKgdCxOJXHziS1QdZ019VDuzKqy6Bo6KiIpl9leda9qoDR5WnKgMgc7ossVgsWLtJX19fcE2Ttd9VXe/F4lfzvlNXV5eahk4sLpuer3K+Tp06CdpsrMBR//79BfV+8MEHcpXdtm2boKyysrJUHllrKC1atEgqz7BhwwTX14pB99fhc6yh7lnK1fd+TNb5ZWJiIrhHqPy5CUA8atQoqTxFRUWCdYAq37NV12b5Z2FF8+fPr/G8ehWBo7rcn/72228y91PeKYsbI3BUUlIitrS0lKQpKSmJv/vuO6l85fc58lwr/vrrrxrPi3KyvnT1zTffSOVpyMBRXV4zWV/UaNOmjcxrxLp16wR5PT09JdsTEhIE2/X19QVTvIrFss/zyvvd0NcOIiIiosbCqeqIGtkXX3whNaVDZY6Ojhg7dmyDtjlhwoQa89y5cwfz589HWFgYSkpK5K47IyNDaqoYWTp27IiOHTtKpampqaFp06ZSUw5VnCYIKJturaLHjx/DysoK7dq1g62tLWxtbdGuXTs4OTmhdevWcve5OhcuXBCkDRo0SGbegQMHCqbMunDhQo2vnzyvR2Wmpqbo0KGDVFqLFi0E+dzc3ATT7cjKV/FYp6amSqZHKvfo0SM0adJErr5VnrZPFisrK/Tt21eu+urjo48+wpkzZyS/T58+XWr7lClToKSkJFddly5dErwXOnToAAsLC0Hezp07S6YtKpefn4/r16+jc+fOSE5OFpzfurq6cHJyEtTVv39/KCsro7i4uMq+JSYmCrYnJCRAJBLJtW/yvGaVeXh44MCBA5LfT506BWNjY9jb20vej/b29nB2doaRkVGt66/Izc0Ne/fulfyem5uLP//8E507d8bZs2cl6UOHDsXTp0/xzz//ACibnq5NmzaCaeqaNGmCPn361KtP9aWnpyfzWmJiYiJ13gBl78+mTZu+kn5VPi/L1WZav1el8pR2AKSmtKtOdnY2/v77b8F1tLLqrs+v4n3n6ekJY2NjqTQTExNBvqpet8agq6srSKs4lVN18vPzBWmVzy1bW1v06tULcXFxkrRff/0VX331FYCy9/8ff/whVWbEiBHQ1taW/P46fI411D1LY96Pubu7y3WP0L9/f6nflZWVYWhoKDWVqrznoIeHB1RUVATp3t7eWL16tVSarGkRG1Nd709l9XPQoEEyp9kbOXIkoqOjG6bD1VBSUsKUKVMk0+uWlpZixowZUnk++ugjueuTdb3dt28f9u3bJ1f5utxnyKOur5ms+3tvb2+Z94SDBg0STGNesbys179Pnz4ypzWXdZ5Xpoi/d4iIiIjqgoEjeuu4uroK5t9vTDt27JDMzy3LhAkTGjxwVHGdFVnu3LmDXr16SeZ6rw15Hh7JetAOQLA+grjC/ORA2UP6WbNmSc2vXlJSgmvXruHatWtSedu3b48FCxZg/Pjx8nZdJlnHwNzcXGZeWemVH1zJUtPrIW9bstaXkJVP1oOMimtA1OV1rygzMxPFxcXVrg9R+Y/8xjJixAg0b94c6enpAMrWYSinpqaGiRMnyl1Xbc6F8m2VAwDl50P5uhIVmZmZyaxHVVUVxsbG1a51VN/XrHy9ndrw9/fHTz/9JPUw6fnz50hISJBab0skEsHd3R1fffWVZG2a2qpqnaOOHTtKPYxydnbGrVu3JIGjs2fPYsKECVLBJaD26xs1BnNzc5kBBlnv48prtDSm5ORkmemVgxevg4Y476sLHOnq6lb5edVQ7ddEVvuKPkdkBYIrr51XlcrXxKrqmzBhglTgKDk5GRcvXoSDgwMOHTokWAvM19dX6vfX4XOsIe5ZGvt+rCHvJSrfs9WmTQBS656Vq7x+WWOr6/2prM/02twrNpaJEydi6dKlknUGK94DNW/eHMOHD5e7LkXcZ8ijrq9Zfe/vs7OzUVhYCFVVVZmvv6zzubr0ihTx9w4RERFRXcj3NWwieqPo6+tXu33BggV1/gNRngcHhoaGMtPl+SbwunXr8Ouvv6J3797VjhS5fv06JkyYUOO3+l4HNb0essh6sCPvQ+jGJhaLZX6rvKK67HNdqKioVBkcGjlyZL1Hwvxb5OXl1bqMuro6oqKisGLFCrRt27bKfGKxGJGRkXB1dRWM/JGXjY2NYJRFbGwsrl27JlkYWk1NDQ4ODnB2dpbkOXv2LPLy8pCUlCRVVlYg6lWrz3WwMcn64oS6unqdAtyvu5rO+8a+TsnzvpN1nij6HOnatasg7dq1aygoKKixrKxv+cuqb/To0VBTU5NK+/XXX6X+LWdhYdHg7+mG+hyr7z1LY9+Pvc73EorQkNdlWaNNANnHt7EYGxtj5MiRMrdNmjRJ5sivxlKX+wx5vK6fpfX1b/x7h4iIiP59OOKI6F+ouj9ai4uL8fvvvwvSAwICMHnyZJibm0se5owZMwYhISGN1s+qjBo1CqNGjUJ2djaSkpJw48YN3L59GxcuXEB0dLTUw5IvvvgCs2bNkjnKRh7Gxsa4d++eVNr9+/fRrFkzQd779+8L0mTlq+xVPkSQh6w+t2zZEiNGjJC7jpqO96vc5w8//BArVqwQfCO/NlO0ALJHXMh6zavbVn5sZT3okPVNfAAoLCys8cGhrNesffv28PT0rLZcuaoecNVEXV0dCxYswIIFC/DgwQP8+eefuHXrFm7cuIHo6Gj89ddfkryFhYX44osvcOLEiTq15erqKnW9OXv2LFxcXCS/Ozg4QE1NTSrtxo0b+P333wXTib0OgaPXUWFhIb777jtBuouLy2v54LhZs2ZSI3aVlJQwffp0ua8v1tbW1W6vqR5Fve8Uzd3dXZD2/PlzHD58GKNGjaqyXFpamtTUodXVp6+vj6FDh0pNg7Vv3z4sXLgQ4eHhUnnHjx8veK1ep8+xut6zvAn3Y3VR1eemrFFrb8qXO2T1s6rP9OruGxrDRx99hD179kilKSkp4cMPP6xVPbLeU7169ULPnj3lKl/VqGpFqc09nax0fX19yTVC1j1dVaMw5R2dCbzav3eIiIiI6oKBI6JGlpqaquguSMnIyMCLFy+k0uzt7bFy5UqptNLSUly8ePFVdk1AX18frq6ucHV1laR99tlnknUQgLJvOF6/fh1dunSpUxs9evQQBI6OHTuG7t27C/IeO3ZMZvk3jYWFBYyNjaWCFTk5OVi+fLlcDzpLSkpeq296WlhYYODAgTh69KgkrVOnTlIjU+TRrVs3NGnSRGqNib/++gt3794VTJVy9epVwUMjLS0tyforrVu3ho6OjtSc+7m5uYiLixNM53bq1Klq1zcCyr6xX7lvxcXF+Pbbb+V6uFmbdTOq0rJlS7Rs2RLvvPMOgLJvu/ft21dqmjhZayTIy83NTerB6L1796R+L38927RpI5meUCwWC76F2xDrGykpKUkFIhvi+L0O5s6dK3OqulmzZimgNzXr0aOHVOCotLQUo0aNkuu93RDXqdfhfVcdWfvXEG3a2trCxcVFMAXkkiVL4OPjA01NTZnlFixYIGhfV1e3ymCTr6+vVODo3r17mD9/vtR0WyKRSOY6VK/j51ht71nepPux2jh16hSKiooEo11kfamgrvdur5qsfkZERMjMGxoa2si9kebi4oKOHTvizz//lKQNGjQIrVq1qlU9su5ntbW1sW7duhrLisViwQi4xro+yUvW/hw/fhylpaWCET413d/Lev1jYmLw4sULwfWmLl+eeRV/7xARERHVBaeqI3rLyPqmWlpamtQ888XFxZg7dy5u3779KruG+Ph4zJw5E/Hx8VWu51C+lk1FlddCqA1Z879/8803uHr1qlTa+vXrcfnyZak0DQ0NeHl51bltRRGJRPjPf/4jlfbs2TOMGjUKT58+lVkmIyMDu3btgqurK3bv3v0qulkr06ZNg5qamuTn448/rnUdenp6ggWLxWIxpk6dKjVFU35+PqZNmyYoP3DgQMmDMiUlJZnnxpw5c6SmR8rKysKCBQvk6puHh4dU2s2bNzFlypQqp1t68OABtmzZgu7duyMmJqbGNir78ccfsXz5cty6dUvm9pcvX0qmkauYVleyRglVHL1QMVhQ8f+JiYlSZRpifSNtbW2p39PT06t8b7wJ7ty5g5EjR2Lz5s2CbX379oWPj48CelUzWdfn8ePHS9a4quzFixf4/fffMWbMmDpdAypTxPuuNiqfpwDw999/N0jdS5cuFaTduHEDgwcPFqxlUlhYiLlz58r8bJg1a1aVU755eXkJpqgMDg6W+t3FxUXm4vCvw+dYfe9ZXuf7sfp49OgRPvvsM6m0K1euYMuWLYK85V9EeN25u7sLRmX+9ddfUmvUAMCBAwdw+vTpV9k1AA1zD9ShQwfY2tpKpUVERCAoKEiyhlJlt27dwurVq2FnZyf4Epas69Pt27elAsONyd3dHU2bNhW0/+WXX0ql3bp1C8uWLROUHzZsmOT/Xbt2RfPmzaW2Z2dnY+HChVIBs6rO88oU8fcOERERUV1wxBHRW8bAwACWlpZSI6GePn2KDh06wNvbG0DZ2iJVLaDemJ49e4aNGzdi48aN0NfXR8eOHWFlZQUdHR28ePECly5dwpUrV6TKKCkpyXyoJK/33nsPX331Fa5fvy5Jy8nJgaOjI9555x2YmJggKSkJ586dE5SdMWPGGzPNSmWLFi3Czz//LPVt56NHj6Jly5ZwdXWFubk5RCIRMjMzcf36ddy4cUPyx62fn5+iul0lb29vudbfqMnSpUsREREh9SDg+PHjsLGxgZeXF0pLS3HixAmkpaVJlVNWVhY8KJsxY4bgm8dxcXGwsbGBt7c3SkpKcOzYMbnXtwgKCkJERITUQ4Yff/wR+/btQ9++fWFqaorS0lKkp6fjr7/+qvd7+O7du/jqq6+waNEitGzZEh06dICZmRk0NTWRlZWF6OhowZQsNjY2dW7P1tYWLVq0qHKB7d69e0v+7+LiggMHDsjM1xDT1LVt21YqIFVUVISePXvCzc0NWlpaAIChQ4fKnIJL0RISEjB79myUlpYiOzsb165dQ1JSksyHUy1btpQa8fG6ee+99/D1119LLRZ+584dtG/fHr1790abNm2gpaWFrKws3Lp1S2odHlmjVOriVb/vaqN169YQiURS16vExEQ4Ozujc+fOksDEJ598UuWi8FXp378/5s2bhzVr1kilR0ZGwsrKCh4eHmjVqhWePn2KyMhImdcxZ2dnfP7551W20aRJE3zwwQfVrt1R3euo6M+x+t6zvM73Y/W1atUqhIeHo2fPnnj8+DF+//13wUNvMzOzKtfned0YGBhg/Pjx+OGHH6TSZ8+ejf3796Njx464c+cOTp48qZD+TZkyBVOmTKl3PV988QXee+89qbTAwEBs3boVvXv3RosWLVBYWIhHjx7h6tWr1U7L1rRpUxgaGiIzM1OS9t///hc9evRAr169JIE4Pz8/dO7cud59r0xLSwvz58/HokWLBPtz+PBhODo6IjMzE7///jueP38uladVq1bw9/eX/K6srIyPP/5YEFDfsGEDoqOj4eTkVOV5Losi/t4hIiIiqgsGjojeQjNmzMAnn3wilfb48WP89NNPkt91dXXRoUMHnD9//lV3D0DZN/liYmJq/Mb2u+++W6/gTZMmTRAaGgonJydkZ2dL0l++fIlDhw5VWc7FxUXwrcU3iYWFBX7++WeMGjVK6oHoixcvcPz4cQX2TLGcnZ2xfPlyLFy4UCr9/v372L59e5Xl1q9fj06dOkmlubq6ws/PT/AN+rS0NOzYsUPyu56eHkpLS6WmtZOlV69eWLNmDebOnSuVnpOTgyNHjlRbtr4ePHgg17z9tV1XqjJXV1f8+uuvgnQ7Ozup93nFdY4qa4jA0cCBAwUjmW7fvi31rf+WLVu+loGjv//+W65RJ926dcP+/fsF36J+nSgpKeHAgQNwcnKSevgoFosRGxuL2NjYRu+DIt93NdHV1YWLi4vgc/LcuXNSX3b44IMPah04AoAVK1bg2bNn+P7776XSCwoKZK7NU5GTkxMOHDggmK6ssuoWfdfU1Kx2TaXX6XOsrvcsb8L9WG21b98e169fx+XLlwUjtcuJRCJ8//33b9R6LcuXL8fRo0cFXxw5e/as1LSO5fv/Jho1ahRiY2OxYcMGqfT09HQcPHiw1vUNHDgQP//8s1RaUlISkpKSJL+7uLg0SuAIKFsvLDY2VnC9unTpEi5duiSzjKamJkJDQwUjzAICAhASEiL4fK28P+bm5rVa5+pV/b1DREREVBecqo7oLTR79mzBNwor0tXVxW+//Vav0QN1Ie9C1OU8PDxkLvReW3Z2dkhISEC3bt1qzCsSieDn54cTJ068UQ88ZBkxYgTCw8NrNQ++tbU12rZt24i9UrwFCxZgx44d0NHRqTGvvr4+9u7dW+W0MN999x2GDh1aZXlDQ0McO3YMBgYGcvVtzpw5CAkJkblQc1U6duwIU1NTufOXq837USQSYe7cufX+xnNVQZ/Ka9p07dpV5jorDbG+EVB2jbS0tKx3Pa8jIyMjfP7554iNjYWVlZWiu1Ojtm3b4uLFi9UGCytr2rSp3Au6y+NVvu9qa+XKlYIHnA2lSZMm+O6777Bz5065A09aWlpYuHAhoqKi0KxZsxrzd+jQAQ4ODjK3DR8+vMbrsCI/xxrinuV1vR+rj3fffRcrV64UrCNTTllZGVu3bsWgQYNecc/qx8DAAOHh4TAzM6syz/DhwwWj9ABATU2tMbvWoNavX49169ZJRtfKo1evXtDV1RWkL126VDBd3KvUpEkTHDhwALNmzZJrTTM7OzucO3dO5jVJXV0dJ06cqPa92LlzZ+zfv7/GdhT19w4RERFRbXHEEdFbSElJCXv37sXAgQOxbds2XLlyBUVFRTAzM4O3tzfmzp0La2tr7Nmz55X2y8PDA9euXUNERAQSEhLw999/4/79+8jJyYFYLIa2tjZatWqF7t27Y9SoUZKpXBpC+cPJ33//Hfv370dcXBwePXqE58+fQ19fH5aWlujbty/8/f3RoUOHBmtX0fr164fbt28jNDQUR48exYULF5Ceno68vDxoamqiWbNmsLOzQ8+ePeHl5dWgD2NfZ35+fvjPf/6DHTt2IDw8HH/++adkxIORkRE6deqEAQMGwM/Pr9oHm6qqqjh06BB++eUX/PDDD0hKSkJhYSHMzc3h4+ODgICAWo/4eO+99zB48GDs2bMHJ06cQGJiIjIyMvD8+XNoaWnB1NQUdnZ2cHZ2xoABA9CxY8c6HYOlS5fCy8sLUVFRuHjxIm7evIlHjx4hLy8PTZo0gZ6eHlq3bg1nZ2dMmDChzu1UJG/gSFlZGT179hSsJdEQ6xsBZQ8IExISsHr1avzxxx9ISUmpck2b15GSkhJUVVWhpaUFQ0NDtGzZEu3atUOfPn0wdOjQRgs0NBZLS0vExMTgzJkz+PXXX3H+/Hncu3cPOTk5UFFRgYGBAdq2bYtu3bqhf//+6NevX4M/qH1V77vacnJykpyrMTExePToUYOvgzFhwgSMGTMGBw8exMmTJxEfH4/09HRkZ2dDW1sbhoaG6NSpEzw8PPDee+/V+lvxEyZMwMWLFwXpvr6+cpVX1OdYQ9yzvK73Y/UVEBCAvn37Yt26dTh79iyePHkCQ0NDuLu7IyAgoNFGmDS29u3b46+//sKqVatw4MABpKamQktLCx07dsSkSZPw/vvvS40WK2dsbKyA3tbdrFmzMH78eOzatQunTp3C1atXkZmZiZcvX0JbWxstW7ZE+/bt0adPH7zzzjtVTqHWunVrXLp0CatWrUJERAQePHggNbXkq6Cqqop169ZhxowZ2L59O6KionD79m1kZ2dDXV0dzZo1g6OjI4YNG4YRI0ZUG2AyNzfHlStX8O233yIkJATJyclQVlaGjY0NxowZg+nTpwtGpMmiyL93iIiIiGpDJK44MToRERERERFRDXbu3ClYL2rp0qUIDAxUTIdeA8OHDxdM67Zv3z68++67CuoREREREVHdcKo6IiIiIiIiomp88cUXOH78OIqLiwXbSkpKsHLlSkHQSENDA/37939VXSQiIiIiajCcqo6IiIiIiIioGpGRkZJ1e3r06AELCwuoqqoiPT0dZ8+exX//+19BmdmzZyt0nR8iIiIiorpi4IiIiIiIiIhIDllZWTh58mSN+Tw8PN7qafuIiIiI6M3GqeqIiIiIiIiIGkCTJk0wZ84cHD16FKqqqoruDhERERFRnXDEEREREREREVE1fvnlFxw4cABRUVG4desWHj9+jKdPn0JNTQ0GBgawt7eHi4sLxo8fDzMzM0V3l4iIiIioXkRisVis6E4QERERERERERERERGR4nHEUR2UlpYiLS0NOjo6EIlEiu4OEREREREREREpiFgsxrNnz2BqagolJa4KQUREbz4GjuogLS0N5ubmiu4GERERERERERG9Ju7fv4+WLVsquhtERET1xsBRHejo6AAouyHQ1dVVcG+IiIiIiIiIiEhRcnNzYW5uLnleRERE9KZj4KgOyqen09XVZeCIiIiIiIiIiIi4nAEREf1rcOJVIiIiIiIiIiIiIiIiAsDAEREREREREREREREREf0PA0dEREREREREREREREQEgIEjIiIiIiIiIiIiIiIi+h8GjoiIiIiIiIiIiIiIiAgAA0dERERERERERERERET0PwwcEREREREREREREREREQBAWdEdICIiIiIiIiIion+voqIilJSUKLobRERvrSZNmkBFRUXu/AwcERERERERERERUYPLzc1FRkYGXr58qeiuEBG99dTU1GBkZARdXd0a8zJwRERERERERERERA0qNzcXDx8+hLa2NoyMjKCiogKRSKTobhERvXXEYjGKioqQk5ODhw8fAkCNwSMGjoiIiIiIiIiIiKhBZWRkQFtbGy1btmTAiIhIwTQ0NKCjo4MHDx4gIyOjxsCR0ivqFxEREREREREREb0FioqK8PLlS+jp6TFoRET0mhCJRNDT08PLly9RVFRUbV4GjoiIiIiIiIiIiKjBlJSUAECtFmInIqLGV35dLr9OV4WBIyIiIiIiIiIiImpwHG1ERPR6kfe6zMARERERERERERERERERAWDgiIiIiIiIiIiIiIiIiP6HgSMiIiIiIiIiIiKiV2DDhg3o0KED1NTUIBKJ4ObmpuguvRH27t2L7t27Q1NTEyKRCJaWloruEtG/mrKiO0BERERERERERERvl+7zf1J0F+SSuHp8g9V14MABzJo1C02bNsWQIUOgpaUFOzs7iEQiuLq6Iioqql71BwYGIigoCMHBwfD19W2QPr8OLly4gA8++ADq6urw8vKCvr4+jIyMFN0ton81Bo6IiIiIiIiIiIiIGtmhQ4cAAPv370e/fv0AAKmpqfj0008V2KvX35EjR1BaWoqNGzfC399f0d0heitwqjoiIiIiIiIiIiKiRvbgwQMAgLW1tYJ78mbhcSN69Rg4IiIiIiIiIiIiImokgYGBEIlEOH36NADAysoKIpEIIpEIVlZWAIDo6GhJmkgkqvVUc5aWlggKCgIA+Pn5SdVVPgXezp07IRKJEBgYiJs3b2L06NFo3rw5lJSUJKOhbt++jcDAQDg5OaFFixZQVVVFy5YtMX78eNy8eVNm2+VrDpWUlGDlypWwsbGBmpoazM3NsWDBArx8+VJQ5smTJ1i4cCHat28PbW1t6OnpwcbGBuPHj0dCQoJUf4ODgwEA7u7ukn3auXOnpK7nz5/jyy+/hL29PTQ0NKCnp4e+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6+tDT08POTk5yMrKkqyzU6664wBA5rRt2traVW4r356ZmSn5PSMjA3l5eQAAVVXVatvLyMgQpNXUx9qwsLCQmV5+/MqPZ301a9ZMajRRudTUVADA4sWLsXjx4irLFxQUNEg/qH7eyMBR+dyPQNmQx8zMTISGhiImJgZJSUmCBd/K3bx5E71790ZmZiY0NTUli56Fh4fj2bNnDBwRERERERERERHRv5q6urrM9Ly8PIwaNQpPnz7FkiVLMHr0aFhYWEBDQwMikQhjx47F3r17IRaLBWVljSCpztq1azFlyhSEhYUhIiICsbGxSEhIwKpVq7B3716MGDGiTvtWWXWjdao6DuWq2yd597d8pJO2tnaN+yRr2rya+qgoskZwlauqz+VlXFxcahz8QYr3xgWOCgsLsXDhQgDAiBEjsH//fqSlpcHOzg6PHz/G119/jQ0bNsgsO3PmTGRmZsLd3R0HDhyAvr4+AODFixdS81G+TY7F31NY2wN7NlzEnIiIiIiIiIiIiOouJiYGmZmZGDlyJIKCggTb79y506Dt2draIiAgAAEBASgoKMCmTZswf/58fPTRR3IFjkxNTQEAd+/elbk9JycH2dnZ0NDQkDlF26tgZGQEdXV1KCkpITg4uMGmnauLqo5TeXr58QT+f3RU+Wipyu7fv1/r9lu2bAmgbKq6Tz75pNbl6dV649Y4unDhgmTYXvkFxNTUFL169QIAHD9+XGa5rKwsyTyK5dPT6ejooFevXjh79qzUomCVvXz5Erm5uVI/RERERERERERERPVR/oC+uLhY4XVlZWUB+P8H/BXdvn0bly5dqnvnaqCuro558+bBxMQET548wePHj2ss0717d2hoaCAxMRG3bt0SbN+9ezcAwNnZudYjohqKsrIy3NzckJubi1OnTimkD+VOnjyJ7OxsQXpISAiAspFA5UxMTACUzeBV2dOnT+t0Lnh6egIADh48WOuy9Oq9cSOOKkYzmzVrJvl/8+bNAQD37skeQXPr1i3JMMoDBw7AysoK6urqiI+PxzvvvIPY2Fj07NlTZtnly5fLjLI3lO7zf2q0umvy5Ug3hbVNRERERERERET0NjMyMoKKigqSk5NRUlIic50geZWPGLlx40adytvY2AAoe3a6aNEiGBsbAwCys7MxceJEFBUV1blvFR06dAgtWrSQDAQol5iYiPT0dGhra0tmiqqOlpYW/P39sXnzZkybNg0HDx6ElpYWgLKAx7JlywCUzUKlSIsXL8bJkyfh5+eHn3/+GW5ublLb8/LysG/fPowZMwYaGhqN1o+8vDzMnTsXP/zwg2QQxR9//IF9+/ZBQ0MDfn5+krxWVlZo1aoV/vzzT4SFhWHo0KEAgPz8fHz44Yd1GljRs2dPeHp6Ijw8HNOmTcPy5cuhq6srlScpKQmPHj2Ct7d3PfaUGsIbFziqiqy5NSuqGGnv378/Tp48idzcXFhbW+Pp06fYunVrlYGjTz/9FHPnzpX8npubC3Nz84bpOBEREREREREREb2VVFVV4e3tjSNHjqBz587o1q0bVFVV4ezsLPUgXx5eXl5QV1fHt99+i2vXrsHU1BQikQjz58+Hra1tjeUdHBwkD/ZtbGwkAY6oqCgYGRlh6NChCAsLq8tuSomKisL69ethZmaGrl27QldXF2lpaYiJiUFpaSmCgoIko6dqsnz5csTFxSE8PBzW1tZwdXVFfn4+IiMjUVBQgJkzZ2Lw4MH17nN9uLi4YPPmzZg+fTrc3d1hb28PGxsbqKioIDU1FVeuXMHLly8xfPjwRg0cvf/++zhw4ACioqLQs2dPPHr0CGfOnIFYLMaGDRsEI82WLl2KiRMnYsSIEejbty+0tbWRkJAAXV3dOp8Lu3fvhre3N7Zs2YI9e/agS5cuMDU1RU5ODq5evYr79+9j1qxZDBy9Bt64qeoqBmwqDlks/3+rVrLXzTEzM5P838HBASKRCHp6epJIempqapVtqqmpQVdXV+qHiIiIiIiIiIiIqL62bduGcePGITMzE3v27MH27dsRHR1d63pMTU0RFhYmWZpjx44d2L59Ox49eiR3HWFhYVi8eDGMjY3xxx9/IDExEaNHj0ZcXJxco4Dk4evri08++QSmpqZISEhAaGgoUlJSMHDgQEREREh9gb8mOjo6iI6ORlBQEIyMjHD48GHExMTAwcEBe/bswfr16xukz/U1depUXLx4ERMmTMCzZ89w9OhRnDhxAnl5eXj//fdx9OhR6OnpNWof2rRpg/Pnz6NTp044ceIEEhIS0KtXLxw5cgSTJk0S5Pf390dwcDDatWuH2NhYJCQkYPDgwTh//nydz4VmzZrh3Llz2LBhA9q3b4/Lly9j//79uHr1KqytrbF69WrMmzevnntKDUEkrmmozmumsLAQpqamyMzMxIgRI7B//36kpaXBzs4Oz549w4wZM7BhwwbY2dkBAKZPn47p06cDKBtueevWLXh6euLEiRN49uwZrKys8PTpU0yaNAk//vijXH3Izc2Fnp4ecnJyGiSI9LZOVTewp+wgHxERERERERHRm6KhnxP9GxQUFCAlJUWyVAQRKc7OnTvh5+eHpUuXIjAwUNHdIQWT9/r8xo04UlVVxddffw0ACA0NhbW1Ndq1a4dnz57ByMgICxcuBFA2l+eNGzeQkZEhKbtixQqIRCKEh4ejTZs2aNOmDZ4+fQotLa1aRbKJiIiIiIiIiIiIiIj+jd64wBEAfPjhh9i9eze6dOmCtLQ0iEQiDB8+HOfOnZMsAifL8OHDcejQIfTo0QNpaWlQUlLCsGHDcPHiRbRr1+4V7gEREREREREREREREdHrR1nRHair999/H++//36V26uagW/IkCEYMmRIY3WLiIiIiIiIiIiIqF4yMjLkXuvFzs5OMgsT/fv5+vrKlc/IyAhr1qxp3M7Qv9YbGzgiIiIiIiIiIiIi+jfKy8vDrl275Mrr6urKwNFbRN7zwsLCAmvWrIGvr6/cwSaicgwcEREREREREREREb1GLC0tq5xRid5uPC/oVXgj1zgiIiIiIiIiIiIiIiKihsfAEREREREREREREREREQFg4IiIiIiIiIiIiIiIiIj+h4EjIiIiIiIiIiIiIiIiAsDAEREREREREREREREREf0PA0dEREREREREREREREQEgIEjIiIiIiIiIiIiIiIi+h9lRXeAiIiIiIiIynSf/5PC2k5cPV5hbRMRERER0euDI46IiIiIiIiIiIiIiIgIAANHRERERERERERERK/Ehg0b0KFDB6ipqUEkEsHNzU3RXXoj7N27F927d4empiZEIhEsLS0V3SWifzVOVUcKc++Ljgpru9WSPxXWNhERERERERERvX0OHDiAWbNmoWnTphgyZAi0tLRgZ2cHkUgEV1dXREVF1av+wMBABAUFITg4GL6+vg3S59fBhQsX8MEHH0BdXR1eXl7Q19eHkZGRortFjeTfeh6/aRg4IiIiIiIiIiIiolfqWPw9RXdBLgN7tmqwug4dOgQA2L9/P/r16wcASE1NxaefftpgbfwbHTlyBKWlpdi4cSP8/f0V3R2itwKnqiMiIiIiIiIiIiJqZA8ePAAAWFtb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4MF48uQJDh8+jMjISDRt2hRBQUFITEyEoaFhg7db0aJFi3D06FG4urriwoULOHDgANTU1BAQEID4+Hg0b95cKr8857GijufbRCQWi8WK7sSbJjc3F3p6esjJyYGurm696+s+/6cG6FXdfDnSTWFt258YpLC2Wy35U2Ftc6o6IqrK2/p5wDWOiIj+nyI/CxJXj1dY20REb7KGfk70b1BQUICUlBRYWVlBXV1d0d0hIqL/kff6zKnqiIiISKHufdFRYW0r8osERERERERERESvI05VR0RERERERERERERERAA44oiIiIjeYlkRqxTWdtP+AQprm4iIiIiIXm8ZGRmYN2+eXHnt7OywcOHCRu4RvS58fX3lymdkZIQ1a9Y0bmfoX4uBIyIiIiIiIiIiIqLXSF5eHnbt2iVXXldXVwaO3iLynhcWFhYMHFGdMXBEREREREREOBZ/T2FtD+zZSmFtExERvY4sLS0hFosV3Q16DfG8oFeBaxwRERERERERERERERERAAaOiIiIiIiIiIiIiIiI6H8YOCIiIiIiIiIiIiIiIiIADBwRERERERERERERERHR/zBwRERERERERERERERERAAYOCIiIiIiIiIiIiIiIqL/YeCIiIiIiIiIiIiIiIiIADBwRERERERERERERERERP/DwBEREREREREREREREREBYOCIiIiIiIiIiIiIiIiI/oeBIyIiIiIiIiIiIqJXYMOGDejQoQPU1NQgEong5uam6C69Efbu3Yvu3btDU1MTIpEIlpaWiu4SvYb++ecfrFy5Eu7u7jAyMoKKigpatGiB4cOHIyYmptqyDx48gJ+fH0xNTaGurg4bGxssXboUBQUFVZZ58eIFlixZAhsbG6irq8PU1BT+/v54+PBhtW3t3LkTjo6O0NbWhoGBAQYOHIhz585VWyY2NhYDBw6EgYEBtLW14ejoiJ9++qnaMvWh3Gg1ExEREREREREREclw74uOiu6CXFot+bPB6jpw4ABmzZqFpk2bYsiQIdDS0oKdnR1EIhFcXV0RFRVVr/oDAwMRFBSE4OBg+Pr6NkifXwcXLlzABx98AHV1dXh5eUFfXx9GRkaK7ta/lqWlJe7evQuxWKzortRa//798fDhQ2hra6NXr14wMDDA9evXcfDgQRw6dAhr167F7NmzBeVu374NJycnZGRkwN7eHn369MHF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gOoiNzcXenp6Dfac6N+goKAAKSkpsLKyavB1N4jo9bVixQp8+umnWLFihdS0b/T6kPf6/MaNOKqKPPGvefPmITMzE3///TeSk5Px3XffAShb+C04OLjKcsuXL4eenp7kx9zcvMH6TURERERERERERET0JigoKMD169cF6adPn8bXX38NZWVlycgjenO9cYGjikGbx48fC/7fqlXV39a0t7eHtra25Pf3339f8v979+5VWe7TTz9FTk6O5Kd8iBsRERERERERERER0dsiOzsbHTp0gJ2dHQYPHox3330XXbp0Qb9+/fDs2TOsWLECFhYWiu4m1ZOyojtQWz169IChoSEyMzMRGhqKMWPGIC0tDXFxcQAAb29vAICdnR0AYPr06Zg+fToAYOnSpZg+fTqMjY0BQGpuRktLyyrbVFNTkzmPIREREREREREREVFDy8jIwLx58+TKa2dnh4ULFzZyj+h14evrK1c+IyMjrFmzpsHb19PTw7x58xAeHo5z584hNzcX+vr6eOeddzBjxgy88847Dd4mvXpvXOBIVVUVX3/9NaZMmYLQ0FBYW1sjMzMTz549g5GRkeQieePGDQBlF9lyX3zxBZYtWwZra2uIxWIkJycDAFq0aIFJkya9+p0hIiIiIiIi+r/27jtOqurgH/9nacvSpQoqIBHBrtgQgoCKYjeixvpYo35jNLGjsSbRqDFGLKka9IlR80RiS9QIiqgoYohibKhYUDEgFpqKCPP7w2V+jMsiS3FZfb9fr3kxc88995y73Dt3dj9zzgWAL5gzZ05uvPHGZVq3f//+gqNvkGU9Lrp06bJKgqOKior84he/WOnbZfVS56aqS5Jjjz02N910UzbffPNMnTo1ZWVl2XffffPYY4+lU6dO1da76KKL0qdPn8yaNStvv/121ltvvRx//PH517/+lfbt23+FewAAAAAAsGRdu3ZNoVBYpsdDDz1U293lK7Ssx8Xrr79e212lDqtzI44WOeSQQ0ruUfRFhUKhyrKzzz47Z5999qrsFlAH3fNE9fc4W9V227b6+7IBAAAAAHzV6mxwBEDd1ffqvrXW9tgTx9Za2wAAAACwuquTU9UBAAAAAACw8gmOAAAAAAAASCI4AgAAAAAAoJLgCAAAAAAAgCSCIwAAAAAAACoJjgAAAAAAAEgiOAIAAAAAAKBSg9ruAAAAAMDq4J4nptRa27tt27nW2gYAWJwRRwAAAAAAX4GrrroqG220UcrLy1NWVpYBAwbUdpfqhFtuuSVbbrllmjRpkrKysnTt2rW2u8RqaMCAASkrK1vqo169JUcib731Vo488sh06tQpjRs3zvrrr5/zzz8/n3zySbXtffzxxznvvPOy/vrrp3HjxunUqVOOOuqovP3220vt5w033JBtttkmzZo1S+vWrbPbbrvlscceW6F9X9mMOAIAAAAAvlJ9r+5b211YJmNPHLvStvW3v/0tP/zhD7PGGmtkr732StOmTdOzZ8+UlZWlf//+eeihh1Zo+xdccEEuvPDCDB8+PEccccRK6fPq4Mknn8yhhx6axo0bZ+edd06rVq3Stm3b2u7W11bXrl3zxhtvpFAo1HZXamzw4MHVhooTJkzIs88+m379+lUpe+WVV7LddttlxowZ2XjjjdOvX7/861//yk9+8pM88MADeeCBB1JeXl5S55NPPskOO+yQcePGpWPHjtl7773z+uuvZ/jw4fn73/+ecePGpVu3blXa+tGPfpRhw4aloqIiO++8cz755JOMHDky999/f2677bbss88+K+NHscIERwAAAAAAq9gdd9yRJLntttuyww47JElef/31nHXWWbXYq9Xf3XffnYULF+bqq6/OUUcdVdvdYTU2dOjQasu23XbbJMlhhx1WpeyII47IjBkzctJJJ2XYsGFJks8++ywHHHBAbr/99vz85z/PBRdcUFLnZz/7WcaNG5ftttsu999/f5o1a5YkueKKK3LqqafmqKOOqhIGjxo1KsOGDUubNm3y+OOPp3v37kmSxx9/PAMGDMiRRx6ZAQMGpFWrVsv5E1h5TFUHAAAAALCKvfXWW0myxFEIVM/PjRX18ssvZ/z48WncuHH233//krLx48dn7Nixad++fS677LLi8gYNGuQ3v/lNGjZsmKuuuiqfffZZsezTTz/NNddckyS59tpri6FRkpxyyinZdNNNM2bMmEyYMKGkrSuuuCJJcs455xRDoyTZbrvtcvzxx+fDDz/M9ddfv/J2fAUIjgAAAAAAVpELLrggZWVlGT16dJJk3XXXLd5vZd11102SjBkzpuQ+LDWdaq5r16658MILkyRHHnlkybYWjXq44YYbUlZWlgsuuCAvvfRSDjzwwHTo0CH16tUrjoZ65ZVXcsEFF2S77bbLmmuumUaNGmXttdfO//zP/+Sll15aYtuL7jm0YMGCXHrppVl//fVTXl6eddZZJ2eeeWbmzZtXpc67776boUOHZsMNN0yzZs3SsmXLrL/++vmf//mfjB8/vqS/w4cPT5IMHDiwuE833HBDcVsfffRRfvrTn2bjjTdORUVFWrZsme233z633nprtT+rsrKyFAqFXH311dlss83SpEmTbL755kk+H32y6Oc2atSobL/99mnevHnat2+f733ve5k5c2aSZPr06TnuuOOy1lprpXHjxtlmm22WOt3gE088kf333z8dO3Ys/lyPOeaYTJkypcq6i46ZG264IePHj88ee+yRNm3apKysLE8//XS1bSzNE088kQMPPDBrrbVWysvL07Fjx+y44475wx/+kCR56KGHUlZWljfeeCNJSo6hL07/9vrrr+fggw9Ou3bt0rRp02y11Va59dZb8/rrry/x3l0ffvhhrr766uyyyy7p0qVLysvL06ZNmwwePDgjR45cYn8X3a/o9ddfzx133JHevXunadOmad26dQ466KBioLgsbrrppiTJnnvumZYtW5aU/eMf/yiWfXE6ug4dOqRfv3754IMP8uijjxaXjx07NjNnzsy3vvWtbLHFFlXa22+//ZJ8PlpukY8//jgPPvhgSfmX1alNpqoDAAAAAFhFNt988xx++OG57777Mm3atAwZMiTNmjXLHXfckZ122ikjRoxIhw4dMnjw4GKdb3/72zVqY7/99suoUaMyceLE9O3bN+utt16xbM011yxZd9KkSdl6663Tpk2bDBw4MB988EEaNmyYJLnuuuty2WWXZeONN87WW2+d8vLyPP/88/nTn/6UO++8M4888kg23XTTJfbh4IMPzj333JMBAwakR48eeeSRR3LZZZfl7bffLv7hPklmz56dbbfdNq+99lrWWWedDBo0KA0aNMiUKVNy6623plu3btlmm22y3nrr5fDDD8+jjz6ayZMnZ5dddinuy6L9mz17dgYOHJgJEyakXbt22WOPPTJ37tw8+OCDeeSRR/L4448Xpx77ouOPPz7Dhw9P//79s8EGG+TTTz8tKb/99ttz7bXXZrvttsvgwYMzbty4XHfddXn55Zdz2223ZbvttsuCBQvSr1+/vP7663niiScyePDgPPnkk9lkk01KtvXrX/86J554YpJk6623Tr9+/TJp0qRcf/31ueuuuzJmzJhssMEGVfr48MMP59hjj83666+fnXfeOVOnTk29ejUfCzJs2LCccsopWbhwYbbccstsv/32mTFjRp555pmcfvrp+d73vpc111wzhx9+eG677bbMnTs3hx9+eLH+4veUeuWVV9KnT5+8++67WW+99bLTTjtl6tSpOfjgg3PSSSctsf1x48blpJNOSteuXdOjR49st912mTJlSu6///7cf//9ue6666qdhvDXv/51rrjiivTr1y+77bZbnnjiidx6662ZMGFCJk6cmIqKii/d/z//+c9JkkMPPbRK2cSJE5MkvXr1WmLdXr165cEHH8wzzzxTDMSWpU6SPPPMM8VlkyZNyrx589KuXbusvfbay1SnNgmOAAAAAABWkX322Sf77LNPBgwYkGnTpuXyyy8vjuB4/fXXM2LEiPTs2bNkFE1NXX755bngggsyceLEHHPMMUsdsXTrrbfmBz/4Qa688srUr1+/Sl+PO+644kioRYYPH56jjjoqP/rRj4qjJhb3xhtvpEmTJnn55ZeL4c5rr72WXr165c9//nMuvPDCfOtb30ry+T2eXnvttey11165/fbbS4KQd999N9OmTUvyeXj27W9/O0cccUQmT56coUOHVhnJcvbZZ2fChAkZOHBg7rzzzjRv3jxJ8uKLL6Z///656qqrMmjQoOyxxx5V+vy3v/0tTz31VDbaaKMl/pyuueaa3HXXXdl9992TfB5S9enTJ2PGjEn//v3Tp0+f/PGPfyyGbueee25+9rOf5fLLL8+NN95Y3M6i0KRjx4658847s+WWWxbLrr/++hxzzDE58sgjM27cuCp9GD58eC699NKcccYZS+zjsnj44Ydz8sknp1mzZrn99tuz4447Fss+++yz3H///UlSPAYfeuihzJ07t9rj8fjjj8+7776b448/Ptdcc03xGPrnP/+ZPffcc4l1evTokccffzy9e/cuWf7UU09lhx12yMknn5wDDjigZMq3Ra699to88sgj2W677ZJ8PsJs0KBBeeyxx3LLLbd86X2vHn/88UyePDlt2rTJrrvuWqV80YivJYU5iy9fNBJrVdVp2rRpWrVqlQ8++CCzZ88uHsu1xVR1AAAAAADfEO3atcull15aJTRKkt69e1cJjZLPp7/r27dvHnrooeJUbV901VVXlYxuWnfddYsjPB555JHi8nfffTdJssMOO1QZPdOuXbtsvPHGy7Qfc+fOzfXXX5969erl17/+dckf2nv27JlzzjknSaodcXTmmWdWGxoln4+gWhQaJUnz5s3zve99L8nn91266qqriqFRkpx22mkpKyvLmDFjSrZzySWXZMGCBfntb39bEholydFHH5299torTzzxRJ566qkqfdhkk01y+umnV9vHZXHJJZekUCjkxz/+cUlolHx+H5/ddtttmbf1yiuv5IEHHkirVq3yi1/8ouQY2mWXXXLAAQcssd66665bJTRKki222CInnHBCZs2aVZzK8YtOPvnkYmiUJE2aNMkpp5yS5PNQ7Mv86U9/SpIceOCBJf9fi8yZM6e43SVp2rRpks+Dw1VZp7p6tcWIIwAAAACAb4iddtppqX+8njNnTu6+++48/fTTef/99zN//vwkyTvvvJNCoZDJkydXmaKrYcOGGThwYJVtrb/++sW6iywKT37xi1+kQ4cO2X333ZdrdMWECRPy8ccfZ6uttkrPnj2rlB922GE56aSTMnbs2CxcuLBKSLXXXnstdfs777xzlWXdunVLkmy11VZZY401SspatmyZ1q1bl+zrwoUL88ADD6RJkybZZZddlthOv379ctddd2X8+PFV7pezxx57pKysbKn9XJrPPvuseN+lY489drm3s8jYsWOTJIMHD17i6KDvfve7xWnhvmjBggV54IEH8thjj+Wdd94p3vvq5ZdfLvn3i5b0/7Ck42pJ5s+fn//7v/9L8vnxwLITHAEAAAAAfEN07ty52rIHH3wwBx54YHFU0JIsaTTEmmuuucQRTIsCoUUhQZLsuOOOOfnkk3PllVfmoIMOSoMGDdKrV68MGjQoRx11VDGc+TJTp05NkuK0f1/UqlWrtGzZMjNnzswHH3yQNm3alJQv7eeQJGuttVaVZYvCkiWVLSp/7733iq9nzJhRHGnSqFGjpbY3Y8aMKsu+rI9f5r333svHH3+c1q1bVwm6lseioGadddZZYnl1/X3rrbeyxx57FO8NtCTVjbJZ0tRuSzquluTee+/Ne++9l+7du2fbbbdd4jqL/k8/+uijJZbPnTu3pM1VVae6erVFcAQAAAAA8A3RuHHjJS6fM2dODjjggLz//vs577zzcuCBB6ZLly6pqKhIWVlZDj744Nxyyy0pFApV6n5xNM+XueKKK3LcccflzjvvzKhRozJ27NiMHz8+l112WW655ZYMGTJkufbti5Y2Wqe6n8MiS9unZd3fhQsXJvk8NPiyfVrStHlf1se64phjjsnEiRMzZMiQnHHGGenRo0eaN2+eevXq5fe//32OO+64JR5XSc2PrcXddNNNSVKcMnFJOnfunKeeeipvvfXWEssXLe/SpUtJncXLVkaduXPn5sMPP8waa6whOAIAAAAAoPY98sgjee+997LffvvlwgsvrFL+6quvrtT2evTokTPOOCNnnHFGPvnkk1xzzTU5/fTT8//+3/9bpuCoU6dOSZI33nhjieUzZ87Mhx9+mIqKipUy2mZ5tG3bNo0bN069evUyfPjwFZp2bnnbr6ioyPvvv58PP/wwrVq1WqHtdezYMUny5ptvLrF8Scvnzp2bkSNHpkOHDvnLX/5SZWTayj6uFpk1a1buvvvuJEsPjjbbbLPceeed+fe//73E8kXLN91005I6i5ctS50ePXqkvLw87777bt5+++0qo9aWVKc2LX9cBwAAAADAcls0fdlnn31W69v64IMPkix5arBXXnml2j+SrwyNGzfOaaedlo4dO+bdd9/N9OnTv7TOlltumYqKikyYMGGJ98dZNNqkb9++KzRqZUU0aNAgAwYMyKxZs/LAAw985e3Xr18/AwYMSJL8/ve/X6Y6SzuO+vTpkyT55z//WZxWbXGL7ie0uJkzZ2bhwoXp2LFjldBo/vz5uf3225epXzV122235ZNPPknfvn2XOv3h7rvvniS5++67q0x9N23atDzyyCNZY4010rdv3+Lyvn37pmXLlpk8eXKefvrpJbadJHvuuWdxWUVFRXbYYYckyV//+tdlqlObBEcAAAAAALWgbdu2adiwYSZPnpwFCxas0LYWjcCZNGnSctVff/31kyR/+9vfSu5x9OGHH+boo4/O/PnzV6h/i9xxxx0ZN25cleUTJkzItGnT0qxZs2UaGdO0adMcddRRWbhwYU444YSSIOOll17Kz372syTJSSedtFL6vbx+/OMfp169ejnyyCPz0EMPVSmfM2dO/vjHP+bjjz9eJe2feeaZKSsry0UXXZTRo0eXlH322We55557SpYt7Tjq3r17dtxxx3zwwQc588wzi1PxJcnIkSNz6623VqnTvn37tGzZMs8++2zGjh1bXL5gwYKceeaZeemll1Zo/6qzKDg87LDDlrreNttsk759+2b69Ok588wzi8s/++yzfP/738/8+fNz0kknpWHDhsWyRo0a5Qc/+EGSVDn2rrjiijzzzDPp379/ttxyy5K2TjnllCTJz372s5Kw8/HHH8/vfve7tGrVKkcfffRy7vHKZao6AAAAAGpF36v7fvlKq8jYE8d++UqwijVq1CiDBw/O3Xffnc022yy9evVKo0aN0rdv3xx55JE12tbOO++cxo0b51e/+lWeffbZdOrUKWVlZTn99NPTo0ePL62/1VZbZdCgQRk5cmTWX3/94kiVhx56KG3bts3ee++dO++8c3l2s8RDDz2UYcOGZa211soWW2yRFi1aZOrUqXnkkUeycOHCXHjhhcVRL1/m5z//ecaNG5eRI0emW7du6d+/f+bOnZsHH3wwn3zySU466aRaH8Hx7W9/O9dee21+8IMfZODAgdl4442z/vrrp2HDhnn99dfz9NNPZ968edl3331TUVGx0tvv379/LrvsspxxxhnZYYcdstVWW6V79+6ZMWNGJk6cmHnz5uXDDz8srr/XXntlzJgx2XHHHTNw4MA0bdo0bdu2zSWXXJIk+c1vfpO+ffvm2muvzf3335+tttqq+P/3/e9/P9dcc03J/1+DBg1yxhln5Mc//nH69++fHXbYIa1bt84TTzyRadOm5YQTTsi11167Uvf5rbfeypgxY9KoUaMccMABX7r+8OHDs91222XYsGF58MEHs+GGG+bJJ5/Mq6++mj59+uSss86qUuecc87JqFGj8thjj6V79+7p169f3njjjTzxxBNp165d/vjHP1aps9NOO+WHP/xhhg0bls033zyDBg3Kp59+mpEjR6ZQKGT48OErPJ3gymLEEQAAAABALbnuuuty2GGH5b333svNN9+c66+/PmPGjKnxdjp16pQ777wzvXv3zqOPPpo//vGPuf766/POO+8s8zbuvPPO/PjHP067du1y7733ZsKECTnwwAMzbty4lfYH7SOOOCKnnnpqOnXqlPHjx2fEiBF57bXXsttuu2XUqFHFURnLonnz5hkzZkwuvPDCtG3bNnfddVceeeSRbLXVVrn55pszbNiwldLnFXX88cfnX//6Vw4//PDMnj07f//73/PPf/4zc+bMySGHHJK///3vadmy5Spr/7TTTsuYMWPyne98J1OmTMltt92WZ599Nptsskl++ctflqx70kkn5ZxzzkmzZs0y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AAAAANSyGgdH/fv3XxX9AAAAAAAAoJbVq+0OAAAAAAAAsHoQHAEAAAAAAJBkOaaqq6m5c+dm1KhReeWVV1JWVpZu3bplp512SrNmzVZ10wAAAAAAANRAjYOjQqGQkSNHJknWWWedbLDBBtWue+ONN+bUU0/NBx98ULK8adOmueiii3LiiSfWtHkAAAAAAABWkRoHR+PHj8/gwYNTVlaW2267rdrg6E9/+lOOPPLIlJWVpVAolJTNmTMnP/rRjzJ//vyccsopy9dzAAAAAAAAVqoa3+No1KhRSZL27dtnn332WeI6H3zwQX74wx8m+XyE0nrrrZdzzz03v/nNb3L00UenQYMGKRQKOffcc/P2228vf+8BAAAAAABYaWocHI0fPz5lZWXZa6+9UlZWtsR1brzxxnz44YcpKytLv3798vTTT+fCCy/Mcccdlz/84Q/5xz/+kXr16uWTTz7Jn/70pxXeCQAAAAAAAFZcjYOjl156KUnSt2/fate5/fbbi8+vvPLKNGnSpKR80KBB2X///VMoFDJ69OiadgEAAAAAAIBVoMbB0dSpU5Mk3bt3X2L5/Pnzi6OSunfvni222GKJ6+29995Jkueff76mXQAAAAAAAGAVqHFw9NFHHyVJmjZtusTyiRMnZt68eUmSfv36Vbud9dZbL8nn90MCAAAAAACg9tU4OFo07Vx1gc8TTzxRfL7llltWu50GDRok+XyEEgAAAAAAALWvxsHR2muvnSR58sknl1g+ZsyY4vPevXtXu5333nsvSdK8efOadgEAAAAAAIBVoMbBUe/evVMoFPKHP/yhymihGTNm5B//+EeSpG3bttl8882r3c6zzz6bJOnSpUtNuwAAAAAAAMAqUOPg6H/+53+SJK+88kr22WefvPjii5k/f36eeeaZ7Lvvvvn4449TVlaWgw8+eKnbGTNmTMrKyrLxxhsvX88BAAAAAABYqRrUtEL//v2z9957584778x9992X++67r8o6zZo1y+mnn17tNj744IPcc889SZJ+/frVtAsAAAAAAACsAjUecZQkN910U3beeecUCoUqjyZNmuTmm29Op06dqq3/29/+Np9++mmSZPDgwcvXcwAAAAAAAFaqGo84SpKmTZvmvvvuyz333JM777wzU6ZMSaNGjdKrV68cffTRWXvttZdaf8qUKRkyZEjWWmutL10XAAAAAACAr8ZyBUeL7Lbbbtltt91qXO83v/nNijQLAAAAAADAKrBcU9UBAAAAAADw9bNcwdG9996bXr16pVevXrn55ptrVPfmm28u1h01atTyNA8AAAAAAMAqUOPgqFAo5OSTT87EiRPTrl27HHzwwTWqf9BBB6Vt27Z5+umnc+qpp9a0eQAAAAAAAFaRGgdHDz74YF566aXUq1cvv/rVr2rcYFlZWa688srUr18/zz77bMaMGVPjbQAAAAAAALDy1Tg4GjFiRJJk0KBB2XDDDZer0Q033DC77LJLkuS2225brm0AAAAAAACwctU4OBo/fnzKysqy5557rlDDe+yxRwqFQsaNG7dC2wEAAAAAAGDlqHFw9MYbbyRJevTosUINr7/++kmS119/fbnq33rrrenVq1cqKirSunXr7Lfffpk8efJS65x11lnZYIMN0qJFizRu3DhdunTJUUcdVdwnAAAAAACAb7IaB0czZ85MkrRu3XqFGl5Uf9asWTWue/311+eggw7KU089lY4dO2bBggUZMWJE+vTpk//+97/V1vvnP/+ZuXPnpnv37llnnXUyZcqUDB8+vDhtHgAAAAAAwDdZjYOjFi1aJEk+/PDDFWp4Uf3mzZvXqN6nn36aoUOHJkmGDBmSV199NS+88EKaN2+e6dOn5+KLL6627mOPPZYpU6ZkwoQJefnll3PooYcmSSZNmpT33ntv+XYEAAAAAADga6LGwVG7du2SJM8///wKNfzCCy8kSdq3b1+jek8++WRmzJiR5PPgKEk6deqU3r17J0nuu+++aus2btw4v/71r7Ptttume/fuuemmm5IkG2644VJHUM2bNy+zZs0qeQAAAAAAAHzd1Dg42mabbVIoFHL33XevUMN33nlnysrKsvXWW9eo3ptvvll8vnjo1KFDhyTJlClTllp/ypQpGT9+fF555ZUkyRZbbJGRI0emrKys2jo///nP07Jly+JjnXXWqVGfAQAAAAAA6oIaB0e77rprkuT+++/Po48+ulyNPvzww7n//vtLtreiCoXCMq13ySWX5LPPPsuLL76YgQMH5qmnnsohhxySBQsWVFvnrLPOysyZM4uPxcMrAAAAAACAr4saB0dDhgxJ165dUygUsv/+++fll1+uUf2XXnopBxxwQMrKytK1a9fst99+Naq/+Gif6dOnV3neuXPnL91G/fr106NH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TzN06NAkyZAhQ/Lqq6/mhRdeSPPmzTN9+vRcfPHFS6w3bdq0XHrppUmSU089NS+99FLGjRuXsrKyvPjii/ntb3/7le0DAAAAAADA6qhBbXegpp588snMmDEjyefBUZJ06tQpvXv3zsiRI3Pfffctsd6oUaMyf/78knqbbrpp1ltvvbz88su57777csoppyyx7rx58zJv3rzi65kzZyZJZs2atVL2acG8j1fKdpbHR3Nn11rbsz9ZUGttF+Z+Umttf/bxZ7XW9so6ZlcF58FXz3mw+nEefPWcB6sf58FXz3mwenEOfPWcA6sf58FXz3mwcrZTKBRWyvYAoLaVFerYVe3WW2/NQQcdlOTzMGjHHXdMkhx22GG56aabUl5enk8+qfqB55JLLslZZ52VJHnllVfyrW99K0nSr1+/PProo+nRo0defPHFJbZ5wQUX5MILL1wVuwMAAADA18Cbb76Ztddeu7a7AQArrM6NOKrO8uZfy1LvrLPOKhmNtHDhwrz//vtp06ZNysrKlqtdVsysWbOyzjrr5M0330yLFi1quztQK5wHfNM5B8B5AInzABLnQW0rFAqZPXt2OnXqVNtdAYCVos4FR+uss07x+fTp06s879y58zLVWzTi6MvqJUl5eXnKy8tLlrVq1apmHWeVaNGihQ/FfOM5D/imcw6A8wAS5wEkzoPa1LJly9ruAgCsNPVquwM1tfXWW6dNmzZJkhEjRiRJpk6dmnHjxiVJBg8enCTp2bNnevbsmWuuuSZJsuOOO6ZBgwYl9Z555pm88sorJfUAAAAAAAC+qepccNSoUaNcfPHFST4PgLp165YNNtggs2fPTtu2bTN06NAkyaRJkzJp0qTMmDEjSbLmmmvm9NNPT5L88pe/TI8ePdK7d+8UCoV07949xx13XO3sEAAAAAAAwGqizgVHSXLsscfmpptuyuabb56pU6emrKws++67bx577LGlzid70UUX5corr0zPnj3z2muvpWnTpjn88MPz8MMPp2nTpl/hHrCiysvLc/7551eZQhC+SZwHfNM5B8B5AInzABLnAQCwcpUVCoVCbXcCAAAAAACA2lcnRxwBAAAAAACw8gmOAAAAAAAASCI4AgAAAAAAoJLgCKrx0EMPpaysrPi44YYbartLrEYcH3xdrS7HdteuXYt9GDBgQK30AVbEBRdcUHIuvf7667XdJVhpVpfj+/XXXy/pxwUXXFAr/YBvqhtuuKHkHHzooYdqu0sAwEoiOAIAAAAAACBJ0qC2OwAArD7atWuXIUOGFF937dq19joDAEvRtGnTkmvWhhtuWIu9gW+erl27lpyD7dq1q8XeAAArk+AIACjaaKONctttt9V2NwDgS7Vr1841C2rRgAEDTCkMAF9TpqpjhU2YMCGHHnpounXrloqKijRu3Dhrr712tttuu/zwhz/M/fffX7J+oVDIiBEjstdee6VTp05p1KhRWrVqlb59++baa6/Np59+Wm1bjz32WA499NCsu+66qaioSLNmzbLBBhvkhBNOyKRJk6qs/2X36jAnMyvT888/n3333Tdt2rRJkyZNst122+WOO+4oWefLjrkvu2fAqFGjsu+++6Zz584pLy9PkyZN0qVLl/Tv3z9nnHFGxo0bV7L+X//61xxzzDHZaqutsvbaaxfP0c6dO+c73/lO7r777iXuyxfvLzN37tycf/756d69e8rLy7PWWmvlpJNOyuzZs1f0x8Zqprr3zSXdR+KNN97I0UcfnY4dO6a8vDw9e/bMsGHDqt32tGnTcv7552fbbbfNGmuskUaNGqVjx47p379/fvGLXyy1X/PmzcvPfvaz9OjRI40bN/7SY3Du3Lm58sors/3226dNmzZp1KhROnTokD333DP/+Mc/qm1n4cKFueWWW7LbbrtlzTXXLF6jttlmm/z0pz/N+++/X6XOks7rRx99NLvttltatWqVJk2apE+fPlWuh3w9XH/99dliiy1SUVGRDh065PDDD89bb71V7fpTp07Neeedl9122y3du3dP69at07Bhw7Rq1SpbbbVVzj777EybNq3a+i+++GJOOOGEbLDBBmnWrFkqKiqy/vrr58QTT1zqfWbuvvvu9O3bN02bNk3r1q2z99575+mnn17qdWlFr1nUfav78b0s9zhyPaCmbrjhhuJx3759+xx66KF57bXXlvieN2rUqJJlI0eOLG5nypQpJWXPP/98seyxxx4rKVv0O0OhUMhll12W7373u9loo43SoUOHNGrUKM2aNUvPnj1zzDHHZOLEiVX6vDI+p9Vkvxev4xoCAF9TBVgBI0eOLDRs2LCQpNrHjjvuWFx/7ty5hV133XWp62+zzTaFGTNmVGnr9NNPX2q9Ro0aFYYPH15SZ/To0SXrfLF8+PDhJeWjR49e5rp8s33x+DjmmGMKFRUVSzw2f/WrXxXrLe2YKxQKhfPPP7+k/LXXXqu27pIeRx99dMn2+vbt+6V1fvjDH1bZvy5duhTLN9poo8LGG29c7fm9cOHClfiTpbZV99732muvlSwfPHhwoWXLlks8Ln7yk59U2e4999xTWGONNao9Dlu2bFmy/uLH4BZbbFHYdtttl/kYnDRpUqF79+5LPe6POeaYKvVmzZpV2GGHHZZar2PHjoV//etfJfW+eG4ecMABhbKysip169evX3jwwQdX/D+J1cYPf/jDJR4n7dq1Kxx44IFLfD8fOXLkl74vt2/fvjBp0qQq7f32t79d6ueuZs2aFe65554q9a6++upqPzsdcsgh1V6XVuSaRd1XF47vL16bzj///JJy1wNq6tRTT13i/3erVq0K3/nOd6oc93Pnzi00atSouOy8884rbuvPf/5zyfq/+93vimWXXHJJcXlZWVnhvffeKxQKhcL8+fO/9Bxq2LBh4f/+7/9K+r2in9Nqut+LLO064RoCAHWbEUeskEsvvTTz589PktSvXz99+/bNnnvumS233DKtW7eusv73vve93HvvvcXXXbt2ze67757NN9+8uGz8+PE57LDDSupde+21Jd9Gb9SoUfr165ett946ZWVlSZJPP/00xxxzTMaOHbsydxGWyXXXXZeysrIMHDgwG2+8cUnZ6aefnmeffXaF27jooouKzxs3bpyBAwcWz5/mzZtXW69Jkybp1atXdtppp+y9997p169fmjZtWiwfNmxYlZFKi3vuuefy7LPPZv3118+AAQPSsGHDYtkDDzyQMWPGrOCeURfdd999mT17drbddttsueWWJWWXXnpp5syZU3z97LPPZsiQIfnggw+Ky9q0aZMddtghgwYNyhprrLHUtp566qk88cQTy3QMfvzxx9ltt93y8ssvF5dtvvnm2X333dOlS5fisuuuu67KKKejjjoqDz74YPH1GmuskUGDBmW99dYrLnvnnXeyxx575MMPP6y2v//3f/+XJk2aZODAgSX3iFqwYEEuvPDCpe4rdce9995b5ZvbW221Vfr165cPP/wwt95661Lrd+3atfi5adddd836669fLJs+fXpOOumkkvX/+c9/5v/9v/9X/NzVpEmT7Ljjjhk0aFAaN26cJJkzZ04OOOCATJ48uVjvueeeyymnnFKyrQ022CADBw5M/fr18+c//7nmO8/XXl05vpfG9YCauv/++/PLX/6yZFmvXr3y7W9/O3PmzMntt99epU6TJk2y9dZbF18v/rvoF38vffTRR5f4fNNNN63yu3O7du2yzTbbZNdddy3+fl2/fv0kyfz583P88cdn7ty51e5LTT6nLc9+AwDfALWdXFG39ezZs/gNoYsuuqikbOHChYVx48YVbrnllkKhUCj85z//KflG0fe///2Sb/dddtllJeVjx44tFAqff+uqXbt2Jd+OHT9+fLHe9ddfX1Jv0KBBxTIjjlhVvnh8NGvWrPDcc88Vy88444yS8mOPPbZQKKzYN+8aN25cXP7nP/+5pN78+fMLo0ePLtx9990ly5977rnCvHnzqvR/+vTphWbNmhW3d9ppp5WULz7aI0nhpJNOKpbddNNNS/12L3Xbso44SlIYMWJEsd4xxxxT7bG9//77l5QdcsghhTlz5hTL582bV/jTn/5U0o/lPQa/OLLi1ltvLZZ99tlnhb322qtY1rJly8JHH31UKBQKhYkTJ5bU69GjR2HatGmFQqFQWLBgQeGII44oKV/8mvfF87pt27bFb9N/9NFHhU022aTkW8JLOiepewYNGlTy//7rX/+6WDZ69OgqowwWvZ+/9957hSlTpixxm2eeeWZx/Xr16hVmzpxZLNtyyy2LZV27di288847xbLJkycXmjdvXiz/3ve+Vyw79thjS/rxox/9qFg2ceLEQpMmTXxbnCrqyvG9tBFHrgfU1M4771zy/7f4rAH3339/tcf9j3/845LfCT777LNCoVAobLrppoXk8xFmSQrrrrtuoVD4/Pfk1q1bF+ssPvp/4cKFhYkTJy5xRP+9995b0v7f//73YtmKfE5b3v0uFIw4AoCvMyOOWCGLf+vupptuyq9//euMHj0677zzTsrKyrLtttvmwAMPTJLcc889JXVffPHF7L///tlvv/2y3377ZdSoUSXli0YmTZgwIe+++25x+X777Vfyra6jjjqq5FuMDz30UD755JOVt5OwDA455JBsuOGGxdfnnHNOysvLi69Hjx69wm0sfr5dc801ue666/Loo49mxowZadCgQQYMGJA99tijpE6XLl1y9dVXp3///sU50svKytK+ffuSbxq+9NJL1bbbpEmT/PSnPy2+3nXXXUvK33nnnRXdNeqgb3/729l3332Lr6s7LhYsWFAy0rR169b57W9/WzLqrVGjRjn00EOrbasmx+Di15r69evnr3/9a/E6893vfjdvvvlmsXzmzJl57LHHkqSkj0ly6qmnpn379kmSevXq5eKLLy4pv++++6rt7/HHH1+8LlVUVJTcNHr+/Pl57733qq1L3fDZZ5/lkUceKb5eZ511ctxxxxVfDxgwIIMGDVpi3datW+ftt9/OEUcckZ49e6ZZs2apV69eysrKcumllxbXW7hwYXFkxbRp0zJhwoRiWf369fODH/ygeGyfccYZadCgQbF88eN58VET5eXlJaMcNt100xx88MHL8yPga6wuHd9L43pATXz22Wd5+OGHi68X3UtxkUGDBmXHHXdcYt3F/1/nzJmTp59+OrNmzSrOOLD//vsnSV577bVMnTo1zz//fMk9shavX1ZWljXWWCNnnHFGttxyy6yxxhpp0KBBysrKqnz+Wdrn92X9nLYi+w0AfL01+PJVoHpDhw7NvffemwULFuSFF17ICSecUCzr1KlT9txzz5x99tnp3LlzlZtdLv6HjCV54403Sv5dZKONNqqy7kYbbVT84Dx//vy88847WXfddZdnl2C5LB4aJUnz5s3TuXPn4vQoi/9xYnn9+Mc/zkEHHZQkefzxx/P4448Xy9Zdd90MGTIkQ4cOTZs2bZIks2fPTp8+fZZpmrxZs2ZVW/atb30rLVq0KL5u2bJlSfm8efNqtB98PWyxxRYlr6s7Lt57772SkHLTTTdNs2bNatRWTY7Bxa81CxYsyIgRI5a67WW91nTs2DFrrLFGcbq9L66/uGX92VB3zZgxo+RLKj179ky9eqXfx9poo41y//33V6n7xz/+Mcccc0wKhcKXtrPovfmLx9vkyZOXOl3X22+/nQULFqR+/fp56623iss7d+5cci4lqTK9KtSl43tpXA+oiffee6/kuN9www2rHPcbb7xxlS87JkmfPn3SqFGjfPrpp0k+n4bu3XffzcKFC5MkZ555ZnF6x0cffbRk6t6ysrJsv/32xddPP/10BgwYkJkzZ35pn5f2+b0mn9OWd78BgK83wRErpG/fvnnyySdz7bXXZvTo0XnttdeKvyhOnTo1v/vd7/LPf/4zEydOrPG2P/roo5Xd3SxYsKDk9bRp01Z6G1ATNTkmDzzwwKy55pr5/e9/n0ceeaTkj4GvvfZaLr/88jz88MMZO3ZsGjRokGuvvbYkNGratGl69+6dVq1aJfn8G7WLzrOl/YHni3Ouf9kfavhm+CqPi1XZ1qq41jhnvnkW3W/xy8ybNy8nn3xyyXvuBhtskO7du6dhw4Z544038q9//atYtix/fF+SQqGQjz/+uEpIu6z9rI7PUd9MdeX4XlGuByyuJu+Xi+5ztOieRmPHjs2MGTOSfD76f/PNN0+PHj0yadKkKsHRF+9vNHTo0JLQqGPHjtl8883TpEmTfPTRRyUj4lbF5/cVvU4sjWsIANQtpqpjhW2xxRa57rrrMnny5Hz00Uf5z3/+UzINyuuvv5577rmn5Ca0STJmzJgUCoVqH7fddluSz78du7jnn3++Sh8WX9awYcN07NgxyefTHy1u8Q/pSUpGbMCK+OJxOWfOnJJRRuuss06SFT8mBwwYkJtvvjlvvvlm5syZk3//+9/5/ve/XywfP3588Y8yi6ZcST6fnmjSpEkZNWpUbrvttvzlL39Zpb8YwiJt2rQp+ePeM888UzICaWVb/FrTpEmTfPzxx0u91vzgBz9I8uXXmnfeeafkfP3i+nyztG3bNo0bNy6+fvHFF6v8Ae+FF16oUu+5554r+Yb4CSeckOeffz533nlnbrvttgwZMmSJ7X3xeDvyyCOXelwXCoXiebd43TfffLPKH8eXNirV56hvprp0fC+N6wE10bZt21RUVBRfT5o0qcpxv7T3y8Wnmxs7dmweffTRJJ9/0XLxfx999NFi2RfrJaWf37fYYovi79K33XZbzjvvvJrt1DJY0f1eGtcQAKjbBEeskOHDh+fBBx8sfnuocePG2XjjjXPIIYeUrPfGG29UmVf5zDPPrDKv92effZYHH3wwBx98cHE0xVZbbZW2bdsW17nttttK5kG/8cYbM2nSpOLr/v37F3/ZXXPNNUu2f+utt2bu3LlJkr/85S+56667lmu/4Yv+/Oc/l/xh4eKLLy6Z9mHRL4VfPCZvuOGG4vlz+eWXL3V03lVXXZVx48YVf5lr2rRptthii5L5y5P/f8qU+fPnF5fVq1eveF4UCoVceOGFxXMBVqX69etn8ODBxdfvv/9+jj/++JLj77PPPsvNN9+8Utpb/Frz0Ucf5bTTTitOHbPI7Nmzc8stt5TcV+mL16hf/vKXxW8LL1y4MOecc05J+eL7xDdPgwYN8u1vf7v4esqUKfn9739ffP3II48scRqvxd+Xk5Tc6+uNN97INddcs8T21lxzzZJph2655ZY88MADVdZ75ZVX8tOf/jS//e1vi8t22GGH4vOPP/44P//5z4uvn3nmmaWeeytyzaLuqkvH99K4HlAT9evXT//+/Yuv33jjjfzxj38svh45cuQSj8tFFg+Apk6dWiU4WnROTZw4sWQaxS8GR4ufR+Xl5WnYsGGSz4/h888/v2Y7tQxWdL+XxjUEAOq4AqyA3XffvZCk0KpVq0Lfvn0Le++9d2HnnXcutGjRopCk+LjtttsKhUKhsP/++5csb9KkSWH77bcv7LXXXoXtttuu0KxZs2LZa6+9Vmxn2LBhJfXKy8sL22+/fWGbbbYplJWVFZfXq1ev8PDDD5f0sXPnziV1mzZtWujQoUPJskWP0aNHF+uNHj26pGz48OFfwU+UuuKLx8ei43mHHXYobLLJJiXLGzRoUHjmmWcKhUKhMGvWrEKTJk1KytdYY41C69atl3hMLn4ebLTRRoUkhXbt2hX69+9f2GeffQoDBw4sNG7cuKTOv/71r0KhUCice+65Jcvbt29f2H333Qs9evQoJCk5d/r371+yf126dKm2rFAolGz38MMPX0U/ZWpDde99r732Wsny888/f5nqFQqFwjPPPFPlOG3Tpk1hxx13LOyyyy6Ftm3bFlq2bFmyveU9BufOnVvo2rVrlWN/0KBBhT322KOw2WabFRo2bFhIUujSpUvJNr/zne+U1GvdunVh5513LnTv3r3K9t57771iveHDh1d7LSkUCoXzzz+/2vOauusf//hHlffsrbfeurD99tsXGjVqtMT389mzZxcqKipKlm+33XaFnXbaqdCkSZOS9+UvHkt///vfq5RvsskmhT333LOw0047FdZZZ50lnp/PPfdc8ZhfvN7AgQOr9OWLba7INYu6ra4c30u7NrkeUFP3339/yf9PWVlZYeutty58+9vfLjRo0GCp73lz585d4rnx9NNPFwqFQuGll16qUlZWVlZy/BQKhUK/fv1K1unRo0dht912K6y55ppVzpFlPRcKhaV/TluR/V7aMe8aAgB1mxFHrBQffvhhxo4dmzvvvDP3339/yTQV/fr1y957753k8xvm7rLLLsWyjz76KA8//HDuuuuuPP744yXTFy0+D/NJJ52Uk08+ufh63rx5efjhhzN+/Pji6IuGDRvmd7/7Xfr161fStwsuuKDk9dy5czNt2rRUVFTksMMOW/GdhyTf/e53M3/+/Dz44IP5z3/+U1J2ySWXZJNNNkmSNG/ePKeddlpJ+QcffJD3338/bdu2rTJ6aEnefffdjBkzJnfccUdGjx5dMrLpwAMPzJZbbpkkOfHEE7PWWmsVy6ZPn55//OMfmTRpUo455hhTq/CV2WSTTfLXv/615MbM7733Xh544IH885//LH6Te2Vo0qRJ7rnnnnzrW98qLps+fXpGjhyZv//975k4cWLx27xfnO//hhtuKPnW7fvvv5/7778/L7/8cnFZhw4dcvfdd1e5dwDfPLvttltOOOGEkmVPPvlkHn744TRu3Dh77rlnlTrNmjXLueeeW7Ls8ccfz6hRo9KgQYMq14fF7b777rnmmmuK3z5Pkv/85z+5++67M2rUqJLpURc/tjfccMP88pe/LNnWf/7zn4wePTqFQiGHH354SdniUwutjGsWdVNdOb6XxvWAmho0aFBOPfXU4utCoZAnn3wyjz76aFq2bJn99tuvZP3F3y8X3edocS1atCj+DtC9e/e0b9++pPyL9zdKkp/97Gdp0OD/vxX1pEmTcs8992TatGkl08GvTCuy30vjGgIAdZvgiBVy3nnn5dxzz83AgQPTtWvXNGvWLA0aNEjbtm2z/fbbZ9iwYRk5cmTxw2+zZs1y77335m9/+1u+853vZO211055eXkaNWqUtddeO4MGDcpFF12Ul156qXhPmEWuuOKKPPzwwzn44IPTpUuXlJeXp6KiIuuvv36OP/74TJw4Mcccc0yVPh555JG56aabstlmm6VRo0Zp3bp19ttvv/z73/8umb4FVsTgwYMzbty47LHHHlljjTVSUVGRbbfdNiNGjCj5RSz5PMz81a9+lR49eqRRo0bp0KFDjjzyyDz99NPFXy6XZNiwYTnjjDPSt2/frLPOOqmoqEjDhg2z5pprZuedd87w4cPz5z//ubh+u3bt8vjjj+eggw5K69at07hx42y00Ua58sorS6acga/CHnvskRdeeCHnnHNOttpqq7Rs2TINGjRIhw4d0q9fv5x99tkrra0NNtggEydOzFVXXZWBAwembdu2adCgQZo0aZL11lsvQ4YMyW9/+9uMHz++pF6LFi3ywAMP5E9/+lMGDx6c9u3bp0GDBmnevHm22mqrXHDBBXnuueeyzTbbrLS+UrddffXV+f3vf59NN9005eXladu2bb773e9mwoQJ6dWr1xLrnHXWWbnuuuuy8cYbp2HDhmnTpk2GDBmSJ598MhtuuOFS2/v+97+f//znPznppJOyySabpHnz5qlfv37WWGONbLnlljnhhBNy7733VjmfTjzxxNx1113ZbrvtUlFRkTXWWCN77bVXxo8fX+VLBF+cWmh5r1nUfXXh+P7i1HOLB0+J6wE1d/nll+ePf/xjNt9885SXl6ddu3Y5+OCDM2HChJJ7AdWvX79kOvWk6rRzvXv3Tr16//+fXBZNW1fd+kmy/fbbZ/To0RkwYECaNGmSZs2apV+/frnnnntW6Zcel3e/v+wcdA0BgLqrrFD4wp0PAQCAr4233347a665ZpVRFdOmTcuWW26Zt99+O0nSuXPn4n3yoC74+9//XjL66brrrsvRRx9diz2irpsyZcoSR+W/8MIL2WabbYozZGy//fYZM2bMV929VWZ59/u0004rGdX6yiuvlIzyAwDqrgZfvgoAAFBX/fSnP83f/va37LDDDll77bXTqFGjvPHGG7nrrrtKpgk+77zzarGXsOxGjx6dBx98MDfeeGNxWVlZWQYOHFiLveLr4Nhjj83zzz+f7bffvjjl8+TJk3P33XcXR9eUlZXlnHPOqc1urnQ13e///d//zYQJE/KHP/yhuI0uXboIjQDga0RwBAAAX3Pvvvtu/vKXvyyxrF69evnxj39spAZ1xp133plhw4aVLDvuuOPSrVu3WuoRXydvvvlmyfTPiysvL8+wYcMyaNCgr7hXq15N9vuKK67IxIkTS9a55JJLVnkfAYCvjuAIAAC+xg477LAUCoU8/vjjeeedd/Lhhx+mSZMm6dq1a/r165fvfe972WyzzWq7m1BjDRs2TLdu3XLUUUfltNNOq+3u8DVw0kknpUOHDhk/fnymTZuW2bNnp1mzZllvvfUycODAHHfccV/LUTXLu98VFRXZbLPNctZZZ2WvvfaqhZ4DAKuKexwBAAAAAACQJKlX2x0AAAAAAABg9SA4AgAAAAAAIIngCAAAAAAAgEqCIwAAAAAAAJIIjgAAAAAAAKgkOAIAAAAAACCJ4AgAAAAAAIBKgiMAAAAAAACSCI4AAAAAAACo9P8BE+RS/OkZkRgAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15, 8))\n", + "palette = sns.color_palette(\"tab20\", n_colors=len(model_filter(\"ft_transformer\", models))) # 더 많은 색상 지원\n", + "sns.barplot(x='region', y='CSI', hue='model_data', ci=None, data=model_filter(\"ft_transformer\", models), palette=palette)\n", + "plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', fontsize=15)\n", + "plt.title('FT-Transformer Models with Different Oversampling Methods', fontsize=20, fontweight='bold') # 제목 볼드 및 크기 조정\n", + "plt.ylabel('CSI', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "plt.xlabel('', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "# x축(도시명) 글씨 크기 조정\n", + "plt.xticks(fontsize=15, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.yticks(fontsize=10, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
regionmodeldata_sampleCSIMCCAccuracymodel_data
0seouldeepgbmpure0.6442510.7660970.957526deepgbm_pure
1busandeepgbmpure0.6818640.8049990.974908deepgbm_pure
2incheondeepgbmpure0.5671290.6887070.909057deepgbm_pure
3daegudeepgbmpure0.5768400.7158560.975236deepgbm_pure
4daejeondeepgbmpure0.6879670.7976280.957317deepgbm_pure
........................
25busanresnet_likectgan70000.4605070.6382400.947905resnet_like_ctgan7000
26incheonresnet_likectgan70000.5343320.6644530.899439resnet_like_ctgan7000
27daeguresnet_likectgan70000.4453010.6174980.967371resnet_like_ctgan7000
28daejeonresnet_likectgan70000.5092620.6496900.918171resnet_like_ctgan7000
29gwangjuresnet_likectgan70000.4927020.6375370.927253resnet_like_ctgan7000
\n", + "

150 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " region model data_sample CSI MCC Accuracy \\\n", + "0 seoul deepgbm pure 0.644251 0.766097 0.957526 \n", + "1 busan deepgbm pure 0.681864 0.804999 0.974908 \n", + "2 incheon deepgbm pure 0.567129 0.688707 0.909057 \n", + "3 daegu deepgbm pure 0.576840 0.715856 0.975236 \n", + "4 daejeon deepgbm pure 0.687967 0.797628 0.957317 \n", + ".. ... ... ... ... ... ... \n", + "25 busan resnet_like ctgan7000 0.460507 0.638240 0.947905 \n", + "26 incheon resnet_like ctgan7000 0.534332 0.664453 0.899439 \n", + "27 daegu resnet_like ctgan7000 0.445301 0.617498 0.967371 \n", + "28 daejeon resnet_like ctgan7000 0.509262 0.649690 0.918171 \n", + "29 gwangju resnet_like ctgan7000 0.492702 0.637537 0.927253 \n", + "\n", + " model_data \n", + "0 deepgbm_pure \n", + "1 deepgbm_pure \n", + "2 deepgbm_pure \n", + "3 deepgbm_pure \n", + "4 deepgbm_pure \n", + ".. ... \n", + "25 resnet_like_ctgan7000 \n", + "26 resnet_like_ctgan7000 \n", + "27 resnet_like_ctgan7000 \n", + "28 resnet_like_ctgan7000 \n", + "29 resnet_like_ctgan7000 \n", + "\n", + "[150 rows x 7 columns]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "models" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "models['region'] = models['region'].apply(lambda x: x[0].upper() + x[1:])" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "def make_plot(df, region):\n", + " df = df.loc[df['region'] == region, :]\n", + " df.sort_values(by=['CSI'], ascending=False, inplace=True)\n", + "\n", + " plt.figure(figsize=(8, 8))\n", + " palette = sns.color_palette(\"tab20\", n_colors=df['model_data'].shape[0]) # 더 많은 색상 지원\n", + " ax = sns.barplot(x='region', y='CSI', hue='model_data', ci=None, data=df, palette=palette)\n", + "\n", + " # 바 내부에 model_data 값 표시 (너무 아래로 내려가지 않도록 조정)\n", + " for p, label in zip(ax.patches, df['model_data']):\n", + " ax.annotate(f'{label}', \n", + " (p.get_x() + p.get_width() / 2., p.get_height() * 0.4), # 높이를 20% 정도로 조정\n", + " ha='center', va='center', fontsize=10 ,rotation=90, color='black', fontweight='bold') \n", + "\n", + " # 범례 제거\n", + " ax.get_legend().remove()\n", + "\n", + " plt.ylabel('CSI', fontsize=20) # y축 라벨 변경 및 스타일 조정\n", + " plt.xlabel('', fontsize=20) # x축 라벨 변경 및 스타일 조정\n", + " plt.xticks(fontsize=15, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + " plt.yticks(fontsize=10, fontweight='bold') # y축(지역명) 폰트 크기 증가\n", + "\n", + " plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsMAAAKZCAYAAABdmSbTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3RU1d7G8e9J770TQu9I70UQAQEVvWJHrw3r1Wt/7dd2Ra+9Y8MGKhbsIk16770ECCEhvU96nfePCYExCcwkwRDn+ayVtZI5c/bsQDJ5zj57/7ZhNpvNiIiIiIg4IKfm7oCIiIiISHNRGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwXJq7Ay1RVVUVycnJ+Pr6YhhGc3dHRERERP7EbDaTn59PVFQUTk71j/8qDDdAcnIyrVu3bu5uiIiIiMgpJCYmEh0dXe9xheEG8PX1BSz/uH5+fs3cGxERERH5M5PJROvWrWtyW30Uhhvg2NQIPz8/hWERERGRM9ipprRqAZ2IiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwXJq7A9Ky9H/w8yZtb/NL/2zS9kRERETsoZFhEREREXFYCsMiIiIi4rAUhkVERETEYbXYMDxnzhz69euHp6cnQUFBXHrppRw6dKje5y9btgzDMOr9+PTTT/+6zouIiIjIGaFFLqCbOXMm06ZNA6Bdu3ZkZWUxd+5cVq5cyfbt24mIiKh1jp+fH4MHD7Z6LC0tjfj4eAAiIyNPe79FRERE5MzS4kaGy8rKePjhhwGYMmUKcXFx7N27F19fX9LT05k+fXqd5/Xr149169ZZffTo0QOALl26MH78+Hpfs7S0FJPJZPUhIiIiIi1fiwvDGzduJDMzE7CEYYCoqCiGDBkCwPz5821qZ+/evcybNw+A+++/H8Mw6n3u888/j7+/f81H69atG/MtiIiIiMgZosWF4cTExJrPw8LCaj4PDw8HICEhwaZ2Xn75ZcxmM2FhYfzznyevdfvII4+Ql5dX83FiH0RERESk5WqRc4brYjabbX5uamoqX3zxBQB33XUX7u7uJ32+u7v7KZ8jIiIiIi1PixsZPnGKQnp6eq3PY2JiTtnGW2+9RWlpKd7e3txxxx1N30kRERERaRFaXBgeOHAgwcHBAMydOxeA5ORk1q1bB8CECRMA6Nq1K127duXtt9+2Or+wsJAZM2YAcMMNNxAUFPRXdV1EREREzjAtLgy7ubnVVIyYO3cu7du3p1u3buTn5xMSElJTaWL//v3s37+/ZrHdMTNnziQnJwdnZ2fuu+++v7z/IiIiInLmaHFhGOCWW25h9uzZ9OnTh+TkZAzD4JJLLmHNmjVERUXVe15lZSWvv/46AJdccgnt2rX7i3osIiIiImeiFruAburUqUydOrXe43UtqHN2diYuLu50dktEREREWpAWOTIsIiIiItIUFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgsl+bugDi2eesTmrS9SYNjmrQ9ERER+XvTyLCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhuTR3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bmS4rKyMhx9+GIApU6YQFxfH3r178fX1JT09nenTp5+yjWnTprFu3bqaj59//vl0d1tEREREzkAtLgxv3LiRzMxMwBKGAaKiohgyZAgA8+fPP2Ubr7/+Ou7u7rRu3Zorr7zylNMrSktLMZlMVh8iIiIi0vK1uDCcmJhY8/mJ0xvCw8MBSEhIOOn5bm5uREZGEh0dzdGjR/n6668ZOHAgSUlJ9Z7z/PPP4+/vX/PRunXrRn4XIiIiInImaHFhuD5ms/mUz3nggQfIyspi7969HDp0iPfeew+AnJwcPvnkk3rPe+SRR8jLy6v5ODGQi4iIiEjL1eLC8Imjsunp6bU+j4mJqffcnj174uPjU/P11KlTaz4/2Yiyu7s7fn5+Vh8iIiIi0vK1uDA8cOBAgoODAZg7dy4AycnJrFu3DoAJEyYA0LVrV7p27crbb79dc+6TTz5JRkZGzddz5syp+bxt27anu+siIiIicoZpcWHYzc2tpmLE3Llzad++Pd26dSM/P5+QkJCaShP79+9n//79NYvtAJ555hkiIiLo1KkTHTt25OabbwYgIiKiplSbiIiIiDiOFheGAW655RZmz55Nnz59SE5OxjAMLrnkEtasWUNUVFS95z333HMMGzYMk8lEUlISHTt25LbbbmPTpk2qNSwiIiLigFrkphtgme974pzfP6trQd2jjz7Ko48+ejq7JSIiIiItSIscGRYRERERaQoKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERBxWi60zLCIiIvJ3Nfyt4U3a3uq7Vjdpe38nGhkWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw2qxYXjOnDn069cPT09PgoKCuPTSSzl06JBN51ZWVjJs2DAMw8AwDB5++OHT3FsRERERORO1yDA8c+ZMrrrqKrZu3UpkZCSVlZXMnTuXYcOGkZqaesrzn3nmGdauXfsX9FREREREzmQtLgyXlZXVjOROmTKFuLg49u7di6+vL+np6UyfPv2k569Zs4bnnnuOyy+//K/oroiIiIicwVpcGN64cSOZmZmAJQwDREVFMWTIEADmz59f77kmk4lrrrmGqKgo3n//fZtfs7S0FJPJZPUhIiIiIi1fiwvDiYmJNZ+HhYXVfB4eHg5AQkJCvef+61//4siRI8yePZuAgACbX/P555/H39+/5qN169b2d1xEREREzjgtLgzXx2w2n/T4Dz/8wOzZs3n00Uc5++yz7Wr7kUceIS8vr+bjxEAuIiIiIi1XiwvDJ47Kpqen1/o8JiamzvO2b98OwKuvvoqPjw8+Pj41x1599VWio6PrfU13d3f8/PysPkRERESk5WtxYXjgwIEEBwcDMHfuXACSk5NZt24dABMmTACga9eudO3albffftvq/KKiIgoLCyksLKx5rLy8nIKCgr+i+yIiIiJyBmlxYdjNza2mYsTcuXNp37493bp1Iz8/n5CQkJpKE/v372f//v01i+2eeuopzGaz1ccxDz30ELm5uX/59yIiIiIizavFhWGAW265hdmzZ9OnTx+Sk5MxDINLLrmENWvWEBUV1dzdExEREZEWwsXeE5555pkm78R//vMfu8+ZOnUqU6dOrff4qRbU2focEREREfn7sjsMP/XUUxiG0aSdaEgYFhERERFpLLvDMDTtiGpTB2sREREREVvZHYaXLl16OvohIiIiIvKXszsMjxo16nT0Q0RERETkL9ciq0mIiIiIiDSFBs0ZFjlRUfoRTId3UmbKAsDNLxi/dmfhFdammXsmIiIicnKnPQwXFhayePFiDh48iGEYtG/fnrFjx1pthywtk7mqiiMLZpK9Z3WtY8mrviOo21DaTLgZw0k3IEREROTMZHcYNpvNLFq0CIDWrVvTrVu3ep/72Wefcf/995OTk2P1uLe3N8899xx33XWXvS8vZ5DUdT+Tvbt2ED4me+9a3APCiRx28V/XKRERERE72B2GN2zYwIQJEzAMg++++67eMDxr1ixuuOEGDMOoVYqtoKCAe+65h/Lycu67776G9VyaXfae1eDkRPToqwjsPBAXbz8wQ0WRiZzYjRxd+iVZu1cpDIuIiMgZy+7714sXLwYgLCyMiy++uM7n5OTkcPfddwOWkeSOHTvyxBNPMGPGDG666SZcXFwwm8088cQTJCUlNbz30qzK8rPxCAgnrN84XH0CMAwnDCcnXH0CCOs3Do/ACMoLcpu7myIiIiL1sjsMb9iwAcMwmDx5cr0bZnz22Wfk5uZiGAYjR45k27ZtPP3009x66618+OGH/Pbbbzg5OVFSUsKsWbMa/U1I83Dx8qM0L4O8uO21juXFbac0Lx0XL99m6JmIiIiIbeyeJhEbGwvA8OHD633ODz/8UPP566+/jpeXl9XxcePGcdlll/H111+zdOlSHn74YXu7IWeAwM4DSN+8iEM/vIaTixsuHpZFkRXF+VRVltc8R0RERORMZffIcHJyMgCdOnWq83h5eXnN6HGnTp3o27dvnc+76KKLANizZ4+9XZAzROTwKfhEdwEzVJWXUZafTVl+NlUV5WAGn1adiBw+pbm7KSIiIlIvu0eGi4qKAEtFiLps376d0tLSmikS9enYsSNArUoT0nI4u3nQ6YqHyT2wGVP8DspN2QC4+gXh17YXAZ36YRgqqyYiIiJnLrvDsJeXFwUFBfWG2PXr19d83r9///pf2MXy0uXl5fZ2Qc4ghmEQ2HmApkOIiIhIi2R3GI6Ojmbfvn1s3LiRUaNG1Tq+fPnyms+HDBlSbztZWZbdynx9tcCqJSsvNJG6/hdM8dY70Pm3O4vwQefj6h3QvB0UEREROQm772EPGTIEs9nMhx9+WGtUNzMzk99++w2AkJAQ+vTpU287u3btAqBNG23Z21KV5qaz9/PHydi6iNLsVMwV5ZgryinNTiV9yyL2fvYfSnPTmrubIiIiIvWyOwz/85//BODgwYNcfPHF7Nu3j/Lycnbs2MEll1xCcXExhmFw9dVXn7Sd5cuXYxgGPXv2bFjPpdklrfiGikITTq4e+LbtQVD3oQR1H4pv2x44uXpQUWQiacW3zd1NERERkXrZPU1i1KhRXHTRRfz000/Mnz+f+fPn13qOj48PDz74YL1t5OTkMG/ePICTLrKTM1t+wh6c3T3pfsPzuPoEWB0rK8hh7yePkp+gaiEiIiJy5mrQUv/Zs2czfvx4zGZzrQ8vLy++/PJLoqKi6j3/vffeo6ysDIAJEyY0rOfS7KoqynHx9KkVhAHcfAJx9vC2lFkTEREROUPZPTIMlrJq8+fPZ968efz0008kJCTg5uZGv379uOmmm4iOjj7p+QkJCUyZMoVWrVqd8rly5vIIjqQ4PYG4X94hoNMAXL38ACgvMpEbu5GyvEw8w2OauZciIiIi9WtQGD5m0qRJTJo0ye7zZsyY0ZiXlTNE+MBJxP/6HrmxG8mN3Vj7CQaED5j413dMRERExEaNCsPi2IK6DqGqvJTkFd9SUVxgdczF04eokZcS1G1oM/VORERE5NQaFIZ///13HnvsMQAeeOCBU1aOONGXX37Jyy+/DMCLL77I2LFjG9IFOUOEnDWK4O7DKUw9TFm+ZQc6N98gvCPaYTjrWktERETObHYvoDObzdx7771s376d0NBQu4IwwFVXXUVISAjbtm3j/vvvt/fl5UxkGBiGgQGWD8MAw2juXomIiIickt1Dd0uWLCE2NhZnZ2dee+01u1/QMAxef/11evfuza5du1i+fHmdO9lJy5C1a6Wl3nBxvtXjLp6+RI28jJCzzm6mnomIiIicmt0jw3PnzgVg3LhxdO/evUEv2r17d8477zwAvvvuuwa1Ic0vZ996jsyfSUVRPpix+qgoyidh4cdk71vfzL0UERERqZ/dI8MbNmzAMAwuvPDCRr3wBRdcwLx581i3bl2j2pHmk7rRsvV2QOcBBHTqj6u3P2azmYoiE7mxm8g9sJn0jfMI6jq4mXsqIiIiUje7w/CRI0cA6NKlS6NeuHPnzgDEx8c3qh1pPiVZKbgHhNJ+8p21jgV1G8quDx+gOCu5GXom0jAr1i5h/eY1pGWkABAeGsng/sM4e+iYZu6ZiIicLnaH4by8PACCgoIa9cLHzjeZTI1qR5qPk4srFcUFlBfm4ertb3WsvDCXypJCnFxcm6l3IrYrLinmoaf/zbZdm2sd+2XB9/Tu0Y8Xn3oLTw/PZuidiIicTnaHYT8/P3JycsjNzW3UCx8739fXt1HtSPPxbd2N3AOb2fPxw3hHdsClege6iiIThSmHqCwrJqDTgGbupcipfTTrHbbu3ASAm5s7/n4BYDaTl59HWVkp23dv4aNZ73DXzQ80b0dFRKTJ2R2GQ0NDycnJYc+ePYwePbrBL7x3714AwsLCGtyGNK9Woy6nICmWiqJ8TEd2WR80H9t447Lm6ZyIHZauWoSriyvPPvoywwaOtJQHxFJKcvWGFTwx/QGWrlqkMCwi8jdkdzWJQYMGYTab+eWXXxr1wj/99BOGYTBw4MBGtSPNxz0gnG7XPUto37G4B4RhOLtgOLvgHhBGaN+xdL3uWTwCw5u7myKnlJObTVRENMMHnV0ThMFSCnLE4FG0imxNbl5OM/ZQREROF7tHhidOnMisWbNYuHAhq1atYsSIEXa/6IoVK1i4cCGGYTBx4kS7z5czh6t3AK3Pvaa5uyHSKKEh4SQmJ/DDb98wati5BAZY1jTk5GazbPViEpOOEB4W2cy9FBGR08HuMDxlyhTatm1LfHw8l112GStWrKBTp042nx8bG8vll1+OYRi0bduWSy+91N4uyBkm98BmTPE7KTNlAeDmF4xfu14EdOzXzD0Tsc2Ecy/gky/f57X3XuC1916o9zkiIvL3Y/c0CVdXV15++WUA0tPT6d+/P2+88QaFhYUnPa+goIDXX3+dAQMGkJ6eDsArr7yCi4vdeVzOEJVlpcR+/QJxP79F5o5lmOJ3YorfSeaOZcT99CaxXz9PZVlpc3dT5JT+ecU0xo+ehNlsrvPj3LPP47orbm7uboqIyGnQoCR6ySWX8PTTT/Pkk09SWFjIfffdxxNPPMHIkSPp378/YWFheHt7U1hYSFpaGlu2bGHlypUUFhZiNpsBePrpp7n44oub8nuRv1jK6rkUJO4DwHBxxcXTB4CK4gLMFeUUHN1Pyuq5RJ9zdXN2U+SUXJxdeOKB57jiH9eybtMq0jPTAAgLCWdw/+F06ditmXsoIiKnS4OHZZ944gmio6O56667KCoqoqCggPnz5zN//vw6n38sBHt5efH2229z/fXXN/Sl5QyRE7sRw9mF9pPvxK99b6sV+Hlx2zj889vkxG5UGJYWo3OHrnRq36VmsVyAf6DVgrrmkmMy8cUvv7Nx5y7Ss7MBCAsKYlCvnlw1aQJBAf6naEFEROrTqDkKN9xwA+eddx6vvvoqn3/+OZmZmfU+NyQkhOuuu457772XqKioxrysnCEqiky4+4fh36GP1eOGYRDQoS/u/mGU5mU0T+dE7BR35CAffv42m7atp7R6eo+7mzsD+g5h2jV30KGt7WsjmlJyegb/fu5/5JryMZ/w+NG0dJIWLWHJuo28+fj/0UplKkVEGqTRE3ajoqJ4+eWXefnll9m9ezfbt28nKyuL/Px8fH19CQ4Opnfv3vTo0aMp+itnEFefQEpy08jY9gcBnQZYbbqRG7uJkpxU3PyCm7mXIqcWe2gf/3roRkpLS2ruYgGUlJawat0yNm1dx9v/+7hZpkt88M1cckz5eHm4061DewL9/DCbzeTm57P3UBy5+fl89O0PPPmvW//yvomI/B006eq1Hj16KPQ6kOAew0lZ8xOJf8wi8Y9Z9T5H5Ez3/mdvUVJSTERYFAP7DiEoIBgzZnJys9m4dR2p6cl88PnbvPLMO39537bt3Y+3pyefTH+K4IAAq2OZObnc8OiTbNmz9y/vl4jI34VKOUiDRQyZTGluOtl71tZ5PLDbECKGXPQX90rEfrv2bifAP5DP3vkWL08vq2NFRYVcPu0Cdu3d3ix9Ky0vIzggoFYQBggJDMDPx5vsvLy/vmMiIn8TCsPSYIaTM20n3UpY/wmYDu+gLL+6zrBvMH7tzsIrvG3zdrCFqCqvImNzBgXxBbj6uRI+JJyS7BK8Ir1w9XZt7u45hMrKClxdffD08Kx1zMPDEzdXN0pKipuhZxATGcmhhESeefcDRvbvS4CfLwC5pnxWbNpCamYWHWNaN0vfRET+DhSGpdG8wtvgFd6mubvRIpUXlrP7zd0UpRYB4NvGF992vux9by/R50UTMymmmXvoGDp16MrufTu448HrGT54NIEBgQDk5Oawev0yMrMz6Nmtd7P07YqJ43nu/Zms2LiZFRs31zpuAJdPHP/Xd0xE5G9CYVgapbKshPyEPRjOLvjFdMdwPv4jlblzBeX52UQOu7j5OniGO/LTEYpSi3BydaKqvAqAgC4BOLk5kbs3V2H4L3Lj1bfxwJN3snv/Tnbv32l1zGw242Q4ccNVtzRL38YMGURJaRkfffcDeQUFVsf8fLy5aco/OHfIoGbpm4jI34HCsDRYaW4GsXP+S3mhZb6ie0AYHf5xLx5BkQBk7VhGYWqcwvBJ5OzOwdnDmb6P9WXTE5sAMJwM3IPcKcksaebeOY6BfYfw4pNv8u7HrxF35KDVsfZtOnL7DfcwsO/QZuodTBo1gvHDh7Dv8BEyqusMhwYF0bVdG+3iKSLSSHoXlQZLWfsj5QXHF+6U5qRz4Jv/0fmqx3H3D2nGnrUcFUUVeEV44ebnZn2gCipLK5unUw5qcP9hDO4/jMysdNIyLDvQhYeGExJ8ZtTvNQwDJ8Oo2QTkxM9FRKThFIalwQoS94EBYf3G4xPdmcztyzDF7+LQ3FfofPXjzd29FsE9yJ2i1CJMh0w1j2XvzKY4vRjP0NqLueT0ysnLZtuuLaRlpAAQHhpJ/z6DCPQPatZ+zV+5hg+/nUtevvU0CX9fH6Zd+g8mnj2imXomItLyKQxLg5UX5uHuH1qz3bJ/x37E/fgGeXHbifvxTaoqK5q5h2e+kP4hHF1wlF1v7gIg/0g++z7aV3NM/jozv5jBF99+QsWffm5dnF24esr1TLv2jmbp17INm3jp48/qPJabX8Arn8zCw92dcwYP/It7JvL3tGCvieUH80nKKweglb8rozr6cl43v2bumZwuCsPSYC4e3lYL5gzDiXYX3EHsnOkUJO0HM5al7lKv6PHRFCQUkLs31+rxgK4BtBrXqsHtpidmErczHjcPV/qNaZ4qCC3J3F/n8OlXH9R5rLyinM+/+YjAgCCmXHjlX9wz+Oq3+QCM7N+XkQP6EejnB5jJMeWzctMWVm7eyte/L1QYFmmkorIqbvzyCOvjC2sd+2pzDoPaePPJ1DZ4uTk1Q+/kdFIYlgZzD4qg4GgsZfnZuPlabiM7ubrT4ZJ72f/Fs5SZspq5h2c+Jxcnut/WnbyDeRQcsdwC94nxwb+Tf4Paq6qs4tOnv2L1T+swm820P6stJQUlfPT4LK5+6FLGTh3dhL3/+/jht28wDIPLL7qG0cPPJTAgGKp3oFu6ejHf/DibH+Z906AwbDabKSwtBcDb3d3ueb4JKSlEhobw1J231Tp27pBBTH3wUY4kJ9vdLxGx9vKSNNZVB2F3F4MgLxfMZjM5xZWUVpjZcKSQl5ek8Z8Jkc3cU2lqCsPSYP7t+1CWl0n2ntVEDL6w5nFX7wA6XHIvcT+9hblKi8BOJvH3RNwC3AgfGo5/x+MBOP9wPhVFFQT2CLSrvV8/WsCqH6x3BOw3tjfOT37J1qU7FYbrkZxylOioGO6cdp/V460iW9OzW2/WblxJcspRu9pMyzWxePsuDqWmU15p+T1wdXamQ0Q45/bqTkSgbRc87q5umAoKyc4zEeRvfZs2OzcPU0Ehbq7anEWksebtzsPN2WDG5a0Z09m35sLVbDbzR2w+t3+dyLzdeQrDf0MKw9Jg4QMnEj5wYp3HPEOi6XHT//7iHrU8ifMT8W3jS/jQcKvHD/9wmIKEAoa9Psyu9lb9sA5nF2fuePUm3vq35ba/h5cHQREBpBxObbJ+/914e/uQkZlG3JGDtG/T0epYXPxB0jNS8fb2sbm95OxcPlq0nPLKCst0oWrlFZXsO5rModQ0po0bRVTQqS92+nTrwsrNW7nu4Sfo0bE9AX6WQJxrMrH7YBzFJSWM6N/X5r6JSN2yCiuJCXLj3C7WF52GYTC2ix8xQW4k5pQ1U+/kdFIYFjnDVJZVUm4qtwpRtspJyyWqQwR9z+ll9biHtwfZqc0bhkvKypj5xxIW79jB0UzLFJrokGDG9e7NDWPOwdPN7RQtnD5DB47k98U/c8OdVxAdFUNggGXaT05uNkeTEzBjZszZ59nc3qJtuyivqCDAx4sOEeH4eLgDUFBSyqHUNHILili0bTfXjTl1FYibL7+EnbEHyM0vYNOuPVbHzIC/jw83X3aJ7d+siNQpws+F+KxSZm3IYkJ3f0K8nQHILKzk9z15HM4qpZW/7sL8HSkMS6NVlpWStuFX8hP21GzAcaKeN7/cDL06vbLyCvngx9Vs2ptA6/BAbrl4ODsOJjGid3uiw0492rfm7jU1n+cfybf6+hhXX/vfdH0CvclIyqIg93gJrqyUbJLjUvENsn1ks6ll5OVx/nPPE1s9t/VYzj+QksLSnbv4+I8l/P74o4T6N2yudGPdfv3d7Nq7ncSkIyQkxZOYfMTST7Olp9FRMdx23b9tbi8hMwsvD3funDQOd1frt9nS8nJe/WkBCZm2zalvFRbGh8/8hy9+/Z2NO3eRnp0DQFhQIAPP6slV508gJDDA5r45qtjYWNatW0daWnUN6fBwhgwZQufOnZu5Z3KmmNI7kNeXp/OfeSn8Z15Kvc+Rvx+FYWm0xMWfkr23ep7qn0czG1FNoqS4iMMH9+Lk5EyXHn0a3lATS0jNZuI9M0jLyQegf9fWmAqL+ddL33LnZWfz9M2TmuR1woeFn/pJf9JzWDdW/7SeJ/4xHYDkuFSeuuwFKisq6Tm8e5P0qyGe+vob9icnYwDtI8IJ8/PHjJkMk4m41DQOpqTw1Nff8M4tNzdL/wIDgvj4ja/48ffvWL95NenVm26EhYYzuP9wLpp4KZ4ettd9rqoy4+LqhJuLc61jri4uODs7UVZhe+nBoAB/7rrmr69k8XdQWVnJ9OnTmT9/fq1j77//PuPHj+fxxx/H2bn2/5U4ljvPDiU+u5Qfd9Ye1AGY3NOfu0aF/sW9kr+CwrA0Wl7cdgC8wtriERwJRuPLzsz5+E2+nTWDstISOvfow8VX3MQn777AP299gNHnXdzo9hvjyQ/nkZqdT1SIH8mZls0yhvRsh6+XO8s2HwAb8lzHqy3zUg9+eRCPEA+ix0fXHHNyc8Iz3BPvKG+7+zbl7snsWbefnLRcAEoKLFs6B4T58487z7e7vaYyf+s2vNzcWPzUk/SIaW11bFdCAmOfepr5W7c1T+eqeXh4cuU/ruXKf1zb6LYigwJIzMziw4XL6RodiXf1NInCklL2HU0hv7iYmJBgu9pctXkrG3fuJq16O+bwoCAG9erJ8H59GtTHvSkHWRW7kZS8dEuf/cMY0Xkg3SI7nuLMluXTTz/l999/r/f4woULiY6O5qabbvoLeyVnIhdng9entGbasBCWHcgnJc9ywRrp78Kojr6cFaWNkP6uFIal0ZycXXHxD6XrtU81SXvzvp/N7A9ftXqs98DhZKalsHzRL80ehpdvPUiwvxfrZj5AzEX/qXm8dXggCWk5NrURNtiyxW/egTw8Qj1qvm6sgFB/np77CH98uZzDOy23+tv2jOHcq0bhG9h80yRMxcXEhITUCsIAPWNiaBUUTEJmZjP07LjSslJ+mvct6zavIT3DMr86LDSCIQOGc9GEKbi7e9jc1pizuvH50tUkZmWRmPWn6RBmy4Kcc87qZlNbxaWlPPb62+zYF1vr2G/LV9KrSyeeu/cuPN3dbWqvsqqSJ354mZ+3La517I3FH3NB73N57pIHcXb6e4yU/v777zg5OXH33XdzzjnnEBQUZCmXlZPD0qVLeeONN/j9998VhqVGz0hPekR4kFVoqQIT7O2src//5hSGpdGCe40mY8tCygtzcfUOaHR7P3/zCYaTEzf/+wk+eP1pAPz8AwkOjeDwwb0NbnfN4QK2Jhbj7+nMRWf5YyqpJMTHBXcX+0ayS0rLad8qBG9P6wVfhcWllJXbt+tep2s6UVVRRfr6dAoSq+sMt/YhpH8ITnb2q6K8kt8+WoCTkxOTb5t4Rr15twsLIzY5mf98NYcLBw4gtLoiQobJxM8bNnIwNZUuUVHN1r+c3GzuemQaCUfjgeNzhROS4tm0bR0/zfuOt/83s2Zh3al0jAzn2tHDmL91J+m5JqtjYQF+nNf3LDpG2jYN5pPvf2J7dRB2c3XB38cHM2AqKKCsvIId+w/wyfc/ccdVl9vU3vvLvuCnbYvqPf7r9j+ICYrijjH/tKm9M116ejqtW7fmsssus3o8JCSEyy67jO+//55k1WmWarHpJbz0Rxqr4gopKa8CwMPViZHtvblvTDhdw22/KJaWQ2FYGq0sL4OqijL2fPwIPjHdcHH3OuGoQZsJ9o24pCQl0KZdZyZfcUNNGAbw9fMnIf6g3f0rKa/ipi+PsOawpZh6n2hPgr2dueObRP7v3HBuH2nfHLC2UcHsO5LGN4u3AFBWXskHP67mSGoOPdpF2NVWRVEFu97cRVFKkdXjycuS6XlXT1y8bP8VdXF15rePFhIWE8qFt06wqx+n243njuGhWbN587d5vPnbvFrHjernNJf3Pn2TI4mHMQyDVpGtCQoIxly96UZSSiKJyUd479M3eeSep2xus1NUBJ2iIjAVFZNXVAyAv5cnfl723WpdvnEzLs7OPHXnbQzpfZZV7dO123bw9Dvvs3zjZpvD8E/bFuFsOPHQpDsY32Mkwd6BmDGTXZjLgl0r+N/v7/LT1oV/mzAcGBhIcnIya9euZejQoVbH1qxZQ1JSEoGB9i+Kio8vYtu2PDIzLRuqhIS406ePP23bep3izL+GubKSokOxlGdmAOAaEopXh84Ymhtdr10pxVz+8WGKy6uslr8Ul1excH8+K+MK+eaGdpou8TekMCyNlr1nDRhQWVpM3sEtxw9Ub8dsbxj29vElKzONstKSmscK8vNISjyMt7ev3f176Y80Vh+23l5zTGdfXJ0NlhzItzsM/3PiIB5771fueOkbDAN2Hkpm54xkDAOmTrBvS9yEXxNqgrCTq2UkuKq8iqLkIhJ+S6D9Ze3taq9jn3YcPZBMRXkFLq5nzq/3beeNJ8Nk4o1ff6vZgOIYFycn7r7gfG47b3wz9Q7WbFyBh7sH773yOR3adrI6dvBwLLfd/0/WbFxhd7uFJaXEp2eSV2j5P/b39qJDRFjNHGJb5JryiQoLZWgf63J5hmEwrG9vosJCSU7PsLm91LwMYoJbMXXIxVaPh/oGc83QfzBnw88czal7JX1LdM455/DNN9/wwAMP4O7ujn91xZLc3FzKyspqnmOrqioz7804zIoVtauBzPnqKCNGBnPHHe1wcmq+OzPZSxeS+sXHVJis70q4+PkRcfUNBI2xvUzg6VBVUUbm9qWYDu+s2anUzS8Yv3a9COk1GifX5imz+OLiNIrKq4gOcGVkex9CfFwwmyGrsIKVcQUczS3npT/S+Pzats3SPzl9zpy/ltJi+UR3aVTViD/r2Xcwa5fN576bLgYg9WgC9954EWWlJQwafq7d7f22Ow8PF4MfpnVg4nuWkWV3FyeiA1w5nGV/AfVb/zGcg0cz+PS39VTfTccwLCH51n8Mt6ut7F3ZGE4GXW7oQlAvyy34rB1ZxH4SS/aubLvD8JBJA5n13Ne8ets7jL5sBH7Bfpw4W6LLgE71n3yaPXHZpdw2fhxLd+0mqXoRWKugIEb37EFYM5VUO6awsICI8KhaQRigY7vOhIVGkJpm3630P3bsYeXu/VSaq6wedzacGNG9M2N797CpnZDAAI6mpfHTkmWM7N+PQD/LBWGOKZ+Vm7aQmJpGeLBt0zcAgr0DOJqTworY9ZzdebDVseX715OYnUJwE0x3OlPccsstxMbGsm3bNkpKSigpKbE63rt3b2655Rab2/v+++Q6g/Axq1ZmERHhzqWXtmpwnxsjd80Kjs54rc5jFaY8jr73Bk7uHgQMH/UX98yivNDEgW+epyS7+oKr+j20JCcF05FdZGxfQucrHsXV26/+Rk6TLYlFBHs5s+D2jni7W4+gF5RWcvYbsWxJLKrnbGnJFIal0Tpf+UiTtnftLfezbcMq4g/twzAMTHnZ5OVm4eXjy9XT7rG7vazCSjqGutMtwnqul4uTganE/u2iDcPg5X//g39fPoqtsZYtevt0iqZNpO2B5Jjy/HI8wzxrgjBAcK9gPMM8KU4vtru9T5/6EgzYt/EA+zYeqNXvmdvfsrvNphTq78+oHt1rFpW1Dg5u9iAMEBUZTcLReN79+HVGDTvXatON5WsWk5h0hDat29nc3rr9h1i2s+757ZXmKpbv3oePhztDupy6csP44UP5/KdfeWvWV7w166t6n2Or8T3PZtba77lj1uO4u7oR4Fm9o12RidKKsprnNKeKigo2bdrEwYMHycuzlLny9/enY8eO9O/fH1c7tp/28vLinXfeYfny5XXWGT777LNxcrJ9fv6K5Vk4ORn887rWDB4ciH/1Jgx5eeWsW5fD558lsGJ5VrOF4YwfvwHAf/Bw/AYPx9XfMg2mIi8X07rV5G1YTcbP3zVbGE5e+S0lWSlggHtAOK7efpjNUFFkojQ3jdKcVJJXfmv3HcWmUFFlxtfFGS+32j8PXq5OuDkbFJVV1XGmtHQKw3LGad22I69/8gtff/o2B/ZayrZ16taby6+7g1Yx9o2UAoT5unA4q5Qj2aU1j+1OKeZgZilRDdhN6M6Xv6V9VDD3XT2GmIjjIfaXlbtIz8nnpsm2BxMXbxdKMksoTCrEu5WllFrh0UJKMktw8W7gr2c9O9eZG7KlXRNaumsXj3/xFbsTE60e7xkTwzNXXcGYs85qpp7BxRMv440PXmTOD58z54fPax03DIOLJ15Wx5l123DgEBgwrGsnerRuhY+HO2Ys0yZ2JySxZt8BNhyIsykMX3PhJJLS0vlj3YY6j48ZPJBrJtteNu+uc29gb/JBNh3ZQUl5Kanl1lMs+sX05K5zb7C5vaZWWFjIZ599RmZ1dZFjixmzsrKIi4tj8+bNXH/99Xh721560DAMRo8ezejRoxvdv6ysMiIi3JkwwXoBZGCgGxMnhrNoYTrp6aX1nH36lSQl4hYWQZv7H691LHDEOey78wZKjiY0Q88s8uK24eTqRpern8Az1Lq6TFFGArFfPEte3LZm6VuPSE+2JBYxZeZhxnXxJdjH8h6cVVDBov35pOVX0L/1mTEnXJqWwrA0mrmyguRVc8nZt56ywlywui1s0O/+T2xuq6KinOULf8YwDO5+7EW7RmzqM66LH59uyGLcOwcxgN0pJVz0YRxmM4zvYv+tuK8WbmZAt9bcd7X1gq+3vl3Olv2JdoXhgC4BZGzKYMdLO/CoXqVcklaC2WwmuKt9dWgBXlzw9Kmf1AyW7drNpS++TGVVVa1IvjMhgcteeoW5//cgo3vaNnWgqV06+Spy8rL58rtPqai0rgji7OzMVZdcx6WTr7K5vez8QoJ9fZjYz3qeb7CvDzGhwexPTiE7v7Ces605Ozvz6K03cdmEcWzY8ecd6HrQuW0bm/sF4O3uyac3vcLiPatYdeBPdYY7DeTcbsOb5PeuoRYvXkxGRgaGYRAUFFQTegsLC8nOziYrK4vFixdz0UUX2dxmdnY2n332Wa2R4aFDh3LttdcSHGz775q/vwvp6aVs3ZpL374BVse2bsklLa0Uf//m+9Pq5OZGZUE+5bk5uAZYLwwsz8mmIt+Ekx0j602tsrQYN/+QWkEYwCs0Ble/YMrymqfM4r2jw7hudjxbjxax9aj1dAgz4GTA3aObpgymnFkUhqXRUtb9TNrGeoraG/aNRrq4uPLm8w8T2SqGMRMvaYLewf1jwlh/pJC9aZa5gmWVlj51C/fg3nNsf2M7mn68hnBZeaXV14XFZRxNy8Gwc/J0zAUx5MXmUWYqozj1+LQINz83Ys6PsastgJAo+wP0X+H577+noqqKAR06MKlfX8L8q3egyzMxb8tWNh06xAvf/9BsYRjg5mv/xaUXXsXGbeusdqAb0HswQYH2/bu6u7liKiomLddEeID1BVdabh55hcW4u9kXSDq1iaFTG/t/JupiGAbjeoxkXI+RTdJeUzpw4ACurq7cdNNNhIdbj76mpaUxc+ZMDhw4UM/ZtSUlJXHrrbeSk5NTM8oMkJiYyNGjR1m0aBHvv/8+0dHRJ2nluMGDg/j99zT+98IB3Nyc8PW1/BnNz6+grPoW+uDB9k+Zaio+PXqTt2E1+++ehnfnbrj4BwBQkZdLYexeqoqL8R88rNn65x4QSkl2CknLvyag8wBcqqfpVBSbyIndRGl2qmXzJjtVVlRwYN8OMlItc/tDI6Lo1LUXzi62x5wRHXz4eGobpi9MZf+fRve7hLnzyLgIRnZovnrtcvooDEuj5exbBwYEdRtK9p61uPoG4hnamsKUQ4T2sX/BW/tO3ciqDiNNwdfDmZ9v6cDPO3PZlmQJnL1beTK5pz9udtTy7XPt/wBqKkgc+/pErUID7Oqbe6A7vf+vNykrUyhIqK4zHOND5MhIXH3tH72Z+fiseo8ZhsGNz15jd5tNYXt8PK2Cglj05BO1Rh3vvuB8zrrnPrbFH26Wvp0oMCCI8aMbv512l6gItsYd4Z15iwn29bHagS4rvwAzZs6Ksi18vTjzU4L9/Zk8ZjShQfaXAKtLVkEOHyz/stbI8MjOg7hp5JWE+jZfmCspKSEgIKBWEAbLaK6fnx+5ubk2t/fOO++QnZ2Nl5cXPXv2rCmjlpOTw65du8jJyWHGjBk899xzNrV3xZWtiI8vYu/efMrKqsj60yLcLl19uOLK5pkvDBBxzY0U7ttFhSmP/O1b/nTUjLOvHxFX32h3u/H79rB91QoyUyxhMyQyit4jzqZtV/u2eQ/pPYajS74gbdPvpG2qYxDFsDzHHot+/ZZP33kBU1621eN+/kFcd8f/Mf7CK2xua1RHX0Z19CXNVE6yqRyAKD9Xwv2abzRdTj+FYWm0MlM2bj5BtJ10K9l71uLmG0SHf9zDrg/ux1xRbnd7U665lZefupdXnr6XCy69jsCgEE4siRAWYd8fmrnbcgjydmFKn0Cm9DkeJhJzyigur6JzmG1F1E+sHGGuY8Db1cWJe6+yvURTzXm+rsRMapoRv9U/ra+7skd1mbvmCsMuTs6UlpdTUl6O1592SistL6e0ohyXZt7xLDU9mRVrl+Lm6sao4ecS6H88EH4650NSUpNsrjM8vm9PEjKzyDIVkGnKJzM/33Kg+ucm2NeH8X162tTWglVrMYBv5i9i9KABXD5hHB3q2MnPVonZyUz94G6yC3Ot5pHHZx3lyNokftuxhC9ufpOY4ObZBCUoKIjMzEwWLVpEt27drKZJ7N27l6ysLEJDbS+HuHnzZnx8fPjyyy8JCQmxOpaRkcHVV1/Nxo0bbW7Pw8OZ/zzZhQ0bcti+zVQThoOD3ejdx4+BAwObtayae0QUnV56l/Qf5pC/bbNVnWHfPv0Ju/gKXINsv9NRVVnJ+/95hJW//Fjr2NdvvsqI8ydz23//h5ON9YvD+o2joshE2sZ5mP9UZtFwciJs4CTC+o2zuX8rF//KG889WOexvNws3nr+YTw8vDh73IU2t5lVWMH6I4Uk51WHYX9Xhrf3IbgB6zhKysr55Nd1/LExlqPpuQBEhwUwdmAXrjt/MJ7uCtlnAoVhaTTDyQlnL8utI8PZhfLCPAzDCcPJmaxdK2k1yvarcoAXHvsXhmGwbMGPLFvw459ezOCX1XF2tXf/j0n0jfbknE7WNYrv+i6RHcnFxD1pWyj5+aVbMGPmogc/pEubMF668+KaY54errSLDCbQz/7FFcVpxeQdzKM8v7zW4rfWE+0LPZ37d7QqpVZUUELSgSTMZujcr4PdfWsqAzt1ZOnOXQx5+FHOPasnIdU70GWaTPyxcxfZ+QWcc5Zt/w+nw8HDsdzx4A2UlFruHHw0+12mP/4qvbr3BWDtxpXsjd1lcxj28fDgjonnsvFAHLHJaZiqN93w8/Kkc1Q4Azu1x82O27dmoKKykj/WruePtevp16MbV0wcT/8e9o3KAbyy4EOyCnPwdvOid+tuBPsEYjZbNt3YnriX7MJcXlv0Ea9d+Z9TN3Ya9O/fn/nz57N27VrWrl1b67hhGPTv39/m9kpLSwkJCakVhAFCQ0Px9/evWaxnK8MwGDw4qFmnQ5yMa2AQrW68o0na+uGDd1n58w/1Hl/128+Ex7Rhyu132dxm1IgphPYdR37CbspMltFcN78gfGO64+ptX3WZb2fNAGDYORMZNnoCgUEhmM1mcnOyWLP0d9Ysm8/cL963OQy/tjSNGasyKa+0fjN2dTa4dXgI94+xbedIgIycAiY/+D4HEi0XJMcGUQ4ezWDZlgN88us6fn3lNkIDNfWiuSkMS6O5ePlRUWgpf+TmF0xpbhq7P36YsrxMnD0atvLWXNfQK01azpi84so6R3jrM7y3pZLF/117LlEh/jVfN0bq6lQOf3u43u/X3jD88Kf31HosJS6V5655hd6jmi9s/ufyy1i3P5YjGRl8smSp1TEz4Onmyn8ut71aQ11Ky0tIzojHMJxoG9nZrnM/+fJ9ikuOL5jJM+Xy4JN38dYLH9G5Q9cG9cfNxYXh3TozvJt9falLh9bRjB06mLmL/iAzJ5ctu/eyZfde2reO5vIJ4zlnyECcbVz0tj5uK77u3vxy98eE+lqPEKabMrnwzRtZe+jPt9f/OoMHD6awsJA1a9ZQ+aeRQycnJ4YNG8bgwYPrObu2tm3bcuDAAR5//HFGjx5tNU1i6dKlJCcn07mzff9HeXnl/PBDCtu35ZGZaRkZDglxo08ffy66OJKAgOYf7cvbsIb8bZusR4b7DsR/oO0LfAFW/vwDTs7OXPt/jzJo3AT8g0PAbCYvO4v1C+cz68XnWPHT93aFYQBXbz98Y7pZbbphbxAGOBp/kIhWMTw6fUatY6PHX8RNU0aSeNi2Oeafrc/ijeV1b2BTVmnm7RUZBHu7cP1g20bWn/n4d2ITMjAMaB8VTGigL2azmczcAuKSsziUlMkzH//OW/c37r1PGk9hWBrNM7Q1eQe3UpKVTEDnAaSt/43S7FQAAjr2s7u959+Z0yT9GvH6/prPd6eUWH1dUm4mq7CCQC/7b80/dO04sk2F/G/WIrbFJgHQt3M00y4aSpCf7eWeAI4uPIrZbMbJxalBc4RtEdk+gtZdo1n85XImXD/2tLzGqfRt147FTz3JM99+y/Lduykus9x+9HRzZVSPHjxx2aX0jGn4VJH5675m0ca5lFeU0TaiM6P7TebnVZ9xwbBrGNDt1PVU9+zfiWEY3HXzA/Tu0Y8ffvuaXxf+yP89fRfvv1L/POyTKa+sZOOBOA4kp5FbvQNdgLcXnaLCGdixPa4utv/subm5cvnE8UwZfy5/rNvAdwsWcyjxKIcSj/LChx/z0dwfmPPKCza1VVpRRqhvcK0gDBDmF0KApx8ZBdl1nPnXGTNmDIMHDyYuLs6qznC7du3w8bFvFG3q1Kk8+eSTLF26lKVLl9Y6bhgGV199tc3tpaWV8J8n9pGXZz0FLCWlhJSUElavzuKZZ7sREWHb9KumVlVSwuEXnqRwz85ax7IXz8e7e0/aPfwMTh629S8rNYWImDacd7X19tyBoWFMmPpPFn/9BelHE+s5u26mI7tJWjaH4kzr8zxDW9Pq7Cvwa2v7hbubuwemvBxysjIIDLaePpOdlU5+Xi6u7rbt+DhrYzYGcNPQYCZ29yfU2wUzZjILK5m3O4+Z67KYvTHb5jC8cN0+vNxdWfDmHXRvZ70ocHdcCufd/Q4L1+2zqS05vVpsGJ4zZw4vvvgie/fuxdPTkzFjxvC///2PDh3qvxX8yCOP8OOPP5KUlERZWRnh4eGce+65PPnkk7RpY195Ijmu3QW3Y66swMnVnagRU3Bydaco5RCeoa2JGGz7PK1jzuo3pEn6dTTX8sfKwHJVf+zrE03oZn9ptaPpuUy4511Ss45vdbpowz5m/b6B+W/cYdciusqSStwD3enzSB+c3Rs/Z3b1T+utvq6qqiI1Pp0DWw7i5tE8W5we0yOmNV/ffx+VVVVkVc+hDfb1tXlEsz6rtv/OvDVfWj3WJaYXOfmZbN6/0qYwnJefR0yrtlw22RKKHvr3k4DBrwt/4MEn76TKbF+h/YKSEj5evIIMk/Vc4cz8fA6mprHxwGFuGnc2PjYGkmOcnZ0ZP3wo44cPZdOuPXz9+wK27NlHZnbOqU+u1j40hn0ph7hvzrOM6zGCoOrd5rILc1m4eyVHc1PpFnnq+senm7e3N+3atbMKw/YGYYBx48ZRXFzMe++9V2vhnb+/P7fddhvjx9u+FfgXXxwlL68cDw9nOnX2tmy6YYY8UzkHYgsxmSr46suj3Htf8/wbps75jMI9OwAwXN1w8fUDzFTk52MuL6Nwzy5S53xG1PW32tSeX1Aw6UcT2bZyOX1GWv8ubV2xjLTEBPzsmINsOrKbQ3NfwWyuqjUtrDg9kUPfv0qHKffj18a2yjK9+g9lzbL53HrFGLr27EtAkGU6TG52Jvt2baW4qIChoyfY1FZCThntgt14/Dzr4NomCPq39mLpgXwScmzftdRUWEJMRGCtIAzQo30krUIDSEi1/XdXTp8WGYZnzpzJtGnTAGjXrh1ZWVnMnTuXlStXsn37diIiIuo8b8GCBRQWFtKpUydMJhMHDx7kk08+Yc2aNezbp6uzhnJycQOX40ErcsjkRrX35cw3Tnr86pvutqmde0ZZyqa9vjydSD9Xruh7fPGch6tBx1B3zu3sW9/p9frvx/NJyTThZBh0bG154z2YmElKlonnPlnAu/9n+xzpsEFhpG9Ip6KooknC8MzHZ9W7gK4xWzFvzc1lT74JHxcXxoaGUVBRQaCbG252Btkd8UdYvGOH1Q5043r34qxGXIwu3/orhmHwj1E38f2yjwDw9vQjwCeYpAzbKlQE+AVQUWl9sfTAvx4jPTONDVvWAJYRRFst3LabjLx8MCDYxwdvDw/AbKkmUVBAZn4+C7ft5pIhts99/bMBPbszoGd3DiUe5dv5i2w+78YRl/Pgt9NZuHsFC3evqHXcwOCG4Zc3uF9NIS4ujoULF5Kenm71eHh4OGPHjj3poEddJk+ezKRJk9izZ09Nm2FhYXTv3h0XO+ZuA+zeZcLLy5lXXu1JYKD1BWZ2dhn337eLnTtN9Zx9+uWtW4nh4kKb+x/Ht9+gmp9bs9lM/ub1HHnlOfLWrbQ5DA8eP4H5sz/jxX/djJu7B74BAQDk5+ZQVlpa8xxbpaz5EXNVFd6R7fHv2BcXL3/ATEWRibyDWylMiSN17Y82h+Eb/vUIu7dtJC83i60bVlodM5vN+AUEcf3tD9nUlq+7EymmCmLTS2otrN6fVkJyXjm+7ra/57WNCuJAYgZPfTiPC0b0JDTAcjGXkVvAL6t2cfBoJp1jbF8MKqdPiwvDZWVlPPzwwwBMmTKF7777juTkZLp27Up6ejrTp0/nzTffrPPcNWvW4HHCSMy1117L7Nmz2b9/P1lZWXYVXpfjUtb8WO8xJxc3PMNi7Lrt9eVHr500eNgchqtrCK+NL6BTqEfN1421bMsBPN1dmPfa7fTqaKlssf1AEpPuncGSTbF2tdVmchty9+ey5dkteEV64exxPBAbhkGPOxtQd/dPoy2+QT50H9KFKx+cYndTpZWVPLpnN1urR9S6+foR6OrGU3v3MK1tO65ubduc5sqqKv71wYfMWbW61rFnvvmWy4cPY8attzRolDgzL4WI4BhG97uwJgwDeHn4kJpl2+3btjEd2LRtHQlH44mJbgtYRmGffeQl7njweg7F217XFmB/UgquLs7cMv4cIgKt50Gm5uTx/oKl7E9KsavN+nRoHc3DN9u+Y9ykXmMoLivhtUUzySnKszoW4OnHPeNu4nw7S1s1pbi4OL744gvMZnOtufSpqal8+eWXTJ06lfbt7Z+zf2JZv4ZuLFJWZiYw0LVWEAYICnLD19eFnBz7q+g0lYq8PNzCI/Hrbz2v2jAM/AYMwS08krJ023/2Lr/rXuL37mHf5o2UlRSTlWq9TXyXfgO4/K57bW6vOC0eV99AOl/9OIZh/X8QPnASuz58gKLUeJvbi4xuw1uzf+ebT99h87rlZKZXl34Li6L/kFFc9s87CA61bdHbOZ19+W5bLhNmHKRtkDsh3pb348zCSuKzSzGb4YKetg+g3HDBEB559xfe/m4Fb39Xx4WnYXmONL8WF4Y3btxYs/J3yhTLH/eoqCiGDBnCokWLmD9/fr3nenh48O677/LZZ5+RnZ3NwYMHAejevTtBQfWvCi4tLaW09HgBbpOp+a76z0Qpa3485co2n+iudJxyn2UU+RRCw1tZVUQoLMynMN+E4eREaLj95Z6+vsHyR3NdfCE7qusM92rlyZC29s3vPSYnv5iO0aE1QRigd6dWtIkMIi7JvlXpR345QnGapU+FR23bkexkPt75dqPbONHMI/Fs+dOt5SFBQbg4ObEuO8vmMPzSjz/xVR1B+JhvVq+hfXg4D1/yD7v76OHmjakwm/KK47cvi0oKSM9JxtPdtgWc40ZNoLy8jPVb1tSEYQAvTy9efvptpr/+JOXltgec0rJyAny8agVhgIhAf/y9PcktKKrjzNr++OR9m1/XVlMGTGJy3/HsStpPanWd4Qj/MHq26oKrc/P+WVi+fDlVVVVER0fTuXNnfHx8MJvNFBYWEhsby9GjR1m+fLldYfi3337jnXfeqZlycYy/vz+33347F15o+3SuVq08iI8v4vXXDjJocCB+1fVnTaZy1q/LIT29lLZtm2/LXtfgEEpTk8ha8Ct+g4dbbbqRt34VpSlHcbMxHAJ4eHnzxCdfsHHxQravXkFWqiVIB0dE0nv42Qw4d5x9FxZOzpgrKzBXlGO4Ws/lraqwPI6dZRaDgsO47f7G77758NgItiQWEZdVRlxWKYctN7BqxhfaBbnx0Ni67zzX5ZaLh5ORW8Bb3yynvMJ6qpWLsxN3XXY2t1w8vNH9lsZrcWE4MfH4SE9Y2PGRvmMF2hMSTr7nekJCAhs2bKj5um/fvvz6668nHYl8/vnnefrpM3Ob2zPKSSozFBzdR9qG34gcduqw88mPtUPT1g2r+O9DN3PNzffZ3a2S8ipumZPAykMFVo+P7ODDh1fF4G7HxhsAYYE+HErKYP7aPUwYailt9fuaPRw6mkl4kH3TLtLXWYKIW4Ab7oHuGE1Un7S4sIS0eEvb4W3D8PRu2GKepRkZuDs58U6fPkzbYqkw4ObkRLi7O4nFxac4+7ivVq3C2cmJ56+ZykUDBxLm74cZyMgz8eOGDTwy+wu+XLmqQWG4Y3QPth9cx8tfPgBYRopf/vIByivK6Nl+oE1tTBw7mYlj657eExIcxqvP1l6pfjJBvt5kmPJZsHUn3Vu3stp0Y3dCElmmAkL97Z+i05QMDJwMg2NXsk6GYfcOiqdDSkoKfn5+3HjjjbXel4cPH84bb7xBSortI5uLFy+ud0ON3NxcXnjhBTw9PRk71rbFpRdOjuCtN+NYty6Hdevqnu954YW2B6amFjjqXNK+/YKkme+SNPPdep9jD8MwGDTuPAaNO6/R/fOJ6ojpyC72fPoYfm174uJVvQNdkQlT/C4qSgrwa2N/5Zu1yxewed1yMlIti5pDI1rRf+hohp5t+3zwEB8Xfru1I7M3ZbP8YD7JeZat2aP8XRjV0ZepA4LwcrPv78Vj15/HLRcNZ/nWAySlWy7GWoX5c3bfjoQFNu97gBzX4sJwfeorTfVnL7zwAs899xwHDx7k9ttvZ+nSpUydOpXFixfjXE/R8EceeYT77jsewkwmE61tHBFzBJ2vfJRDP7xGq9FXEdhlEAA5+9eTtGwObc+/jcqSQuJ//4Cc/RtsCsN16TtoBF169OHrT9+2e5vmN5ens+JPQRhg5aEC3lyewYPn2j5KAjBhSHc+/nUd1zz1OV7VBdOLSi2jhhOH2lf31dnDGVdfV/o9YX/VjbpUlFfw3es/s2TOCirKLW/kLq4ujLlyJJfecxEurvb9yueWl9PGy4sO3tYLl1wMg4KKCpvbScrKpkN4OLeOty6mHxEYwG3njWfm4j+Iz6i7pNGpXDD8GvYnbCcl8wgYBgXF+RQUmfBw92Li0Ksa1GZjDezUnnmbtrNqbyyr9tYxdcawPMceOSYTM776lq1795GT96e7U4bB4o/fs7mtH7bM59UFH5JTZN1OoJcf94yfxpT+E+3qW1NycnKisrKSiooKXF2tK6xUVFRQUVFh10jk7NmzARg9ejSjR48mKCgIs9lMTk4Oy5YtY9myZXzxxRc2h+Hhw4MpLa3iqy+Pkp9v/Tvg4+PCVVdFM3xE8025C7vkKkpTksldVbtyBkDA8NGEXWLf70VeVhY/fjiDHatr70A3+aZbCQixfd5r1IgpFCTFUpaXSeaOZdYHzeDk4krUCNundJUUF/H0Azeya+v6WscW/PQVPfoM4qlXPsHD07bRek83J24eFsLNw2rXpW6o0EAfRvbpaLXphoLwmaXFheETQ+iJiyuOfR5jQ3kmZ2dnunTpwj333MPSpUtZtmwZf/zxR70rit3d3XG3sTSLI0r8YxauPoGEnHV2zWMhZ40ifdMCkld+R7frniVj+1KK0uJtau/Pb2qVVZUkJxxm366tdi1iOuaXXXk4GfD4+Agu6hUAwI87cvnvglR+2ZVndxh+7IbxrNl5mH1H0igsOX7rvFvbcB693vZRCICYC2KI+zaO/MP5+LZr/JvjV/+by9JvVlqN0leUVbBw1lLKSyu49nH7NkAJcnPjaHExSSeMAh8oKOBIURHhdlRCCPXzIz4jg4XbtjO+T2+rYwu2beNwejqhfvZX9gAID4rmwatfYcGGb0lItcztjYnoxPhBlxIWaN9uhTm52bz90Sts2r6BnNwsq2MGBst/2WxTO0O7dKSwpJSVe2KpqrK+PerkZDCiW2eGdrGv2sBLMz9nw46ddd6AMewomP37zmU8/sPLdR7LLsrjyR9fxcvNg4ln2b+bYlOIjo4mLi6OGTNm0L59e6sd6OLi4iguLrZrikR8fDxRUVFMnz691rHx48dz6aWXcviwfVuBjxkTytlnB3PoUKHVDnQdOnjjYuedpqZmODsT8+//I/TCS8jfuomy6jrDbiGh+PTpj1d7+xbSpiUm8NS1V5CXnWW19WZK/GFSjsSzZt6vPD3ra8JjbFsE6xXRji5XP0Hyqu/IP7KHqupdSp1cXPFt053IEVPwCrW9zOKs919m55Z1ALi5ueMXYLnYyc/LoayslN3bNjDr/Ze5+R7bNpEpKa/ii03ZLD9YQFJ1+bxW/q6M7ujD1QOC8HC17/932ZYD/Of939gTn2r1eI92kTx180TO6d/4OuTSeC0uDA8cOJDg4OCaChJXXXUVycnJrFtn+WWYMMGyqrVrV0uh/DvvvJM777yTAwcOsHfvXi644AKcnJyoqqqyml9cWNj4+ZqOqiQnxVJa6PAO/Nv1Aizlc0pz02vmErt4eNscZB++44o6n2s2m+nZx/Zi+8ekmiroEOLOjUOPX+nfNDSErzbncCTb9jI5xwT4erHknbv4bsnW43WGu0Qz5Zw+uLvZ9yuVOC8RqmDn6ztx8XKxWkAH0P9J+6oNrP3Nsq3s4En9GTxxAADrf9/M+nmbWPvbRrvD8IjgYL5PTuaGLZsxgAOFBdy+bSsAw+0op3TRoIHMWLCQy19+BU83N4KqS2RlFeRTUl1z+KJBtk1p+LNsUwbubp5cc55tCytP5vk3nmLdplV132my8zpsbO8eDOnSgUMp6eRV70Dn7+VJh4gwfDztn7ayY79lhHlEvz60iYrC2blhoWvmSksd73HdRzKu+0jLDnSYyS7IZdGeFSzas4qPV37TbGF4zJgxJCQkkJOTw5Yt1pt/mM1mXF1dGTPG9gV+7u7umEwmsrOza60NycrKIi8vDzc3+8sOGoZh+aj+wTj29ZnCs11HPNp2oNJkuTXv7OffoP599dqL5GVl4uHtTadeffAPtuzwZsrO4sCObZiys/jqjZe555W3bO9baGs6/ONezFVVVBRbyg+6ePpiNGBR46ol83BxdePR6TMYOHyMVfWMDav+YPqjt7NqyTybwnBmQQVXfnqYQ5mWNULH3gXiMktZeaiA2Zty+OaGdoT42PY+v3zLQa547BMqq6pqbfC0Ky6FKx//lG+eu5FR/Zq/lKGja3Fh2M3NjenTp3Prrbcyd+5c2rdvT1ZWFvn5+YSEhNRUmti/37LBwrHFdklJSVx00UX4+PjQvn170tLSSEtLAywjEeeea98cKjnOKzSGwpQ4Dn3/Kk4u7mBAVbnlzcQ70lICqTjzKG5+toenusJI1579+Pej/7O7f97uTqTklZNmKie8erFLmqmcFFM5PnaUyTmRu5sLUycMZOqEhgW4Y0pzji/MrCiqoKLI9qkHdXFyciK0VTC3/u94dYE+o88ibsdhivJtn+N7zI1t2rI9L49D1ReL5dWjnO29vbnBjnJoj192KTuOHGH1vv0UlZVRlG29qcPQzp15/LJL7e4fwFMfTaNtVBfuu/JFq8ff/f4pjqYfYvpttm+asW2nZeT37KFjaBvTvt6pU7by8fCgd7uGbyZyIl9vb4ID/Hn6rtsb1U5cRgLRgZG8ftWTtY6d33sM571yDYcyjjTqNRojKiqKm266iSVLlnD48OGahYuurq60a9eOMWPG1KwRsUX//v1ZtmwZV1xxBT179rTagW7Xrl0UFRUxatSpa1GfaNmyTL78IhGTyfr31c/PMk3inDENL5e1YcN+du48jK+vF5MmDSQ/v5jgYF/c3GzflKckMZ7Urz6jYMdWqsosF/xObm749OpH+BXX4tmmnc1t7V6/Di9fX176aT6BodYVebLT03jwognsWrvG5vaOKUo/gunwTqsd6Pza9cIrzL7fl9ycLCJbxTBohPXfcMMwGDxyLJGtYkhNtq2qzP8Wp3IwsxQDaBvkRoiPC2YzZBVWEJ9dxuGsUv63OJWXLo62rb1Zi6iorKJ/19ZMHNqd0ECf6h3oCvl97R4270vkxdmLFYbPAC0uDAPccssteHt78/LLL7N37148PDy45JJLeOGFF4iKqrvaQExMDBdffDGbN29m//79mM1mOnTowNixY3n88cfxa+AtWoHW46/n0NxXKS/IrQnBAK6+gcSMu4HS3DQ8Q1vj27qbTe19/P0q6wcMg4DAYNzcG7YIbFAbbxbuM3Hu2wcY2MZyy3XjkUKKyqoY2YBNNwCWbo5l1bY40nPzra74DQO7ttYMHRjapHtMD57Un40LtlBaXIa7p2W0q7SolOLCEoZfZP+oureLC+/16csfGRnsrd4oo6uvD+eGhuFqxyiOj4cHvz32KL9u2syi7ds5mmUJw9HBQYzt3YsL+vdvcKkroM7FmwVFeRRUjzrZys/Xj5DgUJ577JWG9wWYuXgFvp4eDO3SgdYhTTN/9MpJ5/H+199x+GgS7aLtm/5xIncXN/KKTGQWZBPiYz1SmpGfTW6xCTcbqr6cTuHh4Vx11VVUVVVRVGSpuuHl5dWgn5E77riDbdu2kZuba7V4GiwX3QEBAdx+u+0XGGvXZPPejLqnVZhMFbz/fjzuHk4MG2bf/3tJSRl33z2DDRssAzlnndWOoCBfHnzwQ+666yJuvNG2xWvFhw9y6D8PUlVayom/GFVlpZg2raVgxxbaP/OSzdMlykpLCAwNqxWEAYLCwvHxDyA30/b5/uaqKo4smEn2ntoLpZNXfUdQt6G0mXCzzaPEIWERJCfG89vcWQwbPcFq043VS38nKfEwYRG2/b4sic3H09WJH6a1p2u49d+bvakl/OOjQyyJtf09ZcfBJKJC/Jj/+u21fnbvuvxs+lz7P7YfOGpze3L6tMgwDJYtNqdOnVrv8T+PLLZv354ffvjhdHfLIXmFxtBj2otk711HSaZl2oBnSCsCuw3FycUymtHhYttvYYdFHr/qNuVZVms3NAgDPDAmjNVxBRSUVbHsgOWNzAz4uDlxXwNqD7/w+SJe/uKPWo+bzfaH4U7XNHwjjLp4eHlQUljKU5e/QO+zLSuyd6zYRXlpBW4ebvw0Y17Ncy+6fdIp21uQlkaAqyvnhYdz3gmjcSklJZRWVtLW2/bydIZhcOHAAVw4cIAd31H9vlhwfHOWzLwUq69Ly0tJyjiMu6t9PzdXT7medz9+jbj4g7Rv2/DRmvi0DDBg55FEYkJCGNG9E92i7S8LeKLlGzdRWVXFLU8+S7voVvh4HV8QZGDwykO2VVoZ3L4Pi/as4vzXr6d36+4EV+9Al1WYy/bEPRSWFjO2+4hG9bUppKamcvDgQasd6Dp27Fjvpkr1iY6OZtasWXz22WesW7eu5o5geHg4Q4YM4dprryU01PaR3J9+slSyGDQ4kMGDAvEPcMVsBlNeOevX57BhQw6//Jxqdxh+++2fWb9+v9VjZ5/dE1dXF1au3GVzGE798lOqSktwCw3Hp1dfXPwDATMVebkU7NhKWUYaaV99RrvH/mtTe63adyB+317euP/fDBp7Hn7BlgsoU1Y26xfPJyPpKG272b5wOHXdz2Tvrr/MYvbetbgHhBM57GKb2jt34hS+nPk6773yH957pe6pEOdOtG1BXn5pFdEBrrWCMEC3CA+i/F3r3Mm0Ps5OTpSVV1JSVoHXn3YALS2rpKy8otE7cErTaLFhWM4cWbtX4eLpa7WADqA0L4Oq8jI8Q+wfxfrl20/55rN3yM22THMJCArhsn/eweTLbd9c4JjOYR78dHMH3l2ZwY5ky1SB3q08uX1EKB1D7V8Y+flv6zGboXV4AK3DAmnMNMGK4goqiytx8XHB2c2ZrG1ZmA6Z8IryInyofQv7AH7/eBEYkBafzsIjSywPmgEDfv1wgdVzbQnDL8Tup7uvH4P/NNfy2X172Zefz5KRZ9dz5p/a+f4HIgICuHz4MLyaaDHq+t1LOPaPX1Ccz/o9J6yer74YbhvZxa42l65aRGVlJTf8+0o6tO2Ij/fxRY2GYfDG9A9sb6z6ejwhI5MvV2QS7OvDiG6d6dOuDS4NmO+7ff/xjT8OJViPJtnzI3jf+FvYHL+T7KI81hy0XhBoxkyglz/3jp9md/+aSlVVFT///DM7duyodWzJkiWcddZZXHTRRXaNEgcHB1tVBGqMpKQSwsLcua+O7ZaHjwjm33ft4OjRErvbXbhwC+7ursya9SCXX25Z7Ofm5kpkZBBHjqSf4uzjCvfvwcXPn04vz8DZ09PqWGVxEfvuvIHC/Xtsbu+C62/m7YfuZf2i+axfVEcdf8Pg/Ott/3nJ3rManJyIHn0VgZ0H4uLtB2ZLabWc2I0cXfolWbtX2RyGr7j+TpKPxrNswY91Hh81bjJX3HCXTW3FBLpxKLOU5xemMqG7H8HeloiUVVjB73tMxGWV0THE9vevgd3bsGzLAUbc8hrn9O9MSIBl8CAzt5Clm2PJNhUxul/TDohIwygMS6Md+f0jvKM64N/eukpA/K8zKEw9TL/7P7GrvdkfvsrXn7xlNbqfk5XBh68/gykvp0G1hjuGuvPqJbbN8zqViqoq2kUGsemz/2t0W4e+PkTW1ix63d+Lsrwy9n9yfGSoorCCVmPtu5AIigz8Sxbx5NtRVg3g+e9/wACe+vobpo0by63jxhLqX3tDCnt0iO6BgcHBo7vwcPMkOvR4hQFXV3fCg1pxbn/7Svlt23U8HB6Isx6ls/fftVVwECO7d2blnliSsrLJMhXw04YtLN6+myFdOjKoU3u83G2fjjB+2BAadeVVLSY4iu/v/JAPln/JqgMbSM2z3OKO8A9lRKdB3Hz2lYT5NV1ZKXutXLmS7du313t8586dBAUF2T3Pd/ny5bVGhocOHcrZZ9t2QXeMm5tBQUEFubnlBARYz+PNzS0nP78CV1f7/5+ys/Np3z6Czp2t36dcXJzJz7dtgxYAc1UlhosrTnVUe3Fy98DJ1ZWKUtvD+rBJF1BaXMScN14mP8e6rrJPQABX3H0/wyfZvmlJWX42HgHhhPU7ocyiAa4+AYT1G0fmtiWU5tk+7cLZxYUHnnqdf1w1jU1rl5GZZhm5DwmPpP+QUXTsepbNbU0dEMTT81P4YE0mH6ypvYGSUf0cWz1+w3ms3xXPkdQcPptnXSXJbAZPdxcev6HxtZul8RSG5bSpKCnkpDtx1GPe95a6oD36DGL4OZZ6p2uWzWfX1vXM+352g8JwXnEl25OKyCysqLWqd0qfQLvauuXi4bwxZxkb9xxhYHfbF5HVpTCxEBdPF3xifDgw2zLyF9A1gNx9uaRvSLc7DL+88NlG9eeYqzYen1t5oLDA6uuSykryysvxc7V9QQ9YfhJyCgt5+cefeOu3eVw5Yjh3TpxIp6jIBvXx7urRs3+/ehERQa359+V1b6xgjwljLmiyiwnDgB4xregR04r49ExW7Y1lf1IKhSWl/LFjNyt27+c/V1xkc3sP2bHl8qmE+gbx2AV3Nll7JyosLmJ3XCzOTs7072Z7EDlm+/btODk5cd5559GtWzerHej27NnDggUL2L59u81huLi4mAcffJCtW7fWOvbzzz/Tp08fXn75ZTz/NIpanx49/NiwIYd779lJ584++PlZ/oyaTBXExhZQXFzJoMH2vacAhIb6ceRIOomJx4Pgvn2JHD6cSkSE7e15tu1AUew+Dj1xP34DhljtQGfatI7y7Gy8uti2fuOYc6ZczsjJ/yBu106rHeja9zwLFzvfB1y8/CjNyyAvbnutAZS8uO2U5qXXbMRhjw5detK+cw/yciwL8vwDg+3+Xb5hSDBZhRW8vzqT8irrPxQuTga3DAvhhiG2T3/p0zmaBW/ewX8/XsCKbQcpLrUMIni6u3B2n448dsN59GjfsPc/aVoKw9Jguz58oObzovQjVl9XlZdRUWzCxcOnrlNPqqy0lODQCKa//VXNav7zL7mWGy8ZQVFh7c0zTmXhPhP3fn+UorKqWscMw/4wfMeUkcxduo2J984gwMcTX6/jIzCGAVs+f8jmtsryyvAMtfwRLkouwjvam+63d2frc1utKk00pf9OfZnDu44wc3v9pZBSSywjRwaWChLHvj7RyGD7Rg87R0YyqmcPvli+gqKyMj5buozPly1nQt8+3H3++Qzp0rB6m2/e9xMA5RVlpGRZdqCMDI7BtQGLwB67r2kuJv6sbVgIbcNCyDTls2pvLNsPJ1Je2bDKIeUVFeTm59eqXxwebN8c1cV7VrHqwEZSqrdjjvQPY2TnQZzbreHbw748631e/2omxWWl9O96Frdfeg1Pf/g6j914F5ede75NbZhMJoKCghg0aFDNY4Zh4Ovry+DBg9m0aRM5fxqhPJkPPvigpkSbm5sbAQEBmM1m8vLyKCsrY9u2bXzwwQfcfbdt6xqunhrNvn35mEwVbN+eV+u4r68LV19t/12o0aN789VXy5gy5VkMwxKEp079H2azmXPO6X3qBqqFX34Nh6c/QVHsPopi9/3pqGVhQ/il9a+3qY9hGJYdMqvzpeHUsFJygZ0HkL55EYd+eA0nF7eavxEVxflUVZbXPMceR+Ji+fy9l9i2cRVl1aPebu4e9B00kmtuvo+2Hbva3NYD54Zz/eBgVsUVkFJdZzjS35Xh7X0ItbGk2om6t4vky2evp7KyiiyTpSpPsJ93g0sjyumhMCwNVpZXfRvJAHNFxfGvTxBg55sawOAR57Jr2wbrN9rqz4eNnmB3e9MXplJYRxAGao0S2+K+17/nQGIGZjPk5BeTc0LJMnv/NhjOBhXFFVSVV1GSUUJQr6Cax0/ndIdT7dh4XXUB/c8SjhDq7s6k8OOLljycnYjx9GJokO23CwH8vb14+bp/8uiUS/hw0WI+WryY9DwTv2/Zyu9btjKgYwcWP1W73JctFm74lgXrv6W8wlJGytXFjfMGX874QQ0r11ZeXk5uXjaVfwqcEWGNG8UJ8fPl4sH9Gdu7B+tj4+w6t6i4hJc/+ZzVW7ZRWVlpfdCOHeiKyor516zH2Rhfe07ud5vmMaDtWbx77XN4udk2UnrMxz9/w/RP37F6bFTfISSlp/H9kvk2h2Fvb29ycnI4cOAAnTpZz6c8cOAAOTk5NRtx2GLJkiW4urry3HPPMXz4cKs6tKtWreKxxx5jyZIlNofhiAgPXnypJz98n8z27XlkZlp+5kJC3Ojd25+LLo4kKMj+C7F//etCNm8+QGx17fKyMsvFUufOrbj99gtsbse3Vz/aPfw0KbM+oiTRukSeR+s2RF4zDd/e9u14ufzHuXz56ovk51pfhPgGBHLlPQ9wziW2LxqOHD6ForQECo7up6q8jLJy6zKLPtGdiBxu+w50h/bv4qHbL6e0pNjqfa20pJh1KxaydcNK/jfjG7umS4T4uHBx9QZNTWHnwWT+2LTfage6sQO70LND4xbVStNRGJYGixxmucWbsuYnXH2td6BzcnHHPTgS//Z97G63Y7derFk+n0f/dRXDxxyfJlFYkE/Hrj35Y97cmueeO+nUb5rp+RWE+rgw98b2xDTgj9Sf/bZ6NwCDe7QhJjywUVf4XuFe5B/JZ+PjG6ksq8SnjWWUpCy3DLeA5itvdX11DeGtebm08/Kq+bopBPn48NA/LubeCy/gyxUrefv3+RxISWHTwUMNam/trkX8umq21WPl5aX8uno2ft6BDOlhew3xoqJCXnjzaVauXUpllXXgtGcHOn9vL3xPsrGGj4cH5/ayb+vuj7//keUb6359e3age2vxJ2yIt8zJdXdxI8DLH8xmcotNlFaUsSl+J28t/oSHJt1hV/8++OELnAwnnrvjQR55x1IPPMg/gMiQMHYd2n+Ks4/r1q0b69ev56uvvsLFxQWv6qoZRUVFVFTPVe/Wzfbb/Dk5ObRq1YoRI6wrZBiGwciRI2nVqhXJyck2twcQEODKDTc23e8EgI+PJ1988TDz529k5854AHr2bMPEiQNxtXMbdd8+A/DtM4Dy7CzKsyzTLlyDQ3G1Y6OcY9bO/433n3i4zmP5Odl8+NRjeHh6MXSibRc7zm4edLriYXIPbMYUv4NykyUMu/oF4de2FwGd+mEYtr+nfjbjRUqKiwiLjKbvoJGW0mpmM7k5WWzdsJL0lKN8/t5LPPP65za3WZ8rPjlMcl4ZK++xbWFuZWUV/37lO77+Y0utY//9ZAGXjenL2w9cplHiM4DCsDRY5DDL4qT8hH14hrSq+bqxZr75XwzDYPf2Dezebl0X9IPXnj7+hWHYFIbHd/VlVVwhQd6N20DhmIhgP5ydnZj3WuM2PwCIPi+afTP3UVlSiUeIB6EDQ8k/nE9FcUXNKHFzeqOX5fbsttxc9hdYpqh08fGhT0BAo9t2c3Hh+jHncP2Yc5i3eQtvzZt36pPqsGLbbwD06jiE/l1HArBp3wp2HlzPiq2/2hWGP5j1NktXLar7oB0D9Q9cPNH2J9to9ZbtGMDVF0zii1/nERUWSv8e3Vi2YRM3XGL73OMFu1bg6uzC61c+yaguQ6xGSpftX8s9Xz3Dgl0r7A7Dh5MT6dq2A7deMrUmDAME+vqz/4jtFzpjxowhNTWVI0eOUF5eXlNa7ZiYmBi7dqALCwsjMTGR77//ntGjR1tturF06VISExPtLtcGsHFDDtu25ZFZvR1zSLAbffr6M3Cg/fOFy8srefbZL3Bzc+Gxx67iwguH2N3Gn1Xk5VK4d6f1dsw9+9TMIbbVLx9bKqgMGnceA8eeh3+wJWzmZWexYdF8Ni5eyC+ffGhzGAbLhUhg5wF2T4eoy96dW/APCOad2Qvw9LK+Y1BUWMC0S89m787aYbQhUk3ldpVWe+XLJcxZXP9rf7tkK+2igvm/a8c2RfekERSGpdHann8rFSUFVJQU4uJheTOqKCmkLD8LF09f3Hzs/+Nwqtv41U+yqa3/XhDFxR/GMfrNAwyI8bLadc4Am3cTOub5f03mpv9+wdyl2zhvSDd8PBteKiywRyADnhlAaU4pXhFeOLk64RXpRb/H++Hi3fy/nqVVVTy+Zzeb/zRHc0BgIP/t3gO3JqqROal/Pyb1t+/W7TFpWUcJ8g9j2uRHah7r23kET340jdRs23aeOmbVumUYhsG1l9/E519/RKvIaAb0GcLSVYuYdo194fBEFZWVFJTUngMe4O1Vx7Prlp2XR2RYKDdOuYgvfp2Hv48P9/xzKht37uZAfILN7WQV5tI6KJLRXYdaPW4YBud0HUbroEiO5qTY3N4xft6+pGZlUFJ2/PvMKzBx6Gg8fj62rx1wc3PjuuuuY9++fRw8eBCTyWRp38+Pjh070rVrV7umEE2cOJGZM2fyyiuv8MordW+mMnGi7RcvJSWVvPi/A+zZU3vzhT/+yKBbd18eeqgTHh62X3y7ujqzaNEWoqNDmmR6VOo3s8j48RvMFX+6u+HiTOjky4i48p82t5UUd4iw6Nbc8+rbtY4Nn3Qhd084h6S4g3b1r7zQROr6XzDFW+9A59/uLMIHnY9rde1rW1RWVuDq5ouHZ+3fJQ9PL1xd3Sgptq0ax4uLU096PKe48qTH/+zrxVtwdjJ47rYLuXBkT8ICfTCbISO3gJ9X7uSxGb8yZ9FmheEzQPP/tZUWL/639ylMPkCPaS9BdRiuKi9l/6yn8G7Vic5XPHKKFqz9uja+Sfs3a0N2zRabC/aaah6vLr9rdxi+8nFLqbhbX5hT65iBQcaC5+1qz9XHFVef4yuynT2ccT7hD+mOV3dQkFDAsNeH2dVuU/g84Qib6listCknh88TjjCtrW3buu587VXc7bzVaysnJ2fKK8qprKrE2cny71ZZWUFFZTlOhn13A7KyM4mKaMXN1/6Lz7/+CH+/QB7412Ns2LKW2EN77e5bpimfH9ZtJiEzq9YxA4Nnrr7E5rZcXVzw9LBceLm5upCRk0NFRQXlFRUs37iZB260LeBE+IWQkJXEnPU/M7bHCIK9LRerWYU5LNq9kiNZR4nyt7/G9fBe/fll1R+MveNqAOJTEjn3jqspLitl/FD7yqAZhkG3bt3smg5Rn+uuu46jR4+yYMGCOo+PGzeO66+/3ub2vvk6qSYIu7o64evrApjJz6+kvLyKvXvy+ebrJP55nX3bCg8Z0o2NG/dTUFCMj49987VPlDn/Z9K/+7LOY+aKCtK/n4OLfwAhEyfb1J6buwcFebnkZmYSEGK9aDY3M4OCvFxc3WwfECjNTWf/V/+loshkVWyoNDuV9JxUsveup8vVj+EeYNvPYIfOPdi3awsP3jKFwSPHEVA9FSQ3O4v1KxeRnZlGt7P629TWu6syT3oD6NjfDFslZeTSvlUIN19s/d4dEezHLRcP5+Nf1nEkJbues+WvpDAsjVackYB7YDhufsfno7n5BuEeGE5xuu0jVvb470O3cPjgXmbOXXnK5x6rF+nqbBDk5YyzU+NGXk46IG00YEWeTS/ahE2ZzTa3tzQjAwO4o30Hxlbv0rUoI50ZcXEsyciwOQzHhJ6+urWtwtpxOHkfb3z9CL07WUY7tx9YS35RHu2jbF9FDuDq6oaXp+WCzs3NnYzMNCoqyikvL2PpqkU89G/7Fvj9uH4LCRm1gzCA2c6flSB/PzKzcwGICgvlSFIK/7jrfopKSgjwtX3kdXLf8by79HP+++tb/PfXuiuKTO473q6+ATx6450s3byOPYcPYBgGWXm5ZObm4Oftw8PX2T6laPny5fj4+NCrVy9c7SzbVRcXFxeefPJJrrzyStauXUt6uqV6RlhYGEOHDqVLF/s2Zlm3LhsXF4N77+tIv37+VtNMtmzO49VXD7JuXbbdYbh373asWrWLa699icmThxAc7Gs1Smzr1ImsBb8CBiEX/AP/wcNxCQgEs2UHurx1q8j87QeyFv5qcxjuPmgwGxcv5P4Lx9Gpd1/8qsOmKTuLA9u3UlxYyKCxtv+8JK34hopCE05uHnhHdcC1uoxaeZGJwuRDVBSZSFrxLe0n21b67+pp9/Lkvdexf/dW9u+2Lp9nNpsxnJy46kbbd0BtynfwkAAfjqRks2jDPsYNsn4vWrR+H/EpWYQE2F9xSZqewrA0WlVlOZWlxbUerywtqimV09RystJJT7FtT3fDgFb+riz+Vyc83Rp/W///rrV9DupfqaK8kkcvfAZPX0+e+uahem+3PvHlgza3mVFaSoyXF5e2Ol7v+LJW0fyWmkpSce3/81MpLCnh1V9+Zfnu3aTnmayvLAyDHa/VfRv7ZMYO+Acf/jSd+NRY4lNjLQ9W7409dqDtq9IBggKDSc+0bMrQKiKa+MQ4Lrj6HAqLCgnwt3+6T3J2DoZhMLRLR0L9fe3aNe3PunfswJqt24lLPMp5w4fx/jdzKaoueTdu2NBTnH3craOmkpCVxK87am8pDjDprDHcNtr+0ludY9qz9L05vDL7A7bstywy7delB/dePY2Ordva3M6yZZapKn/88QcDBw5k0KBBdlWPqE+XLl3sDr51ycurIDzcnf79A6weNwyD/gMCCA93Jz3d/rKIr7/+I4YB8fGpvPnmj7XatjUMl6Wl4B4ZRdQ/b7Z63D0iCu8u3cnfsoGyNNunwVx97/+xb/Mm8nOy2bFmlfVBsxnfQEtFCVvlJ+zB2d2T7jc8j6tPgHXfC3LY+8mj5CfYvkNe30EjePKVj/n4rekc+dNGOW3ad+GGOx+h7+CRNrUV7uuCr7szi++se1e4UW/EkpBTZnPfJo88i/d/WM1VT3yKp5srgX6WqRzZpkJKqquFTB5pfy1uaXoKw9Jo7n6hlOSkkLjkCyIGWRZRpG2cR3lBHh7BzV9Q/JZhIbyzMoOc4go83RpfoeGha8ed+knNwMXVmZKiEjy83JusLJunszMZpaVklpYSUr2NcmZpKemlpXg52//2cc/Hn/LtmjVA7RGYhvb4rA6DuXbCPfy65gtyTJbFQoF+oVww/Bp6th9oV1s9u/Vi1brlHIo/wMSxk3n349coLLLUBp0wxvbyVsf4eXniZBhM7N/L7nP/7OETNt1o3zqaIH9/9sYdpn3rVkw6e8RJzrTm4uzM/y57hOuGX8rK2A2kVv+bRfiFMrLzQLpH2V/vubyinLlLfgcM3nrwmUaFfrCM6BUXF7Ny5UrWrFlDr169GDp0KCEhTX+H4amnniIzM5O33649J7YuwcFupKaWsnBhOoMGBeLvb/k9yMurYP36HFJSSghtwDbvUP9dJ5vWUFRz9vKmPCuTksR4PP50EVKSEE9ZVgbOXrZfXITHtOF/3//Kjx/MYPvqFVabbvQefjaTp91KUJjt02qqKspx8wmoFYQB3HwCcfbwprywdv3mk+k/ZBT9h4wiKyONjDRLZZDQ8CiCQ+2b7tM7ypPFsfkUllbi7V57ipW9o8aPXj+enQeTWbPzMEWl5RRlWH9fQ3q25dHr7b8LI01PYVgaLbD7UFJWfU/G1kVkbD1hJb4BQd3/+nmuf7b0QAGlFWZGv3mAzmHu+JzwJmcAX11v263+Y46kZJOUkUuXNuEE+3vz9rcrWLvzMD3aR/LgNefi6tI0VSsaYsRFQ1j0xTKOHkgmulPja1j29vdnVVYW123exFnV2yfvzMujpLKSAcH2j5Qu2LbN0m67tnSOjMKliUoKDex+DgO7n0N+keWPja9Xw7Z6fvy+/9Z83qFtJ4IDg9mzfxcd2nXigvH2V0sZ27sH363eyP6kFLq0atoLw7HDBjN22OAGn989qhPdo+oeAbOXq4srd7/yFO2iWnPleNu35q1PSEgI7dq1Y9u2bZSXl7N161a2bt1K586dGTZsGDEx9k1BOJndu3fbVVpt5NnBzP0umY9nHuHjmUfqfY69tm171+5z6uLbbxA5yxYR+8AduEe2wsUvAIAKUy6lKUlgBt9h9s3hDggJ5fpH/9Mk/fMIjqQ4PYG4X94hoNMAq2kSubEbKcvLxDPc/v/fvJwsdm1bT0ZqdRiOiKLPgOH4B9r+f/HAueFc2jew3tD75pRoSipsj8Q+nu78/PIt/LpqN39s2k9SRi4ArUIDOHdAF84f3r3RF47SNBSGpdEiBk6iMPkQprjtVo/7d+hN+MBJzdSr49YfKcTAclW/K+X4zmr2LoY45vH3f+X3tXtY/cG9LNkUy5MfWkqCLVi/l/KKSp6c1vRltWyVl2lZIPjMlS/SdVAn/IOPb2tqGAY3PnuNXe3d2KYtm3NzKaqsZEO2ZaGHGfBydubGBtQe9nB1JTAslOXPPmP3uadSXlFORWUZZjNkm45vaRvkF9rgNsefcz7jz7G9ZNSfzd+yEzMwe/kaPFxd8XA7cQ6swf0X2b6JzIszP633mLurGx1iWjN+2BDc3Bo3z/b/vp1ORn42n9z4sl3n9WzfhdSs9Ea99jEeHh5MmjSJc845hw0bNrBp0yYKCgqIjY0lNjaWVq1acdNNN9nU1o8//njS44WFhXb17ZJLokhLLWXVqrrngg8bHsSUKc23mULk1Bsp2r+H0pQkSpOPUpqcVH3EEuLcIqKIuNr2rb33btpAQEgokTauDziV8IGTiP/1PXJjN5Ibu7H2EwwIH2Dfe+gXH77Gt7NmUFlhPS3P2cWVKdfcyrW33G9TO53DPOgcVn998D7Rtld/OcYwDC4c2ZMLR/a0+1z56ygMS6MZzi50vOReCo7upzDFUk/UO7IDPtGNn5/XFAa38aLhN+Fr23komRB/b7q0CeflL5bg6uLE1PMG8vm8DfyycmfTh2E77s2t/XVjTdLftWrv8W+7OvnbG4bbeXszo09fvkxMOKHOsC9Xt25NGy/7/zBcP+YcZsxfQFpuLuFNUKsYIDX7KF8ufJP4lNhaxwzgjXt/tLmt6a/Xv0DO3c2dTu27cN6YC3C3cfV8XuHxkk4lZeWUlJ3wx9rOH8kFq9ae8pS5Cxfz5mP/h28j5tjuOLqPo9n2l1b795U3cOv0R7jt+Ue5+eKrCA0Mtpqu0zrc/pFxT09PRo0axYgRI9i2bRvr1q0jMzOTpKSkU59c7cUXXzzptCGz2WzXtCJnZ4M772rP+ReEs21rHlnVdYaDg93o3cef9u0b9m8/bdpr9R4zDIMPP7zHpnZc/APo9OLbZC38jfxtm6023fDt05/gcefj5FF/4PuzZ2+YCoZBr2EjuOCGm+k52Pb56XUJ6jqEqvJSkld8S0VxgXXfPX2IGnkpQd1sf41fv/uMrz5+o85jFeVlfPPp2wQEBnPhZdc3ptsNlpFTwKtfLWHJplirHejOHdiFu68YTXiQb7P0S6wpDEuT8YnuUm8APvTTmxSnJ9DzZvtGm+pjzzbKX9/Qvkle85j07Hy6tLHMRdsbn0rvTq145e5/sH53PPEpdY8W1aWqsoqt/92Ki6cLvR7sVe8f5F732z7ftHP/jnZvCX0qbby8eKSLfVUZ6nMkI4PisjIGPPgQZ3fvjv8JdXYN4J1bbq7/5Hp8ufBN4pPr3uHMbOc/xu+Lfz5lMPrmpy9498VP8fP1O+nzAM45q/GlwY4JCwoix2SivKIC3+p/t/zCItxcXfB09yCvoIDElFRm/fwbd1x1ef393/jrSV+nsMS+kdJjbnjmAQzD4Ns/fuPbP36zOmZgkLl4W4PaBXB2dqZ///7079+f/fv3s3btWrvOt2fOra3atfOmXbvGL+w7ZtOmAxhGrTWlx9aC2sXJ3YPQC6cQeqF9C0jrZTazY80qdqxZRduu3Tj/+mkMnXB+g2/xh5w1iuDuwylMPUxZvuWOk5tvEN4R7TDsXIvw29xZGIbBRVfexPBzJhIQFFq9A10mq5fM48c5M5n3/Wy7wnBmQQX/XZDC6sOFZBZUWB0zDIh70rZR3viULCbeM4OM3AKr/9eDRzM5lJTJ90u38fvrd9Auyv5pNdK0FIblL1FRkEuZKbPJ2nv8xQ+oKLN9Ve+JticVsfFIEV0jPBjR3v6yNl4ebqRlmUjNMnE4OYsp5/QBoMpsxs2OWrpOzk5Ullbi7O7cZAveHv70niZp50T55eXsK8gnp6y81iD1eeH2LVCZs2o1BmAqLua3zce3Fj42ZaUhYTgpIx43Vw+mnDONEP8IGnMXIDw0guzcbMrLy/Dztcw7NuXn4ebmjqeHJ3mmXBKOxvPZnA+46+ZTr6AfY+eWyydzx9WX8/wHH/PSg/fSr7vl4mTLnr08/vo73PPPqwkK8Of+/73K2m07ThqGn/75dYyT/BuZMZ/0+MnUGzqb8ALN3qoQAQEB+Pn58dprdY+8/utf/yItLc2uPpSUVLJzpwlXVyd69vTFxeV4KFy6JIOs7DIuvbTVSVqo7cILB3PiP1RBQTGbNsVSVFTCeec1fqe2YzJ//5nKgnzCL7O9YkhgWBg+/oEkHthP/N49vPPw/cx5/WUmXns9Y6ZcgUcD7hIZzi74tGr8nPWUpASiWrdj2r8ft3o8MroN3c7qz8Y1S0lJsq/E5//9lMTSA/l135Sz47rqqQ9/Jz2nAB9PNwZ0iyEs0Bez2UxGbgGb9iaQkVvIMzN/55Mn7LtjJ01PYVjOOJWVlSz65Rt2bFlDbnam1R9YwzCY/vZXBAWH2dzevd8f5ccduXxzQzvMwFWfHqaquskXJrfiin72LQTr2T6SVTvi6Hn1dAAG92hDVVUVSem5tI207wo/bHAYKctTKEwuxDuq6UaZ0hMzidsZj5uHK/3G9G5wO6uyMpm+fz8llXXvvGRvGB7etUuDg1Z9okPbYSrMYWjPxlf5uOvmB/nvK4/x0nPv07/3IAA2bVvPw8/czQP/eoygwGDufuQWVm9YblMYPia7oJD8omKq/hQW24XbPp/5w2+/JyIkuCYIA/Tr3o2I0BA+mvsjn7/wLGd17sjO2FPvBmZu0mqqFr+8OrNJ2rn77rtxcWm6P01du3Zl06ZNBAcH41ZHNRl7RzfT00v5zxN7ya3eljciwp3/e6gTUVGWjTL++CODgwcL7Q7Dzz57Xa3HcnIKuOyy/xIebv9i1fpkzvuRsrRUu8JwcEQUz3zxLdtWLefXTz5iz4Z1ZKUkM/ul5/l+xtuce9mVXHWv7SUbT2b3R/9HaV4G/e7/xKbne3v7kpmewpG4WNq0t66EEn9oPxlpyXh72zcVYf0Ry92R87r60SnUHZcG1qZfue0Qft4erP3oPiKCre8kpWSaGDrtFZZvtW/3Pjk9FIbljPP+q0/y+w9fALVHmhoygrojuRhvNycGxHjx2K/JVJqhQ4g7hzJL+WxDlt1h+PEbJ3Dl45+Qk1/MoO5tuHRMX1Ztj6OguIxB3e1bVFZusvxB3fnKTvw6+eHq63o8LBrQ8eqOdrVXVVnFp09/xeqf1mE2m2l/VltKCkr46PFZXP3QpYydOtqu9t47fJjieoJwQ8x7/LEma+uYq8ffxTtz/8OM75+me7v+eLhbj1IN7j7G5rbe+/QNIsKjaoIwwIA+g4mMaMX7n73FVx/8RK8e/di5Z+tJWjkuv7iEL5avJSm79i5T9u5Al56VTWVVJT8vWc6oQZYdtVZt3kpiaiouzpYKJm6urqe8OxHo5U+Alx/v//OFOo7+P3vnHd9U2f7/90mTpnvvXVoKZZYlU0BQcLBxgIjiXohb8VFBcaIIKgIuVEAEZO+99x4FSksp3Ttt2qQjadL8/kgHoeuctD7P8/09/bxevF455865etMm53zu676uz8fElMVvklUkvRGuf1dpMnYNwa2Fasmr8fjjj9O7d2/Ky8vrJcNTp06V1ES3ZnVGDREGyM7W8cmseGZ9Em21pFpDcHd3IjjYm02bjvPqq2NEXaPLbFx/3WQ0NDreGGIGDCJmwCCSr11ly++/cmLndko1xWz+/ZcWI8NVsxT9zl7972LP1jVMnXwvAUFhuHmY5ffUBflkpieDycTAu6XJIrrZ2+DrLOenCc1TLSnXV+Dn6VKHCAP4e7ng4eJATkFdW+9W/PvRSoZb8V+Hw3vMNY3RXXriFxDS7BKC7OIKgt1sEQSBq9nltPVWsvvlttz5bTypBdJLLXpGh3B9zQzUmrIaEfWB3SLJ3f45NlVSYbmFGvQVBoJ8GifaeWfMzS0mTKjj1HXGpZLhLb/u5Mh6y3rK7nd3xWbmX5zfHyuZDKv0ejxsbZnfpSsB9tZbxP6TyC/KoUxXSlzKeeJSLEmqgDQynJOXjdFoZMO21dw1wJxpPnR8H6npKTXZSqWtLQqFOL3qXRcuk6Gq325VqgNdl3ZtOXslju+X/cX3y2rtdk1A1w5RVFZWkpiahr9349nmjoFRnLhxHm9nd2zlzc+UVuOrpYsaHX/ncfEudAB6vZ4jR45w8+ZNSkpK6uwQTZs2TVScmJgYYmJiGhwfPHiwpHlVWzHff78v7aOd2bM7l0uXivni8wQ++dT6GvEff7Sss66srCQlJZfz52/g4iK+DCH+tWdpvC7FWh2dWoS178DU2XOZ+NpbbFv2O/vXrRZ97c0tjX9OKkqlaQxPeWk6cbHnyEhNIiM1icy0m0BtIiUgOJwnXnxXUszn+3vx+a5s4nPKaecrvtnwdkSF+BB7I5OnPl3OiAGd8K5ym8tTa9l8OJaU7EK6RP7nlEdaUYtWMtyK/zoo7exxcfPgqx/F32Cbgt5YCUCSSs+gCPMNyUlpQ36JdVlPQRBqiHA1bG7RzH1s5lLOx6eTt/OLRuO4RDTdhCUFR9afwEZuw0tzn2b+tJ8BsHOww8PPjayb2ZLjDfD05ExhIW4tYIsLUGEw8MnqNaw9foIstZrKysqaMUEQKFy2RHLMtft/RldRXm9XpdQGuphO3Tl9/gRzF33B3EW1fzuTyURMp95UVlZyPSmeAD9xW+CJWTkIgsCoO7qx8eQ5vF1diAkP4UhcAqPu6CZpbm89+Tgz5i/ieopl/WNUWAhvPvk4OaoCBvXqQXSbxiWwnh04kQGRPSmr0NVLht++93m0VjTRfblkUaMLV6lkeOvWrcTGxgIts0PUUlCrK/DxUdbYLffs6cacrxM5d07NnK8TqZCgQ3srfvxxa4ONcgMHSpXl+ods4W+Dp38Ak995n/EviVuYABReO9miXN3Nw4vvlmxl+7o/OXvioIXpRo8+g7hv7CTs7KXVNG+9UoyxEu7/MZF2vna42FmnTT/1oYE898VKNh2OZdPh2DrjggBTHxwoaW6t+GfQSoZb8W+BlFvzhCen8ePcmRzcvYk7+g/FXoJbUn0IcbflWk45Q+ZfR1NupFNVbV+upgJf53/uKyCmLrPTtJbVnizMURMQ4Ue3uywVKOwc7SjIlk6GX4+I5KWLF5h05jSdXVxxlFs+FN6Jkiaf99WGjXy3dVv9g1Z2/BeVFOKgdOTJEe/g4eKDjcx605N3p83kX5++QcKNOIvz7SKjeXfaDLJzs7hrwD10aCfOQrVUp8PLxYmekeFsPHkOW7mcgR3bcT4phdjkdDqFBImem4+nBz9+9D7nrl4jOcP8wA8PCqBbdG0N8cuPPtJknJ5hXegZ1rBCyd0dxLvZ3YogH38LklpcoqFIq0EmyAjy9ZMcLyHBLJXn7++Pl5dXs80JysrKWLp0KWfOnKGwsLBOpnnNmjWi4jg5yVEoav+fMpnAq6+14aOZ14iLs37L29/fnVtZoCCAh4czvXu35+mnh4uOI7NVInd1w6eBmuDsP3/DUCw++/r8p7Nxcfdo9D0OTtJqcmU2CuQO9ScCKrSFmEyV9Y41BDs7e8Y++ixjH5XegFsfqmuGAa5ml1uMSVmGjb8rhtJyPZ/8tgNVUanFmIeLAx88NZzxQ2KaMdNWtBRayXAr/i2IGDONSoO4WrW+g4ezcdVi5sx8te6gILD5aJKkn/1MX0/e2pBBkkqHm70N47q6cS2nHFWpkf5WqEn8EyjPL0eTosFGYYNHl8YfPI3Byd2RvAwVWnWtfqcqq4DMpGycPaT/XzdkZZFSWoqAuZmuGtXJG6lkeM3xEwjAw/37seroMQI9POgYHMzpxESeveduyfMDiGnbl+tpsUQGdWoWEQazmsTi7/7i7MVT3Ewxa2a3CY2k+y31sNOeE18bqZDLkQmymteF2hK0ZeWU6HRcz5KmYLB04xa83d24b+AAiya6K4k30JSU0qerOIL+T+HSip11zh04e5zHPnyV6U+8LDmeXC7H3t6eZ59tGYLz1VdfsWvXLqB5mWb/ADuuxWlQqfR4epoz60qlDe9Oj+KD96+Sn2+dys327Z9Zdd3tsAtrQ3nKTdwH3V3v/yt37QqQQIYHjRZf1y4Gtq5eCIJAx2e+rnfc3EAnvWa9RFuMjY28Thb4RsIVykq0dOom3q1xfFe3FmvznXzfHUy4pwfn4tPIqLJjDvR2pXu74P+oW2krLNFKhlvRbJgqK1FdPoQmNQ5DaXGdjEvbh99F4egmOt7cj18nPeVGvTJN1tygxse408HPnuQCHT1DHPF2klNpMvHn42GEuIur/fynYKo0cWPlDXJP5ZptUkOdMZQbSFyeSPi4cPwHSTMq6NQvmqMbT/LhWLPSRWZSNh899CVGg5FO/aXLfK1KNzfj2AgCbgoFNs3cnk5XqQj08ODnF19g1dFjBHi4s+rN1+n46uvoKiqaDlAPnB3c0JYW89Wfr9E+tBt2tpYPw/v6ThAd6/e/fsLby5cRw8ZYNNFdjruIRltM3153Spqbi709RaXmjJCXixNZhWpmrzfXhjpLrMFesmEz0RHh3DfQMnO7aMVqrt1MZs9vP0qKV6ov49dDKzlx4xwqbaHFPoYA7HzzT0nx6sPgHn3pEd2FeX/9ItmmuUePHpw4cQKtVouTU/MXrUePHgXM0myhoaHY2FhHRLp3dyMvV8ehQ/mMHVtb7+nmpuDd6VF8MycRo9H6MoXk5BwSE82mIpGRAYSFScuquw+6G835MxjUhSjqyei69u6PoUht1dwunzjG5RPHKFLl19FDfv6T+hoy68LBLxx1wmkM5SXI7erb9ZP2uysrLWH2h1M5e/wAgiBj0LBRvPzOZzWkeOFX75MQd0lSEuWbseJ3bMRAIbehd8ewFo3ZipZFKxluRbORtu9P8i/uMx/cfh+zgjvFnjsBgsDgYaPx9Q/CRqIIe32I9rMj2q+2EcLXWYGvc20d7HMrU4nLLuPwa/9e17z03enknrTMgnh29eTGihsUXC6QTIbHvzqKqyfiKcxRA1CuNW/xufm4MnaqdFthQQBfpZI/evTEzkrycCvkMhmezuYtVVu5nNyiYmQyGQobG5YdPMSsieKJazX2ndkAgkCWKo0sVVqdcSlk+Le/fqRju86MGDbG4vz8X7/hWsIVDm4+W/+FDaBdoB+JWTnkqIvp2y6SdSfO1HxH+rWT1hxZH3R6PSp1kVUlJh9v/Jatl8zf29tLeqyRvzt68YzFcWVlJYnpyZyJu2TVIlatVmMwGPjhhx8IDw/H7jbXtNGjR0uKp1QqcXFx4bfffrNiNrUYOdKPkSPrJ6jBwfZ8+511GXqNpoyPPlrGvn0XLM7fdVdXPvposugmOs977sfznvsbHPd/TJyN9e1Y/9NCVi/4tu5AlSuIWDIcPGQSfr1HIqunXh2g7YR/YZKgYLPmzx85c2x/1VSMHNi5gdzsDD75dim2SrvaOVoBvaGSglIjxkrL6wPdxCdRzsSlsu7ARZQKOY/c0532obVylG9/v4Hrabls+Po5q+bXipZDKxluRbNRGH8SAKfAtti6itf/bQiBoW0wVFTw1kffNjuWWORqKkhXW5eZbNbPPZGLIBNo91Q7rv16DQAbpQ1KdyVl2WWS47l5u/Lx2vfYs/wAyZfNjVZhnUIYOnEQzu7Ss2uPBAaxPD2NYkNFi5BhbxcXcorMW4XBXp4kZefQ8+13ScnPx60ZFsLWPuzEQKcrR1WQZ5U27/BunRnezUyOfN1ccHdyJENVgK+bK5H+4jSa737yecC8rrx242bN8a1wd5XeiHkwwfy97RDQlnCv4GaXmIx846l6t+VNJhP9uvSQHO/ixYsIgoBOpyM+vtZhsNo+WSoZHj16NKtWrUKlUuHp+d/n+PXpp3+xd++FOuf377+IQiFn9mzrSGxLYc/fy8FkwkYux8XDExsrtaAVjm6N7hTaOkmTujy8ZwuCIBDVMYao6K4c3b+dqxdP89WMaXww+2er5qjVGXl3Ywa7rmkwVN5eUiPege7YpSTGvvsrxqpG4Z83HGXRu48w6k7zPeFiYgbn4usu4Fvx70crGW5FsyGT2yJ3dyZqQstoyD4yZSrzPnmLv5cu5I7+Q3FwtCRxPiI7+f+T8PVwJsjHrcn36dV6HPwc8OhsuZ1po7RBV6iz6mc7uToy5iXpWeD6cLKwAH1lJZNOnybc0RFHm1sb6ATmdhFvFQ3QMSSYbefOk5CZyehevZi7eQvXs7IAeKBHd6vm+P0bG6267lYMHGn+2YIgcDXhcs3xrXB3az6BCvPxIszHS9I11Y9igYY3kB8YJK18A0Apt8XV3Zm/X1wo+dqGUF9pU68OXfn+rY8lxwoNDW1R1YjMzEx0Oh0TJkygR48eFqUXgiDw/vvS7l/l5UY2bsji8uViiooMdcoGvp8v7btx8GAsggBPPjmM++4z16jv2HGGxYt3cvBgXSUCMdDEnkcbewGDurDOWPBLb0iKVabV4uzuwZxNO3B2azkTkEpDBYbS4jrnbV3Efd/yczJxcfXgy4WrUChseWTKVN5+/kFOHt7Nz/Okf+4A5uzNZevVunMCJFVxfPPXPgzG2mbAcr2B579YiZO9kiE9oxq5UhpMRhOCzX9OYeX/B7SS4VY0G/59R5O2908Krp3AtU0MNrbW6zICfPn+ywiCwLIfv2bZj7c1WVjRQPdPITlLxdm4NOztFNzfr6PF2LKPHhcVQ+GkoLygnIqS2qy0rkBHaU4pCifr5MyybuYQf+Y6xSpNHXIy+sWGt0/rw8WiohoSdl1rbsqrPrbm1vv71JfRGQw4KpV8+NCDOCiVnLlxg47Bwbw1epQVEetCX6EjpzAdL1d/7JXitparf0+CIDRoKTzqXumNRIv3HGpwTGFjg7+7K33aReJs3/B35p2nzc5kXy1eQoCPN4+NrP0bKm1tCfH3o02w9BrHh3o+wLLja8nTFODtbH3TZjUuLN9hcSwIAt7uHtjZWmdEMWXKlGbP6Vbs2LEDQRAoKSnh8OHDNeerM81SyfCvv6Rw5Iiqxebn6KjE39+dadPG1Jxr2zaQvXsvoNVK3yXKWbuCnFXL6hkxf3ulkuHug4cSd+Ykjs4tIwdZXpBNys7FlGRer2dUEO1Ap7R3wNPbt0b7283Di1nzlvDms2PZvPoPbOTS76O744sRgJfv9OaHw3mEutsyIMKJrVeKePMu8bufV5KykAkCyz6aTJ9OYfy66ThfLNnNU58uZ+vcFyTP61YUXS8ibVsamhQNTsFOBN8fTP6ZfHz6+uDSpmUlO/8X0EqGW9FsuEX2IPfsTpK31tfAI/6mdisaIiT/DWtfo7GS179dx4pdZzFhokf7YDQlOl6e8zefvziS58b0Fx3Lrb0buadyufDFBQBKc0q5+PVFTEYTbtFukue2/+/DLP/8byor6//9SSXDXVxdW/R3bmdri90tLmBvj5G21V0f9p5Zz5WbZxgz8EkclE7MWzUdTakapULJC2NnEhHYdOPgv14zZ5A+/3Ymgf5BPPFIrYKBUmlHaHA4EWFtJc8tOSev/g9t1Z/nelY255JSeH74Xbg51k/chw/oB8CFawkE+njXHDcXGYVZlFfoGfHdFHq36Yaz3S2ZUuDTcdIcxUL8apvJCqoatKwlwv8EYmJiWjTTfO6cGoDwNg4EBtgja2Zm7sEH72T58n0UFGjw8DDX1atUxeTnF/Hkk8MkxyvYtRUwIdjIkbu6QjPLYMI7dOTkru3MmvIofYbfj8NtpHjg6LGS4qXu+o2SjPqIMCDBkMbHL5C0m9cpLyutaZrzDwrlw69+4f2pj6LX6yT/3XM1BkLcbXlrqC8/HM7D3cGGz0YEcChRw+Ws8qYDVEFTqqN9mC/39jXfg96aNJTKShOzl+1hwge/N+kW2RCKrhdxdeFVTNX3eRMo3ZXmRmxoJcNWoJUMt6LZSN7+M+UFWfVvH0l02QJ47YM5zZ/UP4h5K/ezfKdls9ADAzry6jwZ249flUSGQ0aEoE5Qo1eb5ZiM5ebGEVtXW0IekG4FuvWXnVQaTSiUcpw9nJv98P+uS9dmXX87vly3vsExe1tbOoeGMKSztAakc/GHycpPxc8jmB0nVqIpMW8J6/Tl7DixkpfHz2oyxn13m7PS52PPEOgfXHPcXIT6eJFZoMZYacTXzRWAHHURNjY2eLs6k6suRltezv7YOMb2abyu9sFhQ8lWqcgvVOPl7gZAXmEhCckp+Hl5ESExO7zp4h4EBLS6UvbFHas5b8KEgCCZDAP8vP4v5v31K7mF5oypj7snr098mufG1a952xiMRiP79u3jypUraDR1dzlmzJghKd7ChS1XDgJgayvDyUnOF190bPrNIpCRkY9eb2DMmI/p1cu8hX7mTAKVlSZSUnKZMWMpYM64f/zx5CbjGctKkbu4EjXvZ+QtkM1dPudLEAQSLp4n4eJtTo+CIJkMl+YkgyDg030Ydl4BCIJ1ZL1j117ciL/M9vXLLXSGozv34I2Zc/nyfemyfrZyAUelWRJRKRfILq6gwmhCbzSx7WoRs0eLK9Xzdnei6Las/juT7yYlu4CVu88BNGi00hjStqVhqjTh0cWDgktmh0t7H3sUzgqKbzZQ3tGKRtFKhlvRbGjSrgECHh36YOvihdBMcfy7H3iwZSb2D+GvnWdQyGX8/sFjPPaR+QHlZK8k0NuNhFRp+pi2rrZ0facr2Yey0aaayxCcQpzwu9PPqjKJUm05Hv7ufLbhA5QOLZ+Vu6bREFtcRBsHR3q4S68b/GLd+iYzzQOi27Pm7bcsMsiNIb8oB3cXb2wVSpKzE3B18uTtSd/wxdJppOfelDS/h0ZPIic3i3xVLl6e5u3QvPwc4hPj8PMNIDJcWp1fl9BgsgrUTH3gHrxdzNm+vKJiFu3YT/c2obT19+WHbXtJzGr6c/PNH8tISstg1bzZNeeUCls+WfgLkSHB/PDhdElz6xnaxaoHcUP44o8FzPnzZwvSmlOQz3sLv0JVrOa9KdJIyaFDhzh27Fi9Y/9JB7pqDB3qzbZtOajVFbi5Nd+hccuWUwgC6PWGGkWJ6l/l5s0nao4FAVFk2KVnb0quxGLTTNMiCzSwY9fQTl5jUDh7IAgCQXdNbNaUJj//FmMmPI2inl2IAUMeYOnmnhgkyjZ6O8nJLjZfE+puy/U8Hd2/ikOjq8TTQTxp79TGnx0n4jgfn063drWL1e/eGE9mXhGHLtyQNK9qaFO12Hna0f7p9hx7tfY7YutiS1mu9JKaVrSS4Va0AOw8/DAZDYTdX7fL3VokXb/KmmWLSL5h7iIPj2jP+Mkv0KatdK1cMfh5Qgh6kdqgmflFtAvx5b5+lnNxsleSkaeW/LMVjgqC7wuWfF19GDC6D0c3nUBbVNoiZPjz+Gvsyc3l26oM8euxl2oefG+1jeJ+P+nOYtB4D8qRuGvM27yF98aLq9GtqNBh62wmznmFmQT5RODi6I67izfZ+alNXG2Jr+Z/wo3k66xfUmsgoVTaMWP2u7Rt046fvlkqKd7BK/G4ONjXEGEAb1cXXB3sOXQlgd5REYR6e5KUk9dkrNTMbIJ8fXC9pfHLxcmRIF+fGkc6KVjyzFzJ1zSG3zb9DUDfzt0ZPfAeADYf2cvRi2f4bdPfksnw5cuXEQSBzp07c+nSJVxcXPD19SU9PZ1evXo1HeA2GAwGfvrpJ/bs2UNeXl4dPfQjR45Iipebq0Ovr+T112Lp2MkZR4fax6kgwAsvirPsrUaPHpG0ZCGYfXgkRcePcGPm27j1G4jNbY3I7oOkmdz8FdtASYOVCOg/nuRtP1GUdBHXNtbvQNk7ODbqUurhJU615VZ0D3Jgd3wx13LKeTDGnc93Z6PRmRvhxnUVnwSYfN8duDrZc/VmlgUZltvYsGTmZGb+shV9hXgZuWoIsrq9DaZKE/oiPYLsP79Q/L+IVjLcimbDr/coUnb8QvbJLeYGOqWlmYDYruBqHN23jdkfvoLJVFnzhU+7eZ3De7fy7ifz6T9EWt2rsdLE3+cKOZZcQr7WUMdcYMWUcHycxWd2PF0cSckuoKC41rIzPbeQhNRcPF2lZ2HKcsooSiyiQlNRhyVKJckPvT6aK8fjmP7ARwRFBmDnVNuYJQjwzuJ6XP0aQbxGi72NDZ1dXJibmEilyUSIvQOpZaWsz8yUTIZ3fPg+D8+Zy+eTHmVsH7Mj1LoTJ3h/+QoWv/wShSVanl/0E+tPnhJNhl2dPMhSpbFy9wKKSgrp7R0GgLa0CKcGLF8bQkraTYIDQnB1cas55+LsSnBASI0jnRSU6nQUlxnZeT62xnr5alom+cUaC/cpMU5UxkojBUXFGI3GGsMIg8FAQVExlZXS7Gv/Cej0Ovy9fNj0zeKa+T01+hG6PnovmtKSJq6ui6KiIlxcXBg7dmwNGZ44cSLffvstBpFulrfi999/Z/ny5ZKvawiHD5tLQcrKjJw5ra4zLpUML17cdENbfn4RFSLJU9ayXwGB0oRrlCZcsxwUpJPhlkbGwZWAiRvr52GjdMDmtmbXTs9KL5e7cPoIF88co7Agj9vlPV57v37Hu/owd1wtcW3va4e3s5wL6aW097VjQnfxZHh4n2iG94mud8zF0Y55r40XHetWOAY5UpxUTOKKRAAqSipIWJJAhbYCl8jWemFr0EqGW9Fs3Ny8AATIPLKGzCNrbhuV3kD3x8LZVFYacXR2oUv3voDZiEOrKeKPRV9JJsMzt2Wx/Iy5rqoFPEG4q2cUK3adZcCz8wCIT8ll8IvfU2E0MrSnNNOO7KPZ3Fx9s8FtRqlkeM13m8hKMtv8psRV6Vc2Q/4hT6/D384OQRBILNES6uDAHz168ujpU2SWS9+Oe+uPpQR4uDN58KCac48PHsyC7Tv4eNXfHP3iM37bu48LN5NFx+wW1Z89p9dxLHYXgiDQLao/RVoVaq2KDmHS5NqMlUZUhfkYjAbkVWYvBkMFqsJ8KiulZ3DaBfpzJTWdI3EJHIlLqDNmMBrJKCi0yBw3hGB/P5JS0/lk0S88dK8587p2116KtFoiQ6TvLFQYDXy/5ze2XdpPnkZFpUWmFGJn7ZYUb3jfQRy7dNaihKHavGPkgKGS5yeTyXBwMBMkGxsbSkpKEAQBmUzGhQsXuOeeeyTF2717N4IgMGzYMHbu3ImPjw8RERFcuXKF8eOlk5LoaOd/e0fv66//xJUrKZw7t0DkFQ3swVgpy33h8EGObd9CYW6uxfdBEAQ+WFyfckXD0BfXKnEYy0sxlpfWDlrxe135+3yW/1J3t6NaLUQKGb4dY7u4MbaLm9XXV0OnN5Cn1nL7HyDIR1rJWeA9gRT/VEzuCXN5VXl+OeX55sa+wKH//dKj/41oJcOtaBk0dHO1ooEuPy8LBydnflyxF3dPbwDUBfk898hdqHKzJMfbcsVs8tAzxIEQd9tmP78+eHI4B89dJzPf3KigKTXrAft7ufDeE9K6vtN3pWMymZDJZSgkZKcbwuF1x0AAD183PPw9sLFpXv02gL4q65heVkavqjphBxsbCvR6ybGuZ2VhAnZfvMQ9Xc06rPsvXyYpJ7fm7+Lu6IRMQk3oiAGTcXH0IF+dRcc2vQj0DiczL5lhdzxIZJC05qbQoDASbybw0ezpTBhrrsv8e+NyiorVtG3TXlIsgNG9u1FpqiQuzbKMoUNwIKPu6EaJTsfgTu1rmusawwMD7+T7P1dw5Ox5jpytbWASsE5n+McDf/Lbkb/rHzRJ/5Z0i+rIlsN7GfXm04yqKpPYcngvmhItXaM6sHLXppr3ThjWdIOio6Mj2io5Pzc3NwoKCliwYAFqtRp7iVbWADk5Ofj4+DBz5kx27tyJt7c3X3/9NWPHjkVvxWd55kfSPw8tAbH1uV3+3t6iP/fIlo0s/Fc9TZXVhcwS4d+v+Uoyt2Lbuj8xmUzYyBW4uXtabbcN8NaG9AbH7OQyOvrZMbarG3YKcffXxPQ8pn2zhlNXU+qMCQjk7fxC0vzcO7gT9UQUKZtSavTole5KQkaG4N6h5TSg/5fQSoZb0WyE3vtMi8Zr16EbhQV5NUQYzNqR7h7eFufEwl4hw8NBzuqn2rTI/Pw8XTj042v8svFYjXtQt3ZBPDOqH4724m06waweoXRXEvNeDDbK5ju82Tna4eLpwpdbZzY7FkCAnR1JJSU8fuY0JQYDUVX1qiq9Hi+l9JrkzqGhnLlxg4e+noODUokAlOjMN/OekREAXE1PJ9hLvDGFTJAxuPtIy3l7hxFQVS4BsOPEKlRFOUwaPq3RWCOGjWXej19y6Pg+Dh3fV3NeEASrdIbtbW15dGBfCjRacovMiycfN1c8nBxrxvu1FyfZNnroYFIys9i074CFEceYu+9i1JBBjV1aL7Zd2oeAwIiuQ9l8cQ++Lt608wvnYlocE3tLJyof/DgHQRA4HnuO47HnLMbeW1Db9CcgiCLDvr6+xMfHk5+fT3R0NEeOHCE/Px+Adu2k26bb2Njg6mpedCgUCgoLC5HJZMjlcrZs2cLLL0tXHfhfwo4/l4DJhG9IKDmpKdg5OmLn4EiFTkdIO+kLA/9+0tQnmkJpiRZXN08WrdyDi2vzCOGaC+omkyaLT6hY+3QbXO2bvm+/NnctJ6/UJcKA5ISRqdKEXq3HOcyZ7jO7YygxlwxZq0vfCjNayXArmg3PTgOaHSM3O6Pm9UNPvMQX/3qRpT9+zcB7zA/Nw3s2o8rL4fk3PpIce9pAb2Zuz2JTrJqhUc44NpN0zluxn9cn3sU7ky1r7oq0ZYx951e2f/ui6Fg+d/iQeyoXQ6mhRcjw+Gmj+POzVdy4eJOIrtJqFuvDQ4FBzE6IJ62sDGe5nGE+viSVlKCuqKCHm5vkeN89/SQPfjWHLLW6hgQDBLi78/3TT5GUk0OnkGAGRNdfZ2ctrtw8Q0r29SbJ8LgRj5CSdpP12/62MOIYN+IRxtz/kOSfu+74GTycnRjcqT0ezrUNTFdSM9CWl9M7KkJSvGmTJ/LwfcOIryojaRcehp+Xdc54WUW5+Lp48eWD09l8cQ9+Ll4smPQpd895FL1BeqYUxGUtxdpaP/jggxgMBmxtbRkyZAgKhYKMjAx8fX25807pmXB3d3dUKvPWvJ+fH+np6UyYMIGsrCycnZsuU7kdBkMlq1ZmcOxYAYWFFRba3oIAK1ZKb/JraRSfP03R0YNUFKgw3VJXLggCbWZ+KSlW+o1EHF3d+Gr9Vp7o0YmgiLa8s/BXXrtvCIPHWFf7CqBT51FRUmgxPwDnYGkEu/eddxN77gSOTs2vmQ10VZCnNaA3mnCrIrvqMiNKuYCjrYyCUiM38nV8dzCXGff6Nxnv4vUMZILA82P70y7UB3kzre3PzjqLrYstPWf1bCXBLYRWMtyKFkFpbio5p7ZSlm/eXrL3Dsa31/04+IjTyn16XF1CvXrpQlYvrdUGNZlMzHxjimQHuuHRLiw+oeLVtXW3vqT4zFfj0993YmMjY9rDtdm43EIN46cvJi45W1Ks0FGhqOPVnPvkHA7+DtjY3WJ3LAh0nCptm3/Dwq0YjZV8NvkbHF0csHe61dlM4Ksd0uxJh/v6EunkSEZZOZ1cXPCwtcWEiTmdOhPQiGtaQ+gUEsKFuXNYfew4cenmBVCH4CAe6tcXpcJ8U//r9dckx21JvP7idCaOf5y4hCsAREd1xM8noImr6sf5pBSCvDwY3MnywX4kLoF0VYFkMgzg5+XZIAGe+smXXLuZzJ7f6jPAsYSNzAZ3x6pMqY0clbYqU2ojZ93ZHbw5/DlJ8yrYe0nS+5uCXC5HLq99RA0cOLBZ8SIjIzl8+DDJyckMHjyYZcuWkZpqVhuxhlyvW5fF5s31f9+tUBprcRQe3kfa/Pqa0KxrIKg0GvAOaIPCVonMxgZdWRlOrq64+/iwdtF87hwlLdNbUaLmxobvKc2u734uvdcksl0njuzbxvQXH+bOoSPqOOUNvV88Yf/wXn9eX5fO8kmh9G9jXsQeSdLyzF8pfDoiAG8nOY/+kczeeI0oMhzg7YpMJvDpCyMk/Z/qgyATULorkcmbXwLXilq0kuFWNBuFCae5uWURmCpraofLVRkUxp8ifMSLuEc1nSERrVNpxVPm9fXp3MjX1Z+PsuKhZSMTmLV4OzJBYOpDA0nOUjF++mKSswpwc5JWy5iyOYWyHHMjWkm69I7726HKLKh5XVJUSklR85pSACIcnYi4RZbJ01aJ5y2anh9evcKNkhL+6nVHk7H+OnwEL2dniwY6gJS8PMp0etoH/Xc0f/j5BDRIgJ9/83GuJVzh4OazDV6vLqn9vRsrKy2O9QYD6pLSmuayFofI74inozv5GvPnJcDNl1RVJiO+e5IMdTYudk5NXG0dJs94jcs34jm/vOl61oMHDzY4JpfL8fPzIyJC/GJi1qxZVFRUYGdnx/PPP4+9vT1XrlwhMjKSJ554QnScahw7as4yD7jTkyOHVXh42BIaas/16yUMGy7esvefQv7WDYAJW78A9NmZyOzskdnZY6rQYxcqvWTM0dWNkmJz/4WLhyfpN66zeNYMMm8mYauUvjDOOLSa0qwGEhtW9Josnv8ZgiBw7fI5rl22LNNBECSR4dm7swlyU9QQYYABbZwIdrfl6z057J8WRa9QB86kljYSpRb/mjKMF75cxe6T17ind/NrzYPvCybxr0RyjuXg20+6dFwr6qKVDLei2cg8tBoqK7Gxc8A52Ly9rUmLw1heSubh1aLI8BcLVv5j8zuRXIIgwOhOrgS52SJvpg7jbx9M4tnPV/DRr9vIKShm3f6LZBdoCPByYfUXT0uKVd0NbOtmi9Jd2WyNyH6j7vi3GxKo9Hqyy8VZlL7408/0ioxgWIylruhTPyzkXFIShcuW/BNTbHE0tdX/zcYqsidAVqG69vgWuDrUb7/870KUXzj7rx0nKS+Vezrcya+HV3Iz31wDPyRavIuiFOQU5JGaI04T+cCBA01+lkNDQ5k0aZJFBrkhKJVKlLfUuU+ZMkXUPBpCfr4eT09bpk5tw5HDKjw9Fbz9TlumvnyRCv0/I3Xn6emCn5+HqPfq0lOxcXIm6ptFXJ40GrvgUMLem0X81CfxuEuaEgdAYJsIrp09TXGBig69enNs22b2rlkJJhORVjhValIugyAQMmwKqTt/x84zAI8O/ck5s42Qu6dIjgeNJFUkJlEyiiowVpr483QBD3Q0Z5h3xBWTlK9DXmW7rZTLsBVpwT3zl22YMDFxxh+4ONrh6libNBEEOLf0XUnzS9uWhiATuLHqBjfX3TSXStwylR4zG3ezbEVdtJLhVjQbem0BNkp7Ojz5BYqqbdeKkmKu/vYuek2hqBidu/f5x+bXxlNJhdHEt+NbxthixIBOLPv4cabMWsaidUcwmaBDuB9/f/YU/l7S6tVs7GxQOCvo/qE0CbD6UFlZydip5m04Dz/3/wqXLrEoLNFa5WL1X4tbO9zq+W/JZDIGdZTeBNaS+ObhD9Eb9dgr7Hn17qewt7UnNj2OKN82PDfo0f/o3G5FY5+LlJQUjhw5wuDBg5uMs3jx4gbHlEolUVFR3HFH07sb1ZDJBJydzY9QuVygqMiATCZgYyNj//58Jj1m3f0mPT2P2Nhk7OxsuesuS5L57bcviI5jqjSi9PZFprAFmYxKXTlyJ2fkHp7krF4uWWd48tv/Ii8zHZMJJr/zPkUqFTdiLxAS1Z6nZzRteX47DKUa7Dz88Oo8iNSdvyOztcOv9wMUXDlC4bUTuLeTVnO95Xiy5Dk0hN6hjhxO0vLh1kw+3Fq7eDMB/UMdqaw0cTW7jGB3cQ3TaTnqmtdF2nKKtLXJA2tu09UKEgCVFZUWx62wDq1kuBXNhqNfBBWlRTVEGEDh6ILc0dXinFj8tfi7BseUSiVt2nakW2/xNX5TB3rz1oYMFh7OY2iUM05Ky1qrQLemb2grd9fdEh87uCt/7TyLk70tj93bi4PnzQ5NE+4RvyoPGRFC0uokNDc1OIdLb+K5He/cOxNXLxfm7v2s2bFaEl1eqzUUuJScYnFcqteTX1xs0WDW4vg3E+2n7h6ICfh9zyG8XV0Y2SumZkwht8HDyQkHpTTlkZaGUmGLUlE7hxcGT/oPzqYunnzySf766y+GDx9Ox47m2vnLly+za9cuxo8fT1lZGRs2bODq1auiyXBTC8Ru3brxzTffWGSQG4KrqwK12mzZ6+WlJDu7nNdfjyUvT4ejo/QGKaOxkk8+Wc6mTScwmUx07hyOVlvOjBlLePvth3j00bskxbNxcsZYYpamk7u4UZ6WQvrP89FlpCGrx7q4KYS2jya0fW1j6/u/Nm8XR6ZQIshsal7r1blUlBRhKNNQnHy5WbGbi9mjA3huZSqXsyx3vDr72zN7VCDpRRU80MGVmCBxZXHvTJaus90Ygu9tmcROK2rRSoZbYRVuFUz36z2CpE0/kHlkDe7tzBnewviTVGgLCR4i/QH716/zmnxoderWm4/n/iGqVu3l1WkIwNd7c/h6b47FmNgGupe/Xl3vCl4QoKRcz/s/bjYfI0giw2nb0qASYr+NRe4gt2igA2nbXTKZDE9/D+SK5qtStDRSqiSxBEBnMNQc34pRPf+57vt7+0xAW1b0j8W/HeG+ZgnAuzpH4+roUHP834SF+xq2llYqlET7R9Avsue/cUaW2LZtGy4uLnTr1q3mXPfu3Tlx4gR79+7lhRde4OzZs2RmSrOibizTfP78ef7880+efrrpcqeQEHvOnlWTkVFG797ubNyYRVammTz17Cld2mvx4h1s2HDc4tzQoV35+GMbDh68JJkM2wWGoI2LxVCkxqlTF9RHDlCwZztgwqGt9F2JuDOnGhyzVdoRGBGBXSO2yLdD4eSOvqpmXenhS1luKrE/vlozZg3OHNvPoSrlodtNQT7/YYXoOAGutmx5PpKjSVoScs1Z13a+SvqF1y7YZ9zXdONcNd6dLL0spTFINWNqRdNoJcOtsAqXf3mzzrnsk1vIPrml9oQJEtfOldwVXHN5Iw+ty+dPsmbZjzz6zGviYkkeqG8+Yn6OtAzkrdtbhlIDhlLpNrO3YsxL97P4wz85uOYogx78Z+o+rcH0sWMA+HL9BgI9PJg8qFYZwEGpJCrAn3tvIT1icPTSDlHv69/lXjq2+c+QuhBvT/KKNBRotDWZb5VGS0JGNt6uzkT6t2zzi8kk/hO4YP/SJpv4eoV14cfHv7DIIP+7oFKpMJlMJCYmEhkZCUBSUhIFBQU1i2V7e3vR5UCLFi3irbfeYtq0aQwdas7U7dmzh/nz5zNr1iyKi4uZNWsWe/fuFUWGX30tAoOhEqXShkcmBKK0k5F4vYSQUHvGjhVPlKqxceNx5HIb5sx5htde+wkABwc7/PzcSUqSplID4P/Ec+jzzIv/gCeex6BWU5oYj11IGIHPNi4xWB8+eXJSo3v6coWCUU89x4Mvi7N8d42IoTg5lrL8dHy6Dydlxy8192Of7tLJ4/4d65k7q66ldbUDnRR8dyAXPxcFj3R3t2iiO5tWSlGZkSFR1u3ipWQVkKWqa5/er4u0hsaixMYX9q6R0ndk/9fRSoZbYR1Ecz7p29OzF63m47ee4plXP+DOoeYa2EN7NrP4+894Z9b3aIrVzJ31Bof3bhFFhueMab5CgWqXNE1OsfDu5d2ilq7rF2xFZiNjyawVrJi9BmcP51ueX9Kl1cRAzF/4vfFmw4rDcXFEBwXVHDcHq/YsarLgTsBMhlsSJpNJdH3zjvOxFGhK6BEZVnPO2d6O3Rev4OnsKJoMGwwGnnhvBo4O9vz00QcNPtwXzHhPVLxb0Rh9Pp18iV8Pr+TlIY9Ljlvvz5JwO6jWAv7rr79QVMnuVVSYyxICA83f6dzcXNxE6l1/8803+Pj4MHJkrUHLqFGjWLVqFYsWLWLp0qWsX7+ea9euiYpnayvD1ra25GrcOOvk96qRk6OmTRs/Bg+2rBN2cFCSnS2u9+JW2Ie1wT6slmS1mSHN5axeNPIHNOj1rPtpAT5BIQwc3bTMWuDAhwkc+LB5rl5BKF29KclOwt47GJdQaZKSAJv+/h2TyYR/UBhZ6cnYOzhh7+CAXqcjvK003fJ5B3LpFmTPI90tM9Sf7MjiUmaZZDnOnAINj81cwvmEeuQ9rXCguzL/SsODAvT7tp+keK1oJcOtsBJtH5n+j8Ve9M0MvHz8GDbykZpzw0dNYOPKxfyx6Ct+WLad7euXk3gtVlS8B2P+O+0pTZUmQu436zDbutu2SMPbrdJq+vIKi2NrSPeSlBS8lUru9/OzOH+luBiNwUAfDw8+7dCRikpx3fO/vvQiBVot6pIS3BzNW6rqkhLSVSo8nZ3xd7fib9XIA9ok4XdqMFTw6PNjcXJ0YvF3Kxr8e/w8d5nomKpiLZ7OTtjeonZgK5fj4eSISqMVHUcul1NWrsPezq7FGiOXPj2Pl/58n3fue5F7Ow0GYEfsfr7a8SNfP/w+RaUa3ls7mx2XD4giw18tXUSAtx+P3WdJhE5duYBaU8ywPgP585Pv0Im0Ph4xYgTLly9Ho9FY2CW7uLgwcuRICgoK8PX1JTQ0VFS8lBSzA9jx48fp27eveW6nTpGeXktQXFxckMnE6beuWZPR4JitrYywMAe6dBGfoXNzcyQzU4VaXfu5yMoq4ObNbNzdpdfTa682fH+U2dqiDAzBRoKt9UtfzGHxrBn0GnoPfYbfD8DxHVs5s28Pk96azs2rl9m/9m/2rl4higzfDqegKJyCoiRfV43Um9dxdnFj4fKdjB3UjpA2bfnomz945sE7uWfEw1bHrUZ5RSV5WoNV7Qezft3OufgGLJ6tkJFrFP8f9SH/O9FKhlthFaS6A0lBRuoNTCY4c/wAPfsOBuD8qSNkpqfUJAKdXNwQRD60AK5ml7HoSD7xOeaavva+drwwwIsOfuIeBqPf/pn2ob7Mnjqa0W//3OD7BGDD1+LNCm51EmoJjHrxvhaJU40/UlPo4OxShwwvSLrBNY2GfXcOxNNW/Bb6MwsXcTLhOhfnfVNDhkvKdQz6YAZ9oqLY+sG/pE3QZMLGRk5M237c2fU+3JzF2zjfDrlcQWlZCfb2Di1GOAVBQF1ait5gqCHEugoD6tJSpK5Ohg/oy7rd+7iZnkF4C+gxf7plPr4u3ozvUfuZGd/zfpYcW8u8XYtZP/VnVp3ezNXM66LifblkET2ju9Qhwx8s+ppz166Qv+cCvh7i/z6+vr5MmzaN2NhYcnPNEoQ+Pj507ty5RkrtkUceaSyEBaKiorhy5QpvvfUWdnbmXoPyKknADh06AOYyDL/bPusNYc3qpmuVO3RwZvp7URYZ5IbQr18HNm06wYMPflo1lywmTPgcg8FI//4dRM3pViR99A6NfcYEuRzvMQ/h9/BkUfGObt2Mm7c3L31Ra+TRffAQXr9/KGf37+HdRYtJuHCOtOvxouIlrGp4t00mt8XeJwSf7nejcHQTFc9oNOLjH2Q2BZGZTUGcXVzx9PLlr8XfMuS+pnejwj8yN+4JwIX0sprjW+HlJJ02HTh3HZkgMPe1sbw2bx3tQn14ZGh35q8+yDevSl84dJ9pqT5kLDOiOq8iY08GbZ8QZ+/eCku0kuFWNBtZxzY0OFZ9U3MJE7+t1KZtB+KvXODjN59EaWcPCOjKzeLmUR1jAEhJisfHTxwh2Ha1iFdWp1Fpql00X8/TsfVKEfMfCub+Dk1nb45cTKJcX1HzWhDqT0hK4VD/hJPQmJceaLFYDUFnNKISmd27HZdTUonw8yPIs9ZBLdDTgwg/P2KrMndi8d4T8zl0fgun4w5y9tohziccpUtkHwZ1G0FEoHTyAHD/3aNYs2kFScmJtAmLtCrGrfBzcyVNpWLJviPcUeU2dyohCV1FBcESbZQLiooBePHjz4mJboe7i0vN501A4O2npRlHJOenYcLE4YRT3BlllhQ7lniW1IKMmlpiV3uXZi0MynTlZKvyJdfSA1y8eBEHBweLBjoAtVpNRUUF3t7SmhLfffdd3njjDfLz8ykrK6s57+3tzfTp00lPTyciIoLu3Zsvc1iNq1c1bNyYxUMPNX2veuWV0Zw8eY2cKhkubZX8lo+PGy+9NLKRKxtDI7smhgpy16xA6esvSmbt6ukTKGxtKVKpcK36/hYXFqBRqynIPQmAX0gYOWmpomamTbtWP1evmnJx8iUKrhym3aMzsHVp+rvi7OKKVmOupXXz8CTlZgILZr9PWsoNlCJNQZpQRATg0R7Sd6/yi0qIDPZi8n138Nq8dTja2fLqhMGs2H2WdQcuMnpgF0nx7Dzq/n8cAx0pSiwi+1A2Xt2sTwr8r6KVDLei2cg6tqHJJJdTUHsix7+BTN50FnHqu18w840pFOTnUF5W6/Dj6e3HK9O/JCs9hfDIaNHaxLN352A0gYudDX3DzNnIE8klFJUb+WpPjigyPOHu7rQJ9Kp53VJ1vv+Ek5BWrWXPXwdJvmJ+KIV3CmXoxIE4uYnfah1y+BBg/m/GaYprjm+Fu4SMcDXKKyooLq3r2lRUWkp5VT2oWPh7hvDI3S8x6s4pHL+8myMXt3Hh+jEuXD9GoFcor0/4CluFNAkpVaFZJeWZ1yfRvUtPPNw8a1Y4AgLvvfaRpHh920WQdlRFar75n+WYNLK95/jJmof06dgrNR/BanNdqWS4vX8El9Kv8eKy97FTKBEEgTK9mYB1CTLv/CTm3CTArfHPpefd5hpXQRA4ey225vhW+LhLI/4AGzZsICgoiLZtLTNda9euJSMjgxkzZkiKFxkZyerVq9m1axc3b94EoE2bNgwbNgzbqs/y7NmzRcf76OP2zP7yOo8/HkzffmYjjGPHCli2NI1pr7ZBqzWy4IckThwvEEWGvb1d+fvv91mx4gCXLycD0KlTKI88MhgHB+lSaMGvvE3Gz/NxuaMfbv3MDavqowcpPn0c/8efoexGIgX7dqDavU0UGXb39iE3I503RtxN++7mnayEC+cp1WrwCQwCQJWdiauHuL+1U1A7SnOSMRkrsPc2qyOU5aUhyBXYefpTlp9BRUkRWcc3Ejr8qab/v2GRXD5/iqJCFZ279+Xgro3s2PgXJpOJqA4xouZU3V/y1oYMQt1teWVQ7YLLXiEjwktJe1/pbnsOdrbIbcwqP452ClKyC8gt1KAqKmH/mQTJ8W6HyWSiPLec8vxyjGXGpi9oRR20kuFWtBwaSf5o06+Rc2or/v2a3hIKbxvNr2sOsn/nBtJumrdoQyPaMXjYaBRV+pgfzG64VOF2ZBVX4KyUsXdqW7yrtrjytQbump9AVrE4ArbgnYfrfd1ctLSTkCqrkM8em4M6r7bb+NLhKxxae4z3/3wTDz9xWQ0xGZIRIreTb0WotzfXs7J4d9mfvD7C3Bz53datZKvVtAuwrgHJXunAnV3vQ6lQsvHwEsp1pWTkp1Bh0Esmw7v2b0UQBEwmEyfPHqvJilZ3pEslw53DgikqK2PfpTgqDGalEIVcztAu0XQODZIUq0tUW6sE+hvCR6Nf54Wl/yJXo6KsolZP1dfZi4/HvEGqKpMovzbcEd64u1h1M2H1760+PPHAgy0271uzulKwbds23N3dLRroALKysigvLyc8PFxSvN8Wp+DhactdQ2oJ05Ah3mzdmsOKv9L56utO7NmdS1KSOMvexYt38PTT9/LCC5a7O8XFpTz33HcsWfKWpPmpD+9H7u5ByCtv15xz6dGba688RfHpE4T/6xNKEq5SnposKt6E195i/juvU6bVcv5wlVW2yYQgkzHxjXfITk0mNz2dnkPEKUG4t+9NaW4y0VM+w87DrL5Rrsrk2p8f49nxTlzCOxO35EM0IjWHn3n1Q3Ky0jGZTDz76oeoC/KJv3KB8Mj2TH33c1ExqvtLTtwsIdTDtsX6Tfy9XMjIUwMQEeRN7I1MOkwwa8H7eUozagI49uqxBsfsfcTXgbeiFq1kuBXNRtSEf3Fj/TwCB0/EvZ15u7Uw/iQZB1YS9sALGMtLSN7+M4Xxp0SRYTDrVg4fNYHiInMXtYur9TelbkH25GmNNUQYzHVf3k4Ki3ONIT1XfDd3kI/4uba0k9Da7zaizi1CkAn4hfkAkJ2cS2GumrXfb+bZz8WpArwbZW5kmZ2QQICdHZNDQmrG7GQ2hDg40MZRvKZoNR7u349P16zlp527+GnnrprzAvBIf+kd0AXFuRy+sI3jl3dTqisBoH1YNwbFjMDRXrr8UddO3ZuUG5OKAdFR9G4bQW5VmYOPqwsKea0WtLasHENlJW6Ojdszz3tPGhlqCu38Itjx+jK2XNpLYm4yAG19whnRdQi2VTs48yc17Sy24J1PAHj5qw8JDwjmrcdqa+btlXa0DQmnYxvxjVHffVdrupOdnW1xXFFRQWlpKfYSGr+q8emnn9KxY8ea5rlqzJgxg7i4OI4cOSIpXmaVpvCFC0XExJh3ly5dKiInu3Zh4eQkF72AmT9/EzY2MqZMGVZzTqUq5oUXvicxUZqWMoD2yiVkCgWGIjVyVzcADMVFGDXFaAvMuxRKv0D02Vmi4vUZfj9+oWFsW/Ib6TfMSYqgyCgeeOJpQtuZdxJ+PVbXnKgh5Jzcgq2TRw0RBrDzDMDW2YOcU1vx7jYUp8C2aNLiRMVr07YDbdrWlkd9Nn+56Lncjqf6epKhriCnuAJfF7OSSXZxBbGZZQS52RLtJy07PLx3NPvOJBCXnM0LYwfw8py/a8rsnh/bchKYNrY2hI0Ja7F4/0toJcOtaDbS9i5D4eSOV+da7VivzoPIPbOTzMNriH7iE/Iu7qc0J1l0zM2r/+DvJQtQF5jNGdw8vHjo8ZcY9fCToq7PUNfWtL50pzcvrkrj6705jOpkfmhtvlxEjqaCj+4Tl92MmSxu+1SqTE5LOwldOX4NhZ2Cfy19g9Boc+zkq6l88fhcLh+9KjrOvb7m38t5dRGB9nY1x83FayMe4HRiIjsvXLT8ed1ieHWEtHrnnzd+xpWbZzCZTCgVdgyKeYCBMQ/g7W69xNUPXzZs2dscKOQ2BHrWv0hafug4GapCZj0qTm4uMzePuKSb2Nna0r97jNVz2nh+F+6OrhYNdAAZhdmUVZQT6RMmKs7E4aMBOHzhFG0CQmqOrYVarQbMmWaDwVBzfCuio6VJZTWG4uJiq6zAw8IcSEws4csvElAqZQgClJebVVXatjUvFNPSyvD2FldOZGMj8N13GxAEGU88cTfp6Xm88MJ80tPzcXFpfKFUHxTuHuhzc7g27Wkco809G6XxVzGWlmLrYy59qcjPrSHKTSE/KxM3Lx+LBrrmwFCmoVJbQMahv3GPMhvuqBPPUl6QZbaQroKY0jowa883BFulHcFhkdiLNAV5b1MmcTnlnHyz1pzETi7w8uo0OvjZseHZCFFxqjHzmfuY+Yz5exYd5keovztnr6XRsY0/g7tLb3iLfPS2EisBFE4KnMOckTu00jpr0Ppba0WzUV6YBSYounkJ13BzI0BxyhV06tyaLX+5naPoRpw/f5nLqt/nWzygClV5/PLtLIqLCnns2brC6rdjwLd167AWHs5j4eG8mmMTMGV5iijNSNHPSokyOS3tJFRSVIpfuG8NEQYI6xCCd5AXOSl5jVxZP6ZGRFBqMKAzGlHa2HAwP49LRUVEODrVUZgQA4Vczt9vvcmxa/GcuZEIQM+ISPq1l+6IdfmG2RHLxkZOZFBHNKVFbD32l8V7BEHgifvrGsQ0hYysdK7Gx2KntOPOvtKcv6yBmAYzY2Ul8/74kx1HjoHJRPuIcErKyvjq1z946dFHGHfPEEk/81/rvqJrUDQDo3pbnH/r70+5nBFP7KzdkuJ98fK7FJeUUKYrx15px6ZDuzl26SydItrVUZhoDIMGDQLg4MGDdRzoFAoFXl5eREWJzzSPHz++5nVCQoLFcXl5OWq1GldX6SYFzz4XxpdfJFBYWIFOVyst6OGh4NnnwsjOLickxJ4OHcXtUHz11bNMn76Yb79dR35+Edu3nyY/vxhfXzcWLnxF8vz8Jj1J6rdfUllWiubc6aqzJhAE/B97Gl1WJvrcbFzuELcjM23YINp27cbHf/5tcf7LF57i5tUr/HSoYTJaH1wiYlDHnybn9DZyTm+zGHNtE0OloYLSnGSLzHFjmP7SI40+Y+QKBQ8+9iKTnn29yViJ+TrCPW1xv4VYujnICfe05Xpe83bvAPp0CqdPJ2llObfCp7dPs+fQCku0kuFWNBsO3iGUZCVxY91cZHIlCFBZYb5hOPqbV9Bl+emiOoIBtq37E4COMXfQ/y7zavrYgR1cPn+Sbev+FEWGxVJSsSR3kwS5NKmoKKkg+1A22lSzvqhTiBN+A/1QOCokx3L1ciEnOZcLB2KJGdwZgPP7L5GdnIubt/TatLnXr3MwP49FMd1Q6fV8FBdXU0RQVFHBxGDryHy/9u0aJMCT5n1HbGoql+Z903QgQcBYaeTKzXq2Z03mB78UMmw0Gvn6h0/ZvmcTJkx0iOpESVkJn8+bwbRn3+bBURNFx2pp/LVlO9sPH7U4d2ePbnzz+zKOX7gomQw3hKIyjVVaqq/P+4SNB3exd+FfZOXnMeXjN2vIiaqokFcnNN0EBTB48GAAkpOT8fHxqTm2FllZ5jIAQRCoqKioOb4V1QRcCkJDHfju+y4cPaIiLd1cxxwcbM+AAZ4oFGaFmLfeFp/1Gzo0hm+/fYE33viZP//ci8kEbdsGsGDBVHx83CTPz63vQJR+geRtWYcuzazUYhcShtfIcdiHms04Ov6xRlLM+jLoxQUqNGrppiAh90yBykrU1y2/u25texB8zxMYyjT49RmFvbf42vrGMvwVej0rf/8ev8AQht4/vsH3ARgqTeRpDRiMJuQ25s9whdF8zlgp/cvRmBynna2CzhH+PDumP74e4ku7SjJKyNiTQWmmuSbdIcCBwKGBOAZJL19rRSsZbkULIHjYFG6snUuFVl1DggEUzu6E3PMkOnUO9t7BOAeL29rU63R4evvx+Q8rsKnqwH1g3GSeGjeA0hJxRgUrp1i/6q4P/btKs8ucs3wvKdkFzH/zoUbfpyvUETsvFn1RbVlH4dVCck7k0Pm1zijdpTWAxQzuzP5Vh/l+2k8o7czbi7pyc+yYu6TJ9wAkaDU4yeW0c3bmi/h4BKCnuzunCwvZmZtjNRluDNlqNal5TWex3V2kSWuJwbLVv7F19waLcwP7DmH2dx9z5OSB/ygZ3nH4KHIbG2a8/Bwzvl8EgL2dHd4e7qRkiqv7BBj2zWM1r+OyEi2OyyrKKSwpws1B+sLpYsJVXJ2ciYnqyM/r30cQBO7q2Zd9p4+xcucm0WS4GuPGjaOsrIzy8nILXeCioiIcHBxwdhZHHKqtlRcvXlzHgU6pVBIaGsqAAQMkzQ3g4MF8XFzkFg10ALm5OvT6SoKCmq5r3rz5RJ1z997bk40bj+PoqGTMmH6cPGl2xBs5Upx6TjX0ebl1GuiswY8f1Bos5aSlWhzrykpJib+GnYP0Mg65nSNtRr+CTp1LmcpsYGLvGYTSrer3aeeIT49hjUSwxJsz57Hgq/fpO2i4hXPpiUO7ePqV97l+LZZdm1ayff3yJslwhJeSuOxyXlmTxjP9zCpCvx3Pp6DUSEeJ9cJQK8d5O6q5+94z8azYdZad379MkIiFj+qCioQ/EizIf2l2KarzKqKmROEZI1295X8drWS4Fc2Gg3cIHZ/5ioK445Tnmxs97L0CcY/ui0xuzm5GjBHnVw/Qe8BQLl84ZbnlVfW632Bx1rp9wv6zq+NdJ69xLj6tSTKcujnVTISF2i7gstwy9Go9qVtTafuYtHqyca+MJP5sIpmJWejKagl2YKQ/46aOkPz/UOn1BFU1K90sLSHSyYmvOnXm8TOnydE1f7uwOfj4mV9bPOa23RuR28j55L2vee9T83aqg70DPt5+pKTdbPGfJwX5hWpCA/zp3y3G4ryDnR15BeIzcxnqbMBc3643VtQc34q7O0gnh9mqPCKCzG5wV5Ou0yWyPWu+/JHeU0aRniuerFdj3bp1pKWlMW3atBoyrNfr+fnnnwkJCeGJJ8RJyVWT4bNnz9KmTZua4+Zi0cKbtG3rSLdubhbnv//uBjdulLBiZa8mY3z44dJ6SZIgQGmpjjlz1lQdC5LJ8LWXn8AhKprIT+danL/52QeU3Uykw68rRcU5tHFtzf1Xoy7k0KZ1tYNVZKxtlxhJcwNI2fErSjdf/PqMROlWu+1fmHAGQ0kR3t2GSop3YNdG3D19eHPmvJpzdwwYyrMPDuLEoV18PG8J12LPknyjaVOQCd3dmbEtix1xxeyIK645LwATe3hImhdAv87hXLyejq7CSMdwc3nZlZvZKBU2RIX4EJecQ06hhq//3MN3bzStvJKyOQWTyYTcXo5LW/PCtfh6MYYyAymbU1rJsBVoJcOtaBHI5LZ4dR6EocycuZXbS7cPrUZkdBeOHdzBv16eSP8htWUSJVoNke07sXfb2pr3NrXCB/juQG6DY0q5QEd/e+6MsH6+zYE6Xo1MIaPTq51wCjbPQZum5fK3l1HHqSXHc3R1YOaqdzi57Qw3L1frDIfQ+/6eKGyll13IZTK0BgP6ykrSy8oYUCW2r5DJaDmrkP8e5OXnEBbShgF9Blucd7B3IDevLmn8d8LFyYmsvHyKtLW7IzkqFSmZWbg6i//8vnSXWVFk4f6ldRzo7BRK2ngHM7hd34YubxAKuZwirQadXk9SRir39x9SdV4hyS2yGjk5OXh6elrU87q4uODp6Ul2tvS/xUcffURxcTEajaYmq6zRaMjJycHV1VWyiUdD0GqNkspMxLzXmga/hoIbitQYiovreXP9aN+jF4IgEHfmFPaOjoS1r1VssLWzJ6BNG0ZMeUby1FSXj+AYEIFfH0upu9zT2yjJTpJMhmPPHkdua4u6IB+3KqfDInUBxcWFqM6ZPy8BweFkZTRt7vP4HZ4k5ulYdrrAQmbyiTs8eayXdDI8bnBXLiZmcOTn12kbbP6cJaTmcvfU+Uwc1pOhvaIY+Py37D8rzu1Rr9ZjY2dDzL9isHUx7wDqNXrOf3oevdo6Q6T/dbSS4Va0CHLP7Sbn5BYqSs36tgoHV3x7j8CnuzjNyVux+PtPEQSBKxdPceXiKYuxn+d9XHsgCKLI8LwDuU2KZfUOc+SPSaHYKf69FM9QasDex76GCAM4BTuh9FJSnlveyJW1eOfeGYRGB/PyvGeZ/dR3BEb689i/HmbAGOmE5naE2jsQpylm7InjlBuNRDubsxB5Oh3eSulGAC0NtUZFSnYCXm5+BHqHcy3lPDtOrKLCUEHXtn0Ydkfjmfnb4erqRlZOBkXF6ppz2blZpKTdxK0Z8n6NwcnODlcR28y9Ondg55HjPPOB+TuQkpHF8zM/xWg0ckdn8Q6PLw8xk+FTSRdo6xtWc9xcRIW04ey1WKLGD6akvIwe0eaa9cz8HAK9pBvKGAyGGrvkW1FeXo6hSrNZCj766CNiY2NZs2ZNDRkuKyvjySefpEuXLixYsEBUnFemXqp5ffNmqcWxTmekuNiAs7O4R+uFCwsl/A/EIW1hbSZYn5NlcVxZXk5ZShIyO/Fb/TP+MDelPtq5LYFtIvnwd+slywD0xbXmM5XGCotjY4Wu6li6vKGHty85mWk89/BddOxqzsrHxZ6lVKvBN8BczpWbnYGruzh3tlkPBPBcfy8uZpjrwbsG2hPkJt1oCGDeyv0EeLnWEGGAqBAfArzd+G7VAZ4e1Zc7OoZx5OINUfEcgx0xlBhqiDCArbMtti62KJylJz1a0UqGW9ECyDy6juwTmyy61ipKikjfvxxDmYaA/uIko26FqEyIxGxJY+8+mVzCj0fyee2uf2+XrsJFQVluGQWxBXh0NmccCmILKM8tR+Ei7qaWn1GAs7uZTMefvk6FTpqTW2OYHBLCh1evUGo04m9nxzAfH64UF6MxGGqyxP8pJKRe4qeNn1JhMGdC7uszgV2nVmOsNILJRFqu+cEihRDf0b0f2/ds4vGXzdckpyXx9KsTMRgN9O5hvR5ogUZLmqoQWxsbooMtpd8mDRK3aHl6/BjOXYkjr1ANQGkVUfRyd2PK2FGS5/TVw++hLi2muEyLS9VOTnGZlqyiHNwdXPFxkWbp+tZjz/H4zNfRlGoJ8w/ikXtGcvrqRdSaYh7oL725z83NDZVKxY4dO+jf3/y7P3bsGBqNxqosbmJiIsHBwfj61hJzHx8fgoODuX5dXEYOIO8WNQGDwWRxXI077vhnFk5iUHhgN9Vk0lBcTOGBPbeMmu+CDlHtJcf9K1b876gxXP6lqqFVgLLc1NrjW2DrLP3e8sSL7/LVjFcoLdFw5vh+oMosRybjyZemk5mWTE5WGn0Hiq9DDnKzbZAAj/nlBpcyy0SpERUUl5CZX8THv25n9EDzInHr0StcT8vDQVl7n7dXiiPbgUMDSfgjgdQtqXh2N/+uVOdV6NV6wseFoyuo/UwqPf7zSYv/C2glw61oNvIv7APAKSgKt2q9yOtn0KbFk39hn2QyvOV4covOb/WT4Tz1VwofDPdnREdzZnPz5SI+25XN9w8Goy4z8sa6dLZcKfq3k2GPjh5kH83m2q/XkNmas9KVerNMUzU5bgoOLg6kxKXz07u/A5CXls/iD5bVeZ8gCDz1yWN1zjeGPh4erO7dh1xdOWEOjtjKZIQ7OPBnz164KP6ZDITYLeEdJ1dRcUvD5vYTK8FkqmmsKyzO40zcIUlk+LnHp3Lmwkny8nMAKCk1G3l4e/rwzGMvio5TjcpKExtPneN8UgomTAR5elBeUcG6E2e4v0dXSZbMnm5u/DxrBuv37CP+ZjIA7cLDGDN0MK4im8luxTt/f8H5tCvsfH1ZDRku1Zfx0KKX6B7SkT+enttEBEsM6zOQK3/vIT0ni/ZhkShtbWkfFsnZpVvxsEK6rHPnzuzfv59Tp05x6lTtDpEgCHTu3FlyPJ1Oh1ZbtwFXo9Ggk1D/Pv5B82Jm7ZpMPDxsuWtI7aJBqZQRGGBP9x7i/r/PPDOPiIgA3nvvEZ55Zl6D7xMEgV9+eU1UTMfoTiAIlFyNRWZvj314rSauzFaJMjAY71FN76jdjh/efYOLRw/zwa9LCW1vboZOuRbHp09PpuuAgUydLfLz0oS9pWBjg19v6f0Ndw59gIDgMDas+JWUJLO0ZlhEO8ZOfJbwtub5rtp1qbEQkiE2HzOsdzQbD8Uyf/VB5q8+aDnWpz06vYGL1zMsMseN4dqv5qbK9N3ppO9Otxi7+uMtevIC9PtWupnR/yJayXArmo1KYwUKJ3faPjy9pjbQO2YIl395C6POOuvUahTk52A0GvH2td5IYca2LPxcFDzSvTZbM6GHB4tPqPhqTw7bX4xk+ekCYrOaN9dbIZbQhYwIofhGMaXZpTUkGMDB34GQ+0MaubIW7XpGcn7fJU5uPwsCaNRajm66TfPTBAhIJsMAbgoFZUYjx6tcq6KcnAm0wgFMLFa88Rq6iqa3wTPykpHLFUy8Zyp56ix2HF+Jo70LH0xZBJiY8cvT5BdJa9zy8vDmj/mrWLN5BdcSrgDQPqoj4x54xKoyiYNXrnHuRrLFuQ7BgWw4eY5r6VmSyDCAi5MjT4wZ2fQbRSA++wahnoH439K85OfqTahnINeyxG3X3g5PV3dKykrZecL8wI+J6kB4oHWKI/379ycjI4OEBEvN8KioqJpMsRQEBASQmprKvHnzmDx5MgDLly9HpVIRFhYmOs5DDwUCcPWKhuBg+5pja3DmzHX0ekPNa0Gon2BJseGO+PhrAC49fB92QSFEfPSV1fO7FZdPHMPe0bGGCAOEto/GwdmZKyePi47T9pHpYDJx/e/Z2HkGEHx3bZmOTG6L0s3Hqp6T3OwMPG5roPtvwbzXxmEwVrL16BWL8yMGdGTuq+PIL9Ly5qND6BDeMuZGNbCy1Px/Ea1kuBXNhmtEN7Tp8beVeZkP3Nr2sCrmvu3rWPrTHFS5WUR1jOGhyS+xcdVixk16jl79pG253sg3Z30OXNcwuK05g3bkhpaUgtpGAzd7G2QinzjHLiXh7GBH50hLgq7TGzBWVuJgZ8s7j91NflFJk7HkDnK6vNWF/HP5aFOqdIZDnfDq7oVMZP3ylI8exdPfg4zELOJOxmPnZEdoe/HanI2h0mRiXuJ1tt7WsPSAnz9vREaKNlKphrGykmUHDnLoahx5xUUWiwZBENj8r/fwdXMTFatcV0KwbyS9ogdTWWlkx/GVeLn5oahSMPFy9SUlJ1HS/ABcnF156tEXJF9XH84lpSCTyZhwZ2/+OmgmDEqFHFcHe/KKNJLjpWZlcyk+gcKi4jrPucdHS8um6Qx6tOV1P6OaMi06g/QmnMrKSt749hP+3La+xkREQGDyA+OY+9qHkj8rNjY2TJw4kZSUFDIyzNJbgYGBhIaGSp4bwPDhw/n5559Zs2YNa9bU6usKgsDw4cMlx3tlWhs0GgMlJQYcHc2P0pISA/n5epyd5Xh4NL3lPXJkb0JCfGpeW1Mr2xC6/L29xWIBlBQX4ehSV3JPrlBQkCO+odE52Fyi4d9vNApnz5rj5uKpsf1p36k7c35ZZ3F+xmuPcyP+Csu3i7eKbmm4OtmzdOZkkrNUXEs27zqZneg8asZfGCdewaXj1I7/yDz/l9FKhlvRbDj4hqG+fobrq2bjFtUTAPX1sxh1pTj4hqG6cqTmvZ4dm/7CH923jbmzLI01Itt35vL5k7i5e0kmwx387LiQUcaTy1OwV5htU0ursrAxVVqg8bnlBLqK2/Yf+dbP9IoOYcd3L912/ifOx6eTt/ML7und8A3+7MdncQxypP3T7bk8/zIO/g60ebCN1a5Czu5OPDrdLMfzVOepBLTx493fX7Mq1u34OyOdLfV07m/NziLI3p5HgqSR7reXLOW3veaymtvJnFQaYDKZqKw0UqjJq8mmGY2GmmNDpfQmK4DU9GTOx56hUF1QJ8P/5KPPS4pVXFqGj6sz0UGWCyelQk5RqTQyvHn/Qb7/cwWmBkT/pZLhQHc/kvPT+WLrAp4ZOAGA3w6vIk9bQBtvcbsSt2LB6qUs3brW4pwJE0u3riUiMJSpD4uTQrsdoaGhDRLgVatWkZOTw7Rp05qM89hjj3H58mWOHTtmcb5///5MmjRJ8rzmf59EfLyW7+d3riHD5eWVvDf9Ku3aOzFzZtMk75NPnqj3dUsg9fvZaC6cpc2ML7EPM+uklyUnkfTxuzh360nItHclxXP19CIrJZlTu3dyxz3mxcPpPbvISr6JhxV27Y6BUZSrMtCpc2uk1XTqHIqSLmLnGYhLqHTCV5+To7pQRXFRgeRYLYmpc1bTJsCTNx4dQph/bT305sOXyS3U8PQoac3Orm2bLsNJ25mGLl8n6r2taCXDrWgBZBxYCQJoM+LRZlhqOKbvv7XzWBBFhlctWYAgCIx6+Ek2rvoNAC8fPzy8fEmIuyh5fl+MDGTK8mRyNAZKK2pLEfyc5Xw5MpCUAh3RvnaStInru+mWlutF2erqCnQonMzEuzixGFNFy+1l/Rb7Q51zJUWlOLpKF8UH2J6dgwCMCwjkbh/zA2tPbi5rMzPYnpMtmQyvO2Eu3+gTFUWYj7fkbOHtSM+7ycxfnzUfCILlsRXYsH0N8xZ9iclUWe+4VDLsoLSlUFtK6S01qeqSUvKKNDhKVONYvmU7lZUmbBVy3JxdJG2d14cRXe9m/t7fWX5iA8tPbKg5LyAwsuvdkuMt37EeQRB4fuyjPDj0AQDW7N3Kj+uWs3z7eqvJcGPQarWo1WpR75XL5cyZM4cLFy5w5Yp5u7pjx47ExMRY9bNTUkrx91fi5VX7d/T0tMXfX0lKcqmoGFlZ4kmav780SS/tpQvI7OxriDCAfVgbbBwc0cZekBQLoOuAgexf+zffvvkKfiHmxUl2agoIAjF3DpYcL+PASnTqXLw617r/KRzdyDy8FqW7Dy6PfyIqzrefvlXzOjs91eK4vKyMm4lx2Nn/Z3XnV+w6S8/oYN541DKRM3/1Qc7Fp0kmw2JQeKUQbYqWyEnSSrH+V9FKhlvRMhDF58SRvrTk6wSGtOHZ12bUkGEAVzcP0lKkb3tH+9lxcFoUGy6pa3zl2/naMbqzK0q5uRTh54lNb73eaqkZn5JrcVxSricuOQdXp6Yli+T2ckrSS0hYYq6FLFeVk7i8nv+XAJGPSruRHdt0krhTCQx7fAguHs7MeXY+GTey8PB147WFLxHUVlrtdWZ5GYH29kyNqG3Cae/szMnCAjLKpNdYOyiVeLm4sGPGB5KvrRdN1WZLZIzLVi2mstKIra0Sd1f3ZpP1tv6+nE9KYf5Wc0d/XpGGhdv3YjRV0jZAmtxYSWkZPh4e/Pb5R9i3gKzd03c+wqW0qxxMsKwvH9yuD08NeERyvOTMdCICQ/j85dqMY/f2ndh98gg3M9OaPd+WQkxMTIMEePr06SQmJlqUUTQEvb6S0lJjnfMlJUb0+voXU7fj/vvFfQ8EQeDcOXHSb9Uwlmixdaz7GRPkcowFqnquaBwPTX2dS8eOoMrKJDsluea8d2AQD019TXI8XWE2SndfZIraz7JMoUTp5o2uMEd0nD1b19R8T4uLCix06Kt3dtp36iZ5fmLQ1BMtPbfWDEdfYbQ4LinTk55TiNCCpTGtsB6tZLgVzUb3t/5o0XgKWyWlJVoqK2sfKBV6HdlZaSiV1jVu2SlkTOjhQWGpeevc3UH6R7/aUlMQQFOq48jFpDrvGdStafLqEulCQWwB+efyAajQVpB7qn5jEKlk+MDqIyTFpjDxnfHsXn6AjERzA1lBtpr187fwyvfPSYpnK5NRVFFBqcGAg7yqLtJgoKiiAmWVVbYUvDNmNG8vXcaa48e5t1s3nCTond6Oe/tOsPrahlBSqsHX249li9Zhb9f8JsF7YjpyIzuX4lLzwkFXYZa9c3awZ2iXDo1dWgfDB/Rj19HjaLQlLUKGFTZyFk7+jDPJl7iUbu5O7xLUnp5h0m27AZS2SlRFajSlJTg7mDNxxSVaVMWF2P0XaFKLgUqlIitLXNOlj4+SzMxy/vgjldGjzWUCmzdlo1ZXEBgo7nMtXh1S+u6R3NUNXVYmRSeP4NrbvCNXdPIouqwMFB7SZPMA3Ly8+GL1Rnat+JPES+YdusguXRk28TGcXN0kx0OQoS9WYdTrsLE1fz6M+nLJOsOdYnqDAJfPn8TewYk2UbXfK6WdPcGhEYybJP6+V2E0MWR+As52Nmx9PqLBBfGGZyPqPX8rYibPBszPjNgbmTXHtyLQ20303Frxz6GVDLeiRVGhVWOqNGLrYr0GbXSn7pw7eYiZb0wBQJWbzfuvTKKsREuPvoOtivnHSRULDueRrzWTYS8nOS8N8ObJPuLnOeGe7gCs3H0OL1dH7r6jXc2Yg9KWtiHeTBretAVrxIQIlO5KSrNLKUoowsbOBsfAltnGy07JxdPfHQcXBxIvJOHk7sirP7zAN88v4MYl6XbCHZxdOKsu5Onz5+jtbt6mPVlYgNZgoIe7dHWFkb16snDHTp5ZsKjOmCAIFC5bIjrW/X0nSv75TeG+u0exfc9mijVFLUKGne3tefn+uzmRcIOMfPOWeKCnO72jIrBVSLv9PvfQOM5eucrkdz8gPCgQB/tawiUg8M27bzRydcPoGdalQQI87a+ZxGfdYOebfzYdJ7ozB86d4M5nx3PPHXcCsPvUYYq0Gu7q0fLbwP9pDLjTk79XZbBjew47tufUGRODX3997R+YmRnOMT0p2LeDlG8+x9bPHwB9dhYg4Ny96ftUfXBydWPcC1MbHF/30wLy0tN4/pMvm4xl7x1ESdYNEtfOwTvGXD6Qf3EfRn0ZjgHikwBfLloFwIi+YQSHR/LlwlWir60PChuBEn0ljrY2zd4Zql7sNKQSopDLeH3iXc36Ga1oGbSS4Va0CFRXj5J1eC16bQGO/hH43vEAuWd34dvrPlzbdJUUa+LTr3HhzDEunDqMIAio8rLJz83CRq5gwpNNN8rcjrn7cph/KM8it5KnNTBrRxaFpQbeGCJuu3rB2w8D5gxx17aBNcdSoXBSED4+HIBjrx7DwdeBTtPEO4g1hjJtOZ5+ZtKadTOHsA4hRHQJxzfYm/TETMnxJoeEcL5ITXZ5OZuyzNebALkg8ESI9Car5xb9SEJmZv15LmstZ6uQmH65zrlQv3Y16hJi8MKUVzl9/gQTnx1FeGgkjg61ixRBEPju858bubouDl6+xqBO7RnSOdrifJlez+97D/PcsMGiY/26dj2pWeZmxuspZqvtaqnWf2qjNU+jIkMtbsv6rcnPc/jCKVKzM/lt89+AeZtaIZfz9uSWUef4b8KoUX5cT9By/nyRxfnu3d0YNcpfVIyePaMk/cyff95GRoaKjz+e3OR7fSc8jubSWSry89Bn1373bb198XukZVwHb8eFQ/tJjL0kigx7dx9GyZZFlGRepyTT0tDDp5t059KW1Kd/MMadP06qiM8pp52v9btXm75+DhMmRr/9C+1Cffh66piaMXs7BeH+nri7WNfP0YqWRSsZbkWzUZhwmpRtv1icc/ANQ5t+DYWDi2Qy3L5TN7744S+W/jSH63FmkfS20V147Lk3rar9+vOMOSN3R4gD93Uwd9buiCvmZEoJf54pEE2Gq3Hxz+mAuebrys0sbGQyerS3Tku133d1BdENpQbkVpRxALh4OJOZlMWWX3ZSkF3IHcPN2eyS4hKcXKVnn7u4uvJ1p878kZJCvNasftDO2ZknQ0Lp5CK9S/lI3DUEQeChvn0J8fZCLrPe/vrk1X1sP76CUQOeoHu7AXz/9/t1aoQfv/d1ekYPaiBCXfy8ZD4paeYMesKNOMBMgk0mk1VZoj0XryCTCdzZoXYXQVtWzh/7jpBTVNTIlXWx/dARBMDLwx1fTw9smvG7+yfQt3N31n31M1/8sYALCWbh/27tOvLelJfo3SnmH/mZYvW8/wnI5TLenR5FXJyGxOtmWcTItk5ER0s3QBGLw4cvc/lysigyrHBzp+3sBah2bqL0urmx2aFtOzyHj0JuhUlLS8OjfW8qNAVkHdtAZZV5jkyhxL//WNzb95Yc7+uZr3LuxEE+++Ev2rQ1l0okXb/Kv16eSI++g3n74+9Ex8qr2kEc+fMN+oY74u0or1lxCsDXY8Q1Dvfvam5efGfyUAK93WqO/y1o1RiWhFYy3IpmI/vkZhDAp/swcs/uAsDW2QOFkzsl2XXrasWgQ9dezd7uqobOYMLPRcGKKeHYyMx3tMm9PBjwbTxanbhGl9sxZ/levlt5gDJ9BT3aB/PCuAHM+nUH7z85jAeHiCfsuadyKb5ejP9d/iicFFxdeJXSrFJs3WyJfj4axwBpBLbrwI4cWH2UdfM3AxBzV2e0RSUUZKtp19O6ruJubm50E6n92xTa+vujNxj45aXmZwovJByjUJNPVMgtW/y3kaML149JIsNbdm1AEAS8PX3x9fHDRia9LvpWCILArguXEQSBAdFRFGi0/LHvCIXaEuxsxVmvVsPB3h53FxeWzv60WXP6JzEgphdbv/2jRWIdPHgQFxcXunWz/D6lpaVRXl5O27ZtmTBhAgaDdRJ6LYXoaOcGCfCcOddJTSnj+/nW1WE3F3JnZ3wfbFg2LmftX+hzsgl+yboSm+bCt9d9eMcMpUxl1pG29wxEpqj9XlSUFGEyGkSV3V04fRR7B8caIgzQpm0HHJycuXjmqKR5rb+krtl1OZiordl5qd6FEUuGq9G7YxjxKbkkZ6lqpNVuZqrYdfIa7UJ9GNy9raR4YhB8bzAV2ooWj/v/K1rJcCuajXJVJnbu/gTd9WgNGQaQ2ztTXiB9ax7MDXMHdm3k2uXzeHj6cM/Ih8nNSie0TTucJTZrDI1y5lRKicVWcnWS797ouiLyTeH3zSf4Yslui3ODukWSkadm3f6LkshwzrEctClawsaGkXUwi9IssySTXq0nbVsa7Z+RJkj/yFvjUNjZkpuaR8zgzkR1jyQpNoU77u1O14HWlWIUVVSwPjOzJjPc3smZMQEBuFphx/zW6FG8+NPPzN20mXu7xeB8m5NdsJf4xp4sVQquju442df+DX09gxg36GlMJhNLts8lMz9F0vwcHRxxd/Ng5S+bJF3XECbc2Zu/j5xi5/lYNGXlXEpOQ1tWjouDPU8MES+yD/D0+DF8t+wvriYm0SHy35hhkoCCIjW/bFjB+XizdFn39h15ZvREPKxosDpw4ABBQUF1yPCuXbvIyMhgxowZODlJdyprDC2daVYXVpCbK97q+d8NzdlTlCYm/MfIMIBMYYujX3i9Y0kbvqMk+ybd3/y9yThaTRFOznV36BQKW1R54tUpAHqHOtCSxUczftpKcpaKyffV1mr7ejjz2e87CA/w4uCPr4qKk31UnLmJX38/3DtK7+n4X0YrGW5FsyGzUWDUl1los1YaKtAX5SGTS8t+ARQXFTL9pUdIu2muI4vqGEP7zt356I0pTHhyGpOefV1SvC4B9uyIK2bikpsWZRIaXSWdAuxZe6FW7mZ8TNM3kJ82HEUmCHz6wgj+tcicgfVwccTfy5XLSdLsf8tyy1C6K5E7yNHc1CB3lBP9XDRXF11FkyzdoUzpoGTiO+MtzrXpHMpzX06RHAsgV1fOyxcuoNLXOpKdLChga042P3SNwUeiSsAT839AAGb9vZpZf6+2GJPaQFdcUoive60VboB3GIHe4USHmUtDPF18yC2Uthh79vGpzF30BZevXaJT++Zn8zoEB/LooL6sOHSCY9eugwl83Vx5/K7+uDhIa9D7Y/0mjMZKpn02GydHBxxvW0gs//rzZs+3OUjPzWb4K4+RrcqrObf71GGWblvHzvnLCPRuvtVsRUUFGo3074VYzJ49G71euvteK/5JiFuguHt4kZl2k6P7t9P/rvsAOHZgBxmpSXj5iKvhrsaqJ1t2sZmUmU94gBcOdrXPQwc7W0L9PUnKyBcf528RO62CmQy3Qhr+z5LhlStX8tVXXxEXF4e9vT1Dhgxh9uzZREQ0LHcyffp0Dh48yI0bNyguLiYgIIAHHniADz/8EB8f69y/WgGOAZEUJ8dyY+1cAPSaAq6v/gqjvgyXcOmE4rcfPic1KQFbpR16XTkAMb0GoLSz58zxA5LJ8Ke7shGAUymlnEqxFMP/eHsteRUEcWQ4OUtF+zBfnh/bv4YMA7g72xOfUr9EWkMwlhtRupsJZVluGU7BTjiHOWPnZVeTJZaK0uJSkmJTKFYV1+lJ6z9aWi3eL8nJ5Ov1CECIg7nRI7W0lHydjsXJN3mvnXQr1QYfbRKzcjYyG1TFtb/v6ZMtawILNXmiTFBuxW/LF2E0Gnnp7Sk4O7ngYG/ZQPf34i1NxjifVDcb3TksmPM3krFVyOkREcaNbPO8u7URby2co6o1aNCUlKIpqf18/FMNdFL+JJ/8+h1Z+bnIBBltg8MAuJ6WTFZ+Lp8uns+i6Z+JijNr1izA/PvOyMioOb4Vjo7S69+NRiNbtmzh7NmzFBTUNbv44Ycf8PS0XgWnFf/ZGu7ufQaxa9NKvnz/JfyDwgDISk9GEAR69rNOsSG1QM/5jFLsFTKGtZe+i1gNmSCQnqumpEyPo72ZEGvLdKTnqpttnlMHrbXCVuH/JBlevHgxzzzzDADh4eGoVCrWrl3L4cOHuXjxIn5+9a+KZs+ejY2NDdHR0SgUCm7evMkPP/zAgQMHuHjxIrL/soaU/yvw7zcGTepVilMugwAV2kIqNIUINjb49x0tOd7pI/twcHLmx5V7eXzEHQDY2Njg4xdIdmaqVXMUc38Qex93cbQjW1VMub62HqtIW8aN9HxcHKV1HiucFZRll5G+Kx1doQ7PbuaHsbVNdBcPXuan6X9QXlJeZ0wQBMlk+ExhIUqZjPldY2hbtSWdoNXwysWLnCosbOLqulj4nPXucLfD2y2A9Lyb7Du7gSE9xliMHYvdRUmZBn8v8WQTIDu3dnFUrCmiWFPb5Ca2gW7d8TP1s1MB9AYD285drDoUJJHhYf36SDYRaQwL9y3F19Wb8T3uszh/IfUKRWVaBrXrzfxJs9AbxNUdHjh7HHulHdu/W0KXtmb1jIsJV7nv1SfYd1p8zWY1oapuXKwPPXr0EB2vGnPnzmXDhg0WP6MazZXQ+nfhP0k2xWDcC69QXPifsT6e/NybnD95mLycDDLTamUkffyDeOxZaWUgxkoT723OZM2FQkwmiAmyR6sz8ub6DGbc6y9JkhOgQ7g/Z66l8tC/FvP0SLPM4G9bTqApLadXtLR7FIBgI+AZ44nfAD9s3aTvvraiLv7PkWG9Xs/06eZu/vHjx7NmzRoyMzNp3749ubm5fP7553z//ff1Xvv+++/z6quv4u3tjdFo5JFHHmHt2rVcvnyZixcv1qlNa4U4OPpH0Pbhd8k8spbSbPNNyMEvnID+43D0b1qY/HZotcWEhEfi4WmZrTcajZSVlkiOl/xRy8iWVaNf5zZsOXqZe14xO0IlZxZw99QfKNNXMKyPtEypewd3co7lkLrVTPI9OnlQUVKBXq3HJUJ6JmLVnHWUa+sSYajfQropaAwGgu3ta4gwQJSTM/52dlY50E0aeKfkaxpCp4g7SM9NYsOhP0hMv0JkUCdkgkBSZhwXrx8HQaBLhDTyf++QES1DjET8qqX8PSorK5kybhQAPh4eLTLHBfuX0jUoug4Znr19EZcz4omdtRtvZ/EWwIWaIiKDw2qIMEDXqA6E+geRlCG+dnv0aPMCeuPGjXh4eHDnnbWfGYVCgZeXF76+0hRgAPbu3QtAly5dCAgI+K8jwGfPXsfR0Y72tynT6PUVGI0m7O1tef75Bygs/OfKROrD3tUrRb1v6EMT6DZw8D87mUbg7unN90u2smXtEuKvXACgXccYRox/QnKfyYLDefx93nKxP7y9C+/KMtkTXyyZDD83tj+nP0/l1NUUTl1NuW2srqJQQ4iZHkPWoSzyzuSRfzYf1XkVHl088B/ob9XzohW1+D9Hhk+fPk1+vrnGZvx4c21kQEAAffr0Yffu3ezYsaPBaz/9tLYL28bGhn79+rF2rdm6UdlI7aNOp0Onq22CKC4ubtb/4f9HOAVGEfXIey0Sy8cvkNSk61y5cLrm3MnDe8hITSIwpHm1XDmaCoyVJgJcrV9Nv//kcA6cu87Vm9kIAqiKS8gvKsHF0Y53J0vTxwwbE4ZMIaM8vxyPTh64RLigSdHg1c3LqgYIVVYBtnYKXvj6KQLa+CGTN2+3w8PWlvSyMo6pVPSr2kI+qlKRXlaGp0Q1hGrEpqQwb/NWrqaZLXo7hgTz2ogH6BwqLUNyV/dRnLi8B7Umn8tJp7mcVPt5wWTC3cWbu3qI35morKzk6cdeAsDX289qsvTJpPFNv8kKTHr7fTzdXFk1t66LVUuhvEJHnqbAKslnHw8vbqSnsP3YAe7rNxiAbUf3cyM9GV8Pb9Fxqq2Sk5OT8fDwaNA6WSrs7Oxwc3Nj0aK6hi//FKT8Gp9+eh5du4azZMnbdc5fuZLCuXMLuPPOll3Yi8HiWR82uSMhCAJDH2p5R0ipcHZ1Y+JTDTejrfzte7Kz0njt/a8bjbP6fCEKmcDCh4N5dqU5UeGotMHfVUFivvSGyHGDu5KZV8RXy3ZTUm7eaXG0U/Du4/cwdpB46VEHfwciHokgdFQouSdyyT6SjeqCCtUFFY4BjnR6vRM2ts1TwPlfxf85MpyWVutxf2udb3WmIDVV3DZ6SUkJS5cuBaB///506NCwNeoXX3zBxx9/bM10/2dQaaigMO44JVk3kDu64dV5ILqiPOy9gpDbS+v4HjRsFCt/+57pLz2MIAgkXLnAp+8+iyAIDLpnlFXzW3dRzZy9OWQVVxATZM9LA7xZfELFc/28GBIlTXOzbbA3+xa8wjd/7eN8QjoA3aKCeH3iXUQGiX/oA9gobQgfZ9lJ7RzqjPPj1umAhnUMobhAS8zgzlZdfzv6eXiwMSuLD65eqbFf1hmNVWPS6ys3njrNkz8soLKysoYoXMvIYP3JU/w+9WVG3yHeGcte6ci0hz9jybZvSMlKsBgLC2jH4/e9gYOdtM/eI0+PwNPDi3VLdkq67p+GTCbD19MDhbz5t+xOH5oXbAICl9Kv1RzfCk8n6Quxe/sO4rdNf/PYjFdxUJrLhUqrav6rybGkePfei06no6KiAoVCwdWrV0lJScHPz8+qXbwnn3ySuXPnsnv3bvr374+DQ/PMDtasycDTw5a7hlh+5xMStJRoDXTr7sbbb7elokK8fGN9i5CyMv0/Vh7h8+CjGIpF6l03Mod/qnhD7uiKrXPL1XGfPraPhKsXmyTD2cUGIr2V3HNbnbCjrYysIuvkyqY+NJCnR/XlWrJZ2aJ9mC/2ylpFntxCDfoKA0E+TX/35PZy/Ab4IbOVkbIpBWO5kZLMEiorKlvJsJX4P0eGG4KUm0VeXh4jR47k4sWLtG/fntWrVzf6/vfee4833qitOSouLiY42DqThf8fYSjTkrDqC8qrtCId/SNwCogkcd03+PUZTUD/sZLiPTJlKtfjLnH2+AGL8917D+ShJ16SPL9tV4t4Y326xbnOAfacTC7By1EumQwDtAn0stqB7nYYSg1oU7ToNXW72H3ukNbYee+Uu1n4xmL+/mY9fUfcgYOLpeKAp7/4bW+Ap0PDuFhURHJpKeVVJBgg3MGRp8LCJMUCmLlyFcbKSlwdHBjYwbydfjjuGuqSEj5a9bckMgzg5erHmxO/Jis/lewC80LYzzMEf0/p7ngymQxfH39JjnX1YfGeQ/i6ujCiVwyL9xxq8H0C8NTdA0XHfWLMSL5avIQtBw4zYrD15SbV5RkCQoOlGg/1fEBy3A+eeoVjl85yLfkGJeW1JTTR4ZG8/1TDFr4NYcuWLVy9epVnnnkGjUbD6tWra7L1paWl9O/fX1K8QYMGsWrVKj766KM6Y4IgcOTIEUnx1qzOpG1bxzpkeOmSVG7cKGHFyl64uTX9WXrmmXk1r5OSsiyOy8r0JCZm4uwsXnlEtXubqPd53nM/Lt3vEBfUZEKuUHDHPfdyzyOT8GigL8ca6NS5lGTdQKZQ4hbZ3WIsYow4ybGWhruDDelqPYWltRrWGWo9N/J1eDhaTzbtlQq6tatfo/ixmUs5H59O3s4vGo1RXlBO9uFsck/kYqian1t7N/wH+qNwbN69638Z/+fI8K0kNDc3t87rkCYsYuPj47n//vtJSkqiT58+bN68Ga8mtE2VSmWjZRT/68g4uIry/AxkcgWVVc02zqEdkcmVFN+8JJkMKxS2fDz3Dy6fP0n81QsAtOsQQ6du0l2JABYcykMAnuzjyW8nVAD4uSjwdZZzMcM6xYYibRlnr6WRV6itQygm3CO+uafgSgHXl17HWG6sOyhIJ8Pzp/0MAuxYspcdS/ZahhMEFl+cLymes0LBT926szcvl3hNrQPdUG8fbK1oOM0sKMDV3p4zX8/Gx9Usc5dXVESPt94hs54OfzHYfnwlbs6e9O1kmeG8mXmN0nItHdv0FB3rqUkv8MW8mWzasZZR91pX7pCck4ehauGQnJNX65l8OyRWYfyxfhM2MhnfLvmThSv+xs3ZyaKUQ6y02mdjzdvw76//mmCPAF4YVGvKYGdrRxuvYKL8pJcjuTm7sn/RKtbu28a5eLM1dvd2nRg/5H6UVpTUZGVlYWdnR0BAABs2mM1QIiIiSExM5OLFi5LJ8KxZs0hJSflHm9D0+krU6gpJZSZnzlxHEMyVCFptOWfOXK/znj4SehEyfplPkx8uwUyGxeCrDdvYuXwZR7Zs5Ni2zZzYuZ1eQ+9h+KTHad9d/HfrdpgqK0nd/Tuqy0cAE47+ERh1ZaTs+IWguybh0126JXNLYWCkE2suqBm2MBGAxDwdD/x0gwqjiUGR/5x7X1N9BNd+uUbhlUJMJhM2Shv8B/rjN9APe29pMo2tqIv/c2S4V69eeHp61ihITJw4kczMTE6cOAGYt9YA2rc33zymTp3K1KnmrMShQ4cYO3YsBQUFPPjggyxbtgw7O+t9x1thRlHSBWyU9nR46gtiF70GgCCTYeviib4or/GLq/Dey43Xm505tt8cVxD4/IcVkuZ3PU9HGy8lM+71ryHDAB6OchLzpNd/7ToZx3NfrERbVvdaAUESGU7ZkFI/EQbr9x4buM6aBjoAW5mM+3z9uM+3+dmgnpER5BYV1xBhAG9XV3zc3PC95ZwUbD++gjD/dnXI8LqDi0nNvs53r28QHWvxnwuxsbFhzoLPmP/LHNxc3akmFmKl1WLahOLp7FTzuqVwq7SaTq+3OJbCq8d0Hw7AqZsXCPEIrDluCShtbXn03jE8eu+YZsfSaDQ1Ume5ubn4+fkxadIkFixYQJFEK2uAc+fOIQgCw4YNw8/PD7mVJScTHqmtTb9+vcTiuBpiMsLVGDmyDwCbN5/A3d2JAQNq64Lt7RWEhfkxZoz4JqtaNPJ9N4n/xARFtOXpGbOY+MbbHFi3mt0rl3Ny9w5O7t5BSFQ7Zv25GlsrnqPZJzejij1scc6tbQ9Sd/1G0Y3z/1Ey/PZQX44mlZBVbE7uaKqcSv2c5bx5139OhrXgsvk7L9gIuES4UKGtIG1bWp33RT0R9e+e2v95/J8jw7a2tnz++ec8//zzrF27ljZt2qBSqdBoNHh5edUoTcTHm73Yq5vtAO655x70ej2CIJCamsrgwYNrxj788EMeeED61mArwKgrxc4zAIWjm8V5k6kSo75+ZYPbEXvuRB0ppdsbmEwmk1VNTUq5gFZnpLKyNrbOUElaoR57hfTs5oc/bUVT2gCJFqQRTl2BDplCRtQTUTj4OUAzy73e+a3lthX1lZWklJbirVTiplCQVFLCyvQ09JWV3OnpxVCR2txpt3wH3xg1kse/m8+sv1fzYF8zCVh74iRZBQXMnvxYy829QkdxSaFk+n+rtFq5rtziWOxnb3zfnvW+bi4eHz2ixWIBTL//ZbS6EsordNgplOy6cogzyZdo5xdRR2GiKej0euJTbhDo44enqztXkhKYv+oPdHodDwwYyoNDxWUhb4WNjQ3l5eUYDAZUKlVNgsPGxsaq+0BISAgGg4GZM2dKvlYqhg4V3zvwySePA3DmTDzR0SE1x82DCUEux7XPADyHjUDhKd7ZsSE4ODlz9yOTUNo78Nfc2ZRptaQmxKPXlVtFhlWXDyPY2BA+8mWSNpgVoGxs7bB19qBcZZ1zaUvB11nB9hci+ONkARczzSU/XQPsefwODzwc//O0yWQ0UXi1YWnLVjIsHf/5v6oVeO6553B0dGTOnDnExcVhZ2fHuHHj+PLLLwkICGjwumpnIZPJxKlTpyzG8vLEZTBbURe2Lp6U52egTa9tYlLfOI+uIBulh7hsYqeY3hbprcRrsVTo9YRFmh+AyYnXsLGxoV0n6Y0z3YMdOJSoZcpys6RNdrGBSUuS0eoqGdxW+pZXeq4aB6WCX/41kXahvshtrFdscApxokJTgUdnabW8DaF9r5bxuL+u1fLO5ViKKipQyGS8FhnJgqQkSg3mGrVD+fmUGo2M9G/a2anza3U1Pudu2szcTbWGJSbgwa/nSHKgmzZvjPmFIJCcnVB7fAucHdxExwN48tHnJb2/PqhLxJfeuDmKb+J6YsxIa6bTID7eNI+dlw+x6oUF5GryeX3lLISqL6G6tIin7xSnDhCbeI0H332B/KJClApb5rz6Pv9a+BWaKhnETYf3oC0rYcqIhyTNz8vLi4yMDObMmUNFRQWBgWa3weLiYlxcpMtITZkyhU8//ZSlS5fSv3//OsYdDenT344XXzQ3vC5adBNfXyXjxtU+c2yVMgID7QgJkd6cv820NQAAf0BJREFUt3272ZSktFTH9esZyGQyOncOkxwn6psfyd++CfXhfaiPHKDo2GFc7uiH132jcIy2To0iLzOD3SuXs3/dakqqGu669L+T4Y8+jpMVVttg1qO38wyoUycss7VDr/lntIqllK+4Och57T+YBa4P1QZNrWh5/J8kwwCTJk1i0qRJDY7XVxf23y5Y/n8V7u37kH18EwmrPgcBSrJukLThOxDAo724Ot8vF62qeb19/XISr11m4V+7aqTUMlKTeHXKCHrfKX3r7LXBPhxLKuHwDS0CkF1cQVZxBQqZwLRB0tQfAGKigshXa7m3b8MKJGIRMCSA+N/iSd6YjHdPb+T2ll9JpYf0m1+xSsPFQ5dR5xZRWWnZyT76RXEZusUpyagrzFuE+spKvk5IwAQoq+qEdZWVbM7OEkWGxX7rJH8/q98vCA0+5fp3HiYp5FOPviBtDvXgm43bRb1PQGDWo+MkxS7SatmwZz/xN80Lu/Ztwhg9dDCuTtJUMwCuZF7H2c6RjoFRLF+7HgGBfpE9OJp4hg3nd4kmw5/+Np88tZm8lOt1TJvzEZWmShyUdpiAMl05S7askUyGBw4cyKpVq9DpdLi7u9O1a1fS09MpKyujXbt2Uv+7fPDBBwiCwE8//cRPP/1kMSalgW7QYHOW9cqVYnz97GqOWwI//7yN337bhU6np3PncCZNGsJ3361n6tRR3H+/uGY3u+BQgp57Bf/HnqJg305UO7dQdOIIRSeOYBcaTuSnc5FJ6IH5ZtoLnD90gMrKSuwcHBj+6OMMf/Qx/ELCrPxfmiG3d0JflI+hTFtzTl+solyVhdz+n6nLnfj0NIpEmoLcyNdxMrmEPK2hztirg/8zJLnHR9LNZlohDv9nyXAr/nvg12cUpdnJFN+8ZHHeJawTvr2lZ7NWLVmAl4+fhaZwYEgbvHz8Wf/XL4yZ8LSkeN2CHPhrShhz9uZyqWrLq0uAPW8O8aFbkPQMztQHB/Lkp38y85dtPDy0G65OlluEYqRxqnHt12sAZO7LJHPfbVuDAvT7VlqtYFJsCnOem1+vAx2IJ8PxGg0yQWBKSCjZunK2ZWfjKJezvGcvTMBjZ06TJtJ0Y+v7LaM/fTsmDZ8GwPKd3+Pl5sfw3rXqHrYKJb7uQQR4h0mOW1SsZu2WlVy7fhWA6LYdGTfiEVxd3MQFEMnpTRJLanJVBbzy2WxUheqac6cuxbLt4GHmfzAdbw9pcmh5xSpCvcyd7Qk5N4n2j+TnJ75kxHdPkqUWbyt+Pv4yNjIb3n3iRdKyM1m2fR0ujk6cW7YNEyZ6TH6AxLRkSXMDaNu2LW+88QZFRUV4e3sjl8vx9vbmlVdesVoWrSUTIk9MCaGszIheX4mtrYyTJwqIi9MQGupQR2FCDP7++xALF1rWpPfu3Y6cnEJ27DgjmgxXw8bBEc9hI5Ap7cj6czGVZaWUp9ykUq+XRIbP7jc34soVCqJ79KK4QMXqHyytzwVBYOrsuZLm5xLWGdXlI8T98T4A5apM4pbNwFRpwCVcvDTk9g1/iXrffWMepVe/IaLeu/x0ATO2ZVLZwMflnyDDvh7OBPm4tXjcVohDKxluRbMhs5ETOf4NNGnXKM1OAsDBrw3OwdLc2KpRrC5ApdexZNFX9LvLXLt4/MAO0lNuYKu0ruGxV4gjq54Mb/qNIvDYR0sRBFiw5hAL1lhKZwkITUrjiIYVz+31P2xu0IFOSpdVscFAhKMjk0NCqKisZFt2NsH29rgqzI1Bwfb2NeoSTWFAdHTTb7ICvTsOBSAhLRZvN/+a4+YgJy+bF996gvyC2rKpE2eOsHnXen6cswQfr6adz6TIpUnBr2vWk1+oRhAEgv3M80jLziG/UM3itRuY/uyTkuIpbORoyrToDXpSVBkMje5fc14miC/9KSwuplNEFG899hz6igqWbV9HZFAYHlXb55FBYZxPuCJpbtVwcHBAr9eTkGAuwQoICMDDw7qSovfff9+q6xrCL7+kcOJ4AZ9/0YHCggrmzbtRM1asMTB6dNO7JrdixYr9yGQCb745nq+/XgOAm5sTPj5uJCRkSIqlz8tBtXMLBft2YtSaM6/OXXvged8o5M5WZF0FAYPBwPnDB+uOmUxgBRkOGPAgxSlXqNCYa1+NOvPiWuHsjn9/8TsmC2b/q+kackHgvjGPio95OA+jydxv4tWCNcLJWSrOxqVhb6fg/n4dLcaWfSSuVlyn1qFN0WLnZYdjoCPqa2rSd6ZTWVGJRxcPgobVL93WisbRSoZbYRUSVn3Z6HhR0iWyMGcM2j78rqTYvfoP4ei+baxZtog1yxbVGbMGOkMlG2OLOJ9Wio+znIe7uZOurqCdjxI3B+lfgwYTTBKzfR2ndmz6TRJwMzYFhVLOJ+veZ/oDH9OmSxgT3x3P/Gk/89qCF0XHqTSZUFQRIkVVaYTsFjZtrZHtl+vWNzhmb2tL59AQhnSWZhgy+d7XAKgwVKAtU9f523i4iM/S/bxkPnmqXGSCjOAgsxJEWnoK+apcfl46nw/e+LSJCBDuKy0ruD82jsKSUsb1aXwL9OyVOJQKBd+9/w5tQ80SkgnJKbz6+VecjpVONtt4h3Ap/Rp3fvkgZfpyugSZF6/ZRXn4uorf+jdWGmu0mW2rFkuyW2T3ZDLrPi0mk4ktW7Zw/vx5i/Pdu3fngQcekNxE19IN0jeTSnB0tKFNG0cWbjcnAbp2deXixSIOHcyXTIbT0vKJiPBn0qQhNWQYwMXFkaSkrEautETyVx9TfO4UVJqQ2dnhdd8oPO8dhdK/4X6axuDp/89YVyuc3Ih+/BPyzu+hpCqJ4ugXjnfM3chspZeHNZb1lzp7jc5IoKuC3S+3xcG2eS6eAEZjJa9/u44Vu86ad0vaB6Mp0fHynL/5/MWRPDdGnExgUUIRcT/HUVll5BJ8bzDpu9MxGc3/d22aeeHTSoilo5UMt8IqaNOu1dVPvf2OY6rnnAi8Mv0LKo1Gjh+0dAHrM3AYr0yXnnUtLDXwyO83uV4loxYTZE/3YAem/JnCtEHevH5X09m+W7Hp6+ckz6EhuLa1Tk6sIZSX6ghsG4BPiDcIUGmsJKJLOC4eziz7dCUfrnhHdKw4TTFDDpsz38Jtx9bii3Xrm/xIDIhuz5q338JOpDZtbmEmy3d9z83Ma3XGBJAkrXb6/AmUtkoWfv0HURFmchifGMdL7zzJqbPHRceRgoTMbNJVBU2SYU1JCcH+vjVEGCAqLBR/b28ycsSXNVTj+cGP8eqKmWh1pQS5+zMq5h4upl2luFxbkyUWi7PXYvG822wrKwiCxbG1OH78OOfOnatz/ty5c3h4eNCvn3S5sevXr7Ns2TJu3DBncSMjI3nsscdo21Z642lhYQX+/uadqtTUMsLDHXjvX1G8/nos+fl1DXSagpOTHXl5Reh0tQ5nxcWlpKTk4uQkXke2+IxZZlSQy3Hs0BlDkZqcVUst3yQIhLwqLkkxf1c92eAWQPbJzfj1Hol/vzEW5w3lJVxf/RXtJn4gOpbJZEKusKX/XffxwLjH8PKRthC5HQ/GuLPmQiHqMgMOVtrO34p5K/ezfOcZi3MPDOjIq/NkbD9+VTQZTtuZVkOEAdJ2mGXVqhvrdIU68s/mt5JhK9BKhlthFZyC2lkQ3dLsZEzGCuy9zaYoZXlpYGODo3+E9NjOrrz/5U9kZaSSmmTeHg0Jb4t/kHWarZ/vyiYhT4edXKDcYGbvA9o4Ya+QceC6VjIZ7t9VuiFBY9Br9BReKaSiqALTbUVqwfdJczq0d7bHUPUwdXB2IONGFie3nyUnLU9aKzVNV2k0J1fUWOwjcdeYt3kL740Xt1W6Ytd8bmbE1f9zJGa0irVFhASG1RBhgHaR0QT4BZKeIc7q/Z+Ch6sL6dm5HDt/kX7dzETz6PkLpGfn4OEmfVE1qF1v9r+9iqyiHCJ9wrCV2xLpE8b215bi5iBNraGpWlxrMovnz59HEATuuOMOOlftFsTGxnLy5EkuXLggmQzv37+fDz/8EJPJVDPf5ORk9u7dyyeffMJdd90lKZ5cLlBSYqCiopLs7HJ69nKvOW/N/7dnzyj27j3PY4/NBiAtLY9Jk2aj0+kZOFCqCoSAyWBEc66uBnJ1lkIsGf6nkHl4LYJgg+8dtX0MFSVFJK75mrL89EautMTCv3ax+e8l7N+5noO7NnJk71b6DhrOyIem0DFGmqNlNd6925fDN7QM/v46UT5KnJS1mpcCsGKKtJK7v3aeQSGX8fsHj/HYR+aFiZO9kkBvNxJSxS9kSzNKkcllREyIoDy/nLQdacgd5XR736yydGbmGcrzxcmZtsISrWS4FVYhakJtU1Texf2U5iQTPeVz7Kqk1MoLsrm2bCZukdKl0KrhHxiCf6B0W93bsS9Bg7NSxt6pbbnjG7P+tI1MINBNQWqh9AzOntPxnLuWxri7uuLr4cJzX6zg2KUkOkUE8PN7Ewj0dhMdS5Oi4erCqw0ab0glw96BnmTcyKJCV0FodDBxJ+P56d3fAQiIEJ8tGe4rbYEgFjs+fJ+H58zl80mPMraPWWlk3YkTvL98BYtffonCEi3PL/qJ9SdPiSbDqbk3EASBQd1H4u8RjExmvVizh7sXaRkpHDl5kAG9BwFw5MQB0jJS8HSX3hTVkvh/7d1ndFRVF4Dh96ZNeu+dkEDoXap0FAsqxYoNEXsHFXv7FBuKiGJDERsKqFgA6UV6r0lI773XmZT5fgxMGJKQuSESNPtZi+XcdnImJpl9zz1n78G9e/Hbpi28OP9jNBrDaJVWa/j5HdK7ZaOwbg4uVOgq2RxjGE3s5t+JYA91j9NvvuyaFn3t5hQWFuLu7m4spAQQEBBAXFwcBS2oVvjxxx9TV1eHo6Mj/foZRuEPHDhAaWkpCxcuVB0MBwTYEhtbzj0zDlFVVUdEuCFVW0G+Dg8P9WVxH3poArt2RREbm4GiQFFRGYWFZTg62nL//ebnmLb29OL8blUbKsjOIv7oEbyDggnpHMmRHX/zy6cfUa3V0n/MOK6bYf4ULCMLC9K3/QSKgs+AK9AW5RC3/B20RblY2pq/QDK4QycefPp1pj00m79++5FVK75h+6ZVbN+0itDwSN797Bc0KvMgv70hm7g8w5PEY5mG4PL0g9CWfGcz8orpHOzDFUNMMxA52mlIzy0yu52aqhocgxzxGuCFvk5P6ppUbD1tsTiVL9/Ww5aylLJmWhGNkWBYnLfsXb9j4+huDIQBbN19sXFyJ3vfGrz7tV6Fq5Yoqaoj3EuDt5PpB1RtHZTr6pq4qmkLftrC9iOJ3Hn1QBb/uYu1uw2P53cfT+LVRWv4dLZ5KakAUv9MbboCXQuMu3UkScdTKMwuYvKj1zD33g+pLK1CY2fDjbPML4s9u5P61FXmmLV4Cf7ubtw2coRx3+0jR/LR6jW88uNPbJ/zOl9u2MihxCSz23R3MkwJmTRCXZaRxgy9ZDi/rlrGs/97HM2pxZpareHD8HRw3FbumnwtR06eJCk9kypt/U1chwB/7pp0rer26urqeOW3efx8YLVJlrrJ/a7kpWseM3t086Onm59H3RJWVlZUVFSg1WrRnMp+oNVqqaiowNpafbCZk5ODo6MjS5cuNS7CKygo4KabbiInR/00k0mT/Jk7N47Kylq8vTVcOtyTkyfLKC+vZcAAdZk9AEJDffn++9l8/vkajh9PAqBbt1CmT7+c0FDzb067fLyk+ZNUOL5nJ+88eC+6U78Hk+9/mJWfL6Smpgb0ehJOGEpvqw2IwyY8QOIfn5C+9Ueqy4sojN5FdVkx1k5uhE+epbqf9g5OXDXpVmzt7PlqwRwqyktJiotGp61SHQz/dKAQBfBztsbfxRrLFs57P83D2YHkrAIKSsqN+9JyCjmZkoOHi8M5rjyL3lBwQ1uoNT5e09fUb5+eOyzUk2BYnLeaylLqygpI37YctwjDiEtR3H6qCjKxsFL/odXaAlytic3Vsje5/g/R+pgSEvK1hHmonw8Wk5KDv5cL3m5O7DiSiJO9hvcem8Qjc5fx9+H45hs4Q1lKGRZWFvSe3ZsD/zuAU4gToZNCif4imi73qM/CMPjqSxh8tSEFkzfw3vrXyUzKxjvQE3vnlqWjAsiuavjozUujwULl4+DYzEz0wLrDRxjXqycAm44dIyE7xzji4ubgqKrday69g6/+fJvjCfvoFnZ+Fd9m3PYQh48dIDElnqqq+tRxYSHh3H3bA+fV9vlycnBg4UvPsXHXXmJO3Sx07hDK6EEDjAvX1Fi8YznL968y2afXw/J9qwjxCGDasBuauPLcUrMbLvYK8PIxWVRnjsDAQBISEvjkk0+Mc3pjY2OpqqoiLEz9VKVu3bpRUFBgko3C3d0dd3d3Y9lnNfr0deXjhb3Iy9MRFGSHtbUFQUF2zPugB05OLftoDQ72bqUKdK3n508+QnfG78KKhR+CXo/HqQV5+ZkZ7Fj1u+pg2DWiP2HXPULiyg/J2f8X6MHOK5COk2di46juZiInM40/VnzDut9/pKzUUBSk78DhTLjhTpxaUBTEUWOBp6MVmx9pnUpuo/p34oe1+xk2430AYpJzGHn/fKpraxnTX93AQ3l6Oftf3t/ktmgZCYbFeXMO60XRyX1k7/mD7D1/NDjW1q7p7sL8rbnc8FUiCnAorZIZP6SgANd0d1XdXlFpJV07GEbBY1Ny6NMpkEkje7Hgpy1EJWWraqtWW4u9nz22XoaRC32dHqdQJ6wdrUlYlkDPmT3NbqumupZ7+j2Kk6sj87bMQVEUNPYaQruqn2qyIz+fZelpTAkIZKiHBzft3dPg8eCrXbsyTGWZ1x4hIeyLj+f6d97FXqNBAcq1hseR/cMN88tPpKUR5Hnudl9eNMNkW6/X8+nK/2FnY4+dbf1Ii4LCS9M/M7t/zk7OfPHB96zfvJqoWEOGhi4R3Rg78gpsrM9/IU1jzjXdduqTzxIREszLD93HE2/NJdTfn0duu5nxl6pfPHa2n/evRkHh1sETuaqnIUvLn0c28s3On/n5wBqzg+HVOzazcPk33Df5Vq4cOopet1zeYFT5m1fe50qVmWCGDx9OYmIiRUVF7NtnWHyk1+uxtLRkxAjzRumzsrKMr2+//Xaee+45Pv30U8aOHQvA+vXryc3N5fHHH1fVt9Ocna2pqqrjwP4iADqEOeDr27L0j2BYMHfsWBL5+aWcPbN+woRBZrdTnZ9HRVwMNr5+2IWEUXr4ADkrvqdOp8Nl4BC8J5r/9ColJhprjYYZL79OVkoyPy/8ECc3N977Yy16PTw87lKyU82bT59/vGFhE7fIQeQf24aFjS0ePYZTmmz4vfPoNsysNl97agZ7t29Er6/D1s6BCdffydVT7sA/KNTs93i2J8f48MKfmRxIraBvUMsHEU57ftrlbDkQS0ZeCQClFYa/eX6ezjxzh7rCQOKfIcGwOG/Bl00DvZ6iWNO7U5eIvoZjbeyh4V4cyahkc5zpXKrhHR154FL11aPcnOyIS8tlxcZDpGQXMm6gYbFVSXlVgwIczbG0tTSuDrays6Iiq4K8A3mGRRAqn3hZWVvi6uWCvZPdeadCWpuTzeHiYp7pXL+Q7OzubM7NUx0MfzB9GlPefpfMoiJjEAzg7+bG/Ol3kZCdTffgoGZzExcUN/5Yu1JbTqW2/gkAZnwfrr/rKjqHd+F/z77LI8/MoENwRx6/fzZXjlM/9eBsidm52Fpb4+fuarK/praWOr0eGysrRvWIpFzb+Nz1rLx8XJwM1eUOR59EV13d6HktkVaYSYhHALOvrB/x7hEYydaTu0ktyDjHlaZ+Wvc7O47sZ+Ezrxv3nb2g7tcta1UHw8HBwdx2221s3ryZjAxDf/z9/Rk5ciRBQebNpZ88eXKDfUuWLGHJkvqpBHq9npkzZ5pdge60ujo9X3yRzKaNuSbTTEaP9uLuGSGqfwe3bj3Ks89+RXkjBXMURTE7GC47dpikN1+iTmf4mfK5fio5vyxFX1ML6KlMiAMwOyCuKCulQ9fuDLv6Wupqa/l54Yf4BAVjfSr9mXdgEPHHjprVVvLqLxqfdKtAXXUVaZu+N+4wNxjevW0dAFbWNnTvfQlFhXl8+/ncs5pXePLV+Wa1B/Dephxq6vRMXpSAi50ljpr6pxoKsO0xdaO5vh7ObP3kMT5fuYMDMYYMEH06B3L3NUNwsDP/JjtovLo1JMJ8EgyL82Zl60DYtQ+jLcqhMt+QHN7Owx+N6z+zCEstGysLFt8ayu6kcg6lGx739Q6wY2CoirlaZxjWuyMrNh3m3reWAjC6fyfKK3Wk5xbTp7O6lDa2HrZUZFVQV12HQ5ADxSeLOfm1IYOGva/6EYlxU0eyYv5vHNseRfehLS92EVtWhruNDd5nVKrys7XlpkDD+1uYmEhsmfqFGt2Dgzn03rv8tGMH0WmGAKdrUCDXDxmM5tSj/u8ff6zZdsYPNn9kqzlZORm4uhgeyx48ug+dTtvMFeb7cv1Wgjw9uOfykSb7F63fSnp+Ia/eMonOAU0vbHSytycuOZXXP/kCgMycXN5etLjBeQoKT06/Q1XfNFY2FFYUU66twEFj+FkrqyqnsLwYWyvz87weiYvG282DAK/6NQOhfoE8fOOdALz4yVyOxDae7aM5oaGh3HnnnS26FsyvONeSynR//pHFxg25Jvv0etiwIRdfP1smTPBt4srGvffez5Q1VTBHxZ1x9vLvqTvjZzh72XeA/tTCOqjOy6Vo22azg2F9XR11tTXkZ2YYe1FTXW3crlF7g2bWW1H3/0NRFGprqtm3c1PDlvR6FEVdMJxeXP+eiiprKaqsX9fRkmGG93/YxOM3j+Kp28aa7C8uq2TiU1+wep55U0zULqgW5pNgWLQajas3Gte2qdl+tpsWJ57z+KZYQ/W0lqTJ+d99V1OlrSYhI5/xg7ow7pJIdh1Lok9nw3QJNfxG+FGWWoauSEfw1cHGzBIWNhaEXKc+ldyRbcdRLCx47/6P8Av1wdnDyTg6qijw1KJHzWonX6cjyK4+GLe3tCTA1o5rTs0T/CMri3QzyzGfzdbGhttHjiT/VAU7jxZUxLpy8M0t+tqNcXJ0JjYhmlfeMWRISc9K4415LzU4T0HhmcdeVt2+vpEPdl1NTaP7z9YzshPbDxxi0+69KEBxaRlr/zbNd3x6hbvaYLhnYBd2xh9g4oJ7GN7JMM9868k9lFaVMyT83DmPz5Sdn0vHwFDjtpO9Ix38g5g2wTDNYsmfK0hIT1XVt9MqKirYs2cPmZmGecj+/v4MGDDA7HLMCxYsaNHXNcemTXkAXHGFD0OHGeYhb/+7gNWrs9m8KVd1MJyZmY+trQ1vvnkXHTv6YWnZsmIPVckJKNY2BN73KLqsDLKXfYelkzOdP/gC9BB1/21oG5nXfS5J0VE8fPqGTlFMt1XoO2ux6mua4+UTYM4DIFUm93Jt1Xwc//vqLywtLXjkhvrpPTmFpUyevYiopKxzXHluxXHFDfY5hTgZs0sI80kwLP6TdiWV/1M1QfB2c2LJWaUzB3UPZdX76tMLeQ3wwmuAYcTGFlv6v9qfypxKbD1ssWpBZbyYfXHG15mJ2WQmnjGHWeWbzTljGsOfQ0yTwufrdNS0YDQN4NO165i78jdyig1/yL1dXHjimgncd3nL5s7FpR1r8pi1lQZf90A0Nk0XLejdvR/bdm1iw9a/UBSF4pIi1mz43eSc06NL5gbDi9bXFyfJLS412a6uqSGnqARbm+YXvc2881a83d1JzsjgwIlo7G1tiQhpndGh+0beyu7EQ6QXZbF0j+H96tFjZWHF/aNuU9VWem79B3ry7ztMjmXl51Jdo356R3FxMV9++SWlZ5T9jo2N5cCBA0yfPh1n5+ZzIfft21f11zVXTo4WPz9b7rizfk5+eLgjBw8Wk52t/ulC164hFBSUMnKk+esEGlNbUY5dWARul45GX1tL9rLv0Pj4YXFqzrvGx4+KuJPqGm3ud/0fqFBnrq9+3d6q7dXV6XlilGFQx9/FulWq71laKLy6aDUWisJD1w8nKTOfybMXkZRZgKuKgio5e3JIXZ1KyIQQPPt6cvzDhpUnI26LwKt/26aB/DeSYFj8Jw0MsefM6O9oRiW6Wj2RPobHv9HZWiwtoE9gyxZHaHU1LN94kH3RKXi7OXHbFQNIySqkS6gvbmZmbairrWPXE7uwdrSm///6oygKlhpLHIMcW9QngCHXXNIqf7z9bG1JrqhgQ04OY7xNR/t35OdToNMRaGf+H/HTXl++gnd+XWlyk5JdXMzsb74lv7SU56Y0nOPZnPk/PXfOD2MrCyvGDpjElUNuafT4Uw+/gI+3L4nJ8ew/vAcHewciwiIbPddcSdm5hh8/BbTV1Ybts3T0bf4piouTEw9NvRGAMdPuJSTAj/dmq0871Zh+oT344o63WLDxa46nG4Kj7gGdeWjMHfQJNr9MeLBfADHJCSzfsIopY640ObZ6x2ayC/IIb0HBnI0bN1JSUoKiKHieWlCZl5dHaWkpGzdu5LrrrlPV3qJFi5o8ptFo6NSpE5dcconZ7VlbW1BaWkNlZS12dobc1hUVtZSWVmPTghK+d9wxllmzvuD993/mqqsuwcnJ9O+In597E1eeRa+H2lp0efWFdvQ1NcbtOpU3JpPuf1jV+edy8sc3sfMMIGjMbZz88c0mz1MUhYgb2q4oyKUfnMTb0YpdM8/v78BpXz4/lRlv/MDLX6wiu6CEnzcdJqugFH9PZ5bNMT8lZP6hfHSFOlw6NV1kJ/9wvgTDLSDBsPhP+nFafeql7/YWcCyzkrUPhBPmaQiGE/K0XP1pPOM6q39EX1BSzoSZnxGTYhh17RcZxCVdQ7jx+a+YNXUMs28fZ1Y7FpYW2DjbYGlv2SoBLMDdr7dOWqYBbu4kVVTw5skYokpL6eXigqLAsZISfs3IQAEGuZv54XyGRRs2ADCkcyeuPRV4/L53H39HR7Now4YWBcPAOUeuamqrWbP7JzxcfRnYteEiLlcXNx69x1Cm+tKr+xAaFMaHb37Rsn6c0jvMEPwdSkjG3lZDJ//6R+Y2lpZ4ujjRr2OoqjY3fPVpg32l5eU4ObRs7jvAJWG9WRLWu8XXA4zpP5TopHgefPt5DkQfZUjP/lhYKOw6dohFK5eiKArjBl6qut34+Hisra2ZNm0afn6GedWZmZl8+eWXxMXFNXN1Q4sWLWr296xPnz7MnTvXmNf4XMIjHDh6pISnnjxOnz6G4OTgwWLKy2vp2VNdBT+Axx77FEWBJUvWs2TJepNjiqJw4MBHZrdVmZRA9AOnp80oZ22rM+WBR1p0XWPKUqPR11YbXzd4fHeayj+HeTlZnDxxCL+AEDpEdOHg7m388NV8qnVaBo+4nBvueNDstiwsFAJcrLFu4TSVxlw9rDvfvHI7d776DQt//hu9Hrp28OWn1+/Cz9P8n5WKzAqsXayxdqx/qmTnY0foxFDQQ+ySWCoyKlqt3+2JBMPiP++jbbn4OlsbA2GAME8Nfi7WfL4jj+mD1WVEeOnzVUQnZ2OnsaJSWwPAyL4R2GusWb83xuxgGMBvpB8pv6dQFFWEaxdXVf1ozFPjXySkSxAPvm+aemzF/N/JTs7hgbnmjULcGBjAmuwsympq+DkjnZ8z0o3H9ICTlRU3BqhbLAig1VXj7+7OH889i+WpvLN3jx1Dj8eeoLSFc5Bvu+Jxfly/kJ7hg+jb2bAC/UDMNo7E7ea6EdNIzY5j59F1bD+yptFg+Ezb/jjYYF9JaQnOTuqCm8mDDfmOE7Nz8Xd3NW6fj7Xbd3IoOoYpl43F1dmZp955n6T0DDzd3Zjz+MN0CAxQ3WZRRTHf7VrJ8XRDZcbuAZ25ZdC1uNqbX975wRvu4Pu/VlJUVsKnv3zPp798bzym1+txc3LhoRvuVN23yspKPD09jYEwgJ+fH25ubi2qQHdmn5py8OBBvv32W6ZPb/73ZPJkf44fKyU3V8vatfXZTSwtFSZPUVfFr75vTR5R21Izx1t+8x21b0+DfeE9exmzS5yLe7ehaNx8jK9bw+H9O3h11nRjUZCbpz/GT19/RG1NNXq9nrhoQ6YLNQHx46O8mfVrOj/sK+Dm/upv+gGWrmuY+3fiyF58/9d+HO1suHX8ALYcjAXgpnHmzdGvLqnGzrv+iZy9vz0OAQ64dTEsANa4a6jMbdnf0fZOgmHxn1dQUYO2RM/b67O5oqshqFkTVUJ8nhZbK/UfCmt3RePsYMuuRTPpepMhnZSlpQWBPm4kZ6r7kC48XggWcOKTE9h522HtZG38nFIUhW4Pmf+4GiAvvQBnj4aB24mdUSQeNy8XKICHjYa3unfn5agok7nDAD4aDS936YqnGaNnZxvftw87omNMPopPj9ZNGNCygHFf9FacHdy4/Yr6XLHdwwbw6pf3cjRuN/dPeonEjGgy85KbbWvNxj84cGQvN153K24u7jz+/H0kpsTj5eHDOy9/SFhouKq+zbruCsCwYC6rsBgLRSHQs2Ufrn9s3kp0QhIP3HQDP6/fSGK6IRtHbkEhX/68ktceUVcUJLMoh6mfPUJOab5x39aTe1i+fzXf3zMfXxfzHrX6enjx05yPmfbqLNJyTBdmBfn489WL7+LnqX5hraOjI/n5+cTExNC5syGVVUxMDPn5+Ti1YNHlwoULmTVrFo888ghjxowBDHmGP/zwQ1599VVKSkp49dVX2bBhg1nBcGSkE88934llP2WQkGBI59exowPX3+BP5xY8cfrii8dUX9MYn+untko7p21d+QsrFs7npsdmMXj8Vbw2bWqDaUkPznmXoVc1X5Y79IoZjb4+H0u/nI/2jKIgPyyah16vx8vHcHOYm53O5rUrVQXDczfmYGWh8OwfGbz6Vxbu9pbGt2xuarUH31nW6OwtRYHyKh3PffL7qfYUs4NhxUKhqqA+40jvp3ubHD+zMp1QR4Jh8Z83upMTq06UsPDvXBb+ndvgmFrF5ZV0DvbBx9302traOsoq1C2cKYkvMb6uzKmkMqdld/XbV+42vi4tLDPZ1lZqyUjIxsra/F/3itpaujg5823/AewrKiS5wvDoLdTegf6urlhZWJBdVYWPyjKnfcI68PvefVz9xpwzpknspaSigt4dOvD9tvpcr7dcal6e0djUI1hZWlNaUYSTvSsAZZUllFeWUlRmGBXycvUnr6j5VdsrVy8n6uQxHr57Jst/+4GEZMPj+Jy8LD7/9iPmPP++mrcLwKajUWw7EUN1bS2BHu4MiYxg7aGjjO3ZjV4dzC+IkpaVg7eHO44O9hyPjcfF0ZHXH3uQp979gKj4BNX9mrduEdmleVgoCqGehkV5SXmp5JTk8cG6RcyZMtusdsoqK+jXpQf7lvzBpv07iUkyVGGMDO3IqP6DsbayJjU7kyCfplPINaZTp07s27ePH3/80Vh+ufpUGq9OndRXBps7dy7e3t5MmDDBuO+aa67hxx9/ZOHChSxZsoRffvmF6Ohos9vs1s2Zbq+onxLRmP79W6famc/1t7ZKO6ftXrea/KxMug0cXL/zrCHsPev+MisY1pXkN3vOaTbO5lUFTIyNwsZGw8PPvElmWjLfL5qHs6s7n/20Eb1ez53XDSErrfkb4TOdmVqtsrqO9OI647aa4RNz1hibk1XmNFsvW8rTy8nYmIH/aNOnD9k7sqmpqMHe7/yLhLRHEgyL/7w5EwKorYO/oktM9l8W6cycCeofLQd5uxGdnM2uY/Xp29bsPEFcWh7hgeqmXHgN8DqfJ5ZGi57/xrhgKzctj0UvfGN6gh4CO5n/6Pau/ft4tnMkPV1cGOzuwWB30w+mVVlZfJQQ3yDLRHOe++4HFGBHdAw7omNMjj29pL7PiqKYHQy7OLiTX5LDa1/dT8eArgAkZERTqavAw9kwIllYmoujGY/+U9OT8fHyw8nRmaNRh3FxduWtF+cz88X7ORFtXmGBM+05mcDGIydM9nX09aK4vJKjyWmqguHyykq8PQyjyimZWXQKDaZLxzACfLxJTEtv5uqGdsTvx9ZKwzcz5tHV31Du+ETGSW79/DH+jttndjtDp09i4ezXGdKzH5cPGs7lg4abHP929S889/E7DbJMNGf06NGkpKSQk5ODTldflMTb25vRo9UV8ABITjYERDt37mTwYENgt2fPHtLS0oznODs7qyobXVpaw5o12STEnxoZDnfg8st9WlSOefv24xw9msT48f3x8nJh9uwvOXAglk6dAnnzzbvw8VFXovi0shMNf27tIzobs0s0Jy0uFldPL5zd6p9o+Id15LannkWv1/PR0zNJiY05Rwv1jn0+07xOo9B35ldmnVleXkp45x6MGj+R2tpavl80D7+A+qIgvv7BxEYdNvPrGjw24vxThOavbXqBYEu593CnPL2cpJVJlMSX4BzuDAqUJpSSfyTfeI5QT4Jh8Z/nYmfJpzcFk1Kg42Su4RFThJeGEHf1j/kBJo3qxbvfbeTqmYYFL/ujU7n15SUoiuGYGhG3RrSoD406nSvurIEGa1tr/Dr4MHX29WY3la3V8tiRw1wfEMjdoaFYnwoQinQ63omLZWe++SM8jXWz2XNUpG275tLbWfznu1RpKzieuP90AyiKwrWX3kluYQb5xdn0DB/YbFsVFeX4eBlGMFPSEukc3pVukT0I8AsmMVn9oq2dMXEoisIVfXuyar/hA9leo8HZ3o7MwoY5Qs/FzdmJ5IwMvv9jNbkFBYy8xPBotbS8HGdH9YvoiitL6eAZZAyEAbr6dyLQzY/kfPOD69TsDK55Yjr3T7mNF6Y/gs2pUdy8ogIenfsya3ZuUd03ADs7O2bMmMGxY8dITzf0JyAggO7du2Nlpf6jq1OnThw/fpxZs2Zhe+qJRlWV4e9B166nbqISEvD1NS8/cF6elhdfiKKgoH4U8eDBYjZuyOO1/3XBw0Nd+e7Fi9exf38s119/KcuXb2PbNkPKwEOH4pk371fmzDGvmmfhlvVk//QtvlPvwnXIcBJefoqz77iDHn4St0tHmdVeUV4ufqH1udiDO0USEtmFXkMNNz1eAQFkJiWZ1ZbZg6CK+b//+ro6amtryM3OMP7dqK6uNm7XVDde3fFcHht1ceTLP5vfSD+yd2WjK9JRcKyAgmOm0/I0bhr8R7Vsvnp7J8GwaDeC3W0Idlf3AdWYmbeM5nBsOuv2mI6GjO4fweM3mfcBc9r+V/bjEOhA5HTTFD4pf6RQmVtJ52nmlf388qihuMBdPR4irGcoz393fum3Ip2ciC4tZVl6GnsLC3mmc2eyqqp4Ly6W4upq9MA4b/UfGMXfLmn+JJX6dBqGl6s/G/evJCvfMC/azzOY0f2uI8DL8CH+1oPfn6sJI1dXd5JSE/jmp0Xk5GUz+lJD7uOS0mKcnMxfVHZaQVk53i7ODI4MNwbDAHY2NuQWl5zjyoYG9urJH5u38uWKXwEY0qcXJWXl5BYU0rOz+psqT0d3kvLS2BS9g1GRQwDYGLWDpPw0vBzNH13qF9mD/dFH+Xj5Ejbu284ns98gJSudx99/lfziIvR6PTeMvVp1/wCsrKzo3bs3vXv3btH1Z3r66ad54oknyMvLo/KMxZpeXl7Mnj2btLQ0OnbsaHZu4qU/pFNQUI2igL+/IbjOyKiioEDH0h/SePChsGZaMJWQkImPjyseHs7s2xeLo6Mtzz9/Cy+99A379pmfF7ho5zZ0+bk4dj/zxtw0uCze/bfZwbClpSW56fWj52+uMM3BnZeZYfbNa8SN5k29USsx9gR3TTQ8pVIUxWS7pQoravh6dwFHMgw/K70C7Lj9EnfczMz/fu2TnxEZ4sNbD13LtU9+1uR5CvDrO/eY1aaVnRXdH+nOya9PUpZsWgHUKdSJiNsjWpSfXkgwLIQq1TW13PDsl9hqrPn93XvYf6rOfN9OQQztpe7DD0BboMXGqWGAXhRTRFmK+nLHT335KHaO557H+9unq8lLy+eu15qeW/hRr958l5rKkpRkkirKuf/QQer0htltzlbWPB4ezkiv88tlmVVYRE1dLYEe5s0NPJdA7zCTBXQtNWTApaxcvZzPvzGksRo6cCQlpcXk5mfTq5v5VdlOs7W2pqSykura+nKulTod+aWlaMwounGm+26agsbGmvTsHAb37kWPThFEJyQx8pL+DOrVQ3XfRkUOYume33n4u5ewtTY8JamqNsx5H9VliNnt/PXhN7z3/Re8880nRCfFM+aBm6mtq0Ov1+Pu7Mrcx57n2hHqCqrU1NSQm5uLi4sL9vb2ZGdns2PHDmpqaoiMjKRHD/XvNzw8nGXLlvHXX3+RdGokMywsjMsuuwwbG8Pv4FtvvWV2e0eOFGNjY8Err0bSoYNhZD4hoZyXXozm8GF1o/4AJSUVREQYpm0lJWXRtWsw48f35+uv1xEXl2F2O9rUZKxd3bFyrr950wQE4X/HPaCHlPlvUZWSZHZ7viGhJEVH8efXi7jqDtOFhRuX/0hZURFBEebdtDsFqcvbm7lzJbriPELGn3tBY3PBuNrUlRnFOiZ9kUB2aY1x36bYUpYeKOTn6WH4uTT/u/v34QSqdNXG14rS+BxitVk1bT1s6flETyoyK6jIMqzlsPe1l7nC50mCYSFUsLay5HBcBkHergzpGcaQnuoDYDBUEjqturzaZLtOW0dlViUWVurzXEYOaH6E8MjW4yQcTTpnMGyhKNwWHMwANzcePXKY6ro69ICvrS0f9eqNu03LR9iX/r2d135aRnpBAf3DO/LEhAl8vGYND191JZebOQK4+8RGHO1c6NahH7tPbDznuc2lUzvTg9OfQGOjIS0jlaEDh9OrWx+iTh5jzKWXM3iA+ly5oT6enEhN59M1mwDDSPEnazZRXVtL5wB1C8rsNBoeuPkGk32RYaE8e6/5SfvP9MjYu9iXdJS4nCQqq+tXqEd4h/LIGPMeyQNYWFgw69Z7GN1/CFc/Pg1ttQ69Xk+wrz9rP/wWb3d18+izsrL49ttvqaiowNLSkquuuoq//voL7amsJlFRUeh0Ovr1U39zotFouOaaayg+Vf3QxUX9aP9pZWW1+PvbGgNhgLAwB7x9NGRlVp3jysa5uDiQnJzN6tV7ycjI59JLu5/6OpUNCnCcS3VRIRr/+rSHtsEdsAsNw6m3IVuLjZcP2kzzp8H0HTmGpKgTfDf3LaL376VL/0tQFAtiDu1n7/q1oCj0Hz3W7PbUKEk4THlWwjmD4VumP9bqX/ft9dlkldZgoUCYx6nc9PlaskqqeWdDNu9Naj6t5E1j+xIW4Gl83Zr1nVNXp2LjaoPPYB+T/aWJpdRU1ODWrWXzy9szCYaFUOmqod1YueUImXklqhKmnynuu/r5p1V5VSbbp9n7t+2dfkJ5Oe/GnjQGwgDZVVW8G3uSWRGdWhQQr9yzl3s/MS0e0btDKH9HRePp7Gx2MPzdmg8I9e9Mtw79+G7NB00OryioC4btbO14eIbpFJMunbrzwqzXzW7jTGN7dSM+M4fsomJQoEKrpaJKi8bGmtE9uqhur6y8gqjERAobmWJx2dDBjVzRNBc7J5bd/zF/HtnIsTPyDF/VczQ2Vur+355IjOWx914xBsIAqdmZPDr3FT6Y+ZKqgHjjxo2UlxsWpNXU1PDbb7+h1+tNMkrs37+/RcHwsmXLWLJkiTFPsbu7O7fffjvXX2/+fPrTXF2tycysYv++Ivr1dwVg375CMjOqcHNTN+oPMGBAJ1av3sezzxoWjg0Z0pWKCi1ZWYV062Z+BT/F0hJdTn3mlE7vfmxy/MzKdOa48rZpbPllOflZmezfvJH9m8+4+dTr8fDz58rb7zK7vdZ2y92PtXqbfyeUY2ulsHx6GN39DHl9j2ZUMuXLBLbGm/fE7qOnbmj0dWtIXZOKU4hTg2A48ZdEylLKGDLP/Cc7wkCCYSFU8nBxoKa2jpH3f8CES7vj5eaIcsZt/1O3nd8oiYW1BXbednSY0qH5k/8hP6Sm8lVKMtV1dVgqCrcFBZNWVcn6nBx2FRQwbf/+Fk2VmLvyNxTg/vGX8/GavwDwd3fHz82NAwmJ5774bGd+njfx4a5vQWW/0rISok4eo6CooMHj1yvGTGjiqsZ5OTtx/xWj2XwsmvT8QgACPNwY0a0zns7q0vrtOnSE1z9dRGVVI6OOiqI6GAawsbJhYt/xTOw7XvW1p32w9EveXPwx2modVpaWzLr1HuLTUli24U/W7t7KkOmTVE2VyMjIwMLCghEjRlBUVMTBgwextbXl4YcNZYE//PBD8luwgPPzzz9n8eLFJv9P8/PzmTdvHkVFRcyYoS7vbb9+rqxbl8M778Si0Rie4mi1hhRcp4NjNWbNmkJVVTWpqbmMGNGDYcO6c/BgPN26hTB+vPk5uDW+/lQmJZD7+wq8JphWdMzfsJrashJsg0PNbs/eyYkXvvqOBU8/TtwR06wMEb368OCbc3Fwbp30cq3h2MHdDfZ17tbbrKIgpxVV1hLmYWMMhAF6+NsR7GZDUr55C/LScgrN/nqB3uc/klurq6W6pFryDLeQBMNCqLRg2VYUBfKKy1n8Z8M/vOYEw0M+MNy573h0B04hTvR4Qv0cyH/SZ0mGwDTE3p5nO3emk6MhcBvm4cH7cXEUV1fzanSU6mA4Oj2dCD8/5tw61RgMA3g6OxGTbv68yPlPrGz09Wl1+jq2HvwDtc8md+zZyqvvPktFZcOSpgqK6mAYwMPJsVUq0H3y43IqGguEAUXFSB+ArkZHXE4yfi7euDm4cDIrgS///gltjY6xXYZxVS/zR9Nf+XweAJ2Dw/jkmTfo1cmQmeGqYaOZOe9/5BcXMv21p8wOhisrK/Hx8WH48OHU1tZy8OBBPDw8sLc3PCnx8PAgI8P8n5XTfvnlFwB69eplTM22efNmDh48yC+//KI6GL7xpgCiokpJS6s0BsEAQUF23Hij+pSNHh7OvP/+vSb7+vTpyOLF6hbDOg8YRGVSPJnfLKI86hgOXXugKBaUxxynePd2QMG5v7obJ+/AIF79bjmpcSdJjzc8xQoMjyCwYytmw2mhDatW8N0X7zPtgdlcOvZqZj9wY4M5wjNfep+Rl19ndptejlYk5utYH1PC2M6GQH9ddAmJ+Tq8Hc0Lm3rfZt78cwWF3L/mmHXujkfr0xOWJpeabJ9m7aT+qYSQYFgI1QK9XVUvemhKt4e6YWlrec5zUv9KRZuvJfwWddXPzocCTAkI4O7QDtickXd1hKcXPZ1deDv2JLtbUBLX1tqa0spK6urqgwdtdTXJObnYtaCiXVNqa2v5efMiFEVhZF/zA9iPFr1PeUV54wdb+P+8UqcjLb+QssqGgWyfMPMff2fn56OxseH5++4mJMAPS4tz/9w0JSozjnu+nk1heTE2Vta8MOER3lq1kDKt4QZg3fFtlOsquGGAeRkgFEXh/sm38sL0R9GcMXXmmuHjGNyjLw+/8xLr9mwzu391dXVYWhre2+n/nhncqF0MdZpWq8XLy4sFCxYY2504cSKTJ082TstQw9HRijlvdmX79gLi4+rzDA8d6o61tfr5/gA6XTWrVu3lyJFEPD2dmThxKBkZ+YSH++PiYl76PM8rJ1KwcS3V+bmU7NtNyb4zb9j1WHt64TVhkuq+rVj4Ie4+voyaZDql5OShA5SXlNBn+EjVbbaGvzeuIi87k57966cGnP1EZ/um1aqC4TGdnPh2XwEzfkjB7tT/y8pqw9+ssWZWFzT7/lRFGjlz+Azxaf4k0YAEw0KodPjb1ksP5BLR/AKewuOFlCWXtVowbE4apLk9etLH1bXRY242Nszp1p0/szIbPX4uAyLC2XDkKJPfeReAjIJCrpnzJiWVlYzrpS5HsznUfsxk5WZiq7HlpafepENwmDFoaqmY9EyWbd+Ltqa6wTEFRVUw3Ck0lKKSEob0Ob/v0/z1X1JQXgSAtkbHi7/OpU6vN2SU0ENVjZZle/80Oxhe+e4XDOs9oNFjXm4eLH1jAd+s+llVH9PT03n11VcBQ/B75nZLDRs2jEOHDjUaWI8cObJFbVpbWzBypCcjR6pbJNiYoqIypk9/n4QEw+9Vjx4d6NWrIw89tIB77rmS++837/+HpYMDHV9+m5QP3qQizjT9o32nLgQ//BSWDo6q+7fi4/mE9+zdIBj+9p03iD92lO8Om1d4Qw1zfn+TE2Jw9/TGxbU+HWBQaDh3P/oCer2ed196lKR4dX17cowPe5LLOZmrpaK6/sa9s7eGmaPNCzZ/MzNdmhqnPwPivo/D1tOWwMvqF/JZ2Fhg52OHg7/6nONCgmEh/lNi9sVi52hLcGSQyf5qXTV1tXo0djZcc98VlBaeexFIU4Hwma7yVZcNAWD2pIlsOX6CTUePoQAZBQWkFxRgbWnJUxOvVd1ea4sM70phcQHDBo5olfbWHDiKtrphIAygVzkidMMV43j1o8/49MfljB0yCEd7O5PjPmamqDuWFoOlYsEDo+8gozCLFQdW46RxYM0TS9Dr4Yr3bycxL9XsfjUVCJ/ptivVjUS2dqosgMjISDZv3sxDDz3EqFGGHLtbtmyhrKyMzp07s2rVKuO5V1555Tnbqq6uIy2tEg8PG5ydrUlJqeC337Ko1tVxySVuDB2mPl3g++//Qnx8JhqNNVqt4Wdm0KBIbG1t+Pvv42YHwwA2Pr6EvzGPqtQkqtIMubdtA0OwDTL/5sscuqoqCnNzVRXJOa00NRpLjR323qZ9qqupBn0dFtYa/AZfS01F6TnbKcrPJSCkPqtPaHgXwiK60m+Q4XfY2y+QjFR16xFc7Cz5/d6O/Ha0mMPp9XmGr+nhgsbMLD9qU22++90GkrMK+HBm04s5vQcacrsXxxZj62Vr3BbnT4JhIf5D3pr2AR17deC5b2c22J94LJlFhz+k1/DubdQ7GBAezh/PPsNry5ZzICEBgL5hYTw3ZTIDwi/cNJCm3Dzpdl6Y8yQff/k+l426CkcH00eivt7qbgCKyiuwtrLkhqGX4OXijMV5zK95cf5CFGDZmnUsW7PO9KCisP7LT8xqp7iylM6+Hblv5FR0NdWsOLCaEM9AXE+Vqw7xDOR4uvlFHlpbaxTYaMyHH36IoigcPnyYw4dNF4LNmzfP+FpRlHMGw0lJFbzxegwlJTVYW1sw/e4QlnydQkWFIZf07t2FVFbVMnasukBl69ajODra8uuvLzF27DMAWFpa4OfnTnp6nqq2ALKXfYe1hyfuoy832V8ec4La8jKc+15iVju39OxkeKEoxB09XL99BhcP9SPjsT++iYN/Rzrf8sJZ++dQnpVI35lf4RLW/FMQC0srsjPqi4Is+Ga1yfEzK9Ody7B5MXT3s+OTG4O5aXEinbw0vHqVP9f3uTBpytbujuZATOo5g+HTTlcurauuo7qs4aI5TQurq7ZnEgwL8R/T2B9+bYW2RaM3/4RBnTvx5/PPnnc7Ly9qesFTS9/rM/97HEVRWPrLNyz95RuTYwoKW37fr6o9f3c3yrVVRAa2TonUpt6VmgV0tfo6rC0Nf/ptrAyLbSyV+tGu8wnYW8O11/5zTwjM+blo7pwfl6ZRUmIoxlBdXcennySi14ONjeF7qNPVsWF9rupguLS0krAwXzw9TadO1dXpKS9Xn7c4e9m32EdENgiGM7/+jIr4k/T8cVUTV57l9PejqaoRwJgpN6ruX1Nqq7WomeDkHxRKYuwJfvn+cybeYvo34a+VP1BaXEhox+aLfaQVVeNxqnrbrqRytDV1zVzRdipzKon7Po7SxEZGzRUktVoLSDAsxH/AW3d9YHydkZBlsq2r1JIel4m9k11jl15w2upqlu3Yyd64OHxcXbltxHBScvPoEhSIu6P5cxkLinOaP6kFmgyGWhAjDusawdJtu1lz4Ci9OwRje1bVOVcH83NJv/f0E+o70IQjadF0f2EcYAjyz9y+2JwukHEmZ2dn1VMlduxouPK+JeLjy7GwUJhyvT+5OVo2bcrD3t6SD+b3RK/X89ijR8nIUB+8+vm5Ex+fyYED9TnHN28+QlJSNiEhrfM4vE6rpbqoQNVk+nv/Z8iK8OnzT+MTFMx19z5oPKaxtcW/Q0eCO5lXgQ7g5I9vGl9X5WeYbNdVa6nKS8fS1vzfi0GXjiPh5HG+XPAGxw7toXufgVhYWHDiyD52bF6DoigMHN78z7aLrSXHs6p4ZLlhilBKgY5Zv6Y1OE8B3rmu+aIb/6T4H+IbD4RBUqu1kATDQlzszPjjFrM31hisVZVVGbbP0nWw+R9Y/5T80lKu+t8bRKcbKmD1D+/IJRHhTHn7XZ6aeB3PTjZ/bmnHwG4m+Z1bw/w5n7dqe99v2QkKbI8+yfZo06kHCgqv3mL+++0V2Xr///TN/FC19vdVjZiYGHbt2sWgQYPo3Lkz8+bNaxD43nDDDURGqivte6a8vDxqa2vx8VG/8r6srJaQEDsmTfKnpqaOTZvy8POzxcnJ8HHq52dLfLz67BRXXNGfzz5bzfTp76EocPRoIo8//gmKYjhmriM3nJ7ioVARG3PGdj0rM9YEnDbiWsPP6Ik9u/AJDjFut1RZarThb5UCtdpKw/ZZnIK7mt3etTfdxdo/fiIvO4M9f69nz9/rjcf0ej1ePgFMvPnuZtsZGOrA2ugSfj9WjAIUVNSy4lCRyTl6Lo5guCy1DBTwG+GHva89ikXbPs35L5BgWIg2VBxXjJWtFQ6BpiuA66rr0Ov1WNpYEjQ+yDAvrAn5mQV0GxKJq5cL21fuxsnNkZ7DuxmP29ja4NfBh0snqi/K0Npe/GEpUenp2NlYU6kzvKdR3btjr9Gw7vBhVcHwoze80er969Pj/PMBN9BE3Kl2AR1AYUkJuw4fJb+wiLqzRrBvv9a8BVbX9jYv329bOXLkCMnJyUycONG47+zR+hMnTrQoGF6zZg2ffvopOTk5dO3aldtvv50ff/yRW265hSFDzHu0XFenx8rKEHxYnVpMdUb2wRanXZwx4wpOnEjh77+Pm+wfMqQL06erKYpy+nul0NQPn/vYK1T37/7X3wagWqelJD+/QcuefuZNBXLvNhSAguPbsbJ3wrlDT+MxC2sNtu5+eHQfbna/HBydefPjpbzz4iPEHD9kciyye19mvTIPR6fms/a8OcGfABdrTuZUsT2xHCeNBV19L46naWfTuGlAgQ4T264w03+NBMNCtKHjHx7HKdSJHo+bFt049uExY1nN5urMP3nZi3Ts1YHpn97G9pW7qa2tY/r/bvsnu91iaw4ewsXOjr3vvEWnhx4BwNLCgiBPD5Jyctu4dwaFRQXs2LuVvPxck3zIANNuubeJqxp311jzP9SbE52QxJPvvN94BTrMD4bfmPxUq/Xpn5CVlYWjoyPOZ1Q1c3NzMwar69atIzNTfVq/TZs2NUjP1rlzZw4ePGjSvjliY8u56ca9TW6rVV1dywMPLECjsWbRosc5diwJgG7dQujfv+GCtXMJfMAwnSbt4/ew8fHDe/LNxmMWGg0a/yDsQtQHUZnJSXz6wmxOHjrQ4JiiKGanVgu9wjCvtyw1GnufUOP2+fD1D2buF7+SnHCSlETDU7GQsAiCO5j/vXN3sOKlKwwLZENfPka4l4Yfp124YFPNOoeQa0I4ufgkhccLm/18EOaRYFiIttbI38A6XZ35c78UqDxjgY1v6MWbbqe4ooLIgAB8znpMW1unp6yJIO9Cijp5jMefv6/RCnSgPhju4KOuQt+5fPXzyqYr0J1HuxlF2Q32+Tp7YWHRssIR56u0tBSPM9LEaTQa3N3d6d/fMGp/4MABClpQ8OXrr79GURRuuOEGfvzxRwC8vb3x9PQkKiqqdTrfQtbWlkRFpeDv70G/fhH069fyym7uIw3zY8uPHcbGz9+4fb4+e+kZTh5sfAFpS6apdr9nLgC1Oi2VeakoioKDX8cW9+/7RR/g6e3LZRNMF/NFHd1PWWkxA4aYX1Ux6eWGGXeKK2txsWtZ3vEdRxJwsrelR7jp6LlWV0NtXR32tjY8detY8oqbnl6z/xXT771eryfqsyis7KywPKtf/V7q16J+tmcSDAvRBo59eMz4uiK7wmS7TldHRWYFVnbm/Xq6eDqTEZ/JE2OeAyAlOo2nxr/YyJkKb6955bz6fb6CPD2JSktjZ0z9KNLqAweIzcwk3Ne3DXtm8Pk3HzdZga4luW1PZmSRll9Iz5BAnOxs+Wn7HpJy8vB1deWGYQNwsTd/oVB0YiI21lZ88b+XuP3pF+jSsQMP3nwDL8z/mDcef9jsdjZF72DJ9hXcNmQyo7sMYdzcqQ3mCH9wy8uM6TLU7DZbW0lJifH17NmmRW5KS0upra1V3WZiYiLBwcE8+uijxmAYwNXVlaSkJLPbGT7i/AtsNGb06N6sXXuAnJwivL1dz7u9oIcMZZzrqnXUFBc3yARh46Xupjnx+HEUCwvG33oHgWHhWFidf/iQuXMl2Xv+pK5Gh4NfR7z7Xkb6tmX4D5uMexd107q+/+J9Onfv0yAY/uKD1zgZdYTftyeY3dbPhwvZkVjO3YM98XCw4tYliZzM0eLnbM1XU0Po7GOrqm8TZn3GgC7BrPnggbP2f8rBmDRy/5rDuIHnnvajLdA2ur+msoaayhpV/RENSTAsRBsoiav/sK+tqjXZPs2lU/Pz3AAGXdmfv77eSFFOMShQo6shL72RkbOLYI3FlMGDePvXlVzx2usowL64eG5+b56h/PPgQW3dPaJOHsPGRsOSj5Zx04xr6Na5Bw/PeJJn//c4b700X3V7f584SVJOHpeEd2BvbCIn07MASMnLY+3BY1w/1LxcrwCVVVpCA/0J8PZGAWpr6+jSMQxXZ2fmLfmOj180L13db4fWsy/5CHOm1AeZZy+o++vYljYLht3c3MjNzeXo0aP06GE6fSgmJoaysjKTkWNzaTQaysvLTaa+6HQ6MjMzsbU1P7h54IF/5tG5m5sjtbW13HjjG4wd2wcPDyfO/KW9776rVLWnzUwn9eP3qIhpZNRbwfzUaqd4+vmBonDbk+efFhEg99BGMrf/YrLPKaQbulWfUhi9S3Uw3BhtVRUFebkqaiMbfLevkMPplbxwuR+Ld+cTk2MIRDNKqpm7MZvPblZfvKSxRasVVbpmF7OeFjQ+qPmTRItJMCzEBaYt0OLa2RVrF2ty9+Ri7WiNa1dX43FLa0vsfOzwHmTeyM2NsyYR0acjaXEZ/LrgT9x8XLl0UtsvlmvMk9ddy8HERNYdPmKyf0yPHsy89po26lW9yqoKwkLCCfALQlEUautq6RbZA1dXd+Z+/Aafv/+tqvZyiktxtrfD0c6WxJxcNNbWXHtJH37etZ/EbHWFFBzs7aiuNowAOdrbk5yewabde8nIzjH7AxUgKjMODwc3fF3qp3AEuvlx17AbAHhnzaecyGiYjeRC6dixIzk5OaxcuZL09HRCQkJQFIXU1FT27t2LoihERKifRtC9e3d2797NE08Y5tTm5ubyyCOPUF5ezqBBLb8Ry8trOGLn7m6DhcoV/l9/vR5FgcLCMpYv39bguNpgOG3hPCpiTjR+UK/+zvjmJ55i/qxHObh1M32Gj1R9/dlyD6wDRSFw1M2kbfweACs7R2wc3ajMMb8C4oQhhpsTRVE4efyQcftMru7qRvMT87X4u1jjYmfJ/tQK3O0tWXRLCLd/k8SBtEqz27n2yc+Mr2OSc0y2y6t0RCVl4+Jo3o1Y0BUSDP+TJBgW4gLb/8p+nEKd6Dq1K7l7ctHX6omY2vI5ggB9x/Si75henNgZQ0CEH9c9oO6D80KxsbJi+ZOz2B4Vzf6EeAD6hXVkaJeWp8lqTY72Tuh0OsNrBycSk+PZsPUv0jNSWjQvskqnw8fVMMKfV1KKv4crPUKD2BZ1kpyihk8DzsXX05Pk9Ax0umoiQoM5cCKa1z/5AoCQAPMr4+WW5hPqUZ8aylFjT7C7PzdeMgGA5ftWkVKQrqpvrWnw4MEcOnSIqqoq9uzZw549e4zH9Ho9dnZ2qha7nTZ9+nT27dtnDKhzc3PJycnBysqKu+66y+x29u8r4s8/s7jyKh/693fjoQePNDhn5qxwBgxQt7DJz8+N1nx8U5kQC4qC55XXYRsYDJbq57s+On6Uyba+ro53HroHe0cnHM5Y4AjwwZpNqtrWFudg5xmAd9/LjMEwgKWtA1X5GWa3c3rhmaIoTS5CG3/tLar6Vqatw9/FkBM8Pk9Ldz87+gTaE+Juw8mcxqcrNObvwwkoiiHDSGmFlr8PN5yqMaKP+sqbxXENc2+fZmFtgb2vPZaals1vbq8kGBaiDdRW1c95tPNuvfQ9sxc/1mpttZarXz93CrS1hwylcRVF4fdnn7kQXWqSn68/icnxaHVaOnWMZP/hPbzyjqFPoUFhqtuz09iQV1rK4aRUCssq6ORvCFq11dUNCnA0Z/K4McQkJZFbVMj0yROJSZxHeWUlthob7rux+RKuZ8oqrs/csfv530yO5ZTmU13bdnMQnZycmDp1KsuWLWtQcMPV1ZUpU6bg5OTUxNVN69atGx9++CGfffaZccFcly5dmDFjBt26dWvm6npbt+YRFVXKgw81/fOwa2eB6mB49erXVZ3fHGtPb1DA/457WtxGbnrDohMAFaUlVJSecTPXgvn0ljZ2VJcVUVejM+6rqSpHW5iFpcb8v4mPPf8uAPP+Nwu/gBBunFY/f15ja0dQSEdCw9XdbHs4WBGbq+WjrblkFFdzVTfDDW2RykV0N43rC8DSdQfwdHFg7CX1ucLtNTZEBHsx9fIBqvoGhixE52JhZYH/GH+CrwxW3XZ7JcGwEBeYjbMNFVkV7HthHwDl6eUNVgqf9l9YFbwtKrpBxtOzPzr1jexrC9dfcwvRsSfIy8/h3jse5vHn76e8ogxbWzsenK6+AlwHHy+OJqWyfIdhdDPCzwddTQ3F5ZUEeKgLlsYOGcjYIQMNG97w4/tvkZqZhb+XF44qKtkFuvkRn5PMn4c3clUv0xX2m6J3kFdWYDJyfKHpdDoCAgJ4+OGHiY+PJzfXELh7e3sTFhaGpaUlxcXFuLiYN6f+TL169eKjjz46r/4lJVXg4mKNh4eNcZ+3t4YJ1xgWgH77TSqJiY1nI7mQ/G69i+T351ByYA/Ofc2fm36mSfebvzBTLcegSIpi9xHznSHdnbYoh5jvXqGuRodLWG+z2xl71RQAjuzfiX9giHH7fIyOcOK7/QW8u9GQaWVcZyeKKmrIKqnhkhDzf9c+etIw9ejvwwn0iggwbv/T6mrqSPsrDVtPW7wvuXizC11MJBgW4gLz7OdJxqYMdCWGEZG6mromVwr/FwyN7GySreBgYiLa6mq6BxtGLY6lpGBlacmA8JanVWotl426istGGaaYBPgF8cuStaSkJeHvG4CTo3MzVzd0Zd+e1NTWkl9aRmSAH50CfEnOySPAw40eIebPAaypqWH8jAdxcXJk+QfvoigKdhoNnULVL+QZGt6fuJwknv35bY6mR9M/tCeKonAw+Rg/7P4NBYXhnVoWPLWGhQsXct111xESEkKnTp3o1Mk0V+zBgwf566+/GmSZMIdOp2Pt2rUcO3YMT09Prr76ajIzMwkLCzM7uC4srMbPv36ep52dJT6+GsaNMwQdGzfkkpXVNr/P0Q/eabpDX0fSmy9jaW+PpcMZpc4VhcgFXzXb3pQHHmndDp7Bf9hkSpOPU5mbZlj4W1lKTUUplho7/IZcp7q9J140pGqr1mkpKsxvMGXC2zfA7Laeu9wXjbVCcoGOsZ2cGBDiwOH0Cq7u5szoTuqfShz+1vCzWl6p43hiJpYWFvSLbPkc4IhbI4j/KR6Pnh549DEsJs0/kE/+0XxCrwulPLWc7J3ZZG/PlmDYTBIMC3GBhV4XilOYExWZFaSuSsXG1QafQerLwv5brHr+OePrLzds5FBiIrvemkOEn2HKQGxmJiOef5Er+vZtqy4CUFNTzeiJA3FxduW3bzcYAk5bOzqHd2lxm452ttwy3HQxY4i3JzMuG6mqHSsrK9xdXXC0t29RirczTRt2Pb8e/IuSyjK+3fkL3+6sX9GvR4+LnRPThl2YEazGFBUV8fXXXzNo0CDGjBmD5am5ruXl5fz++++cPHmymRYaV1xczAMPPGBMo9a1a1e6d+/OzJkzmTZtGnff3XzJ3tPy8+of7X+12PTntrCwmpqalswwP3+63IY5owFqK8qpNUkZqP5nKGrfniaP2WhsCejYEVt7hybPOZutux+db32ZrF2/UZGVCIC9bwd8B07A1l19msX0lEQ+eP1Joo428pRNUVSlVrO3seDF8abz8HsF2DNvsvmjwmd797sNfLB0M5W6avpFBnHfpGG8+sUanpt2GVNG91HVVu7+XGycbYi4rX6tiXt3d0pfK6XgaAFd7+tKSWIJFRlt/4Ti30KCYSHagEdPDzx6elAcU4y9n327WSk8d+Vv+Lu7GwNhgAg/PwLc3VmwajUPXqGm7GzrsrKyxsPNE0dHp/MOOM9UU1vL4aRUUvMKcLKzpV/HUArLyvFxdcFeY9N8A6dMGjeGRSt+Ye+x4wzobv4c17N5OXnwye1zeGLpq2QW55gc83fx4b2bXsDb+Z/JpWuOgIAA0tPT2bVrF/Hx8UycOJGioiL++OMPKioq0Ov19OzZs/mGzrJgwQISExPRaDRotYaR2wEDBmBra8vOnTvNDoa9vTWkpVWy/e98hg4zTfG2f18RRUXV+Pmpy0PbWnyun/qPtf3atKnnnBtsZW3NNXfdw5QHHzW7TVs3n1apQAcwf87TnDiyr9FjLfltLq6s5XB6BXnlNQ0ys03urW6K01e/72LO1+tM9o3oE056bhE/bzqsOhguiS1BsVLQleqwcTL8Dakuq6amvIaSUwtz7bzs0DaS6UQ0ToJhIdpQ90caVjr6L8svKyW9oIBXf1rGhAGGimK/793HycxM7FQuKPsnXH/tLXz69QL2HNjBJX3VZyw4W4VWy6J1W8k5VUQi0MOdYE93lmzezsjuXRjTs6vZbe05chQLxYJn5s4nyM8XN2cnY3CioDD3afPmNJdrK+kZGMmqx75mZ/x+4nKSAQj3DmVIeD+sLa3IKMrG37VtnlZMnz6dbdu2sXXrVnJzc/n888/R6/Xo9Xrs7e256qqr6NrV/O/badu3b8fR0ZEffviBCRMMmTMsLS3x9fUlI8P87AW9ejmTllbJxx8nEhdXTpeuTigKxMSUsfYvw81Fnz7q5zO3Bp/rb/1nv8A58vXW6HT8/OlHeAcGM/zaiWY1V1NVTkVWAtXlJZxdx86j2zBVXYuLPopiYcG1N0wjqEMElpYtD282nCzlsRWplGnrGhxTFPXB8Ke/bsdCUfjffVfz7MLfAXB3dsDP04VjCepLi9u42FCVX8XB/x3EOcwwfas0sZSayhpsPQw3YtoCLVaOEuKZS75TQogL5vLevfl1z17e++133vvt9wbH2trOvX9jaWHBrJceIjggFDdXd+MosaIofPDGZ820YGrNwWPkFJdgZWlJzamqaR19fbC2tCI2I0tVMHw4pj73b0pmFimZWcZtNSNf1314N3OmPE3/0J6M6DyIEZ1Nc+yu2L+at1cvbJBl4kJRFIXhw4fTsWNHFi9eTG1tLXq9HldXV6ZPn46jo2PzjTSirKyM0NDQBgU7amtrqagw/3Hy1RN82bIln7KyGlavzmb1atOpCY6OVlw9oe2rKZadONrkMQsbGzQBwVjamZ+14YE577Lo1RcZMGYcgy6/EoCda/5k38b1TJ01m8QTx9i04ic2LPvBrGC4OP4QSas+pVbXWN5eRXUw7OXjj6Io3P3oC6qua8zrf2VR2kggDLSo9nRSZj6RoT7cO3GoMRgGcHOyIyY55xxXNi54QjAnvz5JbVUthScK6w8oEHJNCJW5lWgLtLj3cFff2XZKgmEhxAXzwfS7qK2r4/d9pvP6ru7Xjw+mm5/r9Z9y6Fh9v5LTEklOSzRut2TqREx6Jhobax69+jLe/vlPACwsFFwd7Ckoa7zsc1MuGzKoRSmszpZRnM20L2dy+5ApPDr2LmysDCPyBeVFvPjrXDZH7zrvr3G+cnJy+OOPP4yBMBjm/P7+++9MmDChRQGxr68viYmJHD582Lhv27ZtpKSkEBRk/jQlNzcbZj8Twbz348k7Y+4wgKenDY893hF3d/Onv/xTEl5+inPdJilWVnhddz2+N9xmVnvb//wdVy8vHpjzrnFf35GjefzKMezftJ6nFy7i5KEDpMbGnKOVemlbllKrbaKAhaI+4pz24DO89fyD7N2xkQFDRjd/wTmkF+uws7bgwymBRHhpsFRZQOVszg62ZOWXUKWrNu4rLqskPi0PZwf1U2o8+3hi52VHxqYMKjINN3L2/vb4j/LHIcAwb/uSN9tuEey/kQTDQogLxtXBgW8fe5TEnByi0ww5TDsHBBDmc3EsIBw/+upWnS9cpavG28UJJzvTDzy9Xo+uWl0u36dnTGuVPvUIiORoejRfb1/O9ti9zJkym/TCLF5Z+T6FFSXo0TOh19hW+VotsX37djZv3kxNTQ0WFhaMGDGCgoICjhw5QmxsLAsXLmzRVIlx48bx1Vdf8cADD6AoCidOnGD27NkoisJll11mdjtVVbWEhzsy74MeHDlSQtqpimRBgXb06OmMlZUFeXlaPD01qvr3z2g6qNTXVJOz/Ac0Pn64jWj+//eJvbuwtrGhOD8fl1Oj6yWFBZQWFVGQsxsA3+BQslNTzOqZriQfC2sbQq++HzsPf1DUF4m4a5Lp6HGdXs+rs6YbioKckf1FURQWrWhY1a8pPf3tyC+vYWxn9RlkGjOkRxh/bD/GuIcNaf2SMgoY+9ACKnXVXDaoZQWHHAIdTBbQifMjwbAQ4oLr4O1NB++LL+XPc0+81qrtuTrYk1NcQlJOfenl6LQM8kpK8XBWN7o59clniQgJ5uWH7jPZv2jFr6Rn5/DiA+YVV/j+nvl8tvUHFm76hricZG785EHq6urQo8fVzpkXr3mUy7uPUNW31rR+/XoAvLy8mDhxIn6nFlt27tyZP//8k4qKCpYvX86LL76oqt0777yT6Ohodu7cabJ/4MCB3H777Wa3M2vmMR58KIwuXZzo29eVvn1dTY5v2pjLkiWpDbJMXGhBDz9J+mcf4nzJEFyHDAegaPsWSvbuxO/2u6mMj6Ng4xry160yKxh28/ImJz2NJ64eS2Rfw3z/k4cOUlFWineAIS91flYGLu4e52rGyME3lOqKUlw7qls8dqaczMaLgpSXllB+RlEQtTe49wzx5IGfUnljbRYTe7ribGthcjzAVd3I/3PTLmfzgVhOJGahKJBfUk5ecTnODrY8fds4s9rI2ZODtaM1bl3dyNlz7qkVkk5NPQmGhRDilOvvuorO4V3437Pvmuz/bMkC0jJSeHX226ra6xkaxOajUSxavwUUSMsv4LutO0GBniryDANk5eXj5tJwpGr/8ROcTEw2ux0LCwvuGzmVoeH9uGPRE+hqqtGjJ8DVl+/vnY+nY9vOM1QUhYEDBzJmzBisrOo/orp27UpISAi//fYbsbGx52ihcdbW1sydO5eDBw9y4sQJY5t9+qgLxvLydLz6SjRXXeXLTTcHYGVlCJRKSqr59JMk9u8vUt23f0LRtk1YubkT/PCTxn3O/QYS/fBdlOzdRYdnX6P85AmqUpLMau+mx2bx4VOPU1lWxsFtWww79XoUCwtufuIpslKSyElLo/9o84I77/5XkPj7R6Rt+RH3roOx0pimZbNxbj6ovmX6Y2Z9LbVmLE1BAT7fkcfnO/JMjikKJLykbuFzRJAXGz96mLnfb+TgSUMA36dTII/fPIrwQC+z2oj7Lg6nUCfcuroR911c0ycqEgy3hATDQghxSlZOBh5uDT+E9x7cRUzcCdXtjegWSUZ+ISczskz2h/v5MLybeY9H126vH8ksLi0z2a7UaknJyDIJGs0Rm53ISyvfNwbCABlF2bz063u8ct0TbRoQ33777YSGhjZ6zMHBgZtvvpkDBw6Y1dZDDz10zuNnjhIvWLDArDY7hjsQH1fOH39kcfhwMQ8+FEZujpbPP0+ipMQw9WXYpeaNjv6Tyo4fwcLampriIqxcXAGoKSmmtrSEsoJ8ADS+AeiyzMtmMOjyK/ENCWXV11+SFm+4GQkM78RVd0wnpLPhZ/mLHY1X0mxMwq/zQYGcfavJ2bf6rKMKfWc2XxTklrsfM/vrqdXkBJMWppAOC/A8/wp05nzttklx/a8nwbAQot1bvaF+hXdRSaHJdlVVJcmpiVhZqUv9VltXx5JNf2NtacldY4eTnm9Y9R3g4UYHH/NGgwDe+mIxCoalUJk5ubz9xWKT43ogLND86lqLti1lwYav0dVWY2lhyX0jppKcn84fRzawJWY3186/u02nSjQVCJ+pr5kFWg4cOICiKCbVyM5+ZK7X61U9Rn/ttS78+msmK5ZnkJpaybPPnKCuztC+o6MVd88IYdCgtl/Fb+3mji4nm+hHpuPQxTCSWRFzgtqKCmy8DXP0q/NyjIGyOUIju5osoDtvTQVuLVhAd+zg7iaP2WhsCQoNx87MoiBL7+yg+us3p7iskv3RqeQWlhlvQE+7aVy/Zq8f8sGQRl+fpq/Tk7k1s1XXPLQnEgwLIdq9N95/EUVRUBSFjKx05sx7yeS4Xq+nY6i6xSqWFhZkFBbh6mBPBx8vVQHw2fQYguGzQwSNtTVBfr48fOtNZrf13tovAAjzCuatKbPp6m8odzym61Be/e0DCiuKmfXT/9p03nBr6d27t0lwEB0djU6nIzw8HIC4uDgsLS3p3t38x94WFgqTJvnTs6czr7wcQ3W1IQWXl5eG1/7XBVfXts+XDeA7dRop896krrKC0gN7T+3Vg6Lgd+t0tJkZ6HKycL6k6XzaW1f+grO7O70vHcHWlb80eR5gdm7h0yJuVF9O+1xmP3DjOQNBK2trptx6P1NnPN5sW4NCza+kZ461u6O4Z85SyiobFsFQUMwKhpujr9WT9EsSKOA3wq/Z84UpCYaFEIL6EUL9WYUFNDYaggM78Nh9T6lus2ugP8dS0iipqMTZ3vycrmfa8NWnAIyZdi9dOnZgwfPnF0QoKNw2ZBKPj5uOjVX9QqDLug2nX0gPXvjlXbaebLr07r/Jxx9/bHz9yy+/EB0dzXfffUdwcDAAKSkpTJs2jWHD1OW0TUmp4PPPko2BMEBurpbPPk3inntDL4qA2HXwcDS+AeT+8TPaVMOcctvgUDwnTMIuJAyAbouXn7ONT55/iohefeh96Qg+ef6pJlP7KYqiOhh2CmpZFoVzOft390zVOh1Lv5qPb0AwY66c3GxbeWU1bIwtJbukmrqzmn10pLo5uS98+ielFU1Ug2vBKPg5yTSJFpFgWAjR7m374yAAl17dh26de/DJ3CWt0q69RkNdnZ6PVm+gW1AAjrYak4BidI8uZrf13tNPYN9MkYRvfvuTrNw8npx+R5PnfDntHS4J693oMQ9HNz6+7XVW7Ftldr/+LZYsWYK3t7cxEAYIDg7G29ubH374gZtuMm90feXKTJb9lE5Njd4wSjzZj6xMLX//nc+BA0XMmnnsopkqYdeho8kCupYwCTCbCDZbEn8VJx6hIjMBt8hBWDu6kPjHJ5SlxWDvHUToVfdj46Tu+zfzpff56O3nGDzici4dczUAW9f/zq6ta5n+8HPERh9l7W9LWf3Ld80Gw4fTK7h1SVKjFehAfTCcllOEvcaaz5+9mc4hPlhZWjR/kbigJBgWQohT5s/5HAf7c6c8W7z0czKz0nnmsZebbW971ElQoKJKy964hAbH1QTDvSI7N3vO7sNHiU5IPGcw3FQgfKbJ/a80u1//FkVFReh0Oj755BNGjhwJwJYtW0hOTkajMT8n8A/fG7IBBATY8uBDYYSFGR6pDxjgyhdfJFNaWsMH8+IZtPTCB8OFW9Zj6eyCc58BFG5Zf85zzUmn9v3R2EZfn1ZXV8df3y1p0TzVnL2rKU2NxrPXKPIOb6IkwVAMpSw9lvStP9HhqvuaacHU5rUrcfPwZuZL7xv3XTJsDDOmjGDX1rW88v7XRB/dT1J880VB5m7MabICXUtm5PbuFEheURnjB6svIy4uDAmGhRDilD49+jd7zs6924g6ecysYNjFwb4VeiVaw5AhQ9i0aRPffPMN33zzTYNjalx5lQ833xyItXX9CN/AQe5EdnHik4WJHDxY3Cp9Viv1o7nYd+qCc58BpH40lyZDN8W8YLg5tTXVfPP26ygWFoy/tekbsMZU5qdj4+SOtYMLpakxWGrsCBp3JylrvqAsNVp1X47u34mVjQ1FBXm4unsCUFxUQElJIfkHDNlc/IM6kJnefBrCQ+mVaKwU1j4Qzoj5sfQJtOPF8X7M+CGFr6aGqO7bQ1OGM+1/3/LS56u4YUwfXBxNi/AEeruZ1c7+V86RrUOmR5wXCYaFEOIfMuu6K9q6C+KU2bNnU1dXx5YtW0z2Dx8+nNmzzZ+H/cKLnenWrfHKZC4u1jw9uxMbN+aeV1/Pi8lUhiYiJH3rZhw411zdptRWVWDjaSjWoS3IxN4nFPfIgeTsXUVlXrrq9ty9fMjOSOWeG0bRrdcAAKKO7qeirBQff0NO75ysdFzcPJttq0JXRydvDSHuGhSgtg76BNrj6WDF839ksPKejqr6duvLS1AU+Gj5Vj5avtXkmIJC7l9zzGpHW9DEvGNx3iQYFkII8Z/n5OTEnDlzSE9PJyHBMGWlQ4cOBAYGqmqnqUD4TKNHtzxzyPno+dPqRl+fpq+rI3/1by171t/KrGwdqCrMoiBqJ9qSPJzDegFQq63EUqP+icod9z/N2y8+TEV5Kft2bgJOLYq1sGDaA7PJSE0iOzOVwcObL73tpLFAW2MI8J1tLTmZU8Xvx4pJKtC2eAC2yfsFFQvonDu2Tnlo0ZAEw0IIIdqNgIAAAgLMz8v8X6KvrSHj609BUfC88ro27YtjcBcKo3aRtMqQLcU5tDu1Oi260gLsfdXn+b10zFX4B4Xy6w9fkJxwEoDQjp2ZePMMOkQY5ub/uPaIWW0FudlwMqeKquo6uvvZsj2xnEeWpwIQ4WX+/PLTfnvHvFLpzen+iLrKd8J8EgwLIcR/REseV4t2SMWPyaPjRzXdzHn8vAWOvJm6Gh3awmxcOvbBJawXZeknsfftgHvkwBa12bFTN5MFdC01bZAHR9MryS6t5qmxPty6JIlSbR321hY8d7mv6vaG9go77z6Jf5YEw0IIoUJbBZyHY07iYGtHeEiQyX5ddTV1dXXYajTcdu3VFJeWtkn/xH9TbnraP9KutYMLHa99xGSfY0AnOt/8nNltbFi1AhdXd/oPGcWGVSvOea45uYVPm9jTlYk9XQEIAXbPjCQ+T0uwmw0udpZmt3Pa+r0xHIhOZdKoXvi4O3PPnB/YcSSB7h39+eyZmwjwclXdpmhdEgwLIcQph47tx8HOgYiOpgUBdNU66mprsbW1Y9rN91BUXHjB+/bEm3Pp2jGMD59/usH+6MQk1n/5CYN69bjg/RL/bZH9BvxjJX7raqopjNpJeWY8Vg4uePYYgbY4FzvPQKzszp3iEOD912YS2b0v/YeM4v3XZjbdT0UxOxiurtXT6bXjuNtbsu/JSBRFwd7Ggh7+LSuaA7Dgpy1sP5LInVcPZPGfu1i725AtY/fxJF5dtIZPZ5tfQVL8MyQYFkKIUx6efTfdI3uy8N2vG+yPPnmcLb/vZ/CAS9uod6Bv5Pl2lVZ7jtU5or2JfvDOJo+15KnGi4u/P4/eNK2msoyTP86hKt+QOcLBryOO/hHE/TwX30HX4j/UvIp2Z/5ONPX+1ITy1pYK3k5WONtattpNQExKDv5eLni7ObHjSCJO9hree2wSj8xdxt+H41vla4jzI8GwEEKcobEP1KqqykYD0QvhibfmGl8np2eabFdptSSmZ+DYwlLP4r9Hl5vd1l0wS/qWH6nKS8fCypq6mmoAnEK6YWGloSTxiFnB8B87kxp9fVpdXR2/L1uMojJ9xrSBHryzIZutcaUMD3dSdW1jikor6drBMNc4NiWHPp0CmTSyFwt+2kJU0r/j/9d/nQTDQoh275FnZhhfJ6UmmGxXVlWSkByHo8P5fyi2xOHok8aP8oqqKg5Hn2xwTt+u5leyE/9tDl26m5T8vlgVJxzCUmNH17vmcHThYwAoFhbYOHugK26dPM21NdV8Pu9VFAsLrrlxmtnXbYotw9JC4Y5vkwnz1ODpYGX8lirAD3eqy3bh5mRHXFouKzYeIiW7kHEDDdOwSsqrGhTgEG1DgmEhRLt38Og+4yPR8opyDh7d1+Cc/r1btsL9fGTn59O/W1fcXV1Yu30nrk6OXNKzfl6wrY0NQX6+XDF86AXvm7g4dXzlnbbugllqtRXYevhj7eBqsl+vr6NWV9W6X0zl9JDdyeXG1/F5WuLz6otdtOQ2Y1jvjqzYdJh731oKwOj+nSiv1JGeW0yfzuryXIt/hgTDQoh2LSsnkwF9BuPp7snqDb/j6uLG4P7DjMc1GltCAjtw1WXXXfC+3TLrWbp2DOOtux9l7fad1NbW8fTdd17wfgjR2mycPajKS6csrf5JR1H8QbQFWWjc1acva02Te7m2al2S/913NVXaahIy8hk/qAvjLolk17Ek+nQ2TJcQbU+CYSFEu3b9XVfSPbInzz7+Mas3/E5tbS3PPv5qW3cLMIxCVVRVGrcD/XzarjNCtCK3yEFk7fyNkz++AQqUZ8aT8OsHoNDiPMOtZe7E1h2t9XZzYsnLt5vsG9Q9lFXv39+qX0e0nATDQoh2TVEUyivqH4sGB4S0YW9Mubm4kJyeyQ2PPwVAXHIqU598ttFzv3vnjQvZNSHOi++ga6jITqIkwbQqnHNod3wGTjC7nbsmDWv6YAuzrAybF0N3Pzs+uTHYZP87G7JJytfy0Q3BTVzZNK2uhuUbD7IvOgVvNyduu2IAKVmFdAn1xc1Zfflp0bokGBZCtGvubh4kpSYw8fbLADiZEMP1d13V4DxFUfhp0R8XtG9jBl3Csr/WkV9UjAJU19SQlZffsG8XtFdCnB99bQ3xK+aiWFkTceNsKrISALD3DcMpKLKZq03lZLZ+UZC0omq8HBuGR3/Hl3Eko7KRK86toKScCTM/IybFkDmiX2QQl3QN4cbnv2LW1DHMvn3cefdZnJ9/bTC8dOlS3n77baKiorCzs2P06NG89dZbdOzYsclrfv75Zz766CP27dtHSUkJAKtXr2b8+PEXqttCiIvMuBFXsPSXb8gryEVRFKqrdWTlZDQ4758qPHAu9900he4RHUlMz2DxL7/h5ebKFcPPMRImxL+AYmlFRXYSNs6eOAVFqg6Az9S998BWuxtccai+mE5Bea3JdoWujrg8LdaW6r/YS5+vIjo5GzuNFZXaGgBG9o3AXmPN+r0xEgxfBP6VwfCiRYu4++67AejQoQP5+fmsWLGCbdu2cfjwYXx9G598v3XrVrZv305gYKAxGBZCtG8PTn+CHl17k5Acz6JvP8bL04er22CxXFOG9evDsH59OHA8itBAf+64zvxHyEJcrFwj+lEYswddWSE2jm4tbufNhT+2Wp9m/pqOgiG2TinUMevXdJPjeqCLj/pUaGt3RePsYMuuRTPpetPrAFhaWhDo40ZyZsH5d1yct39dMKzT6Zg9ezYAkydPZvny5WRkZBAZGUlOTg5vvPEG8+fPb/TaZ555hrfffpsdO3YwatSoC9ltIcRFbPjg0QwfPJp9h3YRFhLOXbfc19ZdauD9Z2a1dReEaDWWdk7o6+qIXvIirhH9sXZw5swhXr8h17VJv/SnenH2bGNbK4WOnhpevtJPdZvF5ZV0DvbBx900V3ltbR1lFdomrhIX0r8uGN67dy95eXmAIRgG8Pf3Z9CgQaxbt441a9Y0ea2PT8tWYmu1WrTa+h9YGVUW4r9pwZuL2roLQrQLOXtXgwI1FaXkHdnU4HhbBMNJL3cHIPTlY/QJtOOXu5uedqlGkLcb0cnZ7DqWaNy3ZucJ4tLyCA/0bJWvIc6PRVt3QK3U1FTja29vb+Pr04FuSkpKq3/NOXPm4OLiYvwXFBTU6l9DCCGEaC9snD2wcfKo/+9Z/9rS0js78NpV/uc8Z/6WHJ781bzFe5NG9aKmto6rZ36KosD+6FRufXkJimI4Jtrev25kuCn6FqZQMcczzzzDE088YdwuKSmRgFgIIYRooe73zG3rLjRpUKhDs+dsPFnK4fRK3rmu+ZzEM28ZzeHYdNbtiTHZP7p/BI/fJFM2Lwb/umD4zCA0JyenwevgYPX5/5qj0WjQaDSt3q4QQggh/ruqa2q54dkvsdVY8/u797A/xvB0u2+nIIb2Cmvj3onT/nXTJAYMGICHh+ERyooVKwDIyMhg165dAMY0aZGRkURGRrJgwYK26agQQggh2jVrK0sOx2WQkVvMkJ5hPHz9CB6+foQEwheZf10wbGNjwxtvGCotrVixgrCwMLp06UJpaSmenp7GTBMxMTHExMQYF9sBzJ8/n/DwcKZOnWrcd9dddxEeHs7TTz99Yd+IEEIIIf7zrhrajcSMfDLzZPH9xepfN00C4J577sHBwYF3332XqKgobG1tmTRpEm+++Sb+/k1Pei8oKCA+Pt5kX2ZmJgDZ2dn/aJ+FEEII0f54uDhQU1vHyPs/YMKl3fFyc0Q5I43cU7eNbcPeCfiXBsMAU6dONRnhPVtjC+pefvllXn755X+wV0IIIYQQ9RYs24qiQF5xOYv/3N3guATDbe9fGwwLIYQQQrS23UnlOGos6OZnZ7JfW1NHXR3Y2VjwyAhvCipqzGov0NuVNqjmLlSQYFgIIYQQ4pQbFyfSN9Cen+82XeR241eJHMmoJOGl7ozu5NTE1Q0d/nZ2a3dRtLJ/3QI6IYQQQoh/kr5BQWaorK7jHyxpINqQjAwLIYQQot27aXF9ueS4XK3JdqWujpgcLc62lm3RNfEPk2BYCCGEEO3erqRyY46HUm0du5LKG5wzLKz56nTi30eCYSGEEEK0a+lFOoZ3dMTb0Yrlh4vwsLdkVET9vGBbaws6emq4sa9bG/ZS/FMkGBZCCCFEuzZ03kn6Btqz5LZAlh8uoqYO3p0Y2NbdEheILKATQgghRLumAGXaWuN2mKdN23VGXHAyMiyEEEKIds3L0YrYXC0D50YDcDyzimHzYhqcpwDbHut8gXsn/mkSDAshhBCiXbu2hyuf78wju7QGBdDV6kkrqm5wntTO+G+SYFgIIYQQ7dpzl/vSP9iemJwq3tuUg5+zNTf2kcVy7YUEw0IIIYRo9y7v4szlXZzZnlBGJ29bHhvl3dZdEheIBMNCCCGEEKf8OC2s+ZPEf4pkkxBCCCGEEO2WBMNCCCGEEKLdkmBYCCGEEEK0WxIMCyGEEEKIdkuCYSGEEEII0W5JMCyEEEIIIdotCYaFEEIIIUS7JcGwEEIIIYRotyQYFkIIIYQQ7ZYEw0IIIYQQot2SYFgIIYQQQrRbEgwLIYQQQoh2S4JhIYQQQgjRbkkwLIQQQggh2i0JhoUQQgghRLslwbAQQgghhGi3JBgWQgghhBDtlgTDQgghhBCi3ZJgWAghhBBCtFsSDAshhBBCiHZLgmEhhBBCCNFuSTAshBBCCCHaLQmGhRBCCCFEuyXBsBBCCCGEaLckGBZCCCGEEO2WBMNCCCGEEKLdkmBYCCGEEEK0WxIMCyGEEEKIdkuCYSGEEEII0W5JMCyEEEIIIdotCYaFEEIIIUS7JcGwEEIIIYRotyQYFkIIIYQQ7ZYEw0IIIYQQot2SYFgIIYQQQrRbEgwLIYQQQoh2S4JhIYQQQgjRbkkwLIQQQggh2i0JhoUQQgghRLslwbAQQgghhGi3JBgWQgghhBDtlgTDQgghhBCi3ZJgWAghhBBCtFsSDAshhBBCiHZLgmEhhBBCCNFuSTAshBBCCCHaLQmGhRBCCCFEuyXBsBBCCCGEaLckGBZCCCGEEO2WBMNCCCGEEKLdkmBYCCGEEEK0WxIMCyGEEEKIdkuCYSGEEEII0W5JMCyEEEIIIdotCYaFEEIIIUS7JcGwEEIIIYRotyQYFkIIIYQQ7ZYEw0IIIYQQot2SYFgIIYQQQrRb/9pgeOnSpfTt2xc7Ozvc3d2ZMmUK8fHxzV734Ycf0rVrVzQaDd7e3tx1111kZ2dfgB4LIYQQQoiLzb8yGF60aBE333wzBw8exM/Pj9raWlasWMGQIUPIyspq8roXXniBRx55hKioKEJCQigrK+Orr75i5MiRVFRUXMB3IIQQQgghLgZWbd0BtXQ6HbNnzwZg8uTJLF++nIyMDCIjI8nJyeGNN95g/vz5Da7Lzs7mrbfeAmDmzJm8++67HDlyhN69exMdHc0nn3zCE0880ejX1Gq1aLVa43ZxcTEAJSUlrf32Lnq12spWba+ivLRV2yutqm21tvTlVa3WFkBNZU2rtldZ1rr/L8prWrd/JRWt279KrXWrtVVeUdZqbQFUVVe3anvlla37vSurKm/V9krKW/f7d+bf19ZQXt5677eiovX+pgCUtfLvbW1F6/6/rShr3b/JF/NnRmt+XsDF/5nRHmOW0+9Zr9ef+0T9v8zff/+tB/SA/vvvvzfuHzdunB7QR0RENHrdt99+a7xux44dxv0RERF6QD9u3Lgmv+ZLL71kvFb+yT/5J//kn/yTf/JP/v17/qWmpp4ztvzXjQynpqYaX3t7extf+/j4AJCSkqL6utjY2CavA3jmmWdMRo3r6uooKCjAw8MDRVHUvwkhhLjIlJSUEBQURGpqKs7Ozm3dHSGEOG96vZ7S0lL8/f3Ped6/Lhhuir65IfDzuE6j0aDRaEz2ubq6tujrCSHExczZ2VmCYSHEf4aLi0uz5/zrFtAFBQUZX+fk5DR4HRwc3KrXCSGEEEKI/65/XTA8YMAAPDw8AFixYgUAGRkZ7Nq1C4Dx48cDEBkZSWRkJAsWLABgzJgxWFlZmVx35MgR4uLiTK4TQgghhBDtx78uGLaxseGNN94ADEFtWFgYXbp0obS0FE9PT2OmiZiYGGJiYsjLywPA19eXJ598EoC5c+fSuXNnBg0ahF6vJyIignvvvbdt3pAQQlwENBoNL730UoMpYUII8V/3rwuGAe655x6+/fZbevfuTUZGBoqiMGnSJHbs2HHOSdKvv/468+bNIzIyksTERBwcHLjjjjvYunUrDg4OF/AdCCHExUWj0fDyyy9LMCyEaHcUfUtXngkhhBBCCPEv968cGRZCCCGEEKI1SDAshBBCCCHaLQmGhRBCCCFEuyXBsBBCXIQSExN55JFH6NatG46Ojmg0Gnx8fOjatSuTJk3itdde49ixY23dzRYbOXIkiqKgKAqhoaFt3R0hRDv2n6lAJ4QQ/xXr1q1j4sSJlJeXm+zPyckhJyeHqKgofvnlF2pra+nevXsb9VIIIf4bJBgWQoiLSFlZGVOnTjUJhHv27ElwcDBarZaYmBhSUlLasIdCCPHfIsGwEEJcRNasWUNubq5xe8WKFUyaNMnknKSkJJYvX26sximEEKLlZM6wEEJcRE6XiD9tzJgxDc4JDQ1l1qxZTJs2rcGxtLQ0nnrqKXr37o2zszMajYbQ0FCmTZt2zjnGJSUlvP322wwdOhR3d3esra3x9vZm3LhxfPnll1RXVze4prl5v6GhocbjI0eObP7NCyFEG5BgWAghLiLW1tYm2zfddBMbN26kqqqq2Wt/++03unbtyjvvvMPhw4cpLS1Fp9ORnJzM4sWL6du3L1999VWD606cOEGvXr14+umn2bFjB4WFhdTU1JCbm8v69euZPn06w4cPp6CgoNXepxBCXCwkGBZCiIvIkCFDTLbXrFnDmDFjcHJyok+fPjz88MNs2LCBs4uHHj16lBtvvJHS0lLAEFQPHz6c8ePH4+LiAkB1dTUzZsxgx44dxusqKiq48sorSUpKMu4LCQnhsssuw8vLy7hv165dTJ06tbXfrhBCtDkJhoUQ4iIyePBgrrnmmgb7a2pqOHToEAsWLGDs2LH079+f2NhY4/FXXnnFOHrs6urK0aNH2bJlC6tXryY+Pp7g4GAAamtrefnll43XffHFFyQnJxu3r7/+euLi4vjrr7+IiYmhZ8+exmNr1qwxCaSFEOK/QIJhIYS4yCxbtoynnnoKBweHJs85cOAA48ePR6vVUldXx19//WU8Zmtry3PPPceUKVOYMmUK9957L3V1dcbjmzdvprKyEoDVq1ebtPv6669jZWVYW+3m5sbs2bNNjq9Zs+a8358QQlxMJJuEEEJcZGxsbHjrrbd4/vnnWbduHVu2bGHbtm0cOnTIZHpEQkICq1evZsiQIZSVlRn3Z2VlsWLFiibbr66uJjMzk7CwMJNRYY1GQ3h4uMm53bp1M9k+83whhPgvkJFhIYS4SDk5OTFp0iQ++OADDhw4QEJCAkOHDjU5JyYmpkVtV1RUtEYXjWpraxvsy8nJadWvIYQQ/wQJhoUQ4iKSm5tLTU1No8dCQ0N58MEHTfZZWVnh4eFhMqVi1KhR6PX6c/47Xbnu9FxiAK1WS3x8vEn7x48fN9k+83wbGxvj66KiIpPzDh06ZJyKIYQQFzMJhoUQ4iLy559/EhkZyfz5802Kb4Bh9PW3334z2RcZGYmlpSWXXXaZcd+WLVv49ttvG7Sdnp7O+++/z2uvvWbcd8UVV5ic8/zzzxuD8aKiIt5++22T4+PHjze+9vX1Nb4uKytj6dKlABQWFvLQQw+Z9X6FEKKtKfqz8/MIIYRoM4sXLzYW01AUhcjISEJCQlAUhcOHD5ORkWE819/fn/j4eGxtbTl06BADBw5Ep9MZj0dERNCpUydqamqIi4sjISEBvV7PHXfcweLFiwFDENu1a1dSU1ON14WGhtK5c2cOHjxoMtVh3LhxrF271rj95ZdfMn36dJP+BwUFkZWV1aBIx4gRI9i8ebNxe+TIkWzZsgUwpHI7M7WbEEJcSLKATgghLiKKohhf6/V6oqKiiIqKanCek5MT33//Pba2tgD07t2bH374gTvuuMO4mC42NtYk/dpplpaWxteOjo78+eefXH311aSkpACGcs9nB6cDBgzg+++/N9l388038/bbb5vMWz4dVF999dUcOHDAJHgXQoiLkQTDQghxEbn11lsJCwtj7dq17N69m9jYWLKzs9FqtTg6OtKxY0fGjh3Lww8/TFBQkMm1kyZN4pJLLuHjjz9m3bp1xMbGUlZWhoODA6GhofTv358rr7ySCRMmmFzXo0cPjhw5wsKFC1m5ciXR0dGUlZXh4uJCr169uPnmm7njjjsaVMezs7Nj06ZNzJ49m1WrVlFaWkp4eDgzZszgoYceomPHjv/490sIIc6XTJMQQgghhBDtliygE0IIIYQQ7ZYEw0IIIYQQot2SYFgIIYQQQrRbEgwLIYQQQoh2S4JhIYQQQgjRbkkwLIQQQggh2i0JhoUQQgghRLslwbAQQgghhGi3JBgWQgghhBDtlgTDQgghhBCi3ZJgWAghhBBCtFsSDAshhBBCiHbr/3bt7PAm687cAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "make_plot(models, 'Seoul')" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsMAAAKZCAYAAABdmSbTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzddXiUx97G8e/G3T0kuDsUL4VihZZSCnXqek5P3V0PlfNSO6WlRo2W0hYpUqRQ3N1D0BB3d9v3j4XAkgR2k0Dg7P25rlxXsrPPZBJIcu88M78xGI1GIyIiIiIiNsiusQcgIiIiItJYFIZFRERExGYpDIuIiIiIzVIYFhERERGbpTAsIiIiIjZLYVhEREREbJbCsIiIiIjYLIfGHsClqLKyksTERDw9PTEYDI09HBERERE5g9FoJC8vj7CwMOzsap//VRiug8TERCIiIhp7GCIiIiJyDnFxcTRp0qTWdoXhOvD09ARM31wvL69GHo2IiIiInCk3N5eIiIiq3FYbheE6OLk0wsvLS2FYRERE5CJ2riWt2kAnIiIiIjZLYVhEREREbJbCsIiIiIjYLIVhEREREbFZCsMiIiIiYrMUhkVERETEZikMi4iIiIjNumTD8IwZM+jRoweurq74+flxww03cOTIkVqfv3LlSgwGQ61v33///YUbvIiIiIhcFC7JQzemTp3K/fffD0Dz5s3JyMhg1qxZrFmzhl27dhESElLtGi8vL/r06WP2WEpKCjExMQCEhoae93GLiIiIyMXlkpsZLi0t5YUXXgBg/PjxHD16lKioKDw9PUlNTeWdd96p8boePXqwceNGs7eOHTsC0LZtW0aMGHHBvgYRERERuThccmF4y5YtpKenA6YwDBAWFkbfvn0BWLx4sUX9REVFsXDhQgCefvrpsx7VV1JSQm5urtmbiIiIiFz6LrkwHBcXV/V+UFBQ1fvBwcEAxMbGWtTPpEmTMBqNBAUFceedd571ue+++y7e3t5VbxEREXUYuYiIiIhcbC65MFwbo9Fo8XOTk5P5+eefAXj00UdxdnY+6/NffPFFcnJyqt5OD+QiIiIicum65DbQnT4rm5qaWu39yMjIc/bx6aefUlJSgru7Ow8//PA5n+/s7HzOwCwiIiIil55Lbma4V69e+Pv7AzBr1iwAEhMT2bhxIwAjR44EoF27drRr147JkyebXV9QUMCUKVMAuOeee/Dz87tQQxcRERGRi8wlF4adnJyqKkbMmjWLFi1a0L59e/Ly8ggICKiqNBEdHU10dHTVZruTpk6dSlZWFvb29jz11FMXfPwiIiIicvG45MIwwIMPPshPP/1Et27dSExMxGAwMG7cONavX09YWFit11VUVPDxxx8DMG7cOJo3b36BRiwiIiIiFyOD0ZqdZwJAbm4u3t7e5OTk4OXl1djDEREREZEzWJrXLsmZYRERERGRhqAwLCIiIiI2S2FYRERERGyWwrCIiIiI2CyFYRERERGxWQrDIiIiImKzFIZFRERExGYpDIuIiIiIzVIYFhERERGb5dDYA5BLS89nf2zQ/rb9350N2p+IiIiINTQzLCIiIiI2S2FYRERERGyWwrCIiIiI2CyFYRERERGxWQrDIiIiImKzFIZFRERExGYpDIuIiIiIzVIYFhERERGbpTAsIiIiIjZLYVhEREREbJbCsIiIiIjYLIVhEREREbFZCsMiIiIiYrMUhkVERETEZikMi4iIiIjNUhgWEREREZulMCwiIiIiNkthWERERERslsKwiIiIiNgshWERERERsVkKwyIiIiJisxSGRURERMRmKQyLiIiIiM1SGBYRERERm6UwLCIiIiI2S2FYRERERGyWwrCIiIiI2CyFYRERERGxWQrDIiIiImKzFIZFRERExGYpDIuIiIiIzVIYFhERERGbpTAsIiIiIjZLYVhEREREbJbCsIiIiIjYLIVhEREREbFZCsMiIiIiYrMUhkVERETEZikMi4iIiIjNUhgWEREREZulMCwiIiIiNkthWERERERslsKwiIiIiNgshWERERERsVkKwyIiIiJisxSGRURERMRmKQyLiIiIiM1SGBYRERERm6UwLCIiIiI2S2FYRERERGyWwrCIiIiI2CyFYRERERGxWQrDIiIiImKzFIZFRERExGYpDIuIiIiIzVIYFhERERGbpTAsIiIiIjZLYVhEREREbJbCsIiIiIjYLIVhEREREbFZCsMiIiIiYrMUhkVERETEZikMi4iIiIjNUhgWEREREZulMCwiIiIiNuuSDcMzZsygR48euLq64ufnxw033MCRI0fOed2xY8e4++67CQ0NxcnJieDgYK655hpycnIuwKhFRERE5GLi0NgDqIupU6dy//33A9C8eXMyMjKYNWsWa9asYdeuXYSEhNR43cGDB+nfvz8ZGRm4ubnRvn17SktLWbp0KXl5eXh7e1/IL0NEREREGtklNzNcWlrKCy+8AMD48eM5evQoUVFReHp6kpqayjvvvFPrtY899hgZGRlceeWVJCQksGvXLqKiosjJyak1QIuIiIjI/65LLgxv2bKF9PR0wBSGAcLCwujbty8AixcvrvG6rKws/vrrLwB8fX257LLL8PT0pG/fvqxduxYHh9onyUtKSsjNzTV7ExEREZFL3yUXhuPi4qreDwoKqno/ODgYgNjY2BqvO3ToEEajEYDZs2dTWVmJi4sLmzZtYtSoUWzatKnWz/nuu+/i7e1d9RYREdEQX4qIiIiINLJLLgzX5mTQrU15eXnV+8OGDePIkSMcPnwYPz8/KioqmDJlSq3Xvvjii+Tk5FS9nR7IRUREROTSdcltoDt9VjY1NbXa+5GRkTVeFx4eXvX+ZZddhsFgwNvbmzZt2rBx40ZiYmJq/ZzOzs44OzvXc+RSk4Wbap7Jr6ur+9T87y8iIiJSk0tuZrhXr174+/sDMGvWLAASExPZuHEjACNHjgSgXbt2tGvXjsmTJwPQtGlTWrduDcC2bdswGo3k5uZy8OBBgKo2EREREbEdl1wYdnJyqqoYMWvWLFq0aEH79u3Jy8sjICCgqtJEdHQ00dHRVZvtAN577z0MBgNLly6lVatWtGrViszMTNzd3Xnqqaca5esRERERkcZzyYVhgAcffJCffvqJbt26kZiYiMFgYNy4caxfv56wsLBarxs3bhx//PEHvXr1IjExETs7O8aOHcvWrVtp3779BfwKRERERORicMmtGT5pwoQJTJgwodb22jbUjRkzhjFjxpyvYYmIiIjIJeSSnBkWEREREWkICsMiIiIiYrMUhkVERETEZl2ya4ZFahL7VucG6yvytT0N1peIiIhcnDQzLCIiIiI2S2FYRERERGyWwrCIiIiI2CyFYRERERGxWQrDIiIiImKzFIZFRERExGaptJpILbKW/adB+/Md9lyD9iciIiL1p5lhEREREbFZCsMiIiIiYrO0TELkAhnw6YAG7W/do+satD8RERFbpJlhEREREbFZCsMiIiIiYrMUhkVERETEZikMi4iIiIjNUhgWEREREZulMCwiIiIiNkthWERERERsluoMi1yivt/3eYP2d3fHhxu0PxERkUuBZoZFRERExGYpDIuIiIiIzVIYFhERERGbpTAsIiIiIjZLYVhEREREbJbCsIiIiIjYLIVhEREREbFZCsMiIiIiYrMUhkVERETEZikMi4iIiIjNUhgWEREREZulMCwiIiIiNkthWERERERslsKwiIiIiNgshWERERERsVkKwyIiIiJisxSGRURERMRmKQyLiIiIiM1SGBYRERERm6UwLCIiIiI2S2FYRERERGyWwrCIiIiI2CyFYRERERGxWQrDIiIiImKzFIZFRERExGYpDIuIiIiIzVIYFhERERGbpTAsIiIiIjZLYVhEREREbJbCsIiIiIjYLIVhEREREbFZCsMiIiIiYrMUhkVERETEZikMi4iIiIjNUhgWEREREZvl0NgDEJGLw6orBjVof4NWr2rQ/kRERM4HhWEROS/ypv/UoP153nZ7g/YnIiICWiYhIiIiIjZMYVhEREREbJbCsIiIiIjYLIVhEREREbFZCsMiIiIiYrMUhkVERETEZikMi4iIiIjNUhgWEREREZulMCwiIiIiNkthWERERERslsKwiIiIiNgshWERERERsVkKwyIiIiJisxSGRURERMRmKQyLiIiIiM1SGBYRERERm3XJhuEZM2bQo0cPXF1d8fPz44YbbuDIkSNnvebuu+/GYDBUe2vSpMkFGrWIiIiIXEwcGnsAdTF16lTuv/9+AJo3b05GRgazZs1izZo17Nq1i5CQkLNeHx4ebhaAg4KCzut4RUREROTidMmF4dLSUl544QUAxo8fz8yZM0lMTKRdu3akpqbyzjvv8N///vesfdx///288cYbF2C0ItJQJj89v8H6euSDaxusLxERubRdcssktmzZQnp6OmAKwwBhYWH07dsXgMWLF5+zj48//hhnZ2ciIiK45ZZbzrm8oqSkhNzcXLM3EREREbn0XXJhOC4urur905c3BAcHAxAbG3vW652cnAgNDaVJkybEx8fz66+/0qtXLxISEmq95t1338Xb27vqLSIiop5fhYiIiIhcDC65MFwbo9F4zuc888wzZGRkEBUVxZEjR/jiiy8AyMrK4rvvvqv1uhdffJGcnJyqt9MDuYiIiIhcui65MHz6rGxqamq19yMjI2u9tlOnTnh4eFR9PGHChKr3zzaj7OzsjJeXl9mbiIiIiFz6Lrkw3KtXL/z9/QGYNWsWAImJiWzcuBGAkSNHAtCuXTvatWvH5MmTq659/fXXSUtLq/p4xowZVe83a9bsfA9dRERERC4yl1wYdnJy4p133gFMYbhFixa0b9+evLw8AgICqipNREdHEx0dXbXZDuCtt94iJCSE1q1b06pVKx544AEAQkJCqkq1iYiIiIjtuORKqwE8+OCDuLu7M2nSJKKionBxcWHcuHG89957hIWF1XrdxIkTWbRoEQcPHiQ3N5dWrVoxbNgwXnnlFdUaFrEh6xbuatD+BlzdtUH7ExGRC+eSDMNgWu97+prfM9W0oe6ll17ipZdeOp/DEhEbNPH2Gxq0v5d/mtmg/YmISO0uuWUSIiIiIiINRWFYRERERGyWwrCIiIiI2CyFYRERERGxWQrDIiIiImKzFIZFRERExGYpDIuIiIiIzVIYFhERERGbpTAsIiIiIjZLYVhEREREbJbCsIiIiIjYLIVhEREREbFZCsMiIiIiYrMUhkVERETEZikMi4iIiIjNUhgWEREREZulMCwiIiIiNkthWERERERslsKwiIiIiNgshWERERERsVkOjT0AERExt+KHrxu0vyvveqBB+xMR+V+iMCwi8j8uauLyBu2v/ctDGrQ/EZHGpDAsIiJWyV6xt0H787myU4P2JyJiDYVhERFpVG+88cZF3Z+I/G9TGBYRkf8pGzdubLC++vbt22B9icjFSdUkRERERMRmaWZYRESkFr/93rtB+7vpxs0N2p+I1J/CsIiIyAWye/cXDdrfHQebN2h/L7Zv1aD93dKxZYP2J3I+aJmEiIiIiNgszQyLiIjIedHz2R8btL9t/3dng/YnApoZFhEREREbpjAsIiIiIjZLYVhEREREbJbCsIiIiIjYLG2gExERkUvCwk2xDdbX1X0iG6wvubRpZlhEREREbJbCsIiIiIjYLIVhEREREbFZCsMiIiIiYrMUhkVERETEZikMi4iIiIjNUhgWEREREZulMCwiIiIiNkthWERERERslsKwiIiIiNgshWERERERsVkKwyIiIiJisxSGRURERMRmKQyLiIiIiM1yaOwBiIiIiFxosW91btD+Il/b06D9yYWjmWERERERsVkKwyIiIiJisxSGRURERMRmKQyLiIiIiM1SGBYRERERm6UwLCIiIiI2S2FYRERERGyWwrCIiIiI2CyFYRERERGxWQrDIiIiImKzFIZFRERExGYpDIuIiIiIzVIYFhERERGbpTAsIiIiIjZLYVhEREREbJZDYw9ARERE5FKXtew/Ddqf77DnGrQ/qZ1mhkVERETEZikMi4iIiIjNUhgWEREREZulMCwiIiIiNkthWERERERslsKwiIiIiNgshWERERERsVkKwyIiIiJisxSGRURERMRmXbJheMaMGfTo0QNXV1f8/Py44YYbOHLkiEXXVlRU0L9/fwwGAwaDgRdeeOE8j1ZERERELkaXZBieOnUqt956Kzt27CA0NJSKigpmzZpF//79SU5OPuf1b731Fhs2bLgAIxURERGRi9klF4ZLS0urZnLHjx/P0aNHiYqKwtPTk9TUVN55552zXr9+/XomTpzITTfddCGGKyIiIiIXsUsuDG/ZsoX09HTAFIYBwsLC6Nu3LwCLFy+u9drc3Fxuv/12wsLC+PLLLy3+nCUlJeTm5pq9iYiIiMil75ILw3FxcVXvBwUFVb0fHBwMQGxsbK3X/utf/+L48eP89NNP+Pj4WPw53333Xby9vaveIiIirB+4iIiIiFx0LrkwXBuj0XjW9jlz5vDTTz/x0ksvccUVV1jV94svvkhOTk7V2+mBXEREREQuXZdcGD59VjY1NbXa+5GRkTVet2vXLgA+/PBDPDw88PDwqGr78MMPadKkSa2f09nZGS8vL7M3EREREbn0XXJhuFevXvj7+wMwa9YsABITE9m4cSMAI0eOBKBdu3a0a9eOyZMnm11fWFhIQUEBBQUFVY+VlZWRn59/IYYvIiIiIheRSy4MOzk5VVWMmDVrFi1atKB9+/bk5eUREBBQVWkiOjqa6Ojoqs12b7zxBkaj0eztpOeff57s7OwL/rWIiIiISOO65MIwwIMPPshPP/1Et27dSExMxGAwMG7cONavX09YWFhjD09ERERELhEOjT2AupowYQITJkyotf1cG+osfY6IiIiI/O+6JGeGRUREREQagsKwiIiIiNisS3aZhIiIiMj/qgGfDmjQ/tY9uq5B+/tfoplhEREREbFZCsMiIiIiYrMUhkVERETEZikMi4iIiIjNUhgWEREREZulMCwiIiIiNkthWERERERslsKwiIiIiNgshWERERERsVkKwyIiIiJis6w+jvmtt95q8EG89tprDd6niIiIiMi5WB2G33jjDQwGQ4MOQmFYRERERBqD1WEYwGg0NtgAGjpYi4iIiIhYyuowvGLFivMxDhERERGRC87qMDxo0KDzMQ4RERERkQtO1SRERERExGYpDIuIiIiIzarTBjprFBQUsGzZMg4fPozBYKBFixYMGzYMDw+P8/2pRURERETOyuowbDQaWbp0KQARERG0b9++1uf+8MMPPP3002RlZZk97u7uzsSJE3n00Uet/fQiIiIiIg3G6jC8efNmRo4cicFgYObMmbWG4WnTpnHPPfdgMBiqlWLLz8/niSeeoKysjKeeeqpuIxcRERERqSer1wwvW7YMgKCgIMaOHVvjc7Kysnj88ccB00xyq1atePXVV5kyZQr33XcfDg4OGI1GXn31VRISEuo+ehERERGRerA6DG/evBmDwcCYMWNqPTDjhx9+IDs7G4PBwMCBA9m5cydvvvkmDz30EF9//TV//vkndnZ2FBcXM23atHp/ESIiIiIidWF1GD548CAAAwYMqPU5c+bMqXr/448/xs3Nzax9+PDh3HjjjRiNRh3iISIiIiKNxuownJiYCEDr1q1rbC8rK6uaPW7dujXdu3ev8XnXXXcdAPv377d2CCIiIiIiDcLqMFxYWAiYKkLUZNeuXZSUlAAwcODAWvtp1aoVQLVKEyIiIiIiF4rVYfjkkofaQuymTZuq3u/Zs2et/Tg4mApZlJWVWTsEEREREZEGYXUYbtKkCQBbtmypsX3VqlVV7/ft27fWfjIyMgDw9PS0dggiIiIiIg3C6jDct29fjEYjX3/9dbVZ3fT0dP78808AAgIC6NatW6397N27F4CmTZtaOwQRERERkQZhdRi+8847ATh8+DBjx47lwIEDlJWVsXv3bsaNG0dRUREGg4HbbrvtrP2sWrUKg8FAp06d6jZyEREREZF6svoEukGDBnHdddcxd+5cFi9ezOLFi6s9x8PDg2effbbWPrKysli4cCFw9k12IiIiIiLnk9UzwwA//fQTI0aMwGg0Vntzc3Nj+vTphIWF1Xr9F198QWlpKQAjR46s28hFREREROrJ6plhMJVVW7x4MQsXLmTu3LnExsbi5OREjx49uO+++6o22dUmNjaW8ePHEx4efs7nioiIiIicL3UKwyddffXVXH311VZfN2XKlPp8WhERERGRBlGnZRIiIiIiIv8L6hSGFy1aRI8ePejRowfTp0+36trp06dXXbts2bK6fHoRERERkQZhdRg2Go08+eST7Nq1i8DAwHOWUDvTrbfeSkBAADt37uTpp5+29tOLiIiIiDQYq8Pw8uXLOXjwIHZ2dnz00UdWf0KDwcDHH3+Mvb09e/fuNTuxTkRERETkQrI6DM+aNQuA4cOH06FDhzp90g4dOnDVVVcBMHPmzDr1ISIiIiJSX1aH4c2bN2MwGLj22mvr9YlHjx6N0Whk48aN9epHRERERKSurA7Dx48fB6Bt27b1+sRt2rQBICYmpl79iIiIiIjUldVhOCcnBwA/P796feKT1+fm5tarHxERERGRurI6DHt5eQGQnZ1dr0988npPT8969SMiIiIiUldWh+HAwEAA9u/fX69PHBUVBUBQUFC9+hERERERqSurw3Dv3r0xGo3Mnz+/Xp947ty5GAwGevXqVa9+RERERETqyuowPGrUKAD++usv1q5dW6dPunr1av766y+z/uTSV1FaQn7iYQqSjjT2UEREREQs4mDtBePHj6dZs2bExMRw4403snr1alq3bm3x9QcPHuSmm27CYDDQrFkzbrjhBmuHIBehpA1zSdn8J5XlpbiHtiSoxwgS1vxO2OXj8Wvfr7GHJyIiIlIjq2eGHR0dmTRpEgCpqan07NmTTz75hIKCgrNel5+fz8cff8xll11GamoqAB988AEODlbncbnIpO1cTtK6OVSWlYLR9Jhn046U5mWSdUB1pEVEROTiVackOm7cON58801ef/11CgoKeOqpp3j11VcZOHAgPXv2JCgoCHd3dwoKCkhJSWH79u2sWbOGgoICjEZTWnrzzTcZO3ZsQ34t0kjSti8Fg4EmV95K/PLpADi4euDk4UtRalwjj05ERESkdnWeln311Vdp0qQJjz76KIWFheTn57N48WIWL15c4/NPhmA3NzcmT57M3XffXddPLReZkpxUXAPCCeoxoioMA9i7uFOckdiIIxMRERE5u3qtUbjnnnu46qqr+PDDD/nxxx9JT0+v9bkBAQHcddddPPnkk4SFhdXn08pFxt7JlbL8bCrLS6seKy8uoCQrGXtn10Ycmcm+pCJWHc4nIacMgHBvRwa18qBjaOOPTURERBpXvRfshoWFMWnSJCZNmsS+ffvYtWsXGRkZ5OXl4enpib+/P127dqVjx44NMV65CHlEtCP70Faif34LgJLsVKJ/fpPK8lK8W3RrtHFVVBp5bm4Cs3dlV2v7v79TGNvFh0ljw7G3M1z4wYmIiMhFoUF3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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "make_plot(models, 'Busan')" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsMAAAKZCAYAAABdmSbTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdZ3RU1duG8WvSe+8hgdB7R2kCKiiogAIWwIa969/e62vHjr0rKhYURAWp0nsvIRBaeu+9zfthIDAkgTlJFHHu31oskzlzdk4kTO7ZZ+/nMZnNZjMiIiIiInbI4VRfgIiIiIjIqaIwLCIiIiJ2S2FYREREROyWwrCIiIiI2C2FYRERERGxWwrDIiIiImK3FIZFRERExG45neoLOB3V1NSQkpKCt7c3JpPpVF+OiIiIiBzHbDZTWFhIREQEDg4Nz/8qDDdCSkoKUVFRp/oyREREROQkEhMTadGiRYPHFYYbwdvbG7D8z/Xx8TnFVyMiIiIixysoKCAqKqo2tzVEYbgRjiyN8PHxURgWERER+Rc72ZJWbaATEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWwrCIiIiI2K3TNgzPmDGD3r174+7uTkBAABMmTGDfvn0nPe/AgQNce+21hIeH4+LiQmhoKBdeeCH5+fn/wFWLiIiIyL+J06m+gMb49NNPueGGGwCIiYkhOzubmTNnsnz5crZu3UpYWFi95+3Zs4eBAweSnZ2Nh4cHnTp1oqKiggULFlBYWIivr+8/+W2IiIiIyCl22s0MV1RU8PDDDwMwfvx49u/fT2xsLN7e3mRkZPDCCy80eO5dd91FdnY2Z599NsnJyWzdupXY2Fjy8/MbDNAiIiIi8t912oXh9evXk5WVBVjCMEBERAT9+/cHYN68efWel5uby/z58wHw9/enb9++eHt7079/f1asWIGTU8OT5OXl5RQUFFj9EREREZHT32kXhhMTE2s/DgkJqf04NDQUgISEhHrP27t3L2azGYCff/6Zmpoa3NzcWLt2LaNGjWLt2rUNfs0XX3wRX1/f2j9RUVHN8a2IiIiIyCl22oXhhhwJug2pqqqq/Xj48OHs27eP+Ph4AgICqK6u5v3332/w3EceeYT8/PzaP8cGchERERE5fZ12YfjYWdmMjIw6H0dHR9d7XmRkZO3Hffv2xWQy4evrS/v27QE4ePBgg1/T1dUVHx8fqz8iIiIicvo77cJwv379CAwMBGDmzJkApKSksGbNGgBGjhwJQMeOHenYsSPTpk0DoGXLlrRr1w6AjRs3YjabKSgoYM+ePQC1x0RERETEfpx2YdjFxaW2YsTMmTNp3bo1nTp1orCwkKCgoNpKE3FxccTFxdVutgN46aWXMJlMLFiwgLZt29K2bVtycnLw9PTk3nvvPSXfj4iIiIicOqddGAa46aabmD59Oj179iQlJQWTycS4ceNYtWoVERERDZ43btw4Zs2aRb9+/UhJScHBwYGLL76YDRs20KlTp3/wOxARERGRfwOT+WQ7z6SOgoICfH19yc/P1/phERERkX8hW/PaaTkzLCIiIiLSHBSGRURERMRuKQyLiIiIiN1SGBYRERERu+V0qi9ATi99HviqWcfb+OrVzTqeiIiIiBGaGRYRERERu6UwLCIiIiJ2S8sk5JT6Y21Cs453wZnRzTqeiIiI/LcpDMt/SsKz3ZptrOgntzfbWCIiIvLvpGUSIiIiImK3FIZFRERExG4pDIuIiIiI3VIYFhERERG7pQ10Ig3IXfhKs47nP/zBZh1PREREmk4zwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UNdCL/kEHvDGrW8VbeubJZxxMREbFHmhkWEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgtbaATOU19sfO9Zh3v2i63Net4IiIipwPNDIuIiIiI3VIYFhERERG7pWUSIgLA0iFDm3W8ocuWNut4IiIifwfNDIuIiIiI3VIYFhERERG7pWUSIvK3KPx2erOO5z3pymYdT0REBBSGReQ0Me2+Oc021h2vjW62sURE5PSmZRIiIiIiYrc0MywidmflH1ubdbxBF/Ro1vFEROSfozAsItJEz185oVnHGzji/GYd7+xrbmzW8URE/ksUhkVE/uNin1/crON1euycZh1PRORUUhgWERFD8pbsaNbx/M7u2qzjiYgYoQ10IiIiImK3FIZFRERExG4pDIuIiIiI3dKaYREROaWefvrpf/V4IvLfpjAsIiL/KWvWrGm2sRIS72q2sQAuu3Rds44nIk2nZRIiIiIiYrcUhkVERETEbmmZhIiIyD9k27YPmnW87t1vadbxROyRZoZFRERExG5pZlhEROQ01eOnP5t1vK0Tzm/W8UROBwrDIiIiAsCMnfuadbwrurRp1vFE/g5aJiEiIiIidkthWERERETslpZJiIiIyN+izwNfNet4G1+9ulnHEwHNDIuIiIiIHVMYFhERERG7pTAsIiIiInZLYVhERERE7JbCsIiIiIjYLYVhEREREbFbCsMiIiIiYrcUhkVERETEbqnphoiIiJwW/lib0GxjXXBmdLONJac3zQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWNtCJiIiI3Ul4tluzjhf95PZmHU/+OQrDIiIiIk2Uu/CVZh3Pf/iDzTqeNEzLJERERETEbikMi4iIiIjdUhgWEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWwrCIiIiI2C2FYRERERGxW06n+gJERERExNqgdwY163gr71zZrOP9l2hmWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ267QNwzNmzKB37964u7sTEBDAhAkT2Ldv3wnPufbaazGZTHX+tGjR4h+6ahERERH5NzktO9B9+umn3HDDDQDExMSQnZ3NzJkzWb58OVu3biUsLOyE50dGRloF4JCQkL/1ekVERETk3+m0mxmuqKjg4YcfBmD8+PHs37+f2NhYvL29ycjI4IUXXjjpGDfccANr1qyp/fPrr7+e8Pnl5eUUFBRY/RERERGR099pF4bXr19PVlYWYAnDABEREfTv3x+AefPmnXSMN998E1dXV6KiorjiiitOurzixRdfxNfXt/ZPVFRUE78LEREREfk3OO3CcGJiYu3Hxy5vCA0NBSAhIeGE57u4uBAeHk6LFi1ISkri+++/p1+/fiQnJzd4ziOPPEJ+fn7tn2OvQUREREROX6ddGG6I2Ww+6XPuv/9+srOziY2NZd++fXzwwQcA5Obm8vnnnzd4nqurKz4+PlZ/REREROT0d9qF4WOXKGRkZNT5ODo6usFzu3btipeXV+3nkydPrv34ZDPKIiIiIvLfc9qF4X79+hEYGAjAzJkzAUhJSWHNmjUAjBw5EoCOHTvSsWNHpk2bVnvuU089RWZmZu3nM2bMqP24VatWf/eli4iIiMi/zGkXhl1cXGorRsycOZPWrVvTqVMnCgsLCQoKqq00ERcXR1xcXO1mO4Bnn32WsLAw2rVrR9u2bbnxxhsBCAsLqy3VJiIiIiL247QLwwA33XQT06dPp2fPnqSkpGAymRg3bhyrVq0iIiKiwfOef/55Bg4cSEFBAcnJybRt25ZbbrmFDRs2qNawiIiIiB06LZtugGW977Frfo9X34a6Rx99lEcfffTvvCwREREROY2cljPDIiIiIiLNQWFYREREROyWwrCIiIiI2C2FYRERERGxWwrDIiIiImK3FIZFRERExG4pDIuIiIiI3VIYFhERERG7pTAsIiIiInZLYVhERERE7JbCsIiIiIjYLYVhEREREbFbCsMiIiIiYrcUhkVERETEbikMi4iIiIjdUhgWEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWwrCIiIiI2C2FYRERERGxWwrDIiIiImK3FIZFRERExG4pDIuIiIiI3VIYFhERERG7pTAsIiIiInZLYVhERERE7JbCsIiIiIjYLYVhEREREbFbCsMiIiIiYrcUhkVERETEbikMi4iIiIjdUhgWEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWwrCIiIiI2C2FYRERERGxWwrDIiIiImK3FIZFRERExG4pDIuIiIiI3VIYFhERERG7pTAsIiIiInZLYVhERERE7JbCsIiIiIjYLYVhEREREbFbCsMiIiIiYrcUhkVERETEbikMi4iIiIjdUhgWEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWwrCIiIiI2C2FYRERERGxWwrDIiIiImK3FIZFRERExG4pDIuIiIiI3VIYFhERERG7pTAsIiIiInZLYVhERERE7JbCsIiIiIjYLYVhEREREbFbCsMiIiIiYrcUhkVERETEbikMi4iIiIjdUhgWEREREbt12obhGTNm0Lt3b9zd3QkICGDChAns27fPpnOrq6sZOHAgJpMJk8nEww8//DdfrYiIiIj8G52WYfjTTz9l4sSJbN68mfDwcKqrq5k5cyYDBw4kLS3tpOc/++yzrF69+h+4UhERERH5NzvtwnBFRUXtTO748ePZv38/sbGxeHt7k5GRwQsvvHDC81etWsXzzz/PZZdd9k9croiIiIj8i512YXj9+vVkZWUBljAMEBERQf/+/QGYN29eg+cWFBRw5ZVXEhERwYcffmjz1ywvL6egoMDqj4iIiIic/k67MJyYmFj7cUhISO3HoaGhACQkJDR47u23386hQ4eYPn06fn5+Nn/NF198EV9f39o/UVFRxi9cRERERP51Trsw3BCz2XzC47/88gvTp0/n0UcfZciQIYbGfuSRR8jPz6/9c2wgFxEREZHT12kXho+dlc3IyKjzcXR0dL3nbd26FYDXX38dLy8vvLy8ao+9/vrrtGjRosGv6erqio+Pj9UfERERETn9nXZhuF+/fgQGBgIwc+ZMAFJSUlizZg0AI0eOBKBjx4507NiRadOmWZ1fUlJCcXExxcXFtY9VVlZSVFT0T1y+iIiIiPyLnHZh2MXFpbZixMyZM2ndujWdOnWisLCQoKCg2koTcXFxxMXF1W62e/rppzGbzVZ/jnjooYfIy8v7x78XERERETm1TrswDHDTTTcxffp0evbsSUpKCiaTiXHjxrFq1SoiIiJO9eWJiIiIyGnC6VRfQGNNnjyZyZMnN3j8ZBvqbH2OiIiIiPx3nZYzwyIiIiIizUFhWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWwrCIiIiI2C2FYRERERGxWwrDIiIiImK3FIZFRERExG4pDIuIiIiI3VIYFhERERG7pTAsIiIiInZLYVhERERE7JbCsIiIiIjYLYVhEREREbFbCsMiIiIiYrcUhkVERETEbikMi4iIiIjdUhgWEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYR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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "make_plot(models, 'Incheon')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsMAAAKZCAYAAABdmSbTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3RU1d7G8e+k995JQui9SJcmYANUVBAbNuz3qq/12vu99q7YRVEQsSAiCEjv0juEEiC9955JmfePgcCYBGaSaMB5PmtlrcycOb/Zk/rMPrsYTCaTCRERERERO+TQ0g0QEREREWkpCsMiIiIiYrcUhkVERETEbikMi4iIiIjdUhgWEREREbulMCwiIiIidkthWERERETsllNLN+BsVFNTQ2pqKt7e3hgMhpZujoiIiIj8iclkoqioiIiICBwcGu7/VRhuhNTUVKKiolq6GSIiIiJyGklJSURGRjZ4XGG4Eby9vQHzF9fHx6eFWyMiIiIif1ZYWEhUVFRtbmuIwnAjHB8a4ePjozAsIiIicgY73ZBWTaATEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWwrCIiIiI2C2FYRERERGxWwrDIiIiImK3FIZFRERExG4pDIuIiIiI3VIYFhERERG7pTAsIiIiInZLYVhERERE7JbCsIiIiIjYLYVhEREREbFbCsMiIiIiYrcUhkVERETEbikMi4iIiIjdUhgWEREREbulMCwiIiIidkthWERERETsllNLN0DOLn3/802z1tv6xk3NWk9ERETEFuoZFhERERG7pTAsIiIiInZLYVhERERE7JbCsIiIiIjYLYVhEREREbFbCsMiIiIiYrcUhkVERETEbikMi4iIiIjdUhgWEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWwrCIiIiI2C2FYRERERGxWwrDIiIiImK3FIZFRERExG4pDIuIiIiI3XJq6QaIfVuwMbFZ640dGN2s9UREROSfTT3DIiIiImK3FIZFRERExG4pDIuIiIiI3VIYFhERERG7pTAsIiIiInZLYVhERERE7JbCsIiIiIjYLYVhEREREbFbCsMiIiIiYrfO2jA8a9Ys+vTpg7u7OwEBAVx11VUcPnz4tOcdPXqUW265hfDwcFxcXAgNDeWSSy6hoKDgb2i1iIiIiJxJzsrtmKdOncrtt98OQJs2bcjJyWH27NmsWbOGnTt3EhYWVu95Bw8eZPDgweTk5ODh4UGXLl0wGo0sWbKEoqIifH19/86XISIiIiIt7KzrGTYajTz++OMATJgwgSNHjhAbG4u3tzeZmZm8/PLLDZ77f//3f+Tk5DBy5EhSUlLYuXMnsbGxFBQUNBigASoqKigsLLT4EBEREZGz31kXhjdv3kx2djZgDsMAERERDBo0CIBFixbVe15eXh6LFy8GwN/fn379+uHt7c2gQYNYu3YtTk4Nd5K/8sor+Pr61n5ERUU150sSERERkRZy1oXhpKSk2s9DQkJqPw8NDQUgMTGx3vMOHTqEyWQC4Oeff6ampgY3Nzc2btzImDFj2LhxY4PP+cQTT1BQUFD7cXIbREREROTsddaF4YYcD7oNqaqqqv38ggsu4PDhw8TFxREQEEB1dTUff/xxg+e6urri4+Nj8SEiIiIiZ7+zLgyfPEQhMzOzzufR0dH1nteqVavaz/v164fBYMDX15eOHTsCEB8f/xe0VkRERETOZGddGO7fvz+BgYEAzJ49G4DU1FQ2bNgAwOjRowHo3LkznTt3ZsqUKQC0bt2aDh06ALB161ZMJhOFhYUcPHgQoPaYiIiIiNiPsy4Mu7i41K4YMXv2bNq2bUuXLl0oKioiKCiodqWJAwcOcODAgdrJdgCvvvoqBoOBJUuW0L59e9q3b09ubi6enp489NBDLfJ6RERERKTlnHVhGODOO+9kxowZ9O7dm9TUVAwGA+PHj2f9+vVEREQ0eN748eP55Zdf6N+/P6mpqTg4OHDFFVewZcsWunTp8je+AhERERE5E5yVm24ATJo0iUmTJjV4vKEJdePGjWPcuHF/VbNERERE5CxyVvYMi4iIiIg0B4VhEREREbFbCsMiIiIiYrcUhkVERETEbikMi4iIiIjdUhgWEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu+XU0g0QaU6JL/ZotlrRz+5utloiIiJyZlLPsIiIiIjYLYVhEREREbFbCsMiIiIiYrcUhkVERETEbikMi4iIiIjdUhgWEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWwrCIiIiI2C2FYRERERGxW04t3QCRM1Xe0tebtZ7/BY82az0RERFpOvUMi4iIiIjdUhgWEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWwrCIiIiI2C2FYRERERGxWwrDIiIiImK3FIZFRERExG4pDIuIiIiI3VIYFhERERG7pTAsIiIiInZLYVhERERE7JZTSzdAxF4M+WBIs9Zbd9+6Zq0nIiJij9QzLCIiIiJ2S2FYREREROyWwrCIiIiI2C2FYRERERGxWwrDIiIiImK3FIZFRERExG4pDIuIiIiI3VIYFhERERG7pTAsIiIiInZLYVhERERE7JbCsIiIiIjYLYVhEREREbFbCsMiIiIiYrcUhkVERETEbikMi4iIiIjdcmrpBohI40zb+1Gz1rul27+btZ6IiMjZQD3DIiIiImK3FIZFRERExG4pDIuIiIiI3VIYFhERERG7pTAsIiIiInZLYVhERERE7JbCsIiIiIjYLYVhEREREbFbCsMiIiIiYrfO2jA8a9Ys+vTpg7u7OwEBAVx11VUcPnz4lOfccsstGAyGOh+RkZF/U6tFRERE5ExyVm7HPHXqVG6//XYA2rRpQ05ODrNnz2bNmjXs3LmTsLCwU57fqlUriwAcEhLyl7ZXRERERM5MZ13PsNFo5PHHHwdgwoQJHDlyhNjYWLy9vcnMzOTll18+bY3bb7+dDRs21H78+uuvf3WzRUREROQMdNaF4c2bN5OdnQ2YwzBAREQEgwYNAmDRokWnrfHuu+/i6upKVFQU11577WmHV1RUVFBYWGjxISIiIiJnv7MuDCclJdV+fvLwhtDQUAASExNPeb6Liwvh4eFERkaSnJzM999/T//+/UlJSWnwnFdeeQVfX9/aj6ioqCa+ChERERE5E5x1YbghJpPptI955JFHyMnJITY2lsOHD/PJJ58AkJeXx1dffdXgeU888QQFBQW1HycHchERERE5e511YfjkXtnMzMw6n0dHRzd4bvfu3fHy8qq9PWnSpNrPT9Wj7Orqio+Pj8WHiIiIiJz9zrow3L9/fwIDAwGYPXs2AKmpqWzYsAGA0aNHA9C5c2c6d+7MlClTas997rnnyMrKqr09a9as2s9jYmL+6qaLiIiIyBnmrAvDLi4utStGzJ49m7Zt29KlSxeKiooICgqqXWniwIEDHDhwoHayHcCLL75IWFgYHTp0oH379txxxx0AhIWF1S7VJiIiIiL246wLwwB33nknM2bMoHfv3qSmpmIwGBg/fjzr168nIiKiwfNeeuklBg8eTGFhISkpKbRv3567776bLVu2aK1hERERETt0Vm66AebxvieP+f2z+ibUPfnkkzz55JN/ZbNERERE5CxyVvYMi4iIiIg0B4VhEREREbFbZ+0wCRFpXquGn9es9c5bvapZ64mIiPwV1DMsIiIiInZLYVhERERE7JbCsIiIiIjYLYVhEREREbFbCsMiIiIiYrcUhkVERETEbikMi4iIiIjdUhgWEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWwrCIiIiI2C2FYRERERGxWwrDIiIiImK3nFq6ASLyz1Q0c0az1vO+/oZmrSciIgLqGRYRERERO6YwLCIiIiJ2S2FYREREROyWxgyLyFlhysPzmq3WvW9d1my1RETk7KaeYRERERGxWwrDIiIiImK3FIZFRERExG4pDIuIiIiI3VIYFhERERG7pTAsIiIiInZLYVhERERE7JbCsIiIiIjYLW26ISJ2Z92Cnc1ab8jYXs1aT0RE/j7qGRYRERERu6UwLCIiIiJ2S2FYREREROyWwrCIiIiI2C1NoBMRaaKXbriqWes9NeOnZq0nIiINUxgWETnDrPj682atN/LmO5q1nojIP4mGSYiIiIiI3VIYFhERERG7pTAsIiIiInZLYVhERERE7JYm0ImI/MPFvrS8Wet1eWpUs9YTEWlJ6hkWEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWU0s3QEREzi75K/Y0az2/kd2btZ6IiC3UMywiIiIidks9wyIi0qKef/75M7qeiPyzqWdYREREROyWwrCIiIiI2C2FYRERERGxWwrDIiIiImK3NIFORET+UTZs2NBstQYNGtRstUTkzKSeYRERERGxW+oZFhERacAPPw5o1npXT9zUrPVEpOnUMywiIiIidkthWERERETslsKwiIiIiNgthWERERERsVuaQCciIvI32bXrk2at17Pn3c1aT8QeqWdYREREROyWwrCIiIiI2C2FYRERERGxWwrDIiIiImK3NIFORETkLNXrp9+btd7Oqy5u1noiZ4Oztmd41qxZ9OnTB3d3dwICArjqqqs4fPiwVedWV1czePBgDAYDBoOBxx9//C9urYiIiIicic7KMDx16lSuu+46tm/fTnh4ONXV1cyePZvBgweTnp5+2vNffPFF/vjjj7+hpSIiIiJyJjvrwrDRaKztyZ0wYQJHjhwhNjYWb29vMjMzefnll095/vr163nppZe4+uqr/47mioiIiMgZ7KwLw5s3byY7Oxswh2GAiIgIBg0aBMCiRYsaPLewsJAbbriBiIgIPv30U6ufs6KigsLCQosPERERETn7nXVhOCkpqfbzkJCQ2s9DQ0MBSExMbPDce+65h4SEBGbMmIGfn5/Vz/nKK6/g6+tb+xEVFWV7w0VERETkjHPWheGGmEymUx6fM2cOM2bM4Mknn2T48OE21X7iiScoKCio/Tg5kIuIiIjI2eusC8Mn98pmZmbW+Tw6Orre83bu3AnA22+/jZeXF15eXrXH3n77bSIjIxt8TldXV3x8fCw+REREROTsd9aF4f79+xMYGAjA7NmzAUhNTWXDhg0AjB49GoDOnTvTuXNnpkyZYnF+aWkpJSUllJSU1N5XWVlJcXHx39F8ERERETmDnHVh2MXFpXbFiNmzZ9O2bVu6dOlCUVERQUFBtStNHDhwgAMHDtROtnv++ecxmUwWH8c99thj5Ofn/+2vRURERERa1lkXhgHuvPNOZsyYQe/evUlNTcVgMDB+/HjWr19PRERESzdPRERERM4SZ+12zJMmTWLSpEkNHj/dhDprHyMiIiIi/1xnZc+wiIiIiEhzUBgWEREREbt11g6TEBERkeY1a+/hZq13bbd2zVpP5K+gnmERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWwrCIiIiI2C2FYRERERGxWwrDIiIiImK3FIZFRERExG4pDIuIiIiI3XJq6QaIiIjIP1Pf/3zTrPW2vnFTs9YTAfUMi4iIiIgdUxgWEREREbulYRIiIiJyVliwMbHZao0dGN1steTspp5hEREREbFbCsMiIiIiYrcUhkVERETEbikMi4iIiIjdUhgWEREREbulMCwiIiIidkthWERERETslsKwiIiIiNgthWERERERsVsKwyIiIiJitxSGRURERMRuKQyLiIiIiN1SGBYRERERu6UwLCIiIiJ2S2FYREREROyWk60nvPjii83eiGeffbbZa4qIiIiInI7NYfj555/HYDA0ayMUhkVERESkJdgchgFMJlOzNaC5g7WIiIiIiLVsDsMrVqz4K9ohIiIiIvK3szkMn3feeX9FO0RERET+Nokv9mjWetHP7m7WevL30WoSIiIiImK3FIZFRERExG41agKdLUpKSli6dClxcXEYDAbatm3LBRdcgJeX11/91CIiIiIip2RzGDaZTCxZsgSAqKgounTp0uBjv/76ax5++GHy8vIs7vf09OSll17ivvvus/XpRURERESajc1heNOmTYwePRqDwcBPP/3UYBiePn06kydPxmAw1FmKrbi4mAceeIDKykoeeuihxrVcRERERKSJbB4zvHTpUgBCQkK44oor6n1MXl4e999/P2DuSW7fvj3PPPMMH3/8MbfddhtOTk6YTCaeeeYZUlJSGt96EREREZEmsDkMb9q0CYPBwLhx4xrcMOPrr78mPz8fg8HAsGHD2LFjBy+88AJ33XUXn3/+Ob/99hsODg6Ul5czffr0Jr8IEREREZHGsDkMHzx4EIAhQ4Y0+Jg5c+bUfv7uu+/i4eFhcfzCCy9k4sSJmEwmbeIhIiIiIi3G5jCcmpoKQIcOHeo9XllZWdt73KFDB84555x6H3f55ZcDsG/fPlubICIiIiLSLGwOw6WlpYB5RYj67Ny5k4qKCgCGDRvWYJ327dsD1FlpQkRERETk72JzGD4+5KGhELtx48baz/v27dtgHScn80IWlZWVtjZBRERERKRZ2ByGIyMjAdi8eXO9x1etWlX7+aBBgxqsk5OTA4C3t7etTRARERERaRY2h+FB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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "make_plot(models, 'Daegu')" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsMAAAKZCAYAAABdmSbTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3iUVd7G8e+T3nsv9F6kSxMRBESsC2Jj7Yq+Kq69rX3XsvaOXbGiglgQUXqV3iEEAoT03uukzPvHQGBIAjNJJODcH69cJvPMc+YMhJl7znPO7xhms9mMiIiIiIgDcmrtDoiIiIiItBaFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg7LpbU7cDqqra0lLS0NX19fDMNo7e6IiIiIyDHMZjPFxcVERUXh5NT4+K/CcBOkpaURGxvb2t0QERERkRNITk4mJiam0eMKw03g6+sLWP5w/fz8Wrk3IiIiInKsoqIiYmNj63JbYxSGm+Dw1Ag/Pz+FYREREZFT2ImmtGoBnYiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMM6bcPwzJkz6d+/P56engQFBXHZZZexb9++Ru+/dOlSDMNo9Ouzzz47eZ0XERERkVOCS2t3oCk+/vhjbr75ZgDat29Pbm4us2fPZsWKFWzdupWIiIh65/j5+TF48GCr2zIzM0lMTAQgMjLyL++3iIiIiJxaDLPZbG7tTtjDZDIRHR1NTk4OkyZNYtasWaSlpdGtWzeKi4uZNm0ab775pk1tXXjhhfz666907dqVuLg4DMNo8H6VlZVUVlbW/VxUVERsbCyFhYX4+fm1yPMSERERkZZTVFSEv7//CfPaaTdNYv369eTk5AAwadIkAKKiohgyZAgA8+fPt6mduLg45s2bB8B9993XaBAGeP755/H396/7io2Nbc5TEBEREZFTxGkXhpOTk+u+DwsLq/s+PDwcgKSkJJvaefnllzGbzYSFhXHttdce976PPPIIhYWFdV9H90FERERETl+n5Zzhhtgz2yMjI4OvvvoKgGnTpuHu7n7c+7u7u5/wPiIiIiJy+jntRoaPnqKQlZVV7/s2bdqcsI233nqLyspKvL29uf3221u+kyIiIiJyWjjtwvCgQYMIDg4GYPbs2QCkpaWxZs0aAMaPHw9At27d6NatG2+//bbV+aWlpUyfPh2AG264gaCgoJPVdRERERE5xZx2YdjNzY3nnnsOsIThDh060L17d4qLiwkJCeHhhx8GID4+nvj4+LrFdod9/PHH5Ofn4+zszL333nvS+y8iIiIip47TLgwDTJ06lS+//JK+ffuSlpaGYRhMnDiR1atXExUV1eh5NTU1vP766wBMnDiR9u3bn6Qei4iIiMip6LSrM3wqsLVunYiIiIi0jr9tnWERERERkZaiMCwiIiIiDkthWEREREQc1t9m0w05OQY88HmLtrfxpePv/iciIiLyV9LIsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHddqG4ZkzZ9K/f388PT0JCgrisssuY9++fSc878CBA1x//fVERkbi5uZGeHg4F1xwAYWFhSeh1yIiIiJyKnFp7Q40xccff8zNN98MQPv27cnNzWX27NmsWLGCrVu3EhER0eB5e/bsYdiwYeTm5uLl5UX37t0xmUwsWLCA4uJi/P39T+bTEBEREZFWdtqNDJtMJh5++GEAJk2axP79+4mLi8PX15esrCyee+65Rs+96667yM3NZdSoUaSmprJ161bi4uIoLCxsNECLiIiIyN/XaReG169fT05ODmAJwwBRUVEMGTIEgPnz5zd4Xn5+Pn/88QcAgYGBDBw4EF9fX4YMGcLKlStxcWl8kLyyspKioiKrLxERERE5/Z12YTg5Obnu+7CwsLrvw8PDAUhKSmrwvL1792I2mwH44YcfqK2txcPDg7Vr13L++eezdu3aRh/z+eefx9/fv+4rNja2JZ6KiIiIiLSy0y4MN+Zw0G1MdXV13fdjxoxh3759JCQkEBQURE1NDdOnT2/03EceeYTCwsK6r6MDuYiIiIicvk67MHz0qGxWVla979u0adPgedHR0XXfDxw4EMMw8Pf3p0uXLgAkJiY2+pju7u74+flZfYmIiIjI6e+0C8ODBg0iODgYgNmzZwOQlpbGmjVrABg/fjwA3bp1o1u3brz99tsAtG3bls6dOwOwceNGzGYzRUVF7NmzB6DumIiIiIg4jtMuDLu5udVVjJg9ezYdOnSge/fuFBcXExISUldpIj4+nvj4+LrFdgAvvPAChmGwYMECOnXqRKdOncjLy8Pb25t77723VZ6PiIiIiLSe0y4MA0ydOpUvv/ySvn37kpaWhmEYTJw4kdWrVxMVFdXoeRMnTuTHH39k0KBBpKWl4eTkxKWXXsqGDRvo3r37SXwGIiIiInIqMMwnWnkm9RQVFeHv709hYaHDzR8e8MDnLdrexpeubdH2RERERMD2vHZajgyLiIiIiLQEhWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh+XS2h0QxzZvbVKLtjdhcMPbcYuIiIg0RCPDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYWk7ZvlbSXqmd4u11eaJ7S3WloiIiJyaNDIsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelTTdEGpG/8MUWbS9wzIMt2p6IiIg0n0aGRURERMRhaWRY5CQZ/tbwFm1v1bRVLdqeiIiII1IYFjlNfbbz3RZt7/qet7doeyIiIqcDTZMQEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWS2t3QERODcvOHtmi7fW/7ZYWbc/36n+2aHsiIiKgkWERERERcWAaGRaR08Lb9/3SYm3d+cpFLdaWiIic3jQyLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LO9CJiMNZNW9ri7Y3fEKfFm1PREROHo0Mi4iIiIjDUhgWEREREYelMCwiIiIiDktzhkVEmunZf17Wou39+8tZLdqeiIg0TmFYROQUs2TGhy3a3qjrbmnR9kRE/k40TUJEREREHJbCsIiIiIg4LIVhEREREXFYmjMsIvI3F/fs4hZtL3JYWIu2FzCqV4u2JyJiD40Mi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgqrSYiIq3qqaeeOqXbE5G/N4VhERH5W1mzZk2LtTVkyJAWa0tETk2aJiEiIiIiDkthWEREREQclsKwiIiIiDis03bO8MyZM3nxxReJi4vD09OT0aNH87///Y+OHTs2es7111/PjBkz6t0eHR1NSkrKX9ldERE5DX33/Zkt2t7lk9e1aHsi0nynZRj++OOPufnmmwFo3749ubm5zJ49mxUrVrB161YiIiKOe350dDQxMTF1P4eFhf2l/RURERGRU9NpN03CZDLx8MMPAzBp0iT2799PXFwcvr6+ZGVl8dxzz52wjZtvvpk1a9bUff38889/dbdFRERE5BR02o0Mr1+/npycHMAShgGioqIYMmQICxYsYP78+Sds4/XXX+f5558nLCyM4cOH8+yzzx53ekVlZSWVlZV1PxcVFTXzWYiIiCPatu29Fm3vjDNua9H2RBzRaTcynJycXPf90dMbwsPDAUhKSjru+W5ubkRGRhITE0NKSgrffvstgwYNIjU1tdFznn/+efz9/eu+YmNjm/ksRERERORUcNqF4caYzeYT3uf+++8nNzeXuLg49u3bx3vvWT6h5+fn8+mnnzZ63iOPPEJhYWHd19GBXEREREROX6ddGD56VDYrK6ve923atGn03F69euHj41P385QpU+q+P96Isru7O35+flZfIiIiInL6O+3C8KBBgwgODgZg9uzZAKSlpdVtvzl+/HgAunXrRrdu3Xj77bfrzn3yySfJzs6u+3nmzJl137dr1+6v7rqIiIiInGJOuzDs5uZWVzFi9uzZdOjQge7du1NcXExISEhdpYn4+Hji4+PrFtsBPPPMM0RERNC5c2c6derELbfcAkBERERdqTYRERERcRynXRgGmDp1Kl9++SV9+/YlLS0NwzCYOHEiq1evJioqqtHznn32WYYNG0ZRURGpqal06tSJ2267jQ0bNqjWsIiIiIgDOu1Kqx02ZcoUqzm/x2poQd2jjz7Ko48++ld2S0REREROI6dtGBYREXF0fWb93qLtbb3svBZtT+R0cFpOkxARERERaQkKwyIiIiLisDRNQkRERACYuXNfi7Z3Zc+OLdqeyF9BI8MiIiIi4rA0MiwiIiJ/iQEPfN6i7W186doWbU8EFIZFRETkNDFvbVKLtTVhcJsWa0tOb5omISIiIiIOS2FYRERERByWpkmIiIiIw0l6pneLttfmie0t2p6cPBoZFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYqiYhIiIi0kz5C19s0fYCxzzYou1J4zQyLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWFpAJyIiInKKGf7W8BZtb9W0VS3a3t+JRoZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHNZpG4ZnzpxJ//798fT0JCgoiMsuu4x9+/bZdG5NTQ3Dhg3DMAwMw+Dhhx/+i3srIiIiIqei0zIMf/zxx1x11VVs3ryZyMhIampqmD17NsOGDSMjI+OE5z/zzDP8+eefJ6GnIiIiInIqO+3CsMlkqhvJnTRpEvv37ycuLg5fX1+ysrJ47rnnjnv+6tWrefbZZ7n88stPRndFRERE5BR22oXh9evXk5OTA1jCMEBUVBRDhgwBYP78+Y2eW1RUxD//+U+ioqJ4//33bX7MyspKioqKrL5ERERE5PR32oXh5OTkuu/DwsLqvg8PDwcgKSmp0XPvuOMODh48yJdffklAQIDNj/n888/j7+9f9xUbG2t/x0VERETklHPaheHGmM3m4x6fM2cOX375JY8++ihnn322XW0/8sgjFBYW1n0dHchFRERE5PR12oXho0dls7Ky6n3fpk2bBs/bunUrAK+++io+Pj74+PjUHXv11VeJiYlp9DHd3d3x8/Oz+hIRERGR099pF4YHDRpEcHAwALNnzwYgLS2NNWvWADB+/HgAunXrRrdu3Xj77betzi8rK6O0tJTS0tK626qqqigpKTkZ3RcRERGRU8hpF4bd3NzqKkbMnj2bDh060L17d4qLiwkJCamrNBEfH098fHzdYrunnnoKs9ls9XXYQw89REFBwUl/LiIiIiLSuk67MAwwdepUvvzyS/r27UtaWhqGYTBx4kRWr15NVFRUa3dPRERERE4TLq3dgaaaMmUKU6ZMafT4iRbU2XofEREREfn7Oi1HhkVEREREWoLCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgsu7djfuaZZ1q8E0888USLtykiIiIiciJ2h+GnnnoKwzBatBMKwyIiIiLSGuwOwwBms7nFOtDSwVpERERExFZ2h+ElS5b8Ff0QERERETnp7A7DI0eO/Cv6ISIiIiJy0qmahIiIiIg4LIVhEREREXFYTVpAZ4/S0lIWLlxIQkIChmHQoUMHxowZg4+Pz1/90CIiIiIix2V3GDabzSxYsACA2NhYunfv3uh9Z8yYwX333Ud+fr7V7d7e3jz77LNMmzbN3ocXEREREWkxdofhdevWMX78eAzDYNasWY2G4S+++IIbbrgBwzDqlWIrKSnh7rvvpqqqinvvvbdpPRcRERERaSa75wwvXLgQgLCwMC699NIG75Ofn8+//vUvwDKS3KlTJx5//HGmT5/OTTfdhIuLC2azmccff5zU1NSm915EREREpBnsDsPr1q3DMAwuvvjiRjfMmDFjBgUFBRiGwYgRI9iyZQtPP/00t956Kx9++CG//vorTk5OVFRU8MUXXzT7SYiIiIiINIXdYXjPnj0ADB8+vNH7zJkzp+77119/HS8vL6vjY8eOZfLkyZjNZm3iISIiIiKtxu4wnJaWBkDnzp0bPF5VVVU3ety5c2f69evX4P0uueQSAHbt2mVvF0REREREWoTdYbisrAywVIRoyNatW6msrARgxIgRjbbTqVMngHqVJkRERERETha7w/DhKQ+Nhdi1a9fWfT9gwIBG23FxsRSyqKqqsrcLIiIiIiItwu4wHBMTA8D69esbPL5s2bK674cMGdJoO7m5uQD4+vra2wURERERkRZhdxgeMmQIZrOZDz/8sN6obk5ODr/++isAISEh9O3bt9F2duzYAUDbtm3t7YKIiIiISIuwOwxfe+21ACQkJHDppZeye/duqqqq2LZtGxMnTqS8vBzDMLj66quP286yZcswDINevXo1reciIiIiIs1k9w50I0eO5JJLLuGnn35i/vz5zJ8/v959fHx8eOCBBxptIz8/n3nz5gHHX2QnIiIiIvJXsntkGODLL79k3LhxmM3mel9eXl58/fXXREVFNXr+e++9h8lkAmD8+PFN67mIiIiISDPZPTIMlrJq8+fPZ968efz0008kJSXh5uZG//79uemmm+oW2TUmKSmJSZMmER0dfcL7ioiIiIj8VZoUhg+bMGECEyZMsPu86dOnN+dhRURERERaRJOmSYiIiIiI/B00KQz/9ttv9O/fn/79+/P111/bde7XX39dd+7ChQub8vAiIiIiIi3C7jBsNpu555572Lp1K6GhoScsoXasq666ipCQELZs2cJ9991n78OLiIiIiLQYu8Pw4sWL2bNnD05OTrz22mt2P6BhGLz++us4OzuzY8cOqx3rREREREROJrvD8OzZswEYO3YsPXr0aNKD9ujRg/POOw+AWbNmNakNEREREZHmsjsMr1u3DsMwuOiii5r1wBdeeCFms5k1a9Y0qx0RERERkaayOwwfPHgQgK5duzbrgbt06QJAYmJis9oREREREWkqu8NwYWEhAEFBQc164MPnFxUVNasdEREREZGmsjsM+/n5AVBQUNCsBz58vq+vb7PaERERERFpKrvDcGhoKAC7du1q1gPHxcUBEBYW1qx2RERERESayu4wfOaZZ2I2m/nll1+a9cA//fQThmEwaNCgZrUjIiIiItJUdofh888/H4A//viDlStXNulBly9fzh9//GHVnpz+akyVlKQlUJq+r7W7IiIiImITF3tPmDRpEu3atSMxMZHJkyezfPlyOnfubPP5e/bs4fLLL8cwDNq1a8dll11mbxfkFJT+509krvuV2moT3pEdCes/jtQV3xN11iSCug9t7e6JiIiINMjukWFXV1defvllALKyshgwYABvvPEGpaWlxz2vpKSE119/nYEDB5KVlQXAK6+8gouL3XlcTjHZWxaTvmoOtVUmMFtu823bE1NxHvm7VUdaRERETl1NSqITJ07k6aef5sknn6S0tJR7772Xxx9/nBEjRjBgwADCwsLw9vamtLSUzMxMNm3axIoVKygtLcVstqSlp59+mksvvbQln4u0kuxNC8AwiBl1FSmLvwbAxdMHN59AyrOSW7l3IiIiIo1r8rDs448/TkxMDNOmTaOsrIySkhLmz5/P/PnzG7z/4RDs5eXF22+/zfXXX9/Uh5ZTTGVhFp4h0YT1H1cXhgGcPbypyE1rxZ6JiIiIHJ/d0ySOdsMNN7Bnzx7uvfdeQkJCMJvNjX6FhIRw3333sWfPHgXhvxlnN0+qSgqorTbV3VZdUUplfgbO7p6t2DMRERGR42v2hN2oqChefvllXn75ZXbu3MnWrVvJzc2luLgYX19fgoOD6dOnDz179myJ/sopyCe2GwV7NxD/1TMAVBZkEf/V09RWm/Dv0Ld1OydNlm8y8WVyMuvy88iqrAQgzN2dwYFBXBUbS7Cb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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "make_plot(models, 'Daejeon')" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsMAAAKZCAYAAABdmSbTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzddXzT1/7H8Vfq3tSFFoq7O2yDAdtgyoApc3f3e+e/ud8JMzYYG2PCGBPcHYoULcWpu6Su+f0RKIS2kLTdGMv7eR993CbffE9OR5u8c77nfI7BbDabERERERFxQE6nuwMiIiIiIqeLwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGH5XK6O3AmqqmpITU1FV9fXwwGw+nujoiIiIicwGw2U1hYSGRkJE5ODY//Kgw3QmpqKtHR0ae7GyIiIiJyCklJSURFRTV4XGG4EXx9fQHLf1w/P7/T3BsREREROZHJZCI6Oro2tzVEYbgRjk6N8PPzUxgWERER+Qc71ZRWLaATEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsvp7oCcWfo+/k2ztrfprRuatT0RERERe2hkWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWGdsGJ4xYwZ9+vTB09OTwMBAJkyYwP79+0953sGDB7npppuIiIjAzc2NsLAwLrroIgoKCv6GXouIiIjIP4nL6e5AY0yePJnbbrsNgNatW5OTk8PMmTNZuXIlW7duJTw8vN7z9uzZw5AhQ8jJycHLy4vOnTtTUVHBwoULKSwsxN/f/+/8MURERETkNDvjRoYrKip46qmnABg/fjwHDhwgPj4eX19fMjMzefXVVxs894EHHiAnJ4dzzz2XlJQUtm7dSnx8PAUFBQ0GaBERERH59zrjwnBsbCzZ2dmAJQwDREZGMmjQIADmzZtX73l5eXksWLAAgICAAPr164evry+DBg1i1apVuLg0PEheXl6OyWSy+hIRERGRM98ZF4aTkpJqvw8NDa39PiwsDIDExMR6z9u7dy9msxmAX375hZqaGjw8PFi/fj1jxoxh/fr1DT7na6+9hr+/f+1XdHR0c/woIiIiInKanXFhuCFHg25Dqqqqar8fNWoU+/fvZ9++fQQGBlJdXc2kSZMaPPfpp5+moKCg9uv4QC4iIiIiZ64zLgwfPyqbmZlZ5/uWLVvWe16LFi1qv+/Xrx8GgwF/f386dOgAwKFDhxp8Tnd3d/z8/Ky+REREROTMd8aF4f79+xMUFATAzJkzAUhNTWXdunUAjB49GoBOnTrRqVMnPvroIwBatWpF+/btAdi0aRNmsxmTycSePXsAao+JiIiIiOM448Kwm5tbbcWImTNn0qZNGzp37kxhYSHBwcG1lSYSEhJISEioXWwH8Prrr2MwGFi4cCHt2rWjXbt25Obm4u3tzSOPPHJafh4REREROX3OuDAMcMcdd/Dtt9/Sq1cvUlNTMRgMjBs3jjVr1hAZGdngeePGjePXX3+lf//+pKam4uTkxNixY9m4cSOdO3f+G38CEREREfknMJhPtfJM6jCZTPj7+1NQUOBw84f7Pv5Ns7a36a0bmrU9EREREbA9r52RI8MiIiIiIs1BYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgup7sD4tjmrE9s1vYuHNiyWdsTERGRfzeNDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWy+nugEhzSnype7O11fK57c3WloiIiPwzaWRYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwtIBOpAF5i95s1vYCRj3RrO2JiIhI02lkWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhuZzuDog4iqEfDm3W9lbfv7pZ2xMREXFEGhkWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhqc6wyBlqys5PmrW9m7re06ztiYiInAk0MiwiIiIiDksjwyICwPJzhjVre8NWLG/W9kRERP4KGhkWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVhnbDWJGTNm8OabbxIfH4+npycjRozgjTfeoG3btg2ec9NNNzF16tQ697do0YLk5OS/srsiDqdw+rfN2p7vtdc1a3siIiJwhobhyZMnc9tttwHQunVrcnJymDlzJitXrmTr1q2Eh4ef9PwWLVoQFRVVezs0NPQv7a+IiIiI/DOdcdMkKioqeOqppwAYP348Bw4cID4+Hl9fXzIzM3n11VdP2cZtt93GunXrar9+++23v7rbIiIiIvIPdMaNDMfGxpKdnQ1YwjBAZGQkgwYNYuHChcybN++Ubbz//vu89tprhIaGMnToUF555ZWTTq8oLy+nvLy89rbJZGriTyEi9vro0d+bra373rmk2doSEZEz2xk3MpyUlFT7/fHTG8LCwgBITEw86flubm5EREQQFRVFcnIyP/zwA/379yclJaXBc1577TX8/f1rv6Kjo5v4U4iIiIjIP8EZF4YbYjabT/mYxx57jJycHOLj49m/fz+ffvopAHl5eXz99dcNnvf0009TUFBQ+3V8IBcRERGRM9cZF4aPH5XNzMys833Lli0bPLdbt274+PjU3p44cWLt9ycbUXZ3d8fPz8/qS0RERETOfGdcGO7fvz9BQUEAzJw5E4DU1FTWrVsHwOjRowHo1KkTnTp14qOPPqo99/nnnycrK6v29owZM2q/j4mJ+au7LiIiIiL/MGfcAjo3NzdeffVV7rzzTmbOnEmbNm3IycmhsLCQ4ODg2koTCQkJALWL7QBeeukl/u///o82bdpgNpvZv38/AOHh4bWl2kTk32/1nK3N2t7QC3s2a3siIvL3OeNGhgHuuOMOvv32W3r16kVqaioGg4Fx48axZs0aIiMjGzzvlVdeYciQIZhMJlJSUmjXrh133XUXGzduVK1hEREREQd0xo0MHzVx4kSrOb8nqm9B3TPPPMMzzzzzV3ZLRERERM4gZ2wYFhH5p3jlugnN2t5/vv25WdsTEZGGnZHTJEREREREmoNGhkVE/mGWTv2iWdsLT254h83G6PyfEc3anojI6aSRYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw9ICOhERsUv+0h3N2p7x3G7N2p6IiD0UhkVE5LR64YUX/tHtici/m6ZJiIiIiIjD0siwiIj8q6xbt67Z2kpMeqDZ2gK48ooNzdqeiDSdRoZFRERExGFpZFhERORvsm3bp83aXo8edzVreyKOSCPDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rC0A52IiMgZqufP85u1va0TLmjW9kTOBBoZFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkvbMYuIiAgAM3bub9b2ru7atlnbE/krKAyLiIjIX6Lv4980a3ub3rqhWdsTAU2TEBEREREHpjAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkvbMYuIiMgZYc76xGZr68KBLZutLTmzaWRYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWy+nugIiIiMjfLfGl7s3aXsvntjdre/L30ciwiIiIiDgshWERERERcViaJiEiIiLSRHmL3mzW9gJGPdGs7UnDNDIsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDuuMDcMzZsygT58+eHp6EhgYyIQJE9i/f79N51ZXVzNkyBAMBgMGg4GnnnrqL+6tiIiIiPwTnZHbMU+ePJnbbrsNgNatW5OTk8PMmTNZuXIlW7duJTw8/KTnv/TSS6xdu/bv6KqIiIiI3YZ+OLRZ21t9/+pmbe/f5IwbGa6oqKgdyR0/fjwHDhwgPj4eX19fMjMzefXVV096/po1a3jllVe48sor/47uioiIiMg/2BkXhmNjY8nOzgYsYRggMjKSQYMGATBv3rwGzzWZTFx33XVERkby2Wef2fyc5eXlmEwmqy8REREROfOdcWE4KSmp9vvQ0NDa78PCwgBITExs8Nx7772Xw4cP8+2332I0Gm1+ztdeew1/f//ar+joaPs7LiIiIiL/OGdcGG6I2Ww+6fFZs2bx7bff8swzz3DOOefY1fbTTz9NQUFB7dfxgVxEREREzlxnXBg+flQ2MzOzzvctW7as97ytW7cC8O677+Lj44OPj0/tsXfffZeoqKgGn9Pd3R0/Pz+rLxERERE5851xYbh///4EBQUBMHPmTABSU1NZt24dAKNHjwagU6dOdOrUiY8++sjq/JKSEoqLiykuLq69r7KykqKior+j+yIiIiLyD3LGhWE3N7faihEzZ86kTZs2dO7cmcLCQoKDg2srTSQkJJCQkFC72O6FF17AbDZbfR315JNPkp+f/7f/LCIiIiJyep1xYRjgjjvu4Ntvv6VXr16kpqZiMBgYN24ca9asITIy8nR3T0RERETOEGfkphsAEydOZOLEiQ0eP9WCOlsfIyIiIiL/XmfkyLCIiIiISHNQGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNSGBYRERERh6UwLCIiIiIOS2FYRERERByWwrCIiIiIOCyFYRERERFxWArDIiIiIuKwFIZFRERExGEpDIuIiIiIw1IYFhERERGHpTAsIiIiIg5LYVhEREREHJbCsIiIiIg4LIVhEREREXFYCsMiIiIi4rAUhkVERETEYSkMi4iIiIjDUhgWEREREYelMCwiIiIiDkthWEREREQclsKwiIiIiDgshWERERERcVgKwyIiIiLisBSGRURERMRhKQyLiIiIiMNysfeEl156qdk78dxzzzV7myIiIiIip2J3GH7hhRcwGAzN2gmFYRERERE5HewOwwBms7nZOtDcwVpERERExFZ2h+GlS5f+Ff0QEREREfnb2R2Ghw0b9lf0Q0RERETkb6dqEiIiIiLisBSGRURERMRhNWoBnT2Ki4tZtGgR+/btw2Aw0KZNG0aNGoWPj89f/dQiIiIiIidldxg2m80sXLgQgOjoaDp37tzgY6dOncqjjz5KXl6e1f3e3t688sor3H///fY+vYiIiIhIs7E7DG/YsIHRo0djMBj4+eefGwzD06ZN4+abb8ZgMNQpxVZUVMRDDz1EZWUljzzySON6LiIiIiLSRHbPGV60aBEAoaGhjB07tt7H5OXl8eCDDwKWkeR27drx7LPPMmnSJG699VZcXFwwm808++yzpKSkNL73IiIiIiJNYHcY3rBhAwaDgUsvvbTBDTOmTp1Kfn4+BoOBs88+m7i4OF588UXuvPNOvvjiC/7880+cnJwoKytj2rRpTf4hREREREQaw+4wvGfPHgCGDh3a4GNmzZpV+/3777+Pl5eX1fHzzjuPK664ArPZrE08REREROS0sTsMp6amAtC+fft6j1dWVtaOHrdv357evXvX+7jLLrsMgF27dtnbBRERERGRZmF3GC4pKQEsFSHqs3XrVsrLywE4++yzG2ynXbt2AHUqTYiIiIiI/F3sDsNHpzw0FGLXr19f+33fvn0bbMfFxVLIorKy0t4uiIiIiIg0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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "make_plot(models, 'Gwangju')" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "file_path = \"./model_result/\"\n", + "file_list = os.listdir(file_path)\n", + "file_list = [file for file in file_list if file.endswith(\".csv\")]\n", + "\n", + "\n", + "models= pd.DataFrame()\n", + "for i in file_list:\n", + " models = pd.concat([models, pd.read_csv(file_path + i)], axis=0)\n", + "\n", + "models = models.reset_index(drop=True)\n", + "models['model_data'] = models['model'] + '_' + models['data_sample']" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "df= models.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "df = df.loc[df['data_sample']=='pure', :].copy()\n", + "df.sort_values(by='CSI', ascending=False, inplace=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **각 지역별 앙상블 모델 성능 비교 by 원데이터**" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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87Ld5ztJdn8n3s1sNpseeughjRkzRpJ09epVLVy4UL169bLku379ur7//ntzuWDBggoPD79l/cqrn8G82m8AAMCcA0CeNn/+fG3fvt1cLlmypJYvX275h0+SPDw81KtXL23atMmyPvmF5+rVq1sCA5Lk6uqqJk2aaPLkyQoJCcmxfidvt2HDhpbAQFJ/27VrZ3enVnI//vijunfvrpIlS8rb21v+/v4qX768HnvsMcs+SbJz50498cQTKl++vPLlyydvb2+VKVNGUVFR2rp1q8M2Uo6feuLECfXt21fFihWTq6ur3XiuK1as0IMPPqgSJUrIy8tL/v7+ql27tkaPHp3pJzA2b96sxYsXm8v+/v76+eefLYEB6eZ71LlzZ/322292d7tdu3ZNkyZNUqtWrVS4cGFzbOqmTZvqo48+stx1mSTlmMiHDh3Sp59+qipVqsjb21ulS5fW6NGjlZCQIOnmXAitWrWSn5+f8ufPr/vvv1/79u2zq7d58+ZmnWFhYYqPj9c777yjSpUqycvLSyEhIRowYIDOnDljV/bnn3/W008/rfr166tEiRLKly+fPD09FRwcrPDwcH311VcOn5pI2ebVq1c1cuRIVahQQZ6enmZAIL05B7Zt26ZHHnlEpUuXlre3t7y8vBQaGqoGDRro+eef108//WTXdmJiombPnq327dsrKChIHh4eyp8/v+rWras333zT4bANjvqxbt06tW/fXvnz55ePj48aNmzosL2MOHTokF588UVVrVpVfn5+8vT0VIkSJdS9e3etXLnSkjdprPyU4wa3a9cuW+PnBwcHS7o5hNgXX3xhrl+/fr127NghSRk612Rl/0o3x40eO3asKlasKC8vLxUvXlzPPvuszp07l6H+b9myRVFRUSpTpox8fHyUL18+ValSRcOGDdPp06czVEdy+/btU//+/VWhQgX5+PjIw8NDwcHBql27tp588kl9++23ma7z6tWrWrBggbnctm1by3lj9uzZluMl5bwIU6dOtatz2bJlljwzZ860pO/evVsDBgxQpUqV5OvrK29vb5UvX17PPvuswyGpHI2NvXv3bj344IMqUqSIXFxczM9XVo9/STp69Kh69+6twoULy9vbWzVq1NDnn38uwzDSHR876TPatm1by9j+rVu31syZM1O9w/rMmTMaMGCAihUrJi8vL1WuXFkffPCBec7MijFjxljKDx061BIYkKSWLVvqww8/tKwbPXq0pJvHvouLi7m9joLJu3fvtuyTUaNGWdKPHTumIUOGqHr16vL395enp6fCwsLUp0+fVOe8yex3qCOurq564IEH7IZwKVy4sF3gI+VviVspK9+v6cnu+cmR7P5OzOx7uGTJEkVGRio0NFSenp7y9/fXvffeqyFDhuj48eMO+5jZ79irV6/q/fffV8OGDVWwYEFzDqYKFSooMjJS7733nsPfEo6kfALA0bwDy5cvN5/QlKRu3brJw8NDhmFozJgxevDBB3XPPfeY82f5+vqqYsWK6tevn8Pfo+lJ79y0c+dOdenSRQUKFJCvr68aN25s+b2YmsmTJ+vRRx/Vvffeq+DgYHl6esrHx0dlypRRjx49tHbtWkv+pN+DyYcUStm/5DdWpNfvnPhNevjwYS1atEjNmjWTn5+f/Pz81KZNm1R/xwMAgAwyAORZ3bt3NySZrwkTJmSqfJUqVcyybm5uxptvvmns2rUrQ2Vff/11S9vTpk3LcLu+vr5mOT8/P+Pjjz82Dh06lKGy//33n9GlSxdL2ylfH374oaXMxx9/bLi6uqaa32azGaNGjbJrK3me5s2bG0FBQZZ1r7/+umEYhnHjxg2jT58+afapXLlyxsGDBzO8j4YMGWIpP2jQoAyXNQzDOH78uHHvvfem2acKFSrY9Snl+9qhQweHZR9//HFj7ty5Dvdr0aJFjVOnTlnqbdasmZkeHBxstG7dOtX9lLJsz54909wOSUbXrl2NhISENNtMvizJaNasmWEYhjFt2jTL+tWrV5t1/Pzzz4a7u3uabbdq1crSblxcnNGyZcs0ywQHBxtbt261lEvZj+7duxs2m82urKurq7Fq1apMfR6+/fZbw8fHJ80+9e/f30hMTDQMwzBWr16d7j7PyDGfcpteeeUVc5tKly5ttpf8PX711VctZXr37p0j+zcxMdG4//77HeYvW7ascd9991nWpfTqq686fD+Sf+5TtplyPybfZzt27DD8/PzS3I4yZcpk4N21mjdvnqWOL774wnjrrbcs69auXWvZL2FhYWZa69at7eqMiooy0/39/Y3Lly+baZMmTUrzGPH19TWWLFliqe/QoUOWPB07drR8LyTfV1k9/vft22d3zk56PfbYY2l+xk6ePGnUqVMnzTY7dOhgXL161VLu33//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n9Lo0aO1efNm9e3bVxUqVFC+fPnMz0KDBg00cOBArV271jKme1qefvppvfXWWwoPD1eZMmXk7+9vHtf16tXTqFGjtHnzZvn7+6db1+zZsy3b2aVLl1Tz3n///ZbllMMRpRw+KLV1ybdjx44deu6551S1alX5+fmZ21GrVi0NGDBAS5cudTjETXqyc/yXLVtWW7ZsUa9evRQYGCgvLy/de++9mjx5sgYPHmzJGxQUZFkODg7Whg0bNH36dN13330KCgqSu7u7+b3RsWNHffDBB3aTRRctWtQcQi4oKEgeHh4qX7683nzzTS1dutQy9EpWPPvsszp48KBeffVV1a9fX4GBgeZ5vUaNGho4cKB27dqlt956K81juXv37ubk00nSeo+7du2qXbt2adiwYapdu7b5HeTv769q1arpscce07x581KdCyE7hgwZosGDB6tRo0YqXry4+d1auHBhNWrUSP/73/+0d+9ePfbYYznedmpuxfdrds9P6cnq78SMcnd31zfffKNFixapS5cuCgkJkbu7u/Lly6eqVatq4MCB+uuvv9ShQwdLucx+x1asWFFTpkxR7969VaVKFfP87+3trXLlyqlPnz7avHmzZcivzEg5r4AktWrVSkWKFLFb37RpU61evVrNmzeXj4+PfH191aRJEy1ZsiTD3wOZ1aRJE23cuFGdOnVSQECAfHx8VLduXc2ePTvNYb0qVKig9evXq2PHjvLz85OPj49q1aqlmTNn6pVXXkmzzRIlSmj58uVq2bJlhr6PHLmTf5MCAADJZhj/f9BnAABukebNm2vNmjWSbk74md1JIQEgLRcvXtSNGzcsE/JKkmEY6t+/v2Wek1WrVtkFlQEAAADAGbilnwUAAADIO/766y81bdpUTZo0UYUKFRQYGKjY2FitXr3aMrlr48aNCQwAAAAAcFoEBwAAAHDXiY+P16pVq7Rq1SqH6XXr1tV33313m3sFAAAAAHcOggMAAAC4q5QrV06vv/66oqOjdeDAAZ0+fVo2m01FihRRzZo11b17d3Xv3v2Wz1sCAAAAAHcy5hwAAAAAAAAAAMDJuOR2BwAAAAAAAAAAwO1FcAAAAAAAAAAAACfDnANZkJiYqBMnTsjPz082my23uwMAAAAAAIBcYhiGLl68qJCQELm4cB8ugLyD4EAWnDhxQsWLF8/tbgAAAAAAAOAOcfTo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AJwMwQEAAAAAAAAAAJwMwQEAAAAAAAAAAJwMwQEAAAAAAAAAAJwMwQEAAAAAAAAAuA3GjRune+65R56enrLZbGrevHludylPmD17tmrVqiUfHx/ZbDaFhYXldpfuCm653QEAAAAAAAAAuNt99913ev7551WgQAFFREQoX758qlixomw2m5o1a6bo6Ohs1T9ixAiNHDlS06ZNU1RUVI70+U6wZcsWPfLII/Ly8lLbtm2VP39+BQYG5na37goEBwAAAAAAAADcVks2xeR2FzKkfb0SOVbX999/L0maN2+eWrZsKUk6fPiwhg0blmNt3I0WL16sxMREjR8/Xo899lhud+euwrBCAAAAAAAAAHCLHTt2TJJUunTpXO5J3sJ+u3UIDgAAAAAAAADALTJixAjZbDatXr1aklSqVCnZbDbZbDaVKlVKkrRmzRpznc1my/SwQGFhYRo5cqQkqU+fPpa6koYrmj59umw2m0aMGKG9e/fqoYceUtGiReXi4mI+1bB//36NGDFCDRo0UFBQkDw8PBQaGqpHH31Ue/fuddh20hwACQkJevfdd1W+fHl5enqqePHievnll3Xt2jW7MqdPn9bQoUNVuXJl+fr6KiAgQOXLl9ejjz6qzZs3W/o7bdo0SVKLFi3MbZo+fbpZ13///ac333xTVapUkbe3twICAtS0aVPNmTMn1X1ls9lkGIbGjx+ve++9Vz4+PqpevbokKSoqytxvK1asUNOmTeXn56ciRYro8ccf14ULFyRJp06dUv/+/VWsWDF5eXmpbt26aQ4NtWnTJj3wwAMKDg4292u/fv0UE2P/FE3SZ2b69OnavHmzOnbsqEKFCslms+mPP/5ItY3MYlghAAAAAAAAALhFqlevrt69e2vZsmX6999/FRkZKV9fX33//fdq3bq15s+fr6JFiyo8PNws07hx40y10a1bN61YsULbt29Xo0aNVLZsWTMtKCjIknfPnj2qU6eOChUqpBYtWujcuXNyd3eXJE2ZMkVjxoxRlSpVVKdOHXl6eurvv//WV199pYULF2rt2rWqVq2awz706NFDS5YsUfPmzVWhQgWtXbtWY8aM0fHjxzVz5kwz38WLF1WvXj0dOnRIxYsXV5s2beTm5qaYmBjNmTNHpUuXVt26dVW2bFn17t1b69at04EDB9SuXTtzW5K27+LFi2rRooW2bdumwoUL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1va29x7NtbYBAADgHEqUKGG3LumO/Z49e9rdpZ9cbGys+ffgwYO1bt06RUdHq0WLFvL19VWDBg3UoUMHRUVFORxWKDQ01GG9fn5+kqRr167Z9alRo0Zpbk/yPt0JIiMjdePGDUVHR6tu3bp26Unb9fPPP8tms6VZV2xsrCpUqHArunnHIDgAAAAAAAAAALeBl5eX3bqk4WvCw8Md3s2eJDAw0Pzb399fq1at0vr167V48WJFR0dr1apV+vnnn/X2229r7dq1KleunKV88uGK0pPUp27duilfvnyp5qtYsWKG67wdHn74YX311VcaNGiQli5dKl9fX0t60naVLVs23cCHo6cs7jYEBwAAAAAAAAAglyTd0d+vXz9FRkZmuJzNZlPjxo3VuHFjSdKpU6f0wgsvaPbs2XrllVc0d+7cbPVpz549Gjp0qDmEUV4wbdo0JSQk6Ouvv1aHDh20ZMkSS3AjaV9XrFgx1ydNvhMw5wAAAAAAAAAA5JI2bdpIkhYsWJCteooUKaIRI0ZIknbu3Hnb++Th4SFJGZr/4FZxdXXVl19+qYceeki//PKLOnbsqP/++89Mr1OnjgICArRmzRqdPXs21/p5pyA4AAAAAAAAAAC5JDIyUpUrV9asWbP05ptvWsb+lyTDMLR+/XqtX7/eXDdp0iQdOnTIrq4lS5ZIkooXL56tPvXv319FihTRmDFj9Pnnn5vD8SS5ceOGli9fbglChISESJL27NmTrbazy9XVVTNnzlT37t0VHR2tTp066cqVK5IkT09PDRkyRBcvXlTXrl118OBBu/LHjx/XV199dbu7nSsYVggAAAAAAAAAcombm5u+//57tWvXTq+99pomTJigatWqqUiRIoqNjdUff/yhU6dO6cMPPzTHyZ80aZKeeuopVa5cWZUqVZKbm5t2796t7du3y8vLS6+99lq2+pQ/f34tXLhQnTp1Uv/+/TVq1ChVqVJFBQoU0MmTJ/Xbb7/p/PnzWrBggapUqSJJCgsLU7Vq1bR161bVrVtX99xzj1xdXRUREaGIiIhs76fMcHV11axZs5SQkKD58+crIiJCixcvlpeXl4YOHardu3frq6++UqVKlVSjRg2VKlVK169f1549e/T333+rWrVq6tWr123tc24gOAAAAAAAAAAAuahcuXL6/fffNWHCBH333XfauHGjbty4oaCgINWo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UkY4AAAAAAAAKSMcAAAAAACAlBEOAAAAAABAyggHAAAAAAAgZYQDAAAAAACQMsIBAAAAAABImWobDkycODGOOOKIKCgoiEaNGsWwYcNiwYIFO6wzevTo6NKlS9SvXz9q164d7dq1iwsuuCAWLVq0h1oNAAAAAABVr1qGA/fdd18MHz48XnvttWjZsmVs3rw5Jk+eHL17946PP/643HpPP/10FBcXR8eOHaNNmzaxePHimDBhQnzzm9/cg60HAAAAAICqVe3Cgc8//zxGjRoVERFDhw6NDz74IObPnx/16tWLFStWxNixY8ut+/LLL8fixYvj1Vdfjffeey/OOeeciIgoKiqKVatW7ZH2AwAAAABAVcut6gZU1Jw5c2LlypURsTUciIho1apV9OrVK6ZNmxZTpkwpt27t2rXj17/+dfz+97+P1atXx/vvvx8REV27do1GjRqVW2/jxo2xcePGzPTatWt3x6YAAAAAAECVqHYjB5YsWZL5uVmzZpmfmzdvHhERixcv3mH9xYsXx+zZszPBwOGHHx7Tpk2LnJyccuvccsst0aBBg8ynTZs2ldkEAAAAAACoUtUuHChPkiQ7Nd+tt94aX3zxRbzzzjsxYMCAeO2112LEiBGxefPmcuuMHj061qxZk/mUDCgAAAAAAKC6qXbhQMm79lesWFHq57Zt237pMmrWrBmdOnWKH/7whxER8fzzz8ezzz5b7vz5+flRv379rA8AAAAAAFRX1e6dAz179ozGjRvHqlWrYvLkyTF8+PBYunRpzJo1KyIiBg8eHBERnTt3joiISy+9NC699NJ47733Yv78+XHyySdHjRo1YsuWLVnvJyguLt7zGwMAAACQYn3u6lNl637pspeqbN0Ae4NqFw7k5eXF2LFj46KLLorJkydHhw4dYtWqVbFu3bpo0qRJjBo1KiIiioqKIiIyLy/+6KOP4rTTTou6detGhw4dYvny5bF8+fKIiGjdunUMHDiwajYIAAAAAAD2sGr3WKGIiAsvvDAeeOCB6N69eyxdujRycnJiyJAh8fLLL0erVq3KrNO2bdv41re+FQ0bNoyioqL497//HQcccEBcdNFF8corr3hUEAAAAAAAqVHtRg5sM2LEiBgxYkS55du/oLhDhw7xt7/97atuFgAAAAAA7PWq5cgBAAAAAABg1wkHAAAAAAAgZYQDAAAAAACQ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UFCQ9f0xxxyTfOMb30gKCwuTnJycrLLp06dn1vf444+XKj/kkEOSU045JfnGN76RtGnTJvP9mDFjMvUWLlyYVadkWXFxcdK+ffus8mbNmiWDBg1KTj755OSwww5LatWqlURE0q5du6ztP/3007PqNWrUKDn++OOTjh07llreqlWrMvUmTJhQ7jYmSZKMGTOm1L8b+4bp06eX6heFhYXJcccdlxxyyCFZ3+fm5iZvvPFGkiRJsnbt2qSwsDCrvGHDhkmjRo1KLW/7faZbt25JRCRNmzZNjj322ORb3/pWMmDAgKR27dpZdf75z38mSZIk1113Xan996STTko6deqURERWHzz22GOztq9du3blliVJkrXc88477yv6V6Y6Oemkk5KISPbbb7+kT58+yWmnnZYcf/zxSf369bP2l0mTJiVJkiRnnHFGqf7Tr1+/5NRTT02OOeaYpG7dumX2g3HjxmXVy8/PT/r165ccddRRWft0jRo1khkzZmS1sW3btll169SpkzRv3rzMvlfyeL59f58wYcIe+BdlT5o6dWrW/+OcnJykZ8+eyde//vUkNzd3h8fm4uLiMs+VXn/99SRJkuTdd98tVZaTk5N1PpEkSdK3b9+seTp16pSceOKJSYsWLUqdM+3suVGS7Hj/rcx27+gcqDK/69g7lLffVGZ/e+ONN0qdszRu3DgZOHBg8s1vfjNp0qRJ0qBBg6zl7er5iOsC9qTqci09b968zH5fst6AAQNKtcVxHSA9jBwgIiJOPPHErJdHRkTMmTMnZsyYEbVr145TTjmlVJ26devGddddl/XdK6+8Es8880zk5ubGVVddVe76TjrppBg/fnzmrriIiDfffDMee+yxeOaZZ7Iex7Kzz+csLCyMJ598Mg444IDMdytWrIhp06bF448/HnPnzs3cobH9Mu+///6su+dWr14dU6dOzbxMNiKiefPm8dhjj5V6fihERJx55pmxadOmeO655+LNN9/MKrv11lvjkEMOiYitLyrevm/8+9//jtWrV0eTJk1KjQIoyyeffBIvvPBC/P3vf4/p06dnjVA466yzokePHhERcdlll8XXvva1TNmKFSviiSeeiKKiohg5cqSh8HwlPv3003jppZfikUceialTp2YNme/bt2+cdtppEbH1JXzf/OY3M2UbNmyIGTNmxKOPPhqvvPJK1uMmSh6z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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(15, 8))\n", + "palette = sns.color_palette(\"tab20\", n_colors=len(df['model'].unique())) # 더 많은 색상 지원\n", + "sns.barplot(x='region', y='CSI', hue='model', ci=None, data=df.loc[(df['data_sample'] == 'pure'),:], palette=palette)\n", + "plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', fontsize=15)\n", + "plt.title('CSI Score Comparison of Models Averaged Over 3-Fold Cross-Validation', fontsize=15, fontweight='bold') # 제목 볼드 및 크기 조정\n", + "plt.ylabel('CSI', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "plt.xlabel('', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "# x축(도시명) 글씨 크기 조정\n", + "plt.xticks(fontsize=15, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.yticks(fontsize=10, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "file_path = \"./model_result/\"\n", + "file_path_1 = \"./model_result/best_sample/\"\n", + "file_list = os.listdir(file_path)\n", + "file_list_1 = os.listdir(file_path_1)\n", + "file_list = [file for file in file_list if file.endswith(\".csv\")]\n", + "file_list_1 = [file for file in file_list_1 if file.endswith(\".csv\")]" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "models= pd.DataFrame()\n", + "for i in file_list:\n", + " models = pd.concat([models, pd.read_csv(file_path + i)], axis=0)\n", + " \n", + "for i in file_list_1:\n", + " models = pd.concat([models, pd.read_csv(file_path_1 + i)], axis=0)\n", + "\n", + "\n", + "models = models.reset_index(drop=True)\n", + "models = models.reset_index(drop=True)\n", + "models['model_data'] = models['model'] + '_' + models['data_sample']\n", + "df= models.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "df= df.loc[df['model'] !=(\"deepgbm\"),:]\n", + "df= df.loc[df['model'] != (\"XGBoost\"),:]\n", + "df= df.loc[df['model']!=(\"LightGBM\"),:]\n", + "df= df.loc[df['model']!=(\"ft_transformer\"),:]\n", + "df= df.loc[df['model']!= (\"resnet_like\"),:]\n", + "\n", + "df.sort_values(by='CSI', ascending=False, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "table= df.loc[(df['region']=='seoul'),:'Accuracy']\n", + "table['CSI'] = table['CSI'].round(3)\n", + "table['MCC'] = table['MCC'].round(3)\n", + "table['Accuracy'] = table['Accuracy'].round(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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KYKCgnD8+HFJ6Z7KNmjQIFy8eBGjRo1C06ZNYWxsDB0dHdjZ2SEwMFDypR4ANGzYEOfPn8eiRYvg6+sLS0tL1KhRA3K5HPXr10f37t2xYsUKnD59usKxBAYG4ubNm1ixYgU6deoEe3t76OvrQ1dXF/b29ujYsSOWLl2KNWvWSNbT5Pv8m3JxcUFKSgrCw8NhbW0NPT09NGnSBHFxcSpJPG9vbxw+fBht27aFXC6HkZERvLy8sGfPHo0+Z4CiEcPr169HVFQUWrRogVq1akFHRwd6enpwdHRE7969ceTIEQwZMkSynq+vLy5duoSYmBi0aNECxsbGqFGjBmxsbNCxY0d899132LVrl+SL/H+bCRMmYN++ffjss8/g4+MjXrfK1+o2bdogNjYWly5dQqNGjVTWf93X+dc99tbW1vjxxx/RtWtXmJqaQl9fX/zSpapLGhERERFVRzKhrNtPE1G53blzB7Vq1VIZffbgwQO0bNlSrJnr4OAg1vslIiL6J0tNTYWjo6M4PXnyZEyZMqXqAiIiIiIiIo1iGQqiSjJt2jQkJibCz88P9vb20NXVxa1bt7Bjxw7JXb3f1s9uiYiIiIiIiIiIKoLJYqJK9OjRI2zZskXtMi0tLcTExJT7ZmpERERERERERERvE5PFRJXkgw8+gCAIOHHiBO7du4esrCzI5XIoFAp4eXnho48+QrNmzao6TCIiIiIiIiIiIrVYs5iIiIiIiIiIiIiI8PZvo01ERERERERERERE/zhMFhMRERERERERERERaxa/jsLCQty9exfGxsaQyWRVHQ4REREREVURQRDw7Nkz2NnZQUuLY3GIiIioemOy+DXcvXsXderUqeowiIiIiIjoH+L27duwt7ev6jCIiIiI3giTxa/B2NgYQNE/hCYmJlUcDRERERERVZWnT5+iTp064mcEIiIiouqMyeLXoCw9YWJiwmQxERERERGxPB0RERH9K7CoFhERERERERERERExWUxERERERERERERETBYTEREREREREREREZgsJiIiIiIiIiIiIiLwBndERERERET/aQUFBcjLy6vqMIiIiEhDdHR0oK2tXa62TBYTERERERH9BwmCgPv37yMrK6uqQyEiIiINMzMzQ61atSCTycpsx2QxERERERHRf5AyUWxtbQ25XP7KD49ERERU/QiCgBcvXuDhw4cAAFtb2zLbM1lMRERERET0H1NQUCAmii0sLKo6HCIiItIgAwMDAMDDhw9hbW1dZkkK3uCOiIiIiIjoP0ZZo1gul1dxJERERPQ2KN/zX3WfAiaLiYiIiIiI/qNYeoKIiOi/obzv+UwWExERERERERERERGTxURERERERPTvk5WVBZlMhvj4+KoOpUzx8fGQyWRIT0+v6lCqpXPnzmHKlCl48eJFhdZr27YtQkJCxOkpU6bAyMhInD5y5AhkMhl++eWXSouViKg64A3uiIiIiIiISNRy7Noq23bK3PAq2zZVT+fOnUNsbCyGDRv2RjW4Bw0ahI4dO1ZiZERE1RNHFhMRERERERH9h8THx0OhUFRonezsbM0E8w9hb28PDw+Pqg6DiKjKMVlMRERERERE1d7XX38NhUIBuVwOf39/XLt2TaVNfHw8mjZtCn19fdSuXRsxMTEoKCiQtElLS0NYWBgsLS1hYGAAb29vpKSkSNooFAoMGzYMc+fORe3atSGXyxEaGop79+6p9BUSEgK5XI46depgwYIF+PTTT9Umaq9duwY/Pz/I5XIoFAqsXr1asjwiIgKurq744Ycf0LRpUxgYGMDHxwepqanIyMhAr169YGJiAicnJ2zZsuU1j+L/kclkmDVrFqKjo1GrVi1YW1sDAARBwLx58+Ds7Aw9PT3Uq1cPCxYsUNnvXr16wcbGBvr6+nB0dMSoUaPE5cqSDxcuXICnpyfkcjlcXV2xf/9+lTjKOmfx8fEYOHAgAMDKygoymazCSfCSMZVl3759kMvlmDx5crniIyKqjpgsJiIiIiIiompt165diIqKgq+vL5KSkuDv74+ePXtK2syfPx+DBg1CUFAQdu7ciejoaCxatAgxMTFim8zMTHh6euLcuXNYvHgxEhISYGhoCD8/Pzx8+FDSX1JSEpKSkrB8+XIsX74cp06dQrdu3cTlgiAgNDQU586dw8qVK7F06VIkJiYiMTFR7T706dMHgYGBSEpKgq+vLyIjI7Fv3z5Jm/v372PMmDGIiYnBhg0bcP36dfTv3x+9e/dGkyZNkJCQgJYtWyIsLAy3bt1608OK//3vf7h69SpWrVqF9evXAwBGjhyJL774AgMGDMDu3bsRERGB6OhorFixQlwvPDwcv/32GxYtWoR9+/YhNjZWJYGal5eH/v37IyIiAklJSbC2tkb37t3x+PFjsc2rzlnHjh0xceJEAEWJ3BMnTiApKemN91udxMREdOnSBVOnTkVsbGy54iMiqo5Ys5iIiIiIiIiqtenTp8PLywtr1qwBAAQFBSEnJwfTpk0DADx79gyTJ0/GuHHjMGPGDABAYGAgdHV1MXr0aIwdOxYWFhZYuHAhsrKycPr0aXEkrb+/P5ydnTFv3jzMmTNH3OazZ8+wd+9emJqaAgDq1KkDf39/7N+/H0FBQdi7dy/Onj2LY8eOwcvLCwDg5+cHe3t7mJmZqexDeHg4JkyYIMZ/48YNxMbGIjg4WGyTkZGBo0ePonHjxgCAu3fvYvjw4YiOjsakSZMAAB4eHkhMTMS2bdswcuRIAEBhYSEKCwvFfpR/5+fnS2KoUUOaIjA3N0diYiJkMhkA4Pr161iyZAlWrFiBqKgoAEBAQABevHiB2NhYREVFQUtLC6dPn8bMmTPRu3dvyf4Vl5ubi1mzZqFDhw4AABcXFzg6OmLv3r0ICwsr1zmzsrKCk5MTAKBly5awtLRUOa6VYd26dYiMjMSiRYswZMgQAOW/poiIqhuOLCYiIiIiIqJqq6CgACkpKejatatkfo8ePcS/f/75Zzx//hw9e/ZEfn6++AgICEB2djYuXrwIAEhOToavry/Mzc3FNtra2vDx8cGZM2ck/fv6+oqJYqAoEWxubo5Tp04BAM6cOQMzMzMxUQwARkZG8Pf3V7sfJePv3r07UlJSJCNy7ezsxEQxADg7OwMoStgqmZmZwdraGrdv3xbnTZ06FTo6OuIjMjISt27dkszT0dFRial9+/ZiohgAfvjhBzG2ksfx/v374jbd3Nwwb948LF++XG05EADQ0tKSxK1QKGBgYIC0tDQA5T9nmhYXF4fIyEisWrVKTBT/k+IjIqpsHFlMRERERERE1dajR4+Qn58vjgRWsrGxEf9OT08HUJTEVEeZ5ExPT8fJkyfVJk6VI1iVSm5POU9Zt/jevXuwsrJS20YddfHn5eUhPT1d3JeSI5J1dXVLnZ+TkyNOR0VFISQkRJzetWsX4uLisGPHDrWxFI+huPT0dAiCUOoI3tu3b6Nu3brYsmULYmJiEBMTg08++QQuLi6YMWOGpEyHgYGBGL+6uMt7zjQtISEBDg4O6Nixo2T+PyU+IqLKxmQxERERERERVVtWVlaoUaOGSk3hBw8eiH+bm5sDKKo7W6dOHZU+HB0dxXbBwcFi+Yri9PT0JNMlt6ecZ2trCwCwtbXFo0eP1LZR5+HDh6hdu7Ykfh0dnUoprWBnZwc7Oztx+uLFi9DV1YW7u3uZ6xUfVQwUHR+ZTIYff/xRJdELFJWSAIr2ffXq1fjmm2+QkpKC6dOno3fv3rhy5Qrq1atXrpjLe840be3atRgzZgyCgoJw8OBBmJiY/KPiIyKqbEwWExERERERUbWlra0NNzc3JCUlYdSoUeL8rVu3in+/++67kMvlSEtLUyn3UFxAQADWr1+Phg0bwtDQsMztHj58GE+ePBFLURw6dAgZGRlo3bo1gKLawVlZWTh27Bi8vb0BAM+fP8fBgwfV1ixOSkpCixYtxGnlzeq0tbVffRDeEmUJjcePH6NTp06vbK+lpQUPDw9Mnz4dO3bswLVr18qdLC7vOVMmrYuPpK5MNjY2OHjwILy9vdG+fXskJyfD0NCw3PEREVU3TBYTERERERFRtRYTE4PQ0FAMHDgQffr0QUpKCtatWycuNzMzw9SpUzFu3DikpaWhbdu20NbWxo0bN7B9+3YkJCRALpdj9OjR2LBhA3x8fDBy5Eg4ODjg0aNHOHXqFOzs7CTJaGNjY7Rv3x7jx49HVlYWoqOj0apVKwQFBQEoqvfr5uaGfv36YebMmTAzM8OcOXNgbGwMLS3V2wetXbsWBgYGcHNzw+bNm3Hs2DHs3r1b8wevApydnTF06FB88MEHGDt2LFq3bo28vDxcvXoVhw8fxrZt2/DkyRMEBQXhgw8+gIuLC3Jzc7F48WKYmZmVWrJBnfKes4YNGwIAli5dii5dukAul6NJkyaVut+1a9cWE8adO3fG7t27yx0fEVF1w2QxERERERERVWudO3fGihUr8OWXX2Lz5s1o3bo1tmzZIo7yBYAxY8agdu3amD9/PhYvXgwdHR04OTkhJCREHJ1qYWGBkydPYuLEiYiOjsbjx49hbW2NNm3aqIwe7dq1K+zt7TFkyBBkZmYiMDAQK1asEJfLZDJs374dgwcPRlRUFGrWrIkRI0bgypUrOHfunMo+bNq0CRMmTMDUqVNhbW2NuLg4dOjQQTMH7A0sWrQILi4uWLlyJaZOnQojIyO4uLigZ8+eAAB9fX00adIEixcvxl9//QUDAwO4u7sjOTm5wiU1ynPOWrRogSlTpuCbb77BnDlzUKdOHaSmplb2bkOhUODQoUPw9vZGt27dsG3btnLFR0RU3cgEQRCqOojq5unTpzA1NcWTJ0/EekVERERERPTfU10/G+Tk5ODmzZtwdHSEvr5+VYdT7SgUCoSEhGDJkiUVWi83NxeNGjWCl5cX1qxZo6HoiIiIVJX3vZ8ji4mIiIiIiIg0IC4uDoWFhXBxcUFmZiaWL1+O1NRUbN68uapDIyIiUovJYiIiIiIiIiIN0NfXx6xZs8SyCM2aNcPu3bvh7u5etYH9yxUUFKCsH1HXqMFUCBFRafgKSURERERERFQB5a2JGx4ejvDwcM0GQyqcnJxw69atUpezGicRUemYLKa3puXYtRrtP2Uu/wkjIiIiIiL6r9u5cydevnxZ1WEQEVVLTBYTERERERER0b9GkyZNqjoEIqJqS6uqAyAiIiIiIiIiIiKiqldtk8WbN2+Gm5sbDAwMYG5ujh49euD69eultj9y5AhkMlmpj/j4+LcXPBEREREREREREdE/TLUsQ7Fq1SoMGjQIAODo6IjHjx8jISEBx48fx/nz51GrVi2VdUxMTNC6dWvJvAcPHog3JrC1tdV43ERERERERERERET/VNVuZHFubi7Gjx8PAOjevTtu3LiBy5cvw9jYGA8fPsSMGTPUrufm5oaTJ09KHo0bNwYAuLi4oF27dm9tH4iIiIiIiIiIiIj+aapdsvjMmTNIT08HUJQsBgA7Ozu0adMGALBv375y9XP58mXs2bMHADBmzBjIZLJS2758+RJPnz6VPIiIiIiIiIiIiIj+Tapdsvj27dvi39bW1uLfNjY2AIC//vqrXP3MmzcPgiDA2toa4eHhZbadOXMmTE1NxUedOnVeI3IiIiIiIiIiIiKif65qWbNYHUEQyt32/v372LBhAwBg+PDh0NPTK7P9hAkTMHr0aHH66dOnTBj/A+05Vb4vCl5Xh9YOGu2fiIiIiIgqT1ZWFmrWrIk1a9YgIiKiqsMpVXx8PAYOHIhHjx7B0tKyqsMRZWRkIDIyEkeOHEFWVhaSkpKQmpoKZ2dndOjQodz9pKamIj4+HlFRUbCzs9NgxK8nNzcXgwcPxq5du5Ceno4FCxbg008/reqwiIiqTLVLFhdP0j58+FDlbweHVyf0Fi9ejJcvX8LQ0BCffPLJK9vr6em9MqFMRERERET0b6DpQRhl4QCNf4758+fj8OHDWLt2LaytreHi4oJPP/0UISEhFU4Wx8bGIiQk5B+ZLF67di3WrVuHb7/9Fk5OTlAoFFUdEhFRlap2ZSg8PDxgYWEBAEhISAAA3L17FydPngQABAcHAwAaNGiABg0aYMmSJZL1//77byxfvhwAMHDgQJibm7+t0ImIiIiIiIiqXHx8/CuTon/88QeaNm2Kzp07o02bNqhZs6bG48rOztb4Nkr6448/YGdnh/79+6NNmzaoVavWa/dVFfEDRb+0fvnyZZVsm4j+fapdslhXVxczZswAUJQsrlevHho2bIhnz57B0tIS48ePBwBcuXIFV65cEW+Gp7Rq1SpkZmZCW1tbUlqCiIiIiIiIqq+vv/4aCoUCcrkc/v7+uHbtmkqb+Ph4NG3aFPr6+qhduzZiYmJQUFAgaZOWloawsDBYWlrCwMAA3t7eSElJkbRRKBQYNmwY5s6di9q1a0MulyM0NBT37t1T6SskJARyuRx16tQRSxyoS9Reu3YNfn5+kMvlUCgUWL16tWR5REQEXF1d8cMPP6Bp06YwMDCAj48PUlNTkZGRgV69esHExAROTk7YsmXLax7FIjKZDAkJCTh+/DhkMhlkMhkUCgVu3bqFpUuXivPi4+PL7OfIkSPw9fUFUDTwS7mecplMJsPu3bvRo0cPmJiYoGfPngCKRvt6enrC3NwcNWvWRNu2bXH69GlJ31OmTIGRkREuXLgAT09PyOVyuLq6Yv/+/ZJ2O3bsgLu7O4yMjGBmZgZ3d3fxZvcKhQJfffUVbt++LcaWmpoKADh27Bjee+89GBgYwNLSEh9++CEyMjLEflNTU8Vj8NFHH8HCwgKtWrUSj9/s2bMRExMDa2trmJmZYdy4cRAEAQcPHkTz5s1hZGQEf39/yX2ZAODly5f4/PPPUbduXejp6aFhw4bYuHGjpI3yWtizZw+aNWsGPT097Ny581WnlYioXKpdGQoAiIqKgqGhIebNm4fLly9DX18f3bp1w6xZs8r8WUtBQQEWLlwIAOjWrRscHR3fUsT0b/DX1CYa7d/hiwsa7Z+IiIiI6N9q165diIqKQkREBPr06YOUlBQx8ag0f/58jBs3DqNGjcJXX32Fy5cvi8niWbNmAQAyMzPh6ekJIyMjLF68GKampli8eDH8/Pzw559/Sm6ynpSUhLp162L58uXIzMxEdHQ0unXrhhMnTgAoGu0ZGhqKBw8eYOXKlTA1NcXcuXNx69YtaGmpjtvq06cPBg8ejOjoaGzevBmRkZGws7MTfz0LFN1/Z8yYMYiJiYGOjg5GjBiB/v37Qy6Xw9vbGx999BG+/vprhIWFoU2bNqhbt+5rHc8TJ04gOjoaz549w7JlywAUlWfs0KEDPD09MWbMGACAk5NTmf24ublh6dKlGDp0KNasWYMGDRqotImKikJYWBiSkpKgra0NoCgRGx4eDicnJ+Tm5mLTpk3w9vbGb7/9BmdnZ3HdvLw89O/fHyNGjMCkSZMwe/ZsdO/eHbdu3YKFhQWuX7+OHj16oG/fvpg5cyYKCwtx/vx5ZGZmAig6h7Nnz8bRo0eRlJQEALC1tUVKSgoCAwPRtm1bfP/993jw4AHGjx+PS5cu4eeffxbjBIrucdSxY0ds2rQJhYWF4vwlS5agbdu2WLduHU6dOoXJkyejoKAABw4cQExMDHR1dTFixAhERkYiOTlZXK9Xr1748ccfMXnyZDRs2BB79uxBWFgYatasifbt24vt7t69ixEjRmDixIlwcHAoV0lOIqLyqJbJYgDo378/+vfvX+pydTe809bWxo0bNzQZFhEREREREb1l06dPh5eXF9asWQMACAoKQk5ODqZNmwYAePbsGSZPnoxx48aJv1QNDAyErq4uRo8ejbFjx8LCwgILFy5EVlYWTp8+LSaG/f394ezsjHnz5mHOnDniNp89e4a9e/fC1NQUQNH9dfz9/bF//34EBQVh7969OHv2LI4dOwYvLy8AgJ+fH+zt7WFmZqayD+Hh4ZgwYYIY/40bNxAbGytJFmdkZODo0aNo3LgxgKKE4fDhwxEdHY1JkyYBKBrBm5iYiG3btmHkyJEAgMLCQkkiU/l3fn6+JIYaNYpSBMqyEzKZDG3atBGX6+npwcbGRjKvLCYmJmjUqBEAwNXVFe7u7iptOnfujNmzZ0vmffHFF5JYAwMDcfr0acTHx4vnDyi6Od2sWbPEGsouLi5wdHTE3r17ERYWhl9//RV5eXlYsmQJjI2NARQdW6UWLVqgVq1a0NPTk+zTl19+iVq1amHXrl3Q0dEBUHR+g4KCsGfPHnTq1Els27x5c3zzzTcq+2VnZ4d169aJ29yxYwcWLFiAS5cuoWHDhgCAO3fuYPjw4cjKyoKZmRkOHz6MHTt2YP/+/WjXrh2Aouv03r17mDx5siRZnJmZib1796J169alnwAiotdQ7cpQEBERERERESkVFBQgJSUFXbt2lczv0aOH+PfPP/+M58+fo2fPnsjPzxcfAQEByM7OxsWLFwEAycnJ8PX1hbm5udhGW1sbPj4+OHPmjKR/X19fMVEMFCWCzc3NcerUKQDAmTNnYGZmJiaKAYilB9QpGX/37t2RkpIiKZNhZ2cnJooBiKNsAwICxHlmZmawtraWlDeYOnUqdHR0xEdkZCRu3bolmadMir5tHTt2VJl3+fJldO3aFTY2NtDW1oaOjg6uXLmCq1evStppaWlJ9l2hUMDAwABpaWkAgKZNm0JbWxv9+vXDzp078eTJk3LFdPz4cYSGhkqOSbt27WBmZoYff/zxlfEDRUne4pydnWFnZycmipXzAIjxJicnw9zcHH5+fpLrNDAwEL/++qvkWrCwsGCimIg0otqOLCYiIiIiIiJ69OgR8vPzJSUiAMDGxkb8W3kvGzc3N7V9KBOr6enpOHnypNrEacmSCyW3p5ynrFt87949WFlZqW2jjrr48/LykJ6eLu5LyRHJurq6pc7PyckRp6OiohASEiJO79q1C3FxcdixY4faWN6m4ucJKBqx3a5dO1hZWWH+/PmoW7cu9PX1MWjQIMk+AYCBgYF4DJSK77uzszN27dqFGTNmoGvXrtDS0kJwcDCWLFlSZtmGzMxMlbiUsRavW6wufiV156S086eMNz09HRkZGaUm7u/duwd7e/syt0tE9KaYLCYiIiIiIqJqy8rKCjVq1MDDhw8l8x88eCD+bW5uDgBITExEnTp1VPpQ3s/G3NwcwcHBYvmK4vT09CTTJbennGdrawugqPbto0eP1LZR5+HDh6hdu7Ykfh0dHVhaWqptXxF2dnaS+/tcvHgRurq6astCvG3KG94pnThxAmlpadi1axeaNWsmzn/y5ImYKK2I4OBgBAcH4+nTp9i3bx9GjRqFgQMH4uDBg6WuY25urvY8PXjwQLyWSov/TZibm8PKykq8AV9Jxb9QqMztEhEVx2QxERERERERVVva2tpwc3NDUlISRo0aJc7funWr+Pe7774LuVyOtLQ0lXIPxQUEBGD9+vVo2LAhDA0Ny9zu4cOH8eTJE7EUxaFDh5CRkSGWBvDw8EBWVhaOHTsGb29vAMDz589x8OBBtTWLk5KS0KJFC3E6ISEBLVu2lNxMraqVHLFc3nUAlHu97OxsyXpAURmR1NRUSQmOijIxMUGvXr1w6tQpbNq0qcy2np6e2LZtG7766iuxjvOBAweQlZUFT0/P147hVQICAjBnzhzo6uqiadOmGtsOEVFZmCwmIiIiIiKiai0mJgahoaEYOHAg+vTpg5SUFPHmYkBRSYCpU6di3LhxSEtLQ9u2bcUboG/fvh0JCQmQy+UYPXo0NmzYAB8fH4wcORIODg549OgRTp06BTs7O0ky2tjYGO3bt8f48eORlZWF6OhotGrVSryBWvv27eHm5oZ+/fph5syZMDMzw5w5c2BsbAwtLdXbB61duxYGBgZwc3PD5s2bcezYMezevVvzB68CGjZsiEOHDuHAgQOoWbMmHB0dYWFhUeY6zs7O0NbWxurVq1GjRg3UqFGjzBHNbdq0gZGREYYOHYrx48fjzp07mDx5smTUdXmtXLkSJ06cQHBwMGxtbXHz5k2sX79evHlcaWJiYvDee+8hJCQEw4cPx4MHDzB+/Hi0atVKvJmeJgQGBqJTp04IDg7GuHHj0LRpU/z999+4dOkSrl27pvZGekRElY03uCMiIiIiIqJqrXPnzlixYgUOHjyILl26IDk5GVu2bJG0GTNmDNasWYPDhw+je/fu6NmzJ+Li4uDh4SGOYrWwsMDJkyfRvHlzREdHo127dhg1ahRSU1NVbibWtWtXdO7cGUOGDMHgwYPh4eGBpKQkcblMJsP27dvRrFkzREVFYfDgwejYsSMCAgIkN8ZT2rRpE/bv348uXbrg0KFDiIuL02hi8nXMmDED9vb26N69Ozw8PLBz585XrmNpaYmlS5fi6NGj8PLygoeHR5ntbWxs8P333+Phw4cIDQ3FwoULsXLlStSvX7/C8TZt2hTp6ekYPXo02rVrh8mTJ6Nv375YtmxZmeu1bNkSycnJePr0Kbp3746xY8eiY8eO2Lt3r8ZHem/duhVDhgzBsmXL0L59e0RGRiI5ORk+Pj4a3S4RkZJMEAShqoOobp4+fQpTU1M8efIEJiYmVR1OtdFy7FqN9j+tR1uN9u+6X/1dbiuLwxcXNNo/EREREVW+6vrZICcnBzdv3oSjoyP09fWrOpxqR6FQICQkBEuWLKnQerm5uWjUqBG8vLywZs0aDUVHRESkqrzv/SxDQURERERERKQBcXFxKCwshIuLCzIzM7F8+XKkpqZi8+bNVR0aERGRWkwWE/1DZP4wR6P91wwYp9H+iYiIiIhISl9fH7NmzUJqaioAoFmzZti9e3eZNXurE0EQUFBQUOpyLS0ttfWZiYjon4vJYiIiIiIiIqIKUCZ/XyU8PBzh4eGaDaYKffvttxg4cGCpyydPnowpU6a8vYCIiOiNMVlMRERERERERBXWqVMnnDlzptTldnZ2bzEaIiKqDEwWE/1HvL/4fY32/9PwnzTaPxERERER/bNYWFjAwsKiqsMgIqJKxGQxEVWK+EvLNNZ3RONPNNY3EREREREREREVYbKYiP7xjnr7aLR/n2NHNdo/EREREREREVF1wNuSEhERERERERERERFHFhMRPdu4XqP9f5tiqtH+h33VSaP9ExEREREREdF/A5PFRETV3E97zmu0//c7NNNo/0RERERERET0z8AyFERERERERERERETEZDERERERERH9+2RlZUEmkyE+Pr6qQylTfHw8ZDIZ0tPTqzoUCYVCgWHDhpW6fMqUKTAyMqpwv+Vdb+HChdizZ4/aZXl5eVi6dCneffddmJqaQk9PD46OjggPD8dPP/0kaatQKCCTycSHhYUF/Pz8cPz4cUk75XnQ19fHkydPVLbZv39/yGQytG3btvw7S0RUDbEMBRERlenLsB4a7T9m/VaN9k9EREQV89fUJlW2bYcvLlTZtqliBg0ahI4dO2qs/4ULFyIkJAQdOnSQzM/JyUGHDh3w888/Y/DgwYiJiYGxsTH+/PNPrF27Fp6ensjJyYGenp64To8ePTBmzBgAwMOHD7Fw4UIEBwfjt99+g5OTk6R/HR0dJCUlISIiQpz34sULbN++/bWS40RE1Q2TxURERERERET/IfHx8ZgyZQpSU1Nfuw97e3vY29tXXlDlNGnSJBw9ehTJycnw9/cX5/v4+GDQoEFYs2YNZDKZZB0bGxu0adNGnPby8oKFhQX279+PTz75RNI2NDQUmzZtkiSLd+7cCT09PbRp0wZ///23ZnaMiOgfgmUoiIiIiIiIqNr7+uuvoVAoIJfL4e/vj2vXrqm0iY+PR9OmTaGvr4/atWsjJiYGBQUFkjZpaWkICwuDpaUlDAwM4O3tjZSUFEkbZYmGuXPnonbt2pDL5QgNDcW9e/dU+goJCYFcLkedOnWwYMECfPrpp1AoFCqxXbt2DX5+fpDL5VAoFFi9erVkeUREBFxdXfHDDz+gadOmMDAwgI+PD1JTU5GRkYFevXrBxMQETk5O2LJly2sexfJTV07i0qVL8Pb2hr6+Pt555x1s2LABXbp0UVu64cKFC/D09IRcLoerqyv2798vLlMoFLh16xaWLl0qlo+Ij49HdnY2li9fju7du0sSxcUNHDgQurq6ZcZuaGgIbW1t5OXlqSzr27cvDh48iIcPH4rzNm7ciB49ekBHR6fMfomI/g2YLCYiIiIiIqJqbdeuXYiKioKvry+SkpLg7++Pnj17StrMnz8fgwYNQlBQEHbu3Ino6GgsWrQIMTExYpvMzEx4enri3LlzWLx4MRISEmBoaAg/Pz9J8hAAkpKSkJSUhOXLl2P58uU4deoUunXrJi4XBAGhoaE4d+4cVq5ciaVLlyIxMRGJiYlq96FPnz4IDAxEUlISfH19ERkZiX379kna3L9/H2PGjEFMTAw2bNiA69evo3///ujduzeaNGmChIQEtGzZEmFhYbh169abHtYKyc7ORrt27fD48WOsX78eM2fOxKxZs1QS7UBRzeH+/fsjIiICSUlJsLa2Rvfu3fH48WMARce2Vq1a6NGjB06cOIETJ06gY8eO+OWXX/D333+jXbt2FYpNEATk5+cjPz8f9+7dw6hRo1CjRg21ZTRat26NunXr4vvvvwdQVPt637596Nu372scFSKi6odlKIiIiIiIiKhamz59Ory8vLBmzRoAQFBQEHJycjBt2jQAwLNnzzB58mSMGzcOM2bMAAAEBgZCV1cXo0ePxtixY2FhYYGFCxciKysLp0+fhrW1NQDA398fzs7OmDdvHubMmSNu89mzZ9i7dy9MTU0BAHXq1IG/vz/279+PoKAg7N27F2fPnsWxY8fg5eUFAPDz84O9vT3MzMxU9iE8PBwTJkwQ479x4wZiY2MRHBwstsnIyMDRo0fRuHFjAMDdu3cxfPhwREdHY9KkSQAADw8PJCYmYtu2bRg5ciQAoLCwEIWFhWI/yr/z8/MlMdSo8fopgjVr1uDBgwf46aefxJHT7u7uqF+/vkpd4NzcXMyaNUusR+zi4gJHR0fs3bsXYWFhaNGiBfT09FTKRxw6dAhA0bEuruT+aWtrS0pRLFu2DMuWLROnDQwMsHbtWtSvX1/tvvTp0webN2/G0KFDkZCQACsrK3h7e2PhwoUVPzBERNUMRxYTERERERFRtVVQUICUlBR07dpVMr9Hj/+7Se/PP/+M58+fo2fPnuII0/z8fAQEBCA7OxsXL14EACQnJ8PX1xfm5uZiG21tbfj4+ODMmTOS/n19fcVEMVCUCDY3N8epU6cAAGfOnIGZmZmYKAYAIyOjUssnlIy/e/fuSElJkZTJsLOzExPFAODs7AwACAgIEOeZmZnB2toat2/fFudNnToVOjo64iMyMhK3bt2SzHvTEgtnzpxBkyZNJCU2FAoFmjVrptJWS0tLErNCoYCBgQHS0tLKta2SNYlHjBgh2Y+EhATJ8l69euHMmTM4c+YM9u/fj169euGDDz7AgQMH1Pbft29f/PTTT7h9+zY2bdqE3r17Q0uL6RMi+m/gyGIiIiIiIiKqth49eoT8/HxxJLCSjY2N+Hd6ejoAwM3NTW0fysRqeno6Tp48qTZxWnJ0bMntKecp6xbfu3cPVlZWatuooy7+vLw8pKeni/tSckSysjavuvk5OTnidFRUFEJCQsTpXbt2IS4uDjt27FAby+soa3+zs7Ml8wwMDFTqCpeMWR07OzsAUEkqjxs3DhEREbh37x46d+6ssp6VlRXc3d3F6cDAQPz666+YMGECAgMDVdq7urqicePGWLBgAQ4fPozZs2eXGRcR0b8Jk8VERERERERUbVlZWaFGjRoqNYUfPHgg/m1ubg4ASExMVClhAACOjo5iu+DgYLF8RXF6enqS6ZLbU86ztbUFANja2uLRo0dq26jz8OFD1K5dWxK/jo4OLC0t1bavCDs7OzHRCgAXL16Erq6uJIH6pmxtbXHu3DmV+Q8fPoSxsXGlbMPd3R2GhoZITk7Ghx9+KM53cHCAg4MDUlNTy9WPTCZDgwYNykyW9+3bF5MmTUL9+vXRsmXLNw2diKja4O8oiIiIiIiIqNrS1taGm5sbkpKSJPO3bt0q/v3uu+9CLpcjLS0N7u7uKg8LCwsAReUcfv/9dzRs2FClTZMmTST9Hz58GE+ePBGnDx06hIyMDLRu3RpAUe3grKwsHDt2TGzz/PlzHDx4UO1+lIxfebM6bW3t1zgqb5+Hhwd+++033Lx5U5yXmpqK8+fPv1Z/6kYaGxgY4OOPP8bWrVtx5MiR145VEAT8/vvvZSbi+/Xrh06dOmH8+PGvvR0iouqII4uJiIiIiIioWouJiUFoaCgGDhyIPn36ICUlBevWrROXm5mZYerUqRg3bhzS0tLQtm1baGtr48aNG9i+fTsSEhIgl8sxevRobNiwAT4+Phg5ciQcHBzw6NEjnDp1CnZ2dhg1apTYp7GxMdq3b4/x48cjKysL0dHRaNWqFYKCggAA7du3h5ubG/r164eZM2fCzMwMc+bMgbGxsdr6t2vXroWBgQHc3NywefNmHDt2DLt379b8wSvD9evXJUl3oKjecLdu3VTaDhw4EF9++SVCQkIQGxsLAJgyZQpq1ar1WvV+GzZsiEOHDuHAgQOoWbMmHB0dYWFhgWnTpiElJQXt27fH4MGDERgYCGNjYzx8+FCM1cjISNLXgwcPcPLkSQBAZmYmNm7ciIsXL+LLL78sdfsKhQLbtm2rcNxERNUdk8VERFSlDn/7tUb79x3wkUb7JyIioqrXuXNnrFixAl9++SU2b96M1q1bY8uWLeIoXwAYM2YMateujfnz52Px4sXQ0dGBk5MTQkJCxPq5FhYWOHnyJCZOnIjo6Gg8fvwY1tbWaNOmjcoN6Lp27Qp7e3sMGTIEmZmZCAwMxIoVK8TlMpkM27dvx+DBgxEVFYWaNWtixIgRuHLlitpyDZs2bcKECRMwdepUWFtbIy4uDh06dNDMASunffv2Yd++fZJ52trayM/PV2lrYGCA5ORkDBkyBP3790ft2rUxadIkrF27VnIjwPKaMWMGPv74Y3Tv3h3Pnj3DmjVrEBERAX19fezfvx8rV67E+vXrsWrVKuTm5sLW1hZeXl748ccf8f7770v62rp1q5hINjY2Rv369bFq1SoMHDiwwnEREf3byQRBEKo6iOrm6dOnMDU1xZMnT2BiYlLV4VQbLceu1Wj/03q01Wj/rvs7arR/4/c+0Gj/IZe3a7T/j/z6a6xvx4+3aKxvAHAbotlk4rcpFf/nuCJa+DtotP8jG1Vr9lWm9wKDNNo/k8VERKRJ1fWzQU5ODm7evAlHR0fo6+tXdTjVjkKhQEhICJYsWVKh9XJzc9GoUSN4eXlhzZo1GorunyMjIwP16tXDqFGjMHny5KoOh4joP6287/0cWUxERERERESkAXFxcSgsLISLiwsyMzOxfPlypKamYvPmzVUdmkbMnj0bNjY2UCgUuHfvHubNm4eCggLJzeiIiOifjcliIiL6V7v85SGN9d0wxk9jfRMREVH1p6+vj1mzZiE1NRUA0KxZM+zevRvu7u5VG5iGaGlpYfr06bhz5w5q1KiB1q1b49ChQ6hTp05Vh0ZEROXEZDERERERERFRBSiTv68SHh6O8PBwzQbzDzJ27FiMHTu2qsMgIqI3UPFbkhIRERERERERERHRvw5HFhMREb2mrMMXNdq/ma+rRvsnIiIiIiIiKo4ji4mIiIiIiIiIiIiIyWIiIiIiIiIiIiIiYrKYiIiIiIiIiIiIiMBkMRERERERERERERGByWIiIiIiIiIiIiIiApPFRERERERE9C+UlZUFmUyG+Pj4qg6lTPHx8ZDJZEhPT6/qUCQyMjLQtWtX1KxZEzKZDNu2bcPChQuxZ8+eCvWTmpqKKVOm4O7duxqK9M3k5uZi4MCBsLKygkwmw8KFC6s6JCrF61x/R44cgUwmwy+//CLOk8lkmDdvnjjdtm1bhISEVFqcRNVdjaoOgIiIiIiIiP45Mn+YU2Xbrhkwrsq2TVLz58/H4cOHsXbtWlhbW8PFxQWffvopQkJC0KFDh3L3k5qaitjYWISEhMDOzk6DEb+etWvXYt26dfj222/h5OQEhUJR1SFRKRYuXFjh60+dEydOoG7dupUUFdG/D0cWExEREREREf2HxMfHvzIp+scff6Bp06bo3Lkz2rRpg5o1a2o8ruzsbI1vo6Q//vgDdnZ26N+/P9q0aYNatWq9dl9VET8ACIKAly9fql2mUCgqPLq+qvbjbWnTpg1sbW2rOgyifywmi4mIiIiIiKja+/rrr6FQKCCXy+Hv749r166ptImPj0fTpk2hr6+P2rVrIyYmBgUFBZI2aWlpCAsLg6WlJQwMDODt7Y2UlBRJG4VCgWHDhmHu3LmoXbs25HI5QkNDce/ePZW+QkJCIJfLUadOHSxYsACffvqp2kTttWvX4OfnB7lcDoVCgdWrV0uWR0REwNXVFT/88AOaNm0KAwMD+Pj4IDU1FRkZGejVqxdMTEzg5OSELVu2vOZRLCKTyZCQkIDjx49DJpNBJpNBoVDg1q1bWLp0qTjvVUnII0eOwNfXFwDg4eEhrqdcJpPJsHv3bvTo0QMmJibo2bMngKLRvp6enjA3N0fNmjXRtm1bnD59WtL3lClTYGRkhAsXLsDT0xNyuRyurq7Yv3+/pN2OHTvg7u4OIyMjmJmZwd3dXSxloFAo8NVXX+H27dtibKmpqQCAY8eO4b333oOBgQEsLS3x4YcfIiMjQ+w3NTVVPAYfffQRLCws0KpVK/H4zZ49GzExMbC2toaZmRnGjRsHQRBw8OBBNG/eHEZGRvD398ft27cl8b58+RKff/456tatCz09PTRs2BAbN26UtFFeC3v27EGzZs2gp6eHnTt3vuq0qqU8jqdPn8a7774LfX19LF26FABw+fJlhIaGwtTUFIaGhujYsSOuX78uWX/16tVo3LgxDAwMYGFhAU9PT5w5c0ZcLpPJMGfOHEyZMgU2NjawtLTEwIED8ffff0v6edXz7nWuv9KULENRUnZ2Njp27Ih69erhxo0b5YqP6N+EyWIiIiIiIiKq1nbt2oWoqCj4+voiKSkJ/v7+YuJRaf78+Rg0aBCCgoKwc+dOREdHY9GiRYiJiRHbZGZmwtPTE+fOncPixYuRkJAAQ0ND+Pn54eHDh5L+kpKSkJSUhOXLl2P58uU4deoUunXrJi4XBAGhoaE4d+4cVq5ciaVLlyIxMRGJiYlq96FPnz4IDAxEUlISfH19ERkZiX379kna3L9/H2PGjEFMTAw2bNiA69evo3///ujduzeaNGmChIQEtGzZEmFhYbh169ZrH88TJ07A29sbLVq0wIkTJ3DixAkkJSWhVq1a6NGjhzivY8eOZfbj5uYmJh7XrFkjrldcVFQUnJyckJSUhM8++wxAUSI2PDwc33//PTZu3AgHBwd4e3vj6tWrknXz8vLQv39/REREICkpCdbW1ujevTseP34MALh+/Tp69OiBxo0bIykpCVu2bEGvXr2QmZkJoOgc9u7dG7Vq1RJjs7W1RUpKCgIDA2FsbIzvv/8es2fPxs6dO9G+fXuVLxcmTJgAQRCwadMmzJ07V5y/ZMkS/PXXX1i3bh1Gjx6NuXPn4rPPPsOoUaMwYcIErFu3DlevXkVkZKSkv169emHlypUYM2YMdu3aheDgYISFhWHv3r2Sdnfv3sWIESMwatQo7Nu3D82bNy/zXJQlNzcX/fr1E7fTrl073LhxA++99x4yMjIQHx+PjRs34tGjR/D39xdHMR87dgyRkZHo0KED9uzZg7Vr18Lf3x9ZWVmS/pcsWYI///wT3377Lb744gts3LgR06ZNE5eX53n3Otff63j+/Dk6dOiA69ev4/jx46hXr16FXheI/g1Ys5iIiIiIiIiqtenTp8PLywtr1qwBAAQFBSEnJ0dMSD179gyTJ0/GuHHjMGPGDABAYGAgdHV1MXr0aIwdOxYWFhZYuHAhsrKycPr0aVhbWwMA/P394ezsjHnz5mHOnP+r5/zs2TPs3bsXpqamAIA6derA398f+/fvR1BQEPbu3YuzZ8/i2LFj8PLyAgD4+fnB3t4eZmZmKvsQHh6OCRMmiPHfuHEDsbGxCA4OFttkZGTg6NGjaNy4MYCihOHw4cMRHR2NSZMmASgawZuYmIht27Zh5MiRAIDCwkIUFhaK/Sj/zs/Pl8RQo0ZRikBZdkImk6FNmzbicj09PdjY2EjmlcXExASNGjUCALi6usLd3V2lTefOnTF79mzJvC+++EISa2BgIE6fPo34+Hjx/AFFSc5Zs2aJNWxdXFzg6OiIvXv3IiwsDL/++ivy8vKwZMkSGBsbAyg6tkotWrRArVq1oKenJ9mnL7/8ErVq1cKuXbugo6MDoOj8BgUFYc+ePejUqZPYtnnz5vjmm29U9svOzg7r1q0Tt7ljxw4sWLAAly5dQsOGDQEAd+7cwfDhw5GVlQUzMzMcPnwYO3bswP79+9GuXTsARdfpvXv3MHnyZLRv317sPzMzE3v37kXr1q0l2y15TpXHsPh8LS0taGn939jBvLw8fPnll+jdu7c4b8CAATA3N8eBAwegr68PAHjvvfdQr149rFq1Cp988glOnz4Nc3NzSZJcXQLX1tYWGzZsAAAEBwfj7Nmz2Lp1K2bNmgUA5XretWjRosLXX0VlZmaiffv2yMnJwbFjx8RYKvK6QPRvwJHFREREREREVG0VFBQgJSUFXbt2lczv0aOH+PfPP/+M58+fo2fPnsjPzxcfAQEByM7OxsWLFwEAycnJ8PX1hbm5udhGW1sbPj4+kp/WA4Cvr6+YKAaKEsHm5uY4deoUAODMmTMwMzMTE8UAxNID6pSMv3v37khJSZGMZLWzsxMTxQDg7OwMAAgICBDnmZmZwdraWlLeYOrUqdDR0REfkZGRuHXrlmSeMin6tqlLLl6+fBldu3aFjY0NtLW1oaOjgytXrqiMLNbS0pLsu0KhgIGBAdLS0gAATZs2hba2Nvr164edO3fiyZMn5Yrp+PHjCA0NlRyTdu3awczMDD/++OMr4weKkrzFOTs7w87OTkwUK+cBEONNTk6Gubk5/Pz8JNdpYGAgfv31V8m1YGFhoZIoBqByTm/duoXIyEjJvKlTp6qsV3I/kpOT0blzZ9SoUUOMo2bNmmjRooX4XHBzc0NGRgYiIiJw4MABvHjxolzHolGjRuI+K7dV3uedpqSnp4slUw4fPiwmhf8p8RG9TRxZTERE9A81ZcqUat0/ERHR2/Do0SPk5+dLkjsAYGNjI/6dnp4OoCi5pY4ysZqeno6TJ0+qTZw6OTlJpktuTzlPWbf43r17sLKyUttGHXXx5+XlIT09XdyXkiOSdXV1S52fk5MjTkdFRSEkJESc3rVrF+Li4rBjxw61sbxNxc8TUDRiu127drCyssL8+fNRt25d6OvrY9CgQZJ9AgADAwPxGCgV33dnZ2fs2rULM2bMQNeuXaGlpYXg4GAsWbIEDg4OpcaUmZmpEpcy1uJ1i9XFr6TunJR2/pTxpqenIyMjo9TE/b1792Bvb1/mdksmLzt37qxy/u3s7CRt5HI5jIyMJPPS09OxcOFCLFy4UGUbyrj9/Pywbt06/O9//0NQUBD09fXRo0cPLFy4EObm5mJ7dftd/IZ8FXneacrVq1eRmZmJhQsXqtzM8Z8QH9HbxGQxERHRf9TJkyc12r+mfiJIRERUnJWVFWrUqKFSO/TBgwfi38rEVWJiIurUqaPSh6Ojo9guODhYUk9VSU9PTzKtrlbpw4cPYWtrC6Dop/ePHj1S20adhw8fonbt2pL4dXR0YGlpqbZ9RdjZ2UkShBcvXoSurq7ashBvm/KGd0onTpxAWloadu3ahWbNmonznzx5IiZKKyI4OBjBwcF4+vQp9u3bh1GjRmHgwIE4ePBgqeuYm5urPU8PHjyQJEHVxf8mzM3NYWVlJd6Ar6TiXyiUtt2S51RXVxcKhaLMc62uL3Nzc3Ts2BGffPKJyjJlSQ8ACAsLQ1hYGNLT07F9+3aMGjUKOjo6WLVqVanbU7et8j7vNOW9995DQEAARo8eDQsLC4SFhf2j4iN6m5gsJiIiIo347vtWGu2/V8/Tr25ERET/etra2nBzc0NSUhJGjRolzt+6dav497vvvgu5XI60tDSVcg/FBQQEYP369WjYsCEMDQ3L3O7hw4fx5MkTsRTFoUOHkJGRIZYG8PDwQFZWFo4dOwZvb28ARTfPOnjwoNqaxUlJSWjRooU4rbxZnba29qsPwltScsRyedcBUO71srOzJesBRWVEUlNTJSU4KsrExAS9evXCqVOnsGnTpjLbenp6Ytu2bfjqq6/EOs4HDhxAVlYWPD09XzuGVwkICMCcOXOgq6uLpk2bamw75Y3l4sWLaNGiRbmuQUtLS0RGRmLPnj24fPlyhbdVnufd61x/FfHpp58iOzsbERER4ijpisRH9G/BZDERERERERFVazExMQgNDcXAgQPRp08fpKSkiDcXA4p+Bj916lSMGzcOaWlpaNu2LbS1tXHjxg1s374dCQkJkMvlGD16NDZs2AAfHx+MHDkSDg4OePToEU6dOgU7OztJMtrY2Bjt27fH+PHjkZWVhejoaLRq1Uq8gVr79u3h5uaGfv36YebMmTAzM8OcOXNgbGwsubmY0tq1a2FgYAA3Nzds3rwZx44dw+7duzV/8CqgYcOGOHToEA4cOICaNWvC0dERFhYWZa7j7OwMbW1trF69GjVq1ECNGjXKHOXapk0bGBkZYejQoRg/fjzu3LmDyZMnS0Zdl9fKlStx4sQJBAcHw9bWFjdv3sT69evFm8eVJiYmBu+99x5CQkIwfPhwPHjwAOPHj0erVq3Em+lpQmBgIDp16oTg4GCMGzcOTZs2xd9//41Lly7h2rVram+kpymxsbHw8PBAUFAQoqKiYGNjg/v37+Po0aPw8vJC3759MXnyZDx+/Bht27aFtbU1Lly4gH379mH06NEV2lZ5n3evc/1V1IQJE5CdnY1+/fpBX18fISEhFXpdIPo3YLKYiIiIiIiIRDUDxlV1CBXWuXNnrFixAl9++SU2b96M1q1bY8uWLZIbgI0ZMwa1a9fG/PnzsXjxYujo6MDJyQkhISHiKFYLCwucPHkSEydORHR0NB4/fgxra2u0adNGZURy165dYW9vjyFDhiAzMxOBgYFYsWKFuFwmk2H79u0YPHgwoqKiULNmTYwYMQJXrlzBuXPnVPZh06ZNmDBhAqZOnQpra2vExcVpNDH5OmbMmIGPP/4Y3bt3x7Nnz7BmzRpERESUuY6lpSWWLl2KOXPmYN26dcjPz4cgCKW2t7Gxwffff4/PPvsMoaGhcHZ2xsqVKzF79uwKx9u0aVPs3LkTo0ePxuPHj1GrVi307dtXbTmB4lq2bInk5GRMmDAB3bt3h6GhITp37oyvvvpK4yO9t27dilmzZmHZsmW4desWTE1N4erqioEDB2p0uyXVr18fp0+fxsSJE/HJJ5/g+fPnsLW1hbe3tzjq2cPDAwsXLsR3332Hp0+fwt7eHmPHjsXEiRMrtK3yPu9e5/p7HVOnTkV2djZ69OiBXbt2ISAgoNyvC0T/BjKhrFdpUuvp06cwNTXFkydPYGJiUtXhVBstx67VaP/TerTVaP+u+9Xf5bayGL/3gUb7D7m8XaP9f+TXX2N9O368RWN9A4DbkI802v+3KaavbvQGWviXfnOOynBkY9n/TL+p9wKDNNp/rTTN3XTC9j31N6ipLAuPbn11ozcQHBys0f7/uj1Co/2zDAUR/RNU188GOTk5uHnzJhwdHaGvr1/V4VQ7CoUCISEhWLJkSYXWy83NRaNGjeDl5YU1a9ZoKDoiIiJV5X3v58hiIiIiIiIiIg2Ii4tDYWEhXFxckJmZieXLlyM1NRWbN2+u6tCIiIjUYrKYiIiIqqXfflvx6kZvoGnTIRrtn4iI/v309fUxa9YspKamAgCaNWuG3bt3l1mztzoRBAEFBQWlLtfS0lJbn5moMvD6I9IMPmuIiIiIiIiIKiA1NbVcJSjCw8Px+++/48WLF3jx4gVOnDgh3gDv3+Dbb7+Fjo5OqY+pU6dWdYj0L8brj0gzOLKYiIiISI1mW/drrO/zPf49iQIiIvrv6tSpE86cOVPqcjs7u7cYDf3X8Poj0gwmi4mIiIiIiIiowiwsLGBhYVHVYdB/FK8/Is1gGQoiIiIiIiIiIiIi4shiIiIiordt86XrGu2/T2MnjfZPRERERET/ThxZTERERERERERERERMFhMRERERERERERERk8VEREREREREREREBNYsJiIiIvrXaTl2rUb7T5kbrtH+iYgqQ1ZWFmrWrIk1a9YgIiKiqsMpVXx8PAYOHIhHjx7B0tKyqsOpds6dO4dt27Zh3LhxkMvl5V6vbdu2MDIywq5duwAAU6ZMwbx58/D8+XMAwJEjR+Dr64szZ87A3d1dI7GXJjg4GNevX8fFixehp6cnzk9JSUHr1q2xcOFCDBs2TJz/+PFjzJ07Fzt27EBqaioAoF69eggKCsLw4cOhUCgAAKmpqXB0dBTXk8lksLW1hY+PD2bOnIm6deu+lf0racqUKWjXrh3ee++9Ktk+EUkxWUxEREREFbLn1F8a7b9DaweN9k9EZXt/8ftVtu2fhv9UZdum6uncuXOIjY3FsGHDKpQsLmnQoEHo2LFjJUb2+pYuXQpXV1fMmDEDsbGxAICCggIMHjwYbm5u+OSTT8S2165dg5+fH/Ly8jBixAh4eHhAJpPh7NmzWLFiBX7++WecOHFC0v+MGTPg6+uLwsJCXL9+HV988QU6dOiA3377Ddra2m91XwEgNjYWRkZGTBYT/UMwWUxERERERET0HxIfH48pU6aIo1DLIzs7GwYGBpoLqorZ29vD3t7+rWxLJpPh8OHDaNu2rdrlTk5O+PzzzzF9+nT069cPLi4uWLx4Mc6dO4czZ85AS+v/Kor269cP+fn5SElJgZ2dnTjf398fI0eOxPr161X6f+edd9CmTRsAwHvvvQcTExN06dIFV65cQaNGjSp3Z4mo2mHNYiIiIiL6R/lrahONPojo3+nrr7+GQqGAXC6Hv78/rl27ptImPj4eTZs2hb6+PmrXro2YmBgUFBRI2qSlpSEsLAyWlpYwMDCAt7c3UlJSJG0UCgWGDRuGuXPnonbt2pDL5QgNDcW9e/dU+goJCYFcLkedOnWwYMECfPrpp2JZgOKUI0TlcjkUCgVWr14tWR4REQFXV1f88MMPaNq0KQwMDODj44PU1FRkZGSgV69eMDExgZOTE7Zs2fKaR/H/yGQyzJo1C9HR0ahVqxasra0BAIIgYN68eXB2doaenh7q1auHBQsWqOx3r169YGNjA319fTg6OmLUqFHi8ilTpsDIyAgXLlyAp6cn5HI5XF1dsX//fpU4yjpnyhIeAGBlZQWZTKb22JaHMqay7Nu3D3K5HJMnTy5XfG8iOjoajo6O+Pjjj3H79m1MmjQJw4cPR4sWLcQ2x48fx5kzZzBx4kRJolhJV1cXH3744Su3ZWxsDADIy8uTzF+5ciVcXFygp6cHhUKB6dOno7CwUNLmwoULCAoKgqGhIUxNTdGjRw/89Zf0F0irV69G48aNYWBgAAsLC3h6euLMmTMAiq4zABg7dixkMhlkMhmOHDny6gNERBrDZDERERERERFVa7t27UJUVBR8fX2RlJQEf39/9OzZU9Jm/vz5GDRoEIKCgrBz505ER0dj0aJFiImJEdtkZmbC09MT586dw+LFi5GQkABDQ0P4+fnh4cOHkv6SkpKQlJSE5cuXY/ny5Th16hS6desmLhcEAaGhoTh37hxWrlyJpUuXIjExEYmJiWr3oU+fPggMDERSUhJ8fX0RGRmJffv2Sdrcv38fY8aMQUxMDDZs2IDr16+jf//+6N27N5o0aYKEhAS0bNkSYWFhuHXr1pseVvzvf//D1atXsWrVKnGE6siRI/HFF19gwIAB2L17NyIiIhAdHY0VK1aI64WHh+O3337DokWLsG/fPsTGxqokUPPy8tC/f39EREQgKSkJ1tbW6N69Ox4/fiy2edU569ixIyZOnAigKJF74sQJJCUlvfF+q5OYmIguXbpg6tSpYmmI8lxTr0tXVxfLly/H4cOH4e3tDTMzM0ydOlXSRplUbdeuXYX6LiwsRH5+PnJzc3H58mVMmTIFDRo0gKurq9hm8eLFGDJkiLhvERERmDJlCsaNGye2uX37Nry9vfH48WOsX78eK1aswNmzZ+Hj44Nnz54BAI4dO4bIyEh06NABe/bswdq1a+Hv74+srCwAEEtkDB8+HCdOnMCJEyfg5uZW0cNFRJWIZSiIiIiI6D8l84c5Gu2/ZsC4Vzcioko1ffp0eHl5Yc2aNQCAoKAg5OTkYNq0aQCAZ8+eYfLkyRg3bhxmzJgBAAgMDISuri5Gjx6NsWPHwsLCAgsXLkRWVhZOnz4tjqT19/eHs7Mz5s2bhzlz/u/149mzZ9i7dy9MTU0BAHXq1IG/vz/279+PoKAg7N27F2fPnsWxY8fg5eUFAPDz84O9vT3MzMxU9iE8PBwTJkwQ479x4wZiY2MRHBwstsnIyMDRo0fRuHFjAMDdu3cxfPhwREdHY9KkSQAADw8PJCYmYtu2bRg5ciSAouRg8RGhyr/z8/MlMdSoIU0RmJubIzExURz9ef36dSxZsgQrVqxAVFQUACAgIAAvXrxAbGwsoqKioKWlhdOnT2PmzJno3bu3ZP+Ky83NxaxZs9ChQwcAgIuLCxwdHbF3716EhYWV65xZWVnByckJANCyZUuN3SBw3bp1iIyMxKJFizBkyBAA5b+mANXjDBTVIC4+X1tbWzzOSr6+vvDz88OhQ4ewYcMGcQSw0t27dwEUXXsl+xYEQZwueV6LnxcAcHBwwN69e8V6xQUFBZg6dSr69OmDRYsWAShKSOfm5uKrr77ChAkTYGFhgQULFiAvLw/JyckwNzcHALRo0QKNGjVCfHw8hg8fjtOnT8Pc3Bxz584Vt1e8NrSyHIaDg4P4NxFVLY4sJiIiIiIiomqroKAAKSkp6Nq1q2R+jx49xL9//vlnPH/+HD179kR+fr74CAgIQHZ2Ni5evAgASE5Ohq+vL8zNzcU22tra8PHxEX82r+Tr6ysmioGiRLC5uTlOnToFADhz5gzMzMzERDEAGBkZwd/fX+1+lIy/e/fuSElJkYzItbOzExPFAODs7AygKGGrZGZmBmtra9y+fVucN3XqVOjo6IiPyMhI3Lp1SzJPR0dHJab27dtLEpg//PCDGFvJ43j//n1xm25ubpg3bx6WL1+uthwIAGhpaUniVigUMDAwQFpaGoDynzNNi4uLQ2RkJFatWiUmiisSX2pqqtrjHBAQIJn37bffqmz7999/x/Hjx19ZmqFkkrlZs2aSvtPT0yXLZ8+ejTNnzuD06dNISkqCnZ0dgoODcefOHQDAH3/8gfT0dJXR+b1790Zubi5Onz4NoKgMhvK6V2rQoAGaNWuGH3/8EUDRtZCRkYGIiAgcOHAAL168KPN4E1HVq7Yjizdv3ow5c+bg8uXLMDAwgJ+fH2bPni1+q1iamzdvIjY2Fvv378fjx49Rs2ZNuLu7Y+PGjZI3eiIiIiKi1/H+4vc12v9Pw3/SaP9E1c2jR4+Qn58vjgRWsrGxEf9WJstK+3m7MsmZnp6OkydPqk2clvysWXJ7ynnKusX37t2DlZWV2jbqqIs/Ly8P6enp4r6UHJGsq6tb6vycnBxxOioqCiEhIeL0rl27EBcXhx07dqiNpXgMxaWnp0MQhFJH8N6+fRt169bFli1bEBMTg5iYGHzyySdwcXHBjBkzJGU6DAwMxPjVxV3ec6ZpCQkJcHBwkIyGBcofn52dncoXDR4eHlixYgVatmwpznN0dJS0EQQBH3/8Md555x0MHToUw4YNw4cffigZfausU5yWloZ69eqJ87ds2YLs7Gzs2rVLLJlRXL169eDu7i7G8v7776NWrVpYsGAB5s2bh8zMTACq5185nZGRAaCobEvz5s1V+rexsRHb+Pn5Yd26dfjf//6HoKAg6Ovro0ePHli4cKEkyUxE/xzVMlm8atUqDBo0CEDRC+rjx4+RkJCA48eP4/z586hVq5ba9a5evYr33nsPjx8/hlwuR8OGDZGbm4sDBw7g2bNnTBYTERERERFVM1ZWVqhRo4ZKTeEHDx6IfyuTUomJiSo/2Qf+L1Fnbm6O4OBgsXxFcXp6epLpkttTzrO1tQUA2Nra4tGjR2rbqPPw4UPUrl1bEr+Ojk6llFaws7OT3ADt4sWL0NXVFROGpSk5YtXc3BwymQw//vijSqIXKColARTt++rVq/HNN98gJSUF06dPR+/evXHlyhVJUrMs5T1nmrZ27VqMGTMGQUFBOHjwIExMTCoUX2nH2cXFpczjHx8fj+PHj+PIkSPw8vLC+vXr8fHHH+OXX34Ry0W0bdsWQNGI+OKjnpWjz8s7+trKygqWlpa4dOmSZN9Ke04pl5ubm6u9nh88eCCOegeAsLAwhIWFIT09Hdu3b8eoUaOgo6ODVatWlSs+Inq7ql2yODc3F+PHjwdQ9NOXrVu34u7du2jQoAEePnyIGTNmiDV1ShoxYgQeP34MX19fJCYmit++Zmdnq/3mmIiIiIiIiP7ZtLW14ebmhqSkJIwaNUqcv3XrVvHvd999F3K5HGlpaSrlHooLCAjA+vXr0bBhQxgaGpa53cOHD+PJkyfioKNDhw4hIyMDrVu3BlA0YjMrKwvHjh2Dt7c3AOD58+c4ePCg2prFSUlJaNGihTitvFmdMjH4T6AsofH48WN06tTple21tLTg4eGB6dOnY8eOHbh27Vq5k8XlPWfKpHXxkdSVycbGBgcPHoS3tzfat2+P5ORkGBoalju+1/H48WOMHTsWAwYMEK+d5cuXo2XLlli8eDE+/fRTAICXl5d4fENDQ8UvKirqwYMHSE9PF7+YcHFxgZWVFb7//nvJvn333XfQ1dVFq1atAACenp6Ii4tDZmYmatasCQC4cuUKfvvtN3z44Ycq27G0tERkZCT27NmDy5cvi/N1dHQ0dv6IqOKqXbL4zJkz4s89unfvDqDoW9I2bdrgwIEDKneLVcrMzERycjIAiKUnHjx4gMaNG2PatGkIDAx8OztARERERERElSomJgahoaEYOHAg+vTpg5SUFKxbt05cbmZmhqlTp2LcuHFIS0tD27Ztoa2tjRs3bmD79u1ISEiAXC7H6NGjsWHDBvj4+GDkyJFwcHDAo0ePcOrUKdjZ2UmS0cbGxmjfvj3Gjx+PrKwsREdHo1WrVggKCgJQVO/Xzc0N/fr1w8yZM2FmZoY5c+bA2NgYWlqqtw9au3YtDAwM4Obmhs2bN+PYsWPYvXu35g9eBTg7O2Po0KH44IMPMHbsWLRu3Rp5eXm4evUqDh8+jG3btuHJkycICgrCBx98ABcXF+Tm5mLx4sUwMzMrtWSDOuU9Zw0bNgQALF26FF26dIFcLkeTJk0qdb9r164tJow7d+6M3bt3lzu+1zF27FgAkNwUrlmzZhg+fDi++OIL9OrVSxwpvnHjRvj5+cHNzQ0jR46Eh4cHtLS0kJqaihUrVkBPT09lcNyff/6JkydPQhAE3LlzB3PnzoVMJsNHH30EoOgLmEmTJmHEiBGwtrZGhw4dcPLkScyePRuffvqpeOO+UaNGYc2aNWjXrh1iYmKQk5ODiRMnwsHBAREREQCAyZMn4/Hjx2jbti2sra1x4cIF7Nu3D6NHjxbjadiwIbZv3w4vLy8YGhrCxcVF5WZ+RPT2VLtkcfG6RMVrOilr5/z1119q1/vzzz/Fu4EmJibC0dER+vr6OHXqFNq3b4+ffvpJ/Aa4pJcvX+Lly5fi9NOnT994P4iIiIiIiKhydO7cGStWrMCXX36JzZs3o3Xr1tiyZYvkM96YMWNQu3ZtzJ8/H4sXL4aOjg6cnJwQEhIijk61sLDAyZMnMXHiRERHR+Px48ewtrZGmzZtVEaPdu3aFfb29hgyZAgyMzMRGBiIFStWiMtlMhm2b9+OwYMHIyoqCjVr1sSIESNw5coVnDt3TmUfNm3ahAkTJmDq1KmwtrZGXFwcOnTooJkD9gYWLVoEFxcXrFy5ElOnToWRkRFcXFzEm6Hp6+ujSZMmWLx4Mf766y8YGBjA3d0dycnJFS6pUZ5z1qJFC0yZMgXffPMN5syZgzp16iA1NbWydxsKhQKHDh2Ct7c3unXrhm3btpUrvoo6fvw44uPj8fXXX6scr6lTp+K7777DqFGjsGXLFgBA/fr1cfbsWcydOxfffvstYmNjIZPJUK9ePQQFBWHz5s0qJTc///xz8W9LS0s0a9ZM3Del4cOHQ0dHB/Pnz8eyZctga2uLKVOmSNatU6cOjh49is8++wz9+/eHtrY2AgMDMX/+fDHZ6+HhgYULF+K7777D06dPYW9vj7Fjx2LixIliP0uXLsXIkSPRvn17ZGdn4/Dhw2KJDSJ6+2SCMoNaTWzevBl9+/YFUHQnVuXPYMLCwrBhwwbo6emp/fnCzz//jPffL7rZSEBAAJKTk/H06VPUq1cPGRkZGDBgAOLj49Vuc8qUKWqLwj958kSsV0Sv1nLsWo32P61HW43277q/46sbvQHj9z7QaP8hl7drtP+P/PprrG/Hj7dorG8AcBvykUb7/zZFs/XQW/g7aLT/IxtVa/ZVpvcCgzTaf620sm98+iZs31N/g5rKsvDo1lc3egPBwcEa7f+v2yM02n8DF9WfN1amD65qrhbihIb1NdY3AMyN1+wN0PieWzZNv+fyBnf/LE+fPoWpqWm1+2yQk5ODmzdvioNoqGIUCgVCQkKwZMmSCq2Xm5uLRo0awcvLC2vWrNFQdERERKrK+95f7UYWFy8cX7yQuvJvBwf1SZPiNwpwd3eHTCaDqakpnJ2dcfLkyTK/eZwwYYLkJxJPnz5VW8CeiIiIiIiISCkuLg6FhYVwcXFBZmYmli9fjtTUVGzevLmqQyMiIlJLtVDSP5yHh4dYHychIQEAcPfuXZw8eRLA/42SatCgARo0aCB+01u3bl288847AICUlBQIgoCnT5/i6tWrACAuU0dPTw8mJiaSBxEREREREVFZ9PX1sWjRInTs2BFhYWF4/vw5du/eDXd396oO7V+toKAA+fn5pT6IiKh01W5ksa6uLmbMmIHBgwcjISEB9erVw+PHj/Hs2TNYWlpi/PjxAIruwAlAvBkeAMyaNQs9evTAgQMHUL9+fTx79gwZGRkwNDSUjBwmIiIiIiIiKk15a+KGh4cjPDxcs8GQCicnJ9y6davU5dWsGicR0VtV7ZLFABAVFQVDQ0PMmzcPly9fhr6+Prp164ZZs2aJdwRVR1mEfvr06bhw4QJMTU3RpUsXzJw5Ew0aNHiLe0BEREREREREmrBz507JTeqJiKj8qmWyGAD69++P/v1Lv6FWad8Udu7cGZ07d9ZUWERERERERERUhZo0aVLVIRARVVvVrmYxEREREREREREREVU+JouJiIiIiIiIiIiIiMliIiIiIiIiIiIiImKymIiIiIiIiIiIiIjAZDERERERERERERERAahR1QEQEREREVH5xV9aprG+Ixp/orG+iYiIiOifjyOLiYiIiIiI6F8nKysLMpkM8fHxVR1KmeLj4yGTyZCenl7VoVRL586dw5QpU/DixYsKrde2bVuEhISI01OmTIGRkZE4feTIEchkMvzyyy+VFmt5lYylpNTUVMhkMmzdurVC/ZZ3vSNHjmDGjBmlLj9x4gR69OgBW1tb6OrqwsLCAn5+fli5ciVyc3Ml+yGTycSHvr4+GjZsiDlz5qCwsFDSp7LNihUrVLZ34MABcXlqamqF9pmIKo4ji4mIiIiIiEikydHrr8LR7VRR586dQ2xsLIYNGwa5XP7a/QwaNAgdO3asxMg0x9bWFidOnICzs7NG+j9y5AjmzZuHzz//XGXZ8uXLMWzYMHh7e2P27NlQKBTIyMjAvn37MHLkSADA4MGDxfYGBgY4dOgQACA7OxuHDx/G+PHjUVhYiPHjx0v6NjIywubNmzFkyBDJ/E2bNsHIyAjPnz+v7F0lIjU4spiIiIiIiIjoPyQ+Ph4KhaJC62RnZ2smmH8Ie3t7eHh4vJVtyWQyHDly5LXX19PTQ5s2bWBubl55QZXD+fPnMWLECISHh+PQoUMIDw+Ht7c3unTpghUrVuDChQt45513JOtoaWmhTZs2aNOmDXx9fTF16lSEhoYiMTFRpf/Q0FAcP34cd+7cEee9fPkSiYmJ6NKli6Z3j4j+PyaLiYiIiIiIqNr7+uuvoVAoIJfL4e/vj2vXrqm0iY+PR9OmTaGvr4/atWsjJiYGBQUFkjZpaWkICwuDpaUlDAwM4O3tjZSUFEkbhUKBYcOGYe7cuahduzbkcjlCQ0Nx7949lb5CQkIgl8tRp04dLFiwAJ9++qnaRO21a9fg5+cHuVwOhUKB1atXS5ZHRETA1dUVP/zwA5o2bQoDAwP4+PggNTUVGRkZ6NWrF0xMTODk5IQtW7a85lH8PzKZDLNmzUJ0dDRq1aoFa2trAIAgCJg3bx6cnZ2hp6eHevXqYcGCBSr73atXL9jY2EBfXx+Ojo4YNWqUuFxZZuHChQvw9PSEXC6Hq6sr9u/frxJHWecsPj4eAwcOBABYWVlBJpNVOAleMqay7Nu3D3K5HJMnTy5XfJqirpxEbm4uRowYAXNzc5iZmWHw4MHYuHGj2tINOTk5GDZsGGrWrAlbW1t89tlnyM/PB1B0HGJjY/H333+LpR/atm0LAFi0aBG0tbXx1VdfQSaTqcT1zjvvwM/P75XxGxsbIy8vT2V+8+bN4ezsLLl+9+zZA0EQqs2ob6J/AyaLiYiIiIiIqFrbtWsXoqKi4Ovri6SkJPj7+6Nnz56SNvPnz8egQYMQFBSEnTt3Ijo6GosWLUJMTIzYJjMzE56enjh37hwWL16MhIQEGBoaws/PDw8fPpT0l5SUhKSkJCxfvhzLly/HqVOn0K1bN3G5IAgIDQ3FuXPnsHLlSixduhSJiYlqR1QCQJ8+fRAYGIikpCT4+voiMjIS+/btk7S5f/8+xowZg5iYGGzYsAHXr19H//790bt3bzRp0gQJCQlo2bIlwsLCcOvWrTc9rPjf//6Hq1evYtWqVVi/fj0AYOTIkfjiiy8wYMAA7N69GxEREYiOjpbUmg0PD8dvv/2GRYsWYd++fYiNjVVJoObl5aF///6IiIhAUlISrK2t0b17dzx+/Fhs86pz1rFjR0ycOBFAUSL3xIkTSEpKeuP9Vkc5unXq1KmIjY0tV3xv0/jx47Fy5UpER0djy5Ytass8KMXExEBLSwvfffcdhgwZgq+++grffPMNgKJyHJGRkTAwMMCJEydw4sQJLFtWVJrmyJEjcHd3r/CI5vz8fOTn5+PZs2fYsWMHEhIS0KNHD7Vt+/bti02bNonTmzZtQteuXaGvr1+hbRLR62PNYiIiIiIiIqrWpk+fDi8vL6xZswYAEBQUhJycHEybNg0A8OzZM0yePBnjxo0Tb9wVGBgIXV1djB49GmPHjoWFhQUWLlyIrKwsnD59WhxJ6+/vD2dnZ8ybNw9z5swRt/ns2TPs3bsXpqamAIA6derA398f+/fvR1BQEPbu3YuzZ8/i2LFj8PLyAgD4+fnB3t4eZmZmKvsQHh6OCRMmiPHfuHEDsbGxCA4OFttkZGTg6NGjaNy4MQDg7t27GD58OKKjozFp0iQAgIeHBxITE7Ft2zaxhmxhYaHkhmLKv5WjSZVq1JCmCMzNzZGYmCiOIr1+/TqWLFmCFStWICoqCgAQEBCAFy9eIDY2FlFRUdDS0sLp06cxc+ZM9O7dW7J/xeXm5mLWrFno0KEDAMDFxQWOjo7Yu3cvwsLCynXOrKys4OTkBABo2bIlLC0tVY5rZVi3bh0iIyOxaNEisZ5uea8pQPU4A0BBQYFkvra2ttrRuuWRkZGB5cuXY+LEiYiOjgZQdA0FBATg9u3bKu1bt26NRYsWiTEfPnwYW7duxZAhQ2Bvbw97e3uxfERxd+/eRatWrVT6K74fWlpa0NL6v3GJf//9N3R0dCTte/fuXWoiu2/fvpg8eTKuX78OGxsb7Nq1C9u2bavwDQyJ6PVxZDERERERERFVWwUFBUhJSUHXrl0l84uPXPz555/x/Plz9OzZUxzlmJ+fj4CAAGRnZ+PixYsAgOTkZPj6+sLc3Fxso62tDR8fH5w5c0bSv6+vr5goBooSwebm5jh16hQA4MyZMzAzMxMTxUDRDbz8/f3V7kfJ+Lt3746UlBTJiFw7OzsxUQxAvMFZQECAOM/MzAzW1taSJOHUqVOho6MjPiIjI3Hr1i3JvJIJPQBo3769JIH5ww8/iLGVPI73798Xt+nm5oZ58+Zh+fLlasuBAEVJxeJxKxQKGBgYIC0tDUD5z5mmxcXFITIyEqtWrZLceK288aWmpqo9zgEBAZJ533777WvHeOHCBeTk5KBz586S+aGhoWrbt2vXTjLdqFEj8bi/SsmE9i+//CLZj5IxGBgY4MyZMzhz5gx+/PFH/O9//8O+ffvw0Ucfqe3/nXfeQcuWLbFp0yZs27YNxsbGpT5niEgzOLKYiIiIiIiIqq1Hjx4hPz9fHAmsZGNjI/6dnp4OoCiJqY4yyZmeno6TJ0+qTZwqR7Aqldyecp6ybvG9e/dgZWWlto066uLPy8tDenq6uC8lRyTr6uqWOj8nJ0ecjoqKQkhIiDi9a9cuxMXFYceOHWpjKR5Dcenp6RAEodQRvLdv30bdunWxZcsWxMTEICYmBp988glcXFwwY8YMSZkOAwMDMX51cZf3nGlaQsL/Y+/O46qq1sePfw7IKMgMAg4ofTEMUXEIuYgIIqgIkTiTac7mbIiGJeI8U2oOlaLmdB1wwDknLHGI8mZe08ygSFMRcCgHUH5/8Dr75+YcFEzyUs/79eIVrL322s8eDuRz1nnWZmrVqqVTM7es8bm4uOi80dCsWTOWLFlCkyZNlLY6deo8c4zaZ67k81bas/a056U0Li4uOknl+vXrK+c3cOBAnX0MDAxo2rSp8vO//vUvCgsLGTNmDKNHj8bLy0tnn+7du7N8+XJq165Nly5dMDQ0fGpsQojnR5LFQgghhBBCCCEqLQcHB6pUqaJTU/jq1avK99oaq1u2bKFmzZo6Y2gTdba2toSFhSnlKx5nYmKi+rnk8bRtzs7OADg7O3P9+nW9ffS5du0arq6uqviNjIyeS2kFFxcXXFxclJ+/++47jI2NVUk8fUrOIrW1tUWj0fDFF1/oJHqhuJQEFJ/78uXL+eSTT8jIyGDKlCl07dqV8+fPU7du3TLFXNZ7VtFWrVrFmDFjCA0N5cCBA1SrVq1c8ZV2nevVq/fU619W2mfu+vXrqvtc2rP2rAIDA1m7di15eXnY2NgAYG5urpyHpaVlmcbx9PQE4OzZs3qTxV27diU2Npbvv/+eo0ePPqfohRBlJcliIYQQQgghhBCVlqGhIT4+PqSkpDBq1CilfdOmTcr3LVq0wNzcnOzsbJ1yD49r06YNn332GZ6enlStWvWJxz106BA3b95USlEcPHiQ3NxcXn31VaB49mh+fj5paWkEBAQAcOfOHQ4cOKC3ZnFKSgqNGzdWftYuVve/NKtSWw7gxo0bdOzY8an9DQwMaNasGVOmTGH79u1cvHixzMnist4zbdK6LDNjn4WTkxMHDhwgICCAdu3asW/fPqpWrVrm+P4KXl5emJqasm3bNho2bKi0b9269ZnGMzY25v79+zrtw4cPZ9WqVcTGxioL4j0LbYmO0t4IqVGjBiNHjuT69ev4+fk983GEEM9GksVCCCGEEEIIISq1+Ph4IiMj6dOnD926dSMjI4PVq1cr262trUlMTGTs2LFkZ2cTGBiIoaEhly5dYtu2bWzevBlzc3NGjx7NmjVraNWqFSNGjKBWrVpcv36dEydO4OLiokpGW1pa0q5dO8aNG0d+fj5xcXE0b96c0NBQoLjer4+PDz169GD69OlYW1sza9YsLC0tVQuAaa1atQozMzN8fHxYv349aWlp7Ny5s+IvXjl4eHjw9ttv88YbbxAbG8urr75KQUEBFy5c4NChQ2zdupWbN28SGhrKG2+8Qb169Xjw4AELFizA2tq61JIN+pT1nmlnqS5atIjXXnsNc3NzGjRo8FzP29XVVUkYR0REsHPnzjLH96wePnyoesNDS98Cc3Z2dgwePJipU6diampKo0aN2LhxIxcuXADQ+7w9iaenJ4WFhXzwwQf4+flRrVo16tWrR8OGDfnwww8ZOnQoly5dok+fPri5uXHnzh2++uorvv32W+X513r06BHHjx8Hihc11M40r1+/vvImij7z5s0rV8xCiOdHksVCCCGEEEIIISq1iIgIlixZwtSpU1m/fj2vvvoqGzZsUGb5AowZMwZXV1fmzZvHggULMDIywt3dnfDwcGV2qp2dHcePH2fChAnExcVx48YNHB0d8fX11Zk9GhUVRY0aNRg0aBB5eXmEhISwZMkSZbtGo2Hbtm0MHDiQAQMGYGNjw/Dhwzl//jynT5/WOYd169Yxfvx4EhMTcXR0ZNmyZbRv375iLtif8OGHH1KvXj2WLl1KYmIiFhYW1KtXj86dOwNgampKgwYNWLBgAT///DNmZmY0bdqUffv2lbukRlnuWePGjUlISOCTTz5h1qxZ1KxZk8zMzOd92ri5uXHw4EECAgJ4/fXX2bp1a5nie1b37t1TrunjVq9ejb+/v077jBkzKCgoYPr06Tx69IioqCjGjRvH0KFDVQsxlkXHjh0ZMmQI06dP59q1awQEBHD48GEABg8eTMOGDZk7dy6xsbHcuHEDS0tLGjVqxLRp03jrrbdUY929e5cWLVoAUKVKFWrWrElMTAwTJ07UWxtcCPHiaYqKiopedBCVza1bt7CysuLmzZtKvSLxdE1iV1Xo+JOjAyt0fK+9HZ7e6U+w9HujQscPP7etQsfvH9SzwsauM3hDhY0N4DNI/0q8z8vKjPL9z1l5NQ6uVaHjH16rW7PvefILCX16pz+herb70zs9I2c//YuGPC9JR3RnkzxPYWFhFTr+z78Mr9DxX6731tM7/QlvXKi4WojjPV+qsLEBZid/WaHjy9/cJ6vMf3N7vzKkwsb+u6qs/za4d+8eP/30E3Xq1MHU1PRFh1PpuLm5ER4ezsKFC8u134MHD6hfvz4tW7ZkxYoVFRSdEMXeeOMNvvjiC3766acXHYoQ4n9AWf/2y8xiIYQQQgghhBCiAixbtoxHjx5Rr1498vLyWLx4MZmZmaxfv/5Fhyb+Zo4cOcKXX35JkyZNePToEampqaxZs0bKOQghyk2SxUIIIYQQQgghRAUwNTVlxowZSlmEhg0bsnPnTpo2bfpiA/ube/jwIU/6EHWVKn+/VIiFhQWpqanMnDmTu3fvUqdOHebNm8fIkSNfdGhCiErm7/cbUgghhBBCCCGEqEBlrYnbq1cvevXqVbHBCB3u7u5kZWWVuv3vWI2zSZMmHDt27EWHIYT4G5BksRBCCCGEEEIIIf42duzYwf379190GEIIUSlJslgIIYQQQgghhBB/Gw0aNHjRIQghRKVl8KIDEEIIIYQQQgghhBBCCPHiSbJYCCGEEEIIIYQQQgghhCSLhRBCCCGEEEIIIYQQQkiyWAghhBBCCCGEEEIIIQSSLBZCCCGEEEIIIYQQQgiBJIuFEEIIIYQQQgghhBBCIMliIYQQQgghhBB/Q/n5+Wg0GpKTk190KE+UnJyMRqMhJyfnRYeikpubS1RUFDY2Nmg0GrZu3UpSUhK7du0q1ziZmZkkJCRw+fLlCor0z3nw4AF9+vTBwcEBjUZDUlLSiw7pL1WW50+j0TBnzpxyj12W/U6fPk1CQgJ//PGH3u3//e9/efPNN6lVqxYmJiZYWVnh5+fHnDlzuH37ts55aL+MjY1xd3dn/PjxOmO7ubmh0WgYN26czvF++OEHZYzDhw+X+5yF+Duo8qIDEEIIIYQQQgjxv+NIQKsXduxWaUde2LGF2rx58zh06BCrVq3C0dGRevXqMXLkSMLDw2nfvn2Zx8nMzGTSpEmEh4fj4uJSgRE/m1WrVrF69WpWrlyJu7s7bm5uLzqk/znp6enUrl27QsY+ffo0kyZNYujQoZibm6u2bd++na5du+Lp6cl7772Hh4cHv//+OwcPHmTy5MncuHGD6dOnq/bZs2cPVlZWPHjwgFOnTjFhwgTy8vJYsmSJqp+FhQUbNmxgxowZqvZ169ZhYWHBnTt3KuR8hagMZGaxEEIIIYQQQgjxD5KcnPzUpOj333+Pt7c3ERER+Pr6YmNjU+Fx3b17t8KPUdL333+Pi4sLPXv2xNfXl+rVqz/zWC8ifoCioiLu37+vd5ubm9ufnl3v6+uLs7PznxqjvH777TdiYmJo2bIlJ06coH///rRq1Yr27dszZ84czp8/j6+vr85+TZo0wdfXl4CAAMaMGcOgQYPYsmWLTr8OHTqQnZ1Nenq6qn3dunW89tprFXVaQlQKkiwWQgghhBBCCFHpffzxx7i5uWFubk5wcDAXL17U6ZOcnIy3tzempqa4uroSHx/Pw4cPVX2ys7OJiYnB3t4eMzMzAgICyMjIUPVxc3Nj6NChzJ49G1dXV8zNzYmMjOTKlSs6Y4WHh2Nubk7NmjWZP38+I0eO1JuovXjxIkFBQZibm+Pm5sby5ctV23v37o2Xlxeff/453t7emJmZ0apVKzIzM8nNzaVLly5Uq1YNd3d3NmzY8IxXsZhGo2Hz5s0cPXpU+Ui+m5sbWVlZLFq0SGl7WhLy8OHDtG7dGoBmzZop+2m3aTQadu7cSXR0NNWqVaNz585A8Wxff39/bG1tsbGxITAwkJMnT6rGTkhIwMLCgjNnzuDv74+5uTleXl7s3btX1W/79u00bdoUCwsLrK2tadq0qVJKw83Njblz5/LLL78osWVmZgKQlpaGn58fZmZm2Nvb89Zbb5Gbm6uMm5mZqVyD/v37Y2dnR/PmzZXrN3PmTOLj43F0dMTa2pqxY8dSVFTEgQMHaNSoERYWFgQHB/PLL7+o4r1//z7vvvsutWvXxsTEBE9PT9auXavqo30Wdu3aRcOGDTExMWHHjh1Pu63PrGQ5iaKiIhITE6levToWFhZ07tyZzz//XG/phkePHpGQkICTkxP29vb06dOH33//HSh+Pfbp0wdAKQOifW18/PHH3L59m/nz52NkZKQTU/Xq1YmMjHxq7JaWlhQUFOi029vb06ZNG9atW6e0ffPNN1y4cIFu3bo9dVwh/s4kWSyEEEIIIYQQolJLTU1lwIABtG7dmpSUFIKDg5XEo9a8efPo168foaGh7Nixg7i4OD788EPi4+OVPnl5efj7+3P69GkWLFjA5s2bqVq1KkFBQVy7dk01XkpKCikpKSxevJjFixdz4sQJXn/9dWV7UVERkZGRnD59mqVLl7Jo0SK2bNmid5YjQLdu3QgJCSElJYXWrVvTt29f9uzZo+rz22+/MWbMGOLj41mzZg0//vgjPXv2pGvXrjRo0IDNmzfTpEkTYmJiyMrKeubrmZ6eTkBAAI0bNyY9PZ309HRSUlKoXr060dHRSluHDh2eOI6Pjw+LFi0CYMWKFcp+jxswYADu7u6kpKTwzjvvAMWJ2F69erFx40bWrl1LrVq1CAgI4MKFC6p9CwoK6NmzJ7179yYlJQVHR0c6derEjRs3APjxxx+Jjo7mlVdeISUlhQ0bNtClSxfy8vKA4nvYtWtXqlevrsTm7OxMRkYGISEhWFpasnHjRmbOnMmOHTto166dzpsL48ePp6ioiHXr1jF79mylfeHChfz888+sXr2a0aNHM3v2bN555x1GjRrF+PHjWb16NRcuXKBv376q8bp06cLSpUsZM2YMqamphIWFERMTw+7du1X9Ll++zPDhwxk1ahR79uyhUaNGT7wXz9OCBQtISEigd+/ebNmyBXd3d/r166e378KFC/nhhx9YuXIl77//PmvXrmXy5MlA8ezeCRMmAMXlI7TPGRS/meDq6sorr7xSrtgePnxIYWEhf/zxB0eOHOHjjz8mOjpab9/u3buzceNGHj16BBTPKm7ZsiWurq7lOqYQfzdSs1gIIYQQQgghRKU2ZcoUWrZsyYoVKwAIDQ3l3r17SlLq9u3bTJw4kbFjxzJt2jQAQkJCMDY2ZvTo0cTGxmJnZ0dSUhL5+fmcPHkSR0dHAIKDg/Hw8GDOnDnMmjVLOebt27fZvXs3VlZWANSsWZPg4GD27t1LaGgou3fv5uuvvyYtLY2WLVsCEBQURI0aNbC2ttY5h169ejF+/Hgl/kuXLjFp0iTCwsKUPrm5uRw5ckRJoF2+fJlhw4YRFxfHe++9BxTP4N2yZQtbt25lxIgRQPHsTm1CTPszQGFhoSqGKlWKUwTashMajUb1UX8TExOcnJz0fvxfn2rVqlG/fn0AvLy8aNq0qU6fiIgIZs6cqWp7//33VbGGhIRw8uRJkpOTlfsHxYvTzZgxQ6mhXK9ePerUqcPu3buJiYnhm2++oaCggIULF2JpaQkUX1utxo0bU716dUxMTFTnNHXqVKpXr05qaqoyq7VmzZqEhoaya9cuOnbsqPRt1KgRn3zyic55ubi4sHr1auWY27dvZ/78+Zw9exZPT08Afv31V4YNG0Z+fj7W1tYcOnSI7du3s3fvXtq2bQsUP6dXrlxh4sSJtGvXThk/Ly+P3bt38+qrr6qOW/Keaq/h4+0GBgYYGDzb3MGHDx8yY8YM+vTpo9T7bdu2LTk5OXz66ac6/Z2dnVmzZg0AYWFhfP3112zatIkZM2bg4OCAu7s7UFw+wt7eXtnv8uXL1KxZU2e8x89Do9FgaGio2l6yjEhgYCDz58/Xey6vvfYaAwcO5NChQwQFBbF+/XoleS3EP5nMLBZCCCGEEEIIUWk9fPiQjIwMoqKiVO2PzyY8duwYd+7coXPnzhQWFipfbdq04e7du3z33XcA7Nu3j9atW2Nra6v0MTQ0pFWrVpw6dUo1fuvWrZVEMRQngm1tbTlx4gQAp06dwtraWkkUA0rpAX1Kxt+pUycyMjJUM1ldXFxUMy09PDwAaNOmjdJmbW2No6OjqrxBYmIiRkZGylffvn3JyspSten7qP9fQd/s5HPnzhEVFYWTkxOGhoYYGRlx/vx5nZnFBgYGqnN3c3PDzMyM7OxsALy9vTE0NKRHjx7s2LGDmzdvlimmo0ePEhkZqbombdu2xdrami+++OKp8UNxkvdxHh4euLi4KIlibRugxLtv3z5sbW0JCgpSPachISF88803qmfBzs5OJ1EM6NzTrKws+vbtq2pLTEws03XQJzs7mytXrhAREaFqL60kRMnrUL9+feV8n0ZbskQrJydHdR4NGzbU2efzzz/n1KlTpKen8+mnn/LDDz8QFRWlerNEq1q1anTo0IF169bx5Zdf8ttvv5U6C1mIfxKZWSyEEEIIIYQQotK6fv06hYWFykxgLScnJ+X7nJwcoLgsgj7axGpOTg7Hjx/XmzjVzoDUKnk8bZu2bvGVK1dwcHDQ20cfffEXFBSQk5OjnEvJGcnGxsaltt+7d0/5ecCAAYSHhys/p6amsmzZMrZv3643lr/S4/cJimdst23bFgcHB+bNm0ft2rUxNTWlX79+qnMCMDMzU66B1uPn7uHhQWpqKtOmTSMqKgoDAwPCwsJYuHAhtWrVKjWmvLw8nbi0sT5et1hf/Fr67klp908bb05ODrm5uaUm7q9cuUKNGjWeeNySb2pERETo3H8XFxe9+5aF9vku+WyX9lzrO+fSFuN7nIuLCz/88IPOWNrzmzRpEj/99JPOfg0bNlRmKPv6+mJtbU2nTp3YtWuX6hpode/enf79+wPFM8BtbW35+eefnxqfEH9nkiwWQgghhBBCCFFpOTg4UKVKFZ2awlevXlW+t7W1BWDLli16P9pep04dpV9YWJhSvuJxJiYmqp9LHk/b5uzsDBR//P769et6++hz7do1Va3Uq1evYmRkpPpo/rNycXFRJQi/++47jI2N9ZaF+KuVnD2anp5OdnY2qampqpmjN2/eVBKl5REWFkZYWBi3bt1iz549jBo1ij59+nDgwIFS97G1tdV7n65evao8S6XF/2fY2tri4OCgLMBX0uMJ2dKOW/KeGhsb4+bm9tzutfb5Lvlsl/ZcP6vAwEAOHjzIuXPnlNnYVapUUc7Dzs5Ob7K4JO2+Z8+e1Zss7tChA4WFhaxYsUIpGyLEP52UoRBCCCGEEEIIUWkZGhri4+OjLIyltWnTJuX7Fi1aYG5uTnZ2Nk2bNtX5srOzA4rLOfz3v//F09NTp0+DBg1U4x86dEhV1uDgwYPk5uYqpQGaNWtGfn4+aWlpSp87d+6UmqQsGb92sbqSNVlfpJIzlsu6D1Dm/e7evavaD4rLiGRmZpbruCVVq1aNLl260K1bN86dO/fEvv7+/mzdulVVH3f//v3k5+fj7+//p+J4kjZt2nD9+nUlkV/yq+Qs6hehRo0aVK9enW3btqnat27d+kzjlfZ89O/fH0tLS0aPHk1BQcEzjQ0oJWZKe9PF1NSUd999l8jIyFJLaQjxTyMzi4UQQgghhBBCVGrx8fFERkbSp08funXrRkZGhmqWoLW1NYmJiYwdO5bs7GwCAwMxNDTk0qVLbNu2jc2bN2Nubs7o0aNZs2YNrVq1YsSIEdSqVYvr169z4sQJXFxcGDVqlDKmpaUl7dq1Y9y4ceTn5xMXF0fz5s2VBdTatWuHj48PPXr0YPr06VhbWzNr1iwsLS31Li62atUqzMzM8PHxYf369aSlpbFz586Kv3jl4OnpycGDB9m/fz82NjbUqVNHSbSXxsPDA0NDQ5YvX06VKlVUs0P18fX1xcLCgrfffptx48bx66+/MnHiRNWs67JaunQp6enphIWF4ezszE8//cRnn32mLB5Xmvj4ePz8/AgPD2fYsGFcvXqVcePG0bx5c2UxvYoQEhJCx44dCQsLY+zYsXh7e/P7779z9uxZLl68qHchvedlx44dyiKAWl5eXrz88suqNkNDQ8aPH8/IkSNxcnKidevWHDp0iM8//xyg3AvnaWf+Llq0iNdeew1zc3MaNGhA9erVWb16NV27dsXX15dBgwZRr1497t27x5kzZzhw4IDemeYZGRlYWVlRWFjIuXPnmDhxIk5OTjo1wR83bty4csUsxN+dJIuFEEIIIYQQQlRqERERLFmyhKlTp7J+/XpeffVVNmzYoFoAbMyYMbi6ujJv3jwWLFiAkZER7u7uhIeHK7Mb7ezsOH78OBMmTCAuLo4bN27g6OiIr6+vTrIpKiqKGjVqMGjQIPLy8ggJCWHJkiXKdo1Gw7Zt2xg4cCADBgzAxsaG4cOHc/78eU6fPq1zDuvWrWP8+PEkJibi6OjIsmXLKjQx+SymTZvG4MGD6dSpE7dv32bFihX07t37ifvY29uzaNEiZs2axerVqyksLKSoqKjU/k5OTmzcuJF33nmHyMhIPDw8WLp0KTNnzix3vN7e3uzYsYPRo0dz48YNqlevTvfu3fWWGXlckyZN2LdvH+PHj6dTp05UrVqViIgI5s6dW+EzvTdt2sSMGTP46KOPyMrKwsrKCi8vL/r06VOhx33rrbd02iZPnsyECRN02ocNG0ZeXh4fffQRH374IW3atGH27Nl07dpVtehjWTRu3JiEhAQ++eQTZs2aRc2aNZVZ5JGRkWRkZDBz5kwSExO5evUqZmZmvPLKKwwfPpxBgwbpjBcWFgYUJ61dXV0JCgpi8uTJOuVDhBCl0xQ96be00OvWrVtYWVlx8+ZNqlWr9qLDqTSaxK6q0PEnRwdW6Phee/Wvcvu8WPq9UaHjh5/b9vROf0L/oJ4VNnadwRsqbGwAn0H9K3T8lRnl+x+m8mocXPriHM/D4bVP/p/pP8svJLRCx6+e7f70Ts/I2U//Qh7PS9KRTU/v9Cdo/2e6ovz8y/AKHf/lerr/qHme3rhQp8LGHu/5UoWNDTA7+csKHV/+5j5ZZf6b2/uVIRU29t9VZf23wb179/jpp5+oU6cOpqamLzqcSsfNzY3w8HAWLlxYrv0ePHhA/fr1admyJStWrKig6IT467333nvMnTuXGzduYGZm9qLDEULoUda//TKzWAghhBBCCCGEqADLli3j0aNH1KtXj7y8PBYvXkxmZibr169/0aEJ8czOnTvHZ599hp+fH8bGxhw+fJg5c+YwePBgSRQL8TcgyWIhhBBCCCGEEKICmJqaMmPGDOVj9Q0bNmTnzp1PrNlbmRQVFfHw4cNStxsYGJS7hq3432dubk56ejqLFy/m9u3buLq6EhsbS0JCwosOTQjxHEiyWAghhBBCCCGEKAdt8vdpevXqRa9evSo2mBdo5cqVT6ylO3HiREkg/g3Vrl2bgwcPvugwhBAVRJLFQgghhBBCCCGEKLeOHTty6tSpUre7uLj8hdEIIYR4HiRZLIQQQgghhBBCiHKzs7PDzs7uRYchhBDiOZLiQUIIIYQQQgghhBBCCCEkWSyEEEIIIYQQQgghhBBCksVCCCGEEEIIIYQQQgghkGSxEEIIIYQQQgghhBBCCCRZLIQQQgghhBBCCCGEEAJJFgshhBBCCCGEEEIIIYRAksVCCCGEEEIIIf6G8vPz0Wg0JCcnv+hQnig5ORmNRkNOTs6LDkUlNzeXqKgobGxs0Gg0bN26laSkJHbt2lWucTIzM0lISODy5csVFOmf8+DBA/r06YODgwMajYakpKQXHdJfauDAgdjZ2XH9+nVVe3Z2NpaWlrzzzjuq9t9//51p06bRuHFjLCwsMDU1xcPDg0GDBnHmzBlVX41Go/pycnKiY8eOOv3+Ss/yDAvxT1PlRQcghBBCCCGEEOJ/x+21n72wY1v2iHlhxxZq8+bN49ChQ6xatQpHR0fq1avHyJEjCQ8Pp3379mUeJzMzk0mTJhEeHo6Li0sFRvxsVq1axerVq1m5ciXu7u64ubm96JD+UjNmzGDr1q288847rFy5UmkfOnQotra2TJo0SWnLyckhKCiIrKwshg0bRsuWLTE2Nubs2bN88sknbNu2jStXrqjGHzZsGD169KCoqIjs7GymTZtG27ZtOXfuHNbW1n/VaSqSkpLK/QwL8U8jyWIhhBBCCCGEEOIfJDk5mYSEBDIzM0vt8/333+Pt7U1ERMRfFtfdu3cxMzP7y44Hxefp4uJCz549//RYLyJ+gKKiIh48eICJiYnONjc3NxISEujdu7fefW1sbJgzZw69evWiT58+BAYGsnXrVrZt28a2bduoWrWq0nfw4MFcunSJEydO8MorryjtrVu3ZsiQIXz66ac649eqVQtfX1/lZw8PDxo1asSxY8ckYSvE/ygpQyGEEEIIIYQQotL7+OOPcXNzw9zcnODgYC5evKjTJzk5GW9vb0xNTXF1dSU+Pp6HDx+q+mRnZxMTE4O9vT1mZmYEBASQkZGh6uPm5sbQoUOZPXs2rq6umJubExkZqTOrMjs7m/DwcMzNzalZsybz589n5MiRemevXrx4kaCgIMzNzXFzc2P58uWq7b1798bLy4vPP/8cb29vzMzMaNWqFZmZmeTm5tKlSxeqVauGu7s7GzZseMarWEyj0bB582aOHj2qlBBwc3MjKyuLRYsWKW1PK/Fx+PBhWrduDUCzZs2U/bTbNBoNO3fuJDo6mmrVqtG5c2egeLavv78/tra22NjYEBgYyMmTJ1VjJyQkYGFhwZkzZ/D398fc3BwvLy/27t2r6rd9+3aaNm2KhYUF1tbWNG3aVClD4Obmxty5c/nll1+U2LQJ9LS0NPz8/DAzM8Pe3p633nqL3NxcZdzMzEzlGvTv3x87OzuaN2+uXL+ZM2cSHx+Po6Mj1tbWjB07lqKiIg4cOECjRo2wsLAgODiYX375RRXv/fv3effdd6lduzYmJiZ4enqydu1aVR/ts7Br1y4aNmyIiYkJO3bseNptLdUbb7xB69atGTRoEDdu3GDYsGG89tprqjcKsrKy2Lx5M0OGDFElirUMDAzo37//U49laWkJQEFBgap9y5YtNGrUCFNTU1xcXBg9ejT37t1T9cnKyiI6OhorKyuqVq1KaGioTkmLp93v8j7DQvwTycxiIYQQQgghhBCVWmpqKgMGDKB3795069aNjIwMJfGoNW/ePMaOHcuoUaOYO3cu586dU5LFM2bMACAvLw9/f38sLCxYsGABVlZWLFiwgKCgIH744QccHR2V8VJSUqhduzaLFy8mLy+PuLg4Xn/9ddLT04Hi2Z6RkZFcvXqVpUuXYmVlxezZs8nKysLAQHfeVrdu3Rg4cCBxcXGsX7+evn374uLiQlhYmNLnt99+Y8yYMcTHx2NkZMTw4cPp2bMn5ubmBAQE0L9/fz7++GNiYmLw9fWldu3az3Q909PTiYuL4/bt23z00UcAmJiY0L59e/z9/RkzZgwA7u7uTxzHx8eHRYsW8fbbb7NixQpefvllnT4DBgwgJiaGlJQUDA0NgeJEbK9evXB3d+fBgwesW7eOgIAAvv32Wzw8PJR9CwoK6NmzJ8OHD+e9995j5syZdOrUiaysLOzs7Pjxxx+Jjo6me/fuTJ8+nUePHvGf//yHvLw8oPgezpw5kyNHjpCSkgKAs7MzGRkZhISEEBgYyMaNG7l69Srjxo3j7NmzHDt2TIkTYPz48XTo0IF169bx6NEjpX3hwoUEBgayevVqTpw4wcSJE3n48CH79+8nPj4eY2Njhg8fTt++fdm3b5+yX5cuXfjiiy+YOHEinp6e7Nq1i5iYGGxsbGjXrp3S7/LlywwfPpwJEyZQq1YtatWqVbabW4rFixfj7e1N06ZNyc/P58MPP1RtT0tLo6ioiLZt25Zr3EePHlFYWEhRURG//vorY8eOxd7ensDAQKXP9u3biY6Oplu3bsyYMYPvv/+ed999l59//plNmzYBcPv2bQIDAzEwMGDJkiWYmpoydepU5bmoWbNmme53eZ9hIf6JJFkshBBCCCGEEKJSmzJlCi1btmTFihUAhIaGcu/ePSZPngwUJ5omTpzI2LFjmTZtGgAhISEYGxszevRoYmNjsbOzIykpifz8fE6ePKkkhoODg/Hw8GDOnDnMmjVLOebt27fZvXs3VlZWANSsWZPg4GD27t1LaGgou3fv5uuvvyYtLY2WLVsCEBQURI0aNfTWau3Vqxfjx49X4r906RKTJk1SJYtzc3M5cuSIMrPz8uXLDBs2jLi4ON577z2geAbvli1b2Lp1KyNGjACKE3aPJzK13xcWFqpiqFKlOEXg6+urLGz3eAkBExMTnJycVG1PUq1aNerXrw+Al5cXTZs21ekTERHBzJkzVW3vv/++KtaQkBBOnjxJcnKycv+geHG6GTNmKOUM6tWrR506ddi9ezcxMTF88803FBQUsHDhQmVGa2hoqLJ/48aNqV69OiYmJqpzmjp1KtWrVyc1NRUjIyOg+P6Ghoaya9cuOnbsqPRt1KgRn3zyic55ubi4sHr1auWY27dvZ/78+Zw9exZPT08Afv31V4YNG0Z+fj7W1tYcOnSI7du3s3fvXiUpGxISwpUrV5g4caIqWZyXl8fu3bt59dVXVccteU+11/DxdgMDA503LOrVq0dMTAzLly9n6tSp1KxZU7Vdu0BhyfaSz5b2GdKKi4sjLi5O+dnW1paUlBTldQPFs8R9fX2VGdRhYWGYm5szcOBAzpw5Q4MGDVixYgVZWVmq69eqVStq1apFUlISc+fOLdP9Lu8zLMQ/kZShEEIIIYQQQghRaT18+JCMjAyioqJU7dHR0cr3x44d486dO3Tu3JnCwkLlq02bNty9e5fvvvsOgH379tG6dWtsbW2VPoaGhrRq1YpTp06pxm/durUq4RUUFIStrS0nTpwA4NSpU1hbWyuJYkApPaBPyfg7depERkaGqkyGi4uLqgSAdpZtmzZtlDZra2scHR1V5Q0SExMxMjJSvvr27UtWVpaqTZsU/at16NBBp+3cuXNERUXh5OSEoaEhRkZGnD9/ngsXLqj6GRgYqM7dzc0NMzMzsrOzAfD29sbQ0JAePXqwY8cObt68WaaYjh49SmRkpOqatG3bFmtra7744ounxg/FSd7HeXh44OLioiQ6tW2AEu++ffuwtbUlKChI9ZyGhITwzTffqJ4FOzs7nUQxoHNPs7Ky6Nu3r6otMTFRZ79r166RkpKCRqPh8OHDpV4bbRkRrYiICNXYX331lWr7iBEjOHXqFKdOnWLnzp20aNGCyMhIvv32WwDu3LnD6dOnVa9XgK5duwIo1/vo0aN4eXmprp+trS0hISFKn2e930IINZlZLIQQQgghhBCi0rp+/TqFhYWqEhEATk5Oyvc5OTlAcVkEfbSJ1ZycHI4fP643cVry4+olj6dt09YtvnLlCg4ODnr76KMv/oKCAnJycpRzKTkj2djYuNT2x+u9DhgwgPDwcOXn1NRUli1bxvbt2/XG8ld6/D5B8Yzttm3b4uDgwLx586hduzampqb069dPp4atmZmZcg20Hj93Dw8PUlNTmTZtGlFRURgYGBAWFsbChQufWLYhLy9PJy5trI/XLdYXv5a+e1La/dPGm5OTQ25ubqmJ+ytXrlCjRo0nHrfkmxoRERE699/FxUVnvzFjxmBkZMT69evp2rUrGzZsUBK2j++TnZ2tKgWSlJREQkICGRkZDBo0SGfcGjVqqGaUBwcHU6NGDRITE9m0aRP5+fkUFRXpnI+VlRUmJibK9X7SPdG+2fOs91sIoSbJYiGEEEIIIYQQlZaDgwNVqlTh2rVrqvarV68q39va2gLFi2iV/Bg9QJ06dZR+YWFhSvmKx5mYmKh+Lnk8bZuzszNQXPv2+vXrevvoc+3aNVxdXVXxGxkZYW9vr7d/ebi4uKgShN999x3GxsZ6y0L81UrOVE1PTyc7O5vU1FQaNmyotN+8eVNJlJZHWFgYYWFh3Lp1iz179jBq1Cj69OnDgQMHSt3H1tZW7326evWq8iyVFv+fYWtri4ODg7IgW0mPv6FQ2nFL3lNjY2Pc3NyeeK8PHTrEZ599xqpVq+jSpQtbtmxh9OjRtG/fXinnEBAQgEajYd++fQQFBSn7vvTSS0DxDOGyMDExoW7dupw9exYoTqprNBqd633z5k3u37+vXG9bW1vOnz+vM17Je/Is91sIoSZlKIQQQgghhBBCVFqGhob4+PgoC5RpaRfGAmjRogXm5uZkZ2fTtGlTnS87OzuguJzDf//7Xzw9PXX6NGjQQDX+oUOHVB9zP3jwILm5uUppgGbNmpGfn09aWprS586dO6UmrUrGv3nzZpo0aaJaTO1FKzljuaz7AGXe7+7du6r9oLiMSGZmZrmOW1K1atXo0qUL3bp149y5c0/s6+/vz9atW1V1fvfv309+fj7+/v5/Ko4nadOmDdevX1cS+SW/Ss6ifh4ePHjA4MGDad26NW+88QZQvBjk7du3lTrYALVr16ZTp04sWrToqdfvSe7du8ePP/6ovAliYWFBo0aNVK9XgH//+98AyvX29/fnzJkzqoRxXl4en3/+ud57Utr9fpZnWIh/GplZLIQQQgghhBCiUouPjycyMpI+ffrQrVs3MjIylMXFoHj2YmJiImPHjiU7O5vAwEAMDQ25dOkS27ZtY/PmzZibmzN69GjWrFlDq1atGDFiBLVq1eL69eucOHECFxcXRo0apYxpaWlJu3btGDduHPn5+cTFxdG8eXNlQa127drh4+NDjx49mD59OtbW1syaNQtLS0udxcUAVq1ahZmZGT4+Pqxfv560tDR27txZ8RevHDw9PTl48CD79+/HxsaGOnXqKIn20nh4eGBoaMjy5cupUqUKVapUeeIsV19fXywsLHj77bcZN24cv/76KxMnTlTNui6rpUuXkp6eTlhYGM7Ozvz000989tlnyuJxpYmPj8fPz4/w8HCGDRvG1atXGTduHM2bN1cW06sIISEhdOzYkbCwMMaOHYu3tze///47Z8+e5eLFi3oX0vuzZsyYwU8//cS2bduUNhcXFyZPnsyYMWPo3bs3jRo1AmDx4sUEBQXRokULhg4dSsuWLTE1NeXXX39l5cqVGBgYYG5urhr/559/5vjx40BxyZhFixZx48YNVcmKhIQEXnvtNWJiYoiJieH8+fO8++67dOrUSXmTpk+fPsyfP58OHTowZcoUTE1NmTp1KlWqVGHkyJFA2e73szzDQvzTyMxiIYQQQgghhBCVWkREBEuWLOHAgQO89tpr7Nu3jw0bNqj6jBkzhhUrVnDo0CE6depE586dWbZsGc2aNVNmbNrZ2XH8+HEaNWpEXFwcbdu2ZdSoUWRmZuosJhYVFUVERASDBg1i4MCBNGvWTDU7WKPRsG3bNho2bMiAAQMYOHAgHTp0oE2bNqqF8bTWrVvH3r17ee211zh48CDLli2r0MTks5g2bRo1atSgU6dONGvWjB07djx1H3t7exYtWsSRI0do2bIlzZo1e2J/JycnNm7cyLVr14iMjCQpKYmlS5cq5Q7Kw9vbm5ycHEaPHk3btm2ZOHEi3bt356OPPnrifk2aNGHfvn3cunWLTp06ERsbS4cOHdi9e3eFz/TetGkTgwYN4qOPPqJdu3b07duXffv20apVq+d+rIsXLzJ9+nTGjh1LvXr1VNuGDh1KgwYNGDx4MEVFRUDxvTx27BixsbGkpqby+uuvExoaSkJCAm5ubpw+fZr69eurxlmwYAEtWrSgRYsW9OrVi1u3bpGSkkLPnj2VPhEREWzcuJEzZ84QGRnJjBkzGDBgAJ999pnSx9LSksOHDyuvp549e2JjY0NaWppSWqYs9/tZnmEh/mk0RdpXvSizW7duYWVlxc2bN6lWrdqLDqfSaBK7qkLHnxwdWKHje+3Vv8rt82Lp90aFjh9+btvTO/0J/YN6Pr3TM6ozeMPTO/0JPoP6V+j4KzN0/zHwPDUOrtjFGg6v1a3Z9zz5hYRW6PjVs92f3ukZOfvpX6DmeUk6sunpnf6EsLCwCh3/51+GV+j4L9d7q0LHf+NCnQobe7xn+f/BWx6zk7+s0PHlb+6TVea/ub1fGVJhY/9dVdZ/G9y7d4+ffvqJOnXqYGpq+qLDqXTc3NwIDw9n4cKF5drvwYMH1K9fn5YtW7JixYoKik4IIYTQVda//VKGQgghhBBCCCGEqADLli3j0aNH1KtXj7y8PBYvXkxmZibr169/0aEJIYQQekmyWAghhBBCCCGEqACmpqbMmDFDWZytYcOG7Ny584k1eyuToqIiHj58WOp2AwMDvfWZhRBC/O+SZLEQQgghhBBCCFEO2uTv0/Tq1YtevXpVbDAv0MqVK+nTp0+p2ydOnEhCQsJfF5AQQog/TZLFQgghhBBCCCGEKLeOHTty6tSpUre7uLj8hdEIIYR4HiRZLIQQQgghhBBCiHKzs7PDzs7uRYchhBDiOaq0xYPWr1+Pj48PZmZm2NraEh0dzY8//vjEfXr37o1Go9H5qlGjxl8UtRBCCCGEEEIIIYQQQvxvqpQziz/99FP69esHQJ06dbhx4wabN2/m6NGj/Oc//6F69epP3N/V1VWVIHZ0dKzQeIUQQgghhBBCCCGEEOJ/XaWbWfzgwQPGjRsHQKdOnbh06RLnzp3D0tKSa9euMW3atKeO0a9fP44fP658bd++vaLDFkIIIYQQQgghhBBCiP9plS5ZfOrUKXJycoDiZDEUF8339fUFYM+ePU8dIykpCRMTE2rWrEm3bt2eWr5CCCGEEEIIIYQQQggh/u4qXbL4l19+Ub5/vHyEk5MTAD///PMT9zc2NsbZ2ZkaNWqQnZ3Nhg0baNasGb/++mup+9y/f59bt26pvoQQQgghhBBCCCGEEOLvpNIli0tTVFT01D7vvPMON27c4Ny5c/z4448sWbIEgLy8PFasWFHqftOnT8fKykr5qlmz5nOLWwghhBBCCCGEEEIIIf4XVLpk8eOJ2mvXrul8X6tWrVL39fLywsLCQvm5Z8+eyvdPmpE8fvx4bt68qXw9PrtZCCGEEEIIIcT/nvz8fDQaDcnJyS86lCdKTk5Go9Eo5Rb/V+Tm5hIVFYWNjQ0ajYatW7eSlJTErl27yjVOZmYmCQkJXL58uYIi/XMePHhAnz59cHBwQKPRkJSU9KJDEqV4lufv8OHDaDQavvrqK6VNo9EwZ84c5efAwEDCw8OfW5xldezYMQwMDPj00091tr322mvUrl2b33//XdW+e/du2rdvj4ODA0ZGRjg5OdGhQwfWrVvHo0ePlH69e/dGo9EoX1WrVqVhw4Z6j/VXOXz4cJnWGRMvXpUXHUB5NWvWDDs7O27cuMHmzZvp3r07ly9f5vjx4wCEhYUB8PLLLwMwdOhQhg4dCsDEiRMZOnQoDg4OAKxfv14Z183NrdRjmpiYYGJiUhGnI4QQQgghhBD/UxaO2fHCjj10bscXdmyhNm/ePA4dOsSqVatwdHSkXr16jBw5kvDwcNq3b1/mcTIzM5k0aRLh4eG4uLhUYMTPZtWqVaxevZqVK1fi7u7+xNyAeLGSkpLK/fzpk56eTu3atZ9TVM/Oz8+Pvn37EhcXR2RkJPb29gBs3bqVbdu2sX37dqpWrar0f/fdd5k+fTpRUVEsXLgQZ2dnrl69ytatW4mJicHW1pbQ0FClf926dVmzZg0At2/fJiUlhX79+lG1alW6dev2154sxcniOXPm8O677/7lxxblU+lmFhsbGyvvRGzevJm6devi6enJ7du3sbe3Z9y4cQCcP3+e8+fPq96dTUxMpHr16vzf//0fL730Ev379wegevXq9OvX768/GSGEEEIIIYQQ4i+WnJz81KTo999/j7e3NxEREfj6+mJjY1Phcd29e7fCj1HS999/j4uLCz179sTX15fq1as/81gvIn4oLst5//59vdvc3NzKPbv+RZ3HX8XX1xdnZ+cKP05CQgKBgYFP7DNz5kwMDAx45513ALhz5w7Dhg0jKiqKjh3//5tnO3fuZPr06UycOJEtW7bQtWtXAgIC6Ny5M2vWrCE9PV21rheAmZkZvr6++Pr6EhISwkcffUSjRo3YsmXLcz9X8fdS6ZLFAAMGDOCzzz6jUaNGXL58GY1Gw+uvv86xY8ee+E7l1KlT8fPz49atW/z666+89NJLDBo0iK+++krnRSWEEEIIIYQQovL4+OOPcXNzw9zcnODgYC5evKjTJzk5GW9vb0xNTXF1dSU+Pp6HDx+q+mRnZxMTE4O9vT1mZmYEBASQkZGh6uPm5sbQoUOZPXs2rq6umJubExkZyZUrV3TGCg8Px9zcnJo1azJ//nxGjhypN1F78eJFgoKCMDc3x83NjeXLl6u29+7dGy8vLz7//HO8vb0xMzOjVatWZGZmkpubS5cuXahWrRru7u5s2LDhGa9iMY1Gw+bNmzl69KjyMXY3NzeysrJYtGiR0va0JOThw4dp3bo1UPwpYe1+2m0ajYadO3cSHR1NtWrV6Ny5M1A829ff3x9bW1tsbGwIDAzk5MmTqrETEhKwsLDgzJkz+Pv7Y25ujpeXF3v37lX12759O02bNsXCwgJra2uaNm2qlDJwc3Nj7ty5/PLLL0psmZmZAKSlpeHn54eZmRn29va89dZb5ObmKuNmZmYq16B///7Y2dnRvHlz5frNnDmT+Ph4HB0dsba2ZuzYsRQVFXHgwAEaNWqEhYUFwcHBOmUu79+/z7vvvkvt2rUxMTHB09OTtWvXqvpon4Vdu3bRsGFDTExM2LHj2T4RoL2OJ0+epEWLFpiamrJo0SIAzp07R2RkJFZWVlStWpUOHTrw448/qvZfvnw5r7zyCmZmZtjZ2eHv78+pU6eU7RqNhlmzZpGQkICTkxP29vb06dNHp7zC0153z/L8laZkGYqS7t69S4cOHahbty6XLl0qU3zPytbWltmzZ7Ny5UoOHz7MhAkTyM/P58MPP1T1mzdvHs7OzkyYMEHvOM2bN6dx48ZPPZ6lpSUFBQWqtqysLKKjo5X7HBoaypkzZ1R9Hj16xJQpU3Bzc8PExISXX36ZpUuXqvpkZ2fTpUsXnJycMDU1pU6dOowaNQoofs4mTZrE77//rty/pyXSxYtT6cpQaPXs2VNVc7gkfQvevfvuuzLdXQghhBBCCCH+ZlJTUxkwYAC9e/emW7duZGRkKIlHrXnz5jF27FhGjRrF3LlzOXfunJIsnjFjBlC8+Lm/vz8WFhYsWLAAKysrFixYQFBQED/88INqklFKSgq1a9dm8eLF5OXlERcXx+uvv056ejpQ/G/SyMhIrl69ytKlS7GysmL27NlkZWVhYKA7b6tbt24MHDiQuLg41q9fT9++fXFxcVFKLQL89ttvjBkzhvj4eIyMjBg+fDg9e/bE3NycgIAA+vfvz8cff0xMTAy+vr7P/FH79PR04uLiuH37Nh999BFQXJ6xffv2+Pv7M2bMGADc3d2fOI6Pjw+LFi3i7bffZsWKFUq5yMcNGDCAmJgYUlJSMDQ0BIoTsb169cLd3Z0HDx6wbt06AgIC+Pbbb/Hw8FD2LSgooGfPngwfPpz33nuPmTNn0qlTJ7KysrCzs+PHH38kOjqa7t27M336dB49esR//vMf8vLygOJ7OHPmTI4cOUJKSgoAzs7OZGRkEBISQmBgIBs3buTq1auMGzeOs2fPcuzYMSVOKF7jSF/N2IULFxIYGMjq1as5ceIEEydO5OHDh+zfv5/4+HiMjY0ZPnw4ffv2Zd++fcp+Xbp04YsvvmDixIl4enqya9cuYmJisLGxoV27dkq/y5cvM3z4cCZMmECtWrWeuH7T0zx48IAePXowatQopk2bhp2dHZcuXcLPzw8vLy+Sk5MxMDBg6tSpBAcHc/78eUxMTEhLS6Nv37688847tG/fnj/++IOTJ0+Sn5+vGn/hwoW0bNmSlStXcuHCBWJjY3FycirX6y4lJaXcz9+zuHPnDh07duTKlSscPXoUV1fXcv1eeBZvvvkmK1asoFevXly+fJk5c+ZQo0YNZXthYSFffvkl0dHRVKlSvjReYWGhcl5btmzhyy+/ZNWqVcr227dvExgYiIGBAUuWLMHU1JSpU6cqrzftumGxsbF88MEHTJgwAT8/P1JTUxk0aBAFBQVK6Vdt/B9++CFOTk78/PPPSq3ofv36kZ2dzdq1azl48CAA1apVe/aLJipUpU0WCyGEEEIIIYQQAFOmTKFly5asWLECgNDQUO7du8fkyZOB4oTIxIkTGTt2rFLWMCQkBGNjY0aPHk1sbCx2dnYkJSWRn5/PyZMnlQRQcHAwHh4ezJkzh1mzZinHvH37Nrt378bKygooXow9ODiYvXv3Ehoayu7du/n6669JS0ujZcuWAAQFBVGjRg2sra11zqFXr16MHz9eif/SpUtMmjRJlSzOzc3lyJEjvPLKK0BxwnDYsGHExcXx3nvvAcUzeLds2cLWrVsZMWIEUDwr8PFEpvZ7bSJJS5uI0pad0Gg0+Pr6KttNTExwcnJStT1JtWrVqF+/PlC84HzTpk11+kRERDBz5kxV2/vvv6+KNSQkhJMnT5KcnKxaIOvBgwfMmDFDqWFbr1496tSpw+7du4mJieGbb76hoKCAhQsXYmlpCaCq6dq4cWOqV6+OiYmJ6pymTp1K9erVSU1NxcjICCi+v6GhoezatUtVHqBRo0Z88sknOufl4uLC6tWrlWNu376d+fPnc/bsWTw9PQH49ddfGTZsGPn5+VhbW3Po0CG2b9/O3r17adu2LVD8nF65coWJEyeqksV5eXns3r2bV199VXXckvdUew0fbzcwMFC9YVFQUMDUqVPp2rWr0vbmm29ia2vL/v37MTU1BYpr7NatW5dPP/2UIUOGcPLkSWVmrFaHDh10ju/s7KzUzg0LC+Prr79m06ZNSrK4LK+7xo0bl/v5K6+8vDzatWvHvXv3SEtLU2Ip6+8Ffa+zoqIi1bXXaDSqNxu0Jk+eTEBAAC+//DLDhg1Tbbtx4wb3799XErdaRUVFqk9GlLyvZ8+eVZ5frTFjxqgmXq5YsYKsrCzVc9mqVStq1apFUlISc+fOJScnhwULFhAbG0tCQgIAbdu2JScnh8TERAYPHoyhoSEnT55k+vTpqueoV69eANSoUYMaNWpgYGBQYfdPPD+VsgyFEEIIIYQQQggB8PDhQzIyMoiKilK1R0dHK98fO3aMO3fu0LlzZwoLC5WvNm3acPfuXb777jsA9u3bR+vWrbG1tVX6GBoa0qpVK9VH6wFat26tJIqhOBFsa2vLiRMnADh16hTW1tZKohhQSg/oUzL+Tp06kZGRoUoGubi4KIliQJll26ZNG6XN2toaR0dHVXmDxMREjIyMlK++ffuSlZWlaiuZVPqr6Esunjt3jqioKJycnDA0NMTIyIjz589z4cIFVT8DAwPVubu5uWFmZkZ2djYA3t7eGBoa0qNHD3bs2MHNmzfLFNPRo0eJjIxUXZO2bdtibW3NF1988dT4oTjJ+zgPDw9cXFyUhJy2DVDi3bdvH7a2tgQFBame05CQEL755hvVs2BnZ6eTKAZ07mlWVhZ9+/ZVtSUmJursV/I89u3bR0REBFWqVFHisLGxoXHjxsprwcfHh9zcXHr37s3+/fv5448/ynQt6tevr5yz9lhlfd1VlJycHKVkyqFDh1Szhcsa31tvvaW6zpMnTyYtLU3VVtps6KVLlyplULSlUErSlnDR2rx5s2rs4cOHq7a7u7tz6tQpTp06xZEjR5gyZQoLFixQ3f+jR4/i5eWlei5tbW0JCQlRnvUTJ05QUFCg82mNrl27cv36deV16ePjw5w5c1i8eLHeMkCi8pCZxUIIIYQQQgghKq3r169TWFio81FwJycn5Xvtwuc+Pj56x9AmVnNycjh+/LjexGnJJI++j547OjoqdYuvXLmCg4OD3j766Iu/oKCAnJwc5VxKzkg2NjYutf3evXvKzwMGDCA8PFz5OTU1lWXLlrF9+3a9sfyVHr9PUDxju23btjg4ODBv3jxq166Nqakp/fr1U50TFC/gpb0GWo+fu4eHB6mpqUybNo2oqCgMDAwICwtj4cKFTyzbkJeXpxOXNtbH6xbri19L3z0p7f5p483JySE3N7fUxP2VK1eU8gSlHbdkcjUiIkLn/pdc68nc3BwLCwtVW05ODklJSSQlJekcQxt3UFAQq1ev5oMPPiA0NBRTU1Oio6NJSkrC1tZW6a/vvB9fkK88r7uKcuHCBfLy8khKStJZzLGs8SUkJCglGQCWLVtGRkaGqraviYmJzhgHDhxgzZo1fPLJJ0yfPp1hw4YpdbWh+I0BExMTVYIdimc3a+93RESEzrimpqaq2fwBAQFcvXqVqVOnMnToUGxtbZ/4rGvfRNOWbSnZT/uz9jWxYcMG4uPjiY+PZ8iQIdSrV49p06bx+uuv64wv/rdJslgIIYQQQgghRKXl4OBAlSpVuHbtmqr96tWryvfaxNWWLVt0PsoNUKdOHaVfWFiYUr7icSWTPCWPp21zdnYGij96f/36db199Ll27Rqurq6q+I2MjLC3t9fbvzxcXFxUCcLvvvsOY2NjvWUh/molZ0ump6eTnZ1NamoqDRs2VNpv3rypquNaVmFhYYSFhXHr1i327NnDqFGj6NOnDwcOHCh1H1tbW7336erVq6okqL74/wxbW1scHBxUicLHPf6GQmnHLXlPjY2NcXNze+K91jeWra0tHTp0YMiQITrbtCU9AGJiYoiJiSEnJ4dt27YxatQojIyM+PTTT0s9nr5jlfV1V1H8/Pxo06YNo0ePxs7OjpiYmHLH5+bmplq8MjU1lQsXLjzx2t+/f58hQ4YQHBxM3759cXV1pV27dmzevJlOnToBxeVh/vWvf3HgwAEePnyolLGwsbFRxi75pklpPD09efDgAT/88AOvvvoqtra2nD9/Xqff48+69r/6fkc9vt3Z2Znly5fzySefkJGRwZQpU+jatSvnz5+nbt26ZYpP/G+QZLEQQgghhBBCiErL0NAQHx8fUlJSGDVqlNK+adMm5fsWLVpgbm5Odna2TrmHx7Vp04bPPvsMT09Pqlat+sTjHjp0iJs3byqlKA4ePEhubq5SGqBZs2bk5+eTlpZGQEAAULzI1IEDB/TWLE5JSaFx48bKz5s3b6ZJkyZ665u+KCVnLJd1H6DM+929e1e1HxSXEcnMzFSV4CivatWq0aVLF06cOMG6deue2Nff35+tW7cyd+5cpY7z/v37yc/Px9/f/5ljeJo2bdowa9YsjI2N8fb2rrDjlDWW7777jsaNG5fpGbS3t6dv377s2rWLc+fOlftYZXndPcvzVx4jR47k7t279O7dW5klXZ74nsX06dPJyspix44dQPGbG506dWLkyJGEhoYqM75Hjx5NeHg406ZNU+qTPwvtbGHtm1D+/v5s2rSJ8+fPU69ePaB4JvHnn3/OgAEDAGjevDlGRkZs3LhR9Tvq3//+N46OjqpFJ6G4PEyzZs2YMmUK27dv5+LFi9StW1dnRrn43yXJYiGEEEIIIYQQlVp8fDyRkZH06dOHbt26kZGRoSwuBsUfg09MTGTs2LFkZ2cTGBiIoaEhly5dYtu2bWzevBlzc3NGjx7NmjVraNWqFSNGjKBWrVpcv36dEydO4OLiokpGW1pa0q5dO8aNG0d+fj5xcXE0b95cWUCtXbt2+Pj40KNHD6ZPn461tTWzZs3C0tJStQiV1qpVqzAzM8PHx4f169eTlpbGzp07K/7ilYOnpycHDx5k//792NjYUKdOHezs7J64j4eHB4aGhixfvpwqVapQpUqVJ8609PX1xcLCgrfffptx48bx66+/MnHiRNWMxrJaunQp6enphIWF4ezszE8//cRnn32mLB5Xmvj4ePz8/AgPD2fYsGFcvXqVcePG0bx5c2UxvYoQEhJCx44dCQsLY+zYsXh7e/P7779z9uxZLl68qHchvYoyadIkmjVrRmhoKAMGDMDJyYnffvuNI0eO0LJlS7p3787EiRO5ceMGgYGBODo6cubMGfbs2cPo0aPLdayyvu6e5fkrr/Hjx3P37l169OiBqakp4eHh5fq9UB4XLlxgxowZxMXFqRKuSUlJeHp6kpCQwJw5c4DimtLjxo3j/fff5/Tp03Tt2hVnZ2du3rzJ0aNH+e2331QzvqH4jZfjx48r3x89epSPP/6YkJAQpXxGnz59mD9/Ph06dGDKlCmYmpoydepUqlSpwsiRI4HixPKwYcOYPXs2pqam+Pr6smvXLtauXcuCBQswNDTk5s2bhIaG8sYbb1CvXj0ePHjAggULsLa2Vsr/eHp6UlhYyAcffICfnx/VqlVTEtTif4ski4UQQgghhBBCVGoREREsWbKEqVOnsn79el599VU2bNigWgBszJgxuLq6Mm/ePBYsWKAsNhUeHq7MYrWzs+P48eNMmDCBuLg4bty4gaOjI76+vjozkqOioqhRowaDBg0iLy+PkJAQlixZomzXaDRs27aNgQMHMmDAAGxsbBg+fDjnz5/n9OnTOuewbt06xo8fT2JiIo6OjixbtqxCE5PPYtq0aQwePJhOnTpx+/ZtVqxYQe/evZ+4j729PYsWLWLWrFmsXr2awsJCioqKSu3v5OTExo0beeedd4iMjMTDw4OlS5cyc+bMcsfr7e3Njh07GD16NDdu3KB69ep0795dbzmBxzVp0oR9+/Yxfvx4OnXqRNWqVYmIiGDu3LkVPtN706ZNzJgxg48++oisrCysrKzw8vKiT58+FXrckl566SVOnjzJhAkTGDJkCHfu3MHZ2ZmAgABl1nOzZs1ISkri3//+N7du3aJGjRrExsYyYcKEch2rrK+7Z3n+nkViYiJ3794lOjqa1NRU2rRpU+bfC+UxZMgQatasyfjx41XtNWrUYNKkScTFxfHmm2/SoEEDoHgWsr+/P4sWLWLIkCHcvHkTW1tbmjRpwvLly+nWrZtqnEuXLtGiRQugeFZ27dq1iY2NZdy4cUofS0tLDh8+zOjRoxkwYAAPHz7kX//6F2lpaaqSPbNnz8ba2ppPPvmEKVOm4ObmxpIlSxg4cCBQXB+5QYMGLFiwgJ9//hkzMzOaNm3Kvn37lFnMHTt2ZMiQIUyfPp1r164REBDA4cOHn/n6iYqjKXrSb2mh161bt7CysuLmzZtUq1btRYdTaTSJXVWh40+ODqzQ8b326l/l9nmx9HujQscPP7etQsfvH9SzwsauM3hDhY0N4DOof4WOvzLD6umd/oTGwaUvzvE8HF775P+Z/rP8QkIrdPzq2RW3KIazn/4Fap6XpCObnt7pTwgLC6vQ8X/+ZfjTO/0JL9d7q0LHf+NCnQobe7znSxU2NsDs5C8rdHz5m/tklflvbu9XdGtTiierrP82uHfvHj/99BN16tTB1NT0RYdT6bi5uREeHs7ChQvLtd+DBw+oX78+LVu2ZMWKFRUUnRBCCKGrrH/7ZWaxEEIIIYQQQghRAZYtW8ajR4+oV68eeXl5LF68mMzMTNavX/+iQxNCCCH0kmSxEEIIIYQQQghRAUxNTZkxYwaZmZkANGzYkJ07dz6xZm9lUlRUxMOHD0vdbmBgoLc+sxDPgzx/QlQMedUIIYQQQgghhBDlkJmZWaYSFL169eK///0vf/zxB3/88Qfp6enKAnh/BytXrsTIyKjUr8TExBcdovgbk+dPiIohM4uFEEIIIYQQQghRbh07duTUqVOlbndxcfkLoxH/NPL8CVExJFkshBBCCCGEEEKIcrOzs8POzu5FhyH+oeT5E6JiSBkKIYQQQgghhBBCCCGEEJIsFkIIIYQQQgghhBBCCCHJYiGEEEIIIYQQQgghhBBIslgIIYQQQgghhBBCCCEEkiwWQgghhBBCCCGEEEIIgSSLhRBCCCGEEEIIIYQQQiDJYiGEEEIIIYQQf0P5+floNBqSk5NfdChPlJycjEajIScn50WHopKbm0tUVBQ2NjZoNBq2bt1KUlISu3btKtc4mZmZJCQkcPny5QqK9M958OABffr0wcHBAY1GQ1JS0osOSZTiWZ6/w4cPo9Fo+Oqrr5Q2jUbDnDlzlJ8DAwMJDw9/bnGWR8lYSurduzdeXl7lHres+yUkJHDs2DG9237//XemTZtG48aNsbCwwNTUFA8PDwYNGsSZM2dUfTUajerLycmJjh076vRLSEhAo9Hg6urKo0ePdI75r3/9C41GQ+/evct+suK5q/KiAxBCCCGEEEII8b/jy13/eWHH/lf7hi/s2EJt3rx5HDp0iFWrVuHo6Ei9evUYOXIk4eHhtG/fvszjZGZmMmnSJMLDw3FxcanAiJ/NqlWrWL16NStXrsTd3R03N7cXHZIoRVJSUrmfP33S09OpXbv2c4qqYr333nv8/vvvFTb+pEmTsLCwwM/PT9Wek5NDUFAQWVlZDBs2jJYtW2JsbMzZs2f55JNP2LZtG1euXFHtM2zYMHr06EFRURHZ2dlMmzaNtm3bcu7cOaytrZV+RkZG5OTkkJaWRmBgoNKelZVFeno6FhYWFXa+omwkWSyEEEIIIYQQQvyDJCcnk5CQQGZmZql9vv/+e7y9vYmIiPjL4rp79y5mZmZ/2fGg+DxdXFzo2bPnnx7rRcQPUFRUxIMHDzAxMdHZ5ubmRkJCQrlmar6o8/ir+Pr6/iXHSUhI4PDhwxw+fPiZx3B3d39+AZXD4MGDuXTpEidOnOCVV15R2lu3bs2QIUP49NNPdfapVauW6tp6eHjQqFEjjh07pkrwGxsb06ZNG9atW6dKFq9fv55XXnkFQ0PDijkpUWZShkIIIYQQQgghRKX38ccf4+bmhrm5OcHBwVy8eFGnT3JyMt7e3piamuLq6kp8fDwPHz5U9cnOziYmJgZ7e3vMzMwICAggIyND1cfNzY2hQ4cye/ZsXF1dMTc3JzIyUmemXXZ2NuHh4Zibm1OzZk3mz5/PyJEj9c5evXjxIkFBQZibm+Pm5sby5ctV27UfK//888/x9vbGzMyMVq1akZmZSW5uLl26dKFatWq4u7uzYcOGZ7yKxTQaDZs3b+bo0aPKx8rd3NzIyspi0aJFStvTSnwcPnyY1q1bA9CsWTNlP+02jUbDzp07iY6Oplq1anTu3Bkonu3r7++Pra0tNjY2BAYGcvLkSdXYCQkJWFhYcObMGfz9/TE3N8fLy4u9e/eq+m3fvp2mTZtiYWGBtbU1TZs2VUoZuLm5MXfuXH755RclNm0CPS0tDT8/P8zMzLC3t+ett94iNzdXGTczM1O5Bv3798fOzo7mzZsr12/mzJnEx8fj6OiItbU1Y8eOpaioiAMHDtCoUSMsLCwIDg7ml19+UcV7//593n33XWrXro2JiQmenp6sXbtW1Uf7LOzatYuGDRtiYmLCjh07nnZb9dJex5MnT9KiRQtMTU1ZtGgRAOfOnSMyMhIrKyuqVq1Khw4d+PHHH1X7L1++nFdeeQUzMzPs7Ozw9/fn1KlTynaNRsOsWbNISEjAyckJe3t7+vTpozNb9mmvu2d5/krztNIPd+/epUOHDtStW5dLly6VKb6Koq+cxBdffEHjxo0xNTXF29ub/fv306hRI71vCBw+fJjGjRtTtWpVmjdvropZ+1qMjY1Vrunhw4fJyspi8+bNDBkyRJUo1jIwMKB///5Pjd3S0hKAgoICnW3du3dn06ZNqm1r166lR48eTx1XVDxJFgshhBBCCCGEqNRSU1MZMGAArVu3JiUlheDgYCXxqDVv3jz69etHaGgoO3bsIC4ujg8//JD4+HilT15eHv7+/pw+fZoFCxawefNmqlatSlBQENeuXVONl5KSQkpKCosXL2bx4sWcOHGC119/XdleVFREZGQkp0+fZunSpSxatIgtW7awZcsWvefQrVs3QkJCSElJoXXr1vTt25c9e/ao+vz222+MGTOG+Ph41qxZw48//kjPnj3p2rUrDRo0YPPmzTRp0oSYmBiysrKe+Xqmp6cTEBBA48aNSU9PJz09nZSUFKpXr050dLTS1qFDhyeO4+PjoyQeV6xYoez3uAEDBuDu7k5KSgrvvPMOUJyI7dWrFxs3bmTt2rXUqlWLgIAALly4oNq3oKCAnj170rt3b1JSUnB0dKRTp07cuHEDgB9//JHo6GheeeUVUlJS2LBhA126dCEvLw8ovoddu3alevXqSmzOzs5kZGQQEhKCpaUlGzduZObMmezYsYN27drpvLkwfvx4ioqKWLduHbNnz1baFy5cyM8//8zq1asZPXo0s2fP5p133mHUqFGMHz+e1atXc+HCBfr27asar0uXLixdupQxY8aQmppKWFgYMTEx7N69W9Xv8uXLDB8+nFGjRrFnzx4aNWr0xHvxJA8ePKBHjx7Kcdq2bculS5fw8/MjNzeX5ORk1q5dy/Xr1wkODub+/ftAcUK9b9++tG/fnl27drFq1SqCg4PJz89Xjb9w4UJ++OEHVq5cyfvvv8/atWuZPHmysr0sr7tnef6exZ07d2jfvj0//vgjR48epW7duuX6vVDRrly5QlhYGJaWlvz73/8mNjaWwYMH8+uvv+r0/e233xg+fDixsbH8+9//5t69e0RFRSkJWu1rcdiwYco19fHxIS0tjaKiItq2bVuu2B49ekRhYSEFBQVkZmYyduxY7O3tVbOHtTp27Mj9+/fZt28fAP/973/59ttv6datWzmviKgIUoZCCCGEEEIIIUSlNmXKFFq2bMmKFSsACA0N5d69e0pC6vbt20ycOJGxY8cybdo0AEJCQjA2Nmb06NHExsZiZ2dHUlIS+fn5nDx5EkdHRwCCg4Px8PBgzpw5zJo1Sznm7du32b17N1ZWVgDUrFmT4OBg9u7dS2hoKLt37+brr78mLS2Nli1bAhAUFESNGjVU9Tu1evXqxfjx45X4L126xKRJkwgLC1P65ObmcuTIEWW23+XLlxk2bBhxcXG89957QPEM3i1btrB161ZGjBgBFCdxHl9MSvt9YWGhKoYqVYpTBL6+vsrCdo9/rNzExAQnJ6cyf4y/WrVq1K9fHwAvLy+aNm2q0yciIoKZM2eq2t5//31VrCEhIZw8eZLk5GTl/kFxknPGjBnKR9zr1atHnTp12L17NzExMXzzzTcUFBSwcOFCZZZjaGiosn/jxo2pXr06JiYmqnOaOnUq1atXJzU1FSMjI6D4/oaGhrJr1y46duyo9G3UqBGffPKJznm5uLiwevVq5Zjbt29n/vz5nD17Fk9PTwB+/fVXhg0bRn5+PtbW1hw6dIjt27ezd+9eJVEXEhLClStXmDhxIu3atVPGz8vLY/fu3bz66quq45a8p9pr+Hi7gYEBBgb/f+5gQUEBU6dOpWvXrkrbm2++ia2tLfv378fU1BQAPz8/6taty6effsqQIUM4efIktra2qiS5vgSus7Mza9asASAsLIyvv/6aTZs2MWPGDIAyve4aN25c7uevvPLy8mjXrh337t0jLS1NiaWsvxf0vc6KiopU116j0fypMgvz58+nSpUq7Ny5U3mm69Spo/yOeVzJ3xdVq1aldevWnDhxAn9/f+U6liwfoV2MsmbNmqrxSp6f9veFVlxcHHFxccrPtra2pKSkKL8jH6f9NMb69evp0KED69ato0WLFtSpU6dc10NUDJlZLIQQQgghhBCi0nr48CEZGRlERUWp2qOjo5Xvjx07xp07d+jcuTOFhYXKV5s2bbh79y7fffcdAPv27aN169bY2toqfQwNDWnVqpXqo/VQXLvz8SRIUFAQtra2nDhxAoBTp05hbW2tSuJoSw/oUzL+Tp06kZGRoZrJ6uLiovpYuIeHBwBt2rRR2qytrXF0dFSVN0hMTMTIyEj56tu3L1lZWao2bVL0r6YvuXju3DmioqJwcnLC0NAQIyMjzp8/rzOz2MDAQHXubm5umJmZkZ2dDYC3tzeGhob06NGDHTt2cPPmzTLFdPToUSIjI1XXpG3btlhbW/PFF188NX4oTvI+zsPDAxcXFyVRrG0DlHj37duHra0tQUFBquc0JCSEb775RvUs2NnZ6SSKAZ17mpWVRd++fVVtiYmJOvuVPI99+/YRERFBlSpVlDhsbGxo3Lix8lrw8fEhNzeX3r17s3//fv74448yXYv69esr56w9VllfdxUlJydHKZly6NAhJSlcnvjeeust1XWePHkyaWlpqrY/W4P41KlTtG7dWkkUA0rJlpJK/r7QvnHz+LV/Em2ZCq2IiAjVuXz11Veq7SNGjODUqVOcOnWKnTt30qJFCyIjI/n222/1jt+9e3e2bdvG3bt3Wb9+Pd27dy9TXKLiycxiIYQQQgghhBCV1vXr1yksLFQldwCcnJyU73NycoDi5JY+2sRqTk4Ox48f15s4LZnkKXk8bZu2bvGVK1dwcHDQ20cfffEXFBSQk5OjnEvJGcnGxsaltt+7d0/5ecCAAYSHhys/p6amsmzZMrZv3643lr/S4/cJimdst23bFgcHB+bNm0ft2rUxNTWlX79+qnMCMDMzU66B1uPn7uHhQWpqKtOmTSMqKgoDAwPCwsJYuHAhtWrVKjWmvLw8nbi0sT5et1hf/Fr67klp908bb05ODrm5uaUm7q9cuUKNGjWeeNySydWIiAid++/i4qLqY25ujoWFhaotJyeHpKQkkpKSdI6hjTsoKIjVq1fzwQcfEBoaiqmpKdHR0SQlJamSl/rOW1vKQnussr7uKsqFCxfIy8sjKSkJGxsb1bayxpeQkMDQoUOVn5ctW0ZGRgZLly5V2vQtQlgeV65c4f/+7/902vX9Xnna81Ya7fORnZ2tvKEBxTOsExISyMjIYNCgQTr71ahRQ/XpgeDgYGrUqEFiYiKbNm3S6R8aGoqRkRHvv/8+P/30E126dHliXOKvI8liIYQQQgghhBCVloODA1WqVNGpHXr16lXle23iasuWLTofrQaUjz7b2toSFhamqqeqVTLJo69W6bVr13B2dgaKP3p//fp1vX30uXbtGq6urqr4jYyMsLe319u/PFxcXFQJwu+++w5jY2O9ZSH+aiVnL6anp5OdnU1qaioNGzZU2m/evKkkSssjLCyMsLAwbt26xZ49exg1ahR9+vThwIEDpe5ja2ur9z5dvXpVZwZnyfj/DFtbWxwcHJQF+Ep6PCFY2nFL3lNjY2Pc3NyeeK/1jWVra0uHDh0YMmSIzrbHZ7XGxMQQExNDTk4O27ZtY9SoURgZGfHpp5+Wejx9xyrr666i+Pn50aZNG0aPHo2dnR0xMTHljs/NzU21eGVqaioXLlx4rq+z8v5eeRYBAQFoNBr27dtHUFCQ0v7SSy8BxXWdy8LExIS6dety9uxZvduNjIzo1KkT8+bNIzg4uNQ3QMRfT5LFQgghhBBCCCEqLUNDQ3x8fEhJSWHUqFFK++Mz2Vq0aIG5uTnZ2dk65R4e16ZNGz777DM8PT2pWrXqE4976NAhbt68qZSiOHjwILm5uUppgGbNmpGfn09aWhoBAQFAcZLlwIEDemsWp6Sk0LhxY+Vn7WJ1f6a+6fNWcsZyWfeBp89m1Lp7965qPyguI5KZman6SH15VatWjS5dunDixAnWrVv3xL7+/v5s3bqVuXPnKnVZ9+/fT35+Pv7+/s8cw9O0adOGWbNmYWxsjLe3d4Udp6yxfPfddzRu3LhMz6C9vT19+/Zl165dnDt3rtzHKsvr7lmev/IYOXIkd+/epXfv3sos6fLE91do1qwZS5cu5fbt20rS/ujRozoz3svKyMhI55rWrl2bTp06sWjRIt58801V6ZTyuHfvHj/++OMT9+/Xrx/Xrl2jf//+z3QMUTEkWSyEEEIIIYQQolKLj48nMjKSPn360K1bNzIyMpTFxaD449iJiYmMHTuW7OxsAgMDMTQ05NKlS2zbto3Nmzdjbm7O6NGjWbNmDa1atWLEiBHUqlWL69evc+LECVxcXFTJaEtLS9q1a8e4cePIz88nLi6O5s2bKwuotWvXDh8fH3r06MH06dOxtrZm1qxZWFpaqhYX01q1ahVmZmb4+Piwfv160tLS2LlzZ8VfvHLw9PTk4MGD7N+/HxsbG+rUqYOdnd0T9/Hw8MDQ0JDly5dTpUoVqlSp8sSZlr6+vlhYWPD2228zbtw4fv31VyZOnKiadV1WS5cuJT09nbCwMJydnfnpp5/47LPPlMXjShMfH4+fnx/h4eEMGzaMq1evMm7cOJo3b64splcRQkJC6NixI2FhYYwdOxZvb29+//13zp49y8WLF/UupFdRJk2aRLNmzQgNDWXAgAE4OTnx22+/ceTIEVq2bEn37t2ZOHEiN27cIDAwEEdHR86cOcOePXsYPXp0uY5V1tfdszx/5TV+/Hju3r1Ljx49MDU1JTw8vFy/F57FmTNndMo0WFhYqBa31Bo1ahQfffQRHTp0IDY2lvz8fCZNmoS9vb3e3ytP4+npybZt22jZsiVVq1alXr16WFpasnjxYoKCgmjRogVDhw6lZcuWmJqa8uuvv7Jy5UoMDAwwNzdXjfXzzz9z/PhxoLg80KJFi7hx44bekhVazZs3Z+vWreWOW1QsSRYLIYQQQgghhFD8q33Dp3f6HxMREcGSJUuYOnUq69ev59VXX2XDhg2qBcDGjBmDq6sr8+bNY8GCBcpiU+Hh4cosVjs7O44fP86ECROIi4vjxo0bODo64uvrqzMjOSoqiho1ajBo0CDy8vIICQlhyZIlynaNRsO2bdsYOHAgAwYMwMbGhuHDh3P+/HlOnz6tcw7r1q1j/PjxJCYm4ujoyLJlyyo0Mfkspk2bxuDBg+nUqRO3b99mxYoV9O7d+4n72Nvbs2jRImbNmsXq1aspLCykqKio1P5OTk5s3LiRd955h8jISDw8PFi6dCkzZ84sd7ze3t7s2LGD0aNHc+PGDapXr0737t31lhN4XJMmTdi3bx/jx4+nU6dOVK1alYiICObOnVvhM703bdrEjBkz+Oijj8jKysLKygovLy/69OlTocct6aWXXuLkyZNMmDCBIUOGcOfOHZydnQkICFBmPTdr1oykpCT+/e9/c+vWLWrUqEFsbCwTJkwo17HK+rp7lufvWSQmJnL37l2io6NJTU2lTZs2Zf698CxWrVrFqlWrVG3u7u5cvHhRp6+zszO7d+9m+PDhREdH4+7uzgcffMDQoUNVC26W1aJFixgxYgTt2rXj7t27HDp0iMDAQOzt7Tl27BgffPABGzduZP78+Tx8+JBatWrRunVrTp8+rSyYp7VgwQIWLFgAFL9B5+npSUpKCq+99lq54xIvlqboSb+lhV63bt3CysqKmzdvUq1atRcdTqXRJHbV0zv9CZOjAyt0fK+9+le5fV4s/d6o0PHDz22r0PH7B/WssLHrDN5QYWMD+Ayq2I+8rMwo/x/t8mgcXPriHM/D4bVP/p/pP8svJLRCx6+eXXGLYjj76V+g5nlJOqK7EMTzpG+2wvP08y/DK3T8l+u9VaHjv3GhToWNPd7zpQobG2B28pcVOr78zX2yyvw3t/crurUpxZNV1n8b3Lt3j59++ok6depgamr6osOpdNzc3AgPD2fhwoXl2u/BgwfUr1+fli1bsmLFigqKTgjxT/LDDz/w8ssvs3z5ct58880XHY74H1bWv/0ys1gIIYQQQgghhKgAy5Yt49GjR9SrV4+8vDwWL15MZmYm69evf9GhCSEqqfHjx+Pt7Y2LiwuXLl1i2rRpODs706lTpxcdmvibkGSxEEIIIYQQQghRAUxNTZkxYwaZmZkANGzYkJ07dz6xZm9lUlRUxMOHD0vdbmBg8Ex1VIUoi3/q8/fgwQPi4uK4evUqZmZmBAYGMnv2bCwsLF50aOJv4u/3qhFCCCGEEEIIISpQZmZmmUpQ9OrVi//+97/88ccf/PHHH6SnpysL4P0drFy5EiMjo1K/EhMTX3SI4m/sn/r8zZ07l59//pn79++Tn5/P1q1b+b//+78XHZb4G5GZxUIIIYQQQgghhCi3jh07curUqVK3u7i4/IXRiH8aef6EqBiSLBZCCCGEEEIIIUS52dnZYWdn96LDEP9Q8vwJUTGkDIUQQgghhBBCCCGEEEIISRYLIYQQQgghhBBCCCGEkGSxEEIIIYQQQgghhBBCCCRZLIQQQgghhBBCCCGEEAJJFgshhBBCCCGEEEIIIYRAksVCCCGEEEIIIf6G8vPz0Wg0JCcnv+hQnig5ORmNRkNOTs6LDkVx6dIlzM3Nee+993S2jRw5EisrKy5fvqxqT09PJzo6GmdnZ4yNjbGzsyMoKIilS5fy4MEDpV9CQgIajUb5MjU1xdPTk1mzZvHo0aMKPzd9Tp8+TUJCAn/88ccLOb4QQvwvkWSxEEIIIYQQQgghFHXr1iU+Pp5Zs2Zx/vx5pT0jI4OFCxcyZcoUXFxclPbFixfj7+/PjRs3mDlzJp9//jmffvopHh4ejBgxghUrVqjGNzMzIz09nfT0dHbv3k3nzp0ZN24cs2bN+svO8XGnT59m0qRJkiwWQgigyosOQAghhBBCCCHE/46pMdEv7Njxn216Ycf+J0lOTiYhIYHMzMxS+8TGxvLZZ58xaNAgDh06xMOHDxk4cCCNGzfm7bffVvr95z//Yfjw4fTq1Yvly5ej0WiUba+99hpjxozhl19+UY1tYGCAr6+v8nPr1q05c+YMW7ZsYdy4cc/vRIUQQpSbzCwWQgghhBBCCFHpffzxx7i5uWFubk5wcDAXL17U6ZOcnIy3tzempqa4uroSHx/Pw4cPVX2ys7OJiYnB3t4eMzMzAgICyMjIUPVxc3Nj6NChzJ49G1dXV8zNzYmMjOTKlSs6Y4WHh2Nubk7NmjWZP38+I0eOxM3NTSe2ixcvEhQUhLm5OW5ubixfvly1vXfv3nh5efH555/j7e2NmZkZrVq1IjMzk9zcXLp06UK1atVwd3dnw4YNz3gV/z9jY2MWL17M4cOHWblyJQsWLOD06dMsXboUA4P/n0r48MMPMTQ0ZO7cuapEsdb//d//ERQU9NTjWVpaUlBQoGrLzc3lrbfeUu6Fn58faWlpOvsuXbqUevXqYWJigpubG1OmTFGVtMjPz6d///64urpiampKzZo16datG1D8TPTp0wcABwcHNBqN3vsjhBD/FJIsFkIIIYQQQghRqaWmpjJgwABat25NSkoKwcHBdO7cWdVn3rx59OvXj9DQUHbs2EFcXBwffvgh8fHxSp+8vDz8/f05ffo0CxYsYPPmzVStWpWgoCCuXbumGi8lJYWUlBQWL17M4sWLOXHiBK+//rqyvaioiMjISCXBumjRIrZs2cKWLVv0nkO3bt0ICQkhJSWF1q1b07dvX/bs2aPq89tvvzFmzBji4+NZs2YNP/74Iz179qRr1640aNCAzZs306RJE2JiYsjKyvqzl5XAwEB69erFmDFjeO+99xg6dCg+Pj6qPocPH6Zp06bY2tqWa+zCwkIKCwu5ffs227dvZ/PmzURH//9Z7Q8fPqRdu3bs2LGDmTNnsnHjRiwsLAgJCVEl7xcsWMCgQYOU+9q7d28SEhIYO3as0mf06NGkpqYybdo09u7dy+zZszExMQGgQ4cOTJgwAYA9e/aQnp5OSkpKua+VEEL8XUgZCiGEEEIIIYQQldqUKVNo2bKlUhs3NDSUe/fuMXnyZABu377NxIkTGTt2LNOmTQMgJCQEY2NjRo8eTWxsLHZ2diQlJZGfn8/JkydxdHQEIDg4GA8PD+bMmaOqqXv79m12796NlZUVADVr1iQ4OJi9e/cSGhrK7t27+frrr0lLS6Nly5YABAUFUaNGDaytrXXOoVevXowfP16J/9KlS0yaNImwsDClT25uLkeOHOGVV14B4PLlywwbNoy4uDhlMbpmzZqxZcsWtm7dyogRIwB49OiRaqat9vvCwkJVDFWq6KYIpkyZwqpVq7C1tVWu5+MuX75M8+bNddofH9vAwEA1G/n333/HyMhI1b9r166qEhQ7d+7k5MmT7Nmzh9DQUOW6vPTSS0ybNo3Nmzfz8OFDEhMT6datGx9++CEAbdu25cGDB8ydO5fx48djZ2fHyZMn6dGjB2+++aYyvnZmsYODA+7u7gA0adIEe3t7nXMRQoh/EplZLIQQQgghhBCi0nr48CEZGRlERUWp2h+fpXrs2DHu3LlD586dlRmthYWFtGnThrt37/Ldd98BsG/fPlq3bo2tra3Sx9DQkFatWnHq1CnV+K1bt1YSxVCcCLa1teXEiRMAnDp1CmtrayVRDGBhYUFwcLDe8ygZf6dOncjIyFCVyXBxcVESxQAeHh4AtGnTRmmztrbG0dFRVSc4MTERIyMj5atv375kZWWp2komb7WWLl2KRqMhLy+Pb7/9Vm+fkuUnvvrqK9W4ERERqu1mZmacOnWKU6dO8cUXX/DBBx+wZ88e+vfvr/Q5evQo1apVUxLFAEZGRrz++ut88cUXAHz//ffk5OTozCLv2rUrDx484OTJkwD4+PiQnJzMnDlzlHsthBBCP5lZLIQQQgghhBCi0rp+/TqFhYXKTGAtJycn5fucnBwAnRIKWtrEak5ODsePH9ebONXOPtUqeTxtm7Zu8ZUrV3BwcNDbRx998RcUFJCTk6OcS8kZycbGxqW237t3T/l5wIABhIeHKz+npqaybNkytm/frjcWre+//57Zs2eTmJjInj17GDx4MF9//bVqBrKLiwvZ2dmq/erXr68k1wcOHKgzroGBAU2bNlV+/te//kVhYSFjxoxh9OjReHl5kZeXp/daOTk5kZubCxSXDdG2lewDKP0WLFiAra0tc+fOJTY2lpo1azJ+/HgGDx78xPMXQoh/IkkWCyGEEEIIIYSotBwcHKhSpYpOTeGrV68q32vr6W7ZsoWaNWvqjFGnTh2lX1hYmN5yC9oat1olj6dtc3Z2BsDZ2Znr16/r7aPPtWvXcHV1VcVvZGT0XMoiuLi44OLiovz83XffYWxsrErY6jNo0CDq1q3L2LFjiYyMxMfHhw8++IAxY8YofQIDA1m7di15eXnY2NgAYG5uroxtaWlZphg9PT0BOHv2LF5eXtja2uq9VlevXlXup/a/pd177XYrKyuSkpJISkrizJkzfPDBBwwZMgQvLy/VzG8hhBBShkIIIYQQQgghRCVmaGiIj4+PzqJkmzZtUr5v0aIF5ubmZGdn07RpU50vOzs7oLicw3//+188PT11+jRo0EA1/qFDh7h586by88GDB8nNzeXVV18FimsH5+fnk5aWpvS5c+cOBw4c0HseJePXLlZnaGj4DFflz0tOTubIkSMsXrwYY2NjGjRowIgRI0hISFDNJB4+fDiFhYXExsb+qeNpy0Nok+P+/v7cunWLffv2KX0KCwtJSUnB398fgHr16uHg4MDGjRtVY/373//G2NhYby3lBg0aMH/+fADOnTsH/P8Z2o/PxhZCiH8qmVkshBBCCCGEEKJSi4+PJzIykj59+tCtWzcyMjJYvXq1st3a2prExETGjh1LdnY2gYGBGBoacunSJbZt28bmzZsxNzdn9OjRrFmzhlatWjFixAhq1arF9evXOXHiBC4uLowaNUoZ09LSknbt2jFu3Djy8/OJi4ujefPmSo3ddu3a4ePjQ48ePZg+fTrW1tbMmjULS0tL1WJvWqtWrcLMzAwfHx/Wr19PWloaO3furPiLp8eNGzeIjY2lV69eBAYGKu0JCQls2LCBkSNHKsn4hg0b8uGHHzJ06FAuXbpEnz59cHNz486dO3z11Vd8++23qrrDULzA3vHjxwF48OABGRkZTJkyhfr16xMQEABAhw4daN68OTExMcyYMQMnJycWLFjAlStXePfdd4HiNwree+89hg8fjqOjI+3bt+f48ePMnDmTkSNHKm8C/Otf/yIqKgovLy8MDQ1ZtWoVxsbGyqxi7azmRYsW8dprr2Fubq7z5oAQQvxTSLJYCCGEEEIIIUSlFhERwZIlS5g6dSrr16/n1VdfZcOGDcosX4AxY8bg6urKvHnzWLBgAUZGRri7uxMeHq7MLLWzs+P48eNMmDCBuLg4bty4gaOjI76+vjoL0EVFRVGjRg0GDRpEXl4eISEhLFmyRNmu0WjYtm0bAwcOZMCAAdjY2DB8+HDOnz/P6dOndc5h3bp1jB8/nsTERBwdHVm2bBnt27evmAv2FGPHjuXRo0fMmTNH1W5hYcEHH3xAp06d2L17N+3atQNg8ODBNGzYUKkJfOPGDSwtLWnUqBHTpk3jrbfeUo1z9+5dWrRoAUCVKlWoWbMmMTExTJw4UakXbWhoyK5du3jnnXeIjY3l999/x8fHh3379tGkSRNlrGHDhmFkZMS8efP46KOPcHZ2JiEhQUkoQ3GyeNWqVfz0008YGBjQoEEDduzYoSSJGzduTEJCAp988gmzZs2iZs2aZGZmPvfrKoQQlYGmqKio6EUHUdncunULKysrbt68SbVq1V50OJVGk9hVFTr+5OjACh3fa2+HCh3f0u+NCh0//Ny2Ch2/f1DPChu7zuANFTY2gM+g/k/v9CeszLB6eqc/oXFwrQod//Ba3Zp9z5NfSOjTO/0J1bPdn97pGTn76V+g5nlJOrLp6Z3+hLCwsAod/+dfhlfo+C/Xe+vpnf6ENy7UqbCxx3u+VGFjA8xO/rJCx5e/uU9Wmf/m9n5lSIWN/XdVWf9tcO/ePX766Sfq1KmDqanpiw6n0nFzcyM8PJyFCxeWa78HDx5Qv359WrZsyYoVKyooOiGEEEJXWf/2y8xiIYQQQgghhBCiAixbtoxHjx5Rr1498vLyWLx4MZmZmaxfv/5FhyaEEELoJcliIYQQQgghhBCiApiamjJjxgylpEHDhg3ZuXMnTZs2fbGBCSGEEKWQZLEQQgghhBBCCFEOZa1n26tXL3r16lWxwQghhBDPke4SrEIIIYQQQgghhBBCCCH+cSRZLIQQQgghhBBCCCGEEEKSxUIIIYQQQgghhBBCCCEkWSyEEEIIIYQQQgghhBACSRYLIYQQQgghhBBCCCGEQJLFQgghhBBCCCGEEEIIIZBksRBCCCGEEEIIIYQQQggkWSyEEEIIIYQQ4m8oPz8fjUZDcnLyiw7liZKTk9FoNOTk5LzoUFRyc3OJiorCxsYGjUbD1q1bSUpKYteuXeUaJzMzk4SEBC5fvlxBkf45Dx48oE+fPjg4OKDRaEhKSnrRIYlSPMvzd/jwYTQaDV999ZXSptFomDNnjvJzYGAg4eHhzy3Osjp27BgGBgZ8+umnOttee+01ateuze+//65q3717N+3bt8fBwQEjIyOcnJzo0KED69at49GjR0q/3r17o9FolK+qVavSsGFDvcf6qxw+fJhp06Y9l7F69+6Nl5fXE49V8r6XRVn327p1Kx999FGp25/3fcrMzFT67NmzR+d4H3/8sbL9eajyXEYRQgghhBBCCPG3cGjlxy/s2K3f7P/Cji3U5s2bx6FDh1i1ahWOjo7Uq1ePkSNHEh4eTvv27cs8TmZmJpMmTSI8PBwXF5cKjPjZrFq1itWrV7Ny5Urc3d1xc3N70SGJUiQlJZX7+dMnPT2d2rVrP6eonp2fnx99+/YlLi6OyMhI7O3tgeJE5LZt29i+fTtVq1ZV+r/77rtMnz6dqKgoFi5ciLOzM1evXmXr1q3ExMRga2tLaGio0r9u3bqsWbMGgNu3b5OSkkK/fv2oWrUq3bp1+2tPluJE7Jw5c3j33Xcr/Fg+Pj6kp6fj6elZIeNv3bqVr776iiFDhuhsq8j7ZGFhwfr16wkLC1O1r1u3DgsLC+7cufNczk9mFgshhBBCCCGEEP8gycnJT02Kfv/993h7exMREYGvry82NjYVHtfdu3cr/Bglff/997i4uNCzZ098fX2pXr36M4/1IuIHKCoq4v79+3q3ubm5lXt2/Ys6j7+Kr68vzs7OFX6chIQEAgMDn9hn5syZGBgY8M477wBw584dhg0bRlRUFB07dlT67dy5k+nTpzNx4kS2bNlC165dCQgIoHPnzqxZs4b09HQcHR1VY5uZmeHr64uvry8hISF89NFHNGrUiC1btjz3c32etLNoMzMzn3mMatWq4evrq0q2/xUq+j5FRkaSkpLCvXv3lLYrV65w5MgRXnvtted2HpIsFkIIIYQQQghR6X388ce4ublhbm5OcHAwFy9e1OmTnJyMt7c3pqamuLq6Eh8fz8OHD1V9srOziYmJwd7eHjMzMwICAsjIyFD1cXNzY+jQocyePRtXV1fMzc2JjIzkypUrOmOFh4djbm5OzZo1mT9/PiNHjtSbqL148SJBQUGYm5vj5ubG8uXLVdu1H7v+/PPP8fb2xszMjFatWpGZmUlubi5dunShWrVquLu7s2HDhme8isU0Gg2bN2/m6NGjykeb3dzcyMrKYtGiRUrb05KQhw8fpnXr1gA0a9ZM9TFp7ce9d+7cSXR0NNWqVaNz585A8Wxff39/bG1tsbGxITAwkJMnT6rGTkhIwMLCgjNnzuDv74+5uTleXl7s3btX1W/79u00bdoUCwsLrK2tadq0qVLKwM3Njblz5/LLL78osWkTVGlpafj5+WFmZoa9vT1vvfUWubm5yrjahFZycjL9+/fHzs6O5s2bK9dv5syZxMfH4+joiLW1NWPHjqWoqIgDBw7QqFEjLCwsCA4O5pdfflHFe//+fd59911q166NiYkJnp6erF27VtVH+yzs2rWLhg0bYmJiwo4dO552W/XSXseTJ0/SokULTE1NWbRoEQDnzp0jMjISKysrqlatSocOHfjxxx9V+y9fvpxXXnkFMzMz7Ozs8Pf359SpU8p2jUbDrFmzSEhIwMnJCXt7e/r06aNTXuFpr7tnef5KU7IMRUl3796lQ4cO1K1bl0uXLpUpvmdla2vL7NmzWblyJYcPH2bChAnk5+fz4YcfqvrNmzcPZ2dnJkyYoHec5s2b07hx46cez9LSkoKCAlVbVlYW0dHRyn0ODQ3lzJkzqj6PHj1iypQpuLm5YWJiwssvv8zSpUtVfbKzs+nSpQtOTk6YmppSp04dRo0aBRQ/Z5MmTeL3339X7t/TEul/hr5yEjdv3iQmJgZLS0scHR159913mTt3rt7SDXl5efTo0QNLS0tq167NrFmzlG29e/dm5cqVnD17VjmX3r17AxV7nwDatWuHRqNRlWNZv349L730Ek2aNHnquGUlZSiEEEIIIYQQQlRqqampDBgwgN69e9OtWzcyMjKUxKPWvHnzGDt2LKNGjWLu3LmcO3dOSRbPmDEDKE4Q+Pv7Y2FhwYIFC7CysmLBggUEBQXxww8/qGaEpaSkULt2bRYvXkxeXh5xcXG8/vrrpKenA8WzPSMju8d+qgABAABJREFUI7l69SpLly7FysqK2bNnk5WVhYGB7rytbt26MXDgQOLi4li/fj19+/bFxcVF9XHj3377jTFjxhAfH4+RkRHDhw+nZ8+emJubExAQQP/+/fn444+JiYnB19f3mT9qn56eTlxcHLdv31bqcpqYmNC+fXv8/f0ZM2YMAO7u7k8cx8fHh0WLFvH222+zYsUKXn75ZZ0+AwYMICYmhpSUFAwNDYHiRGyvXr1wd3fnwYMHrFu3joCAAL799ls8PDyUfQsKCujZsyfDhw/nvffeY+bMmXTq1ImsrCzs7Oz48ccfiY6Opnv37kyfPp1Hjx7xn//8h7y8PKD4Hs6cOZMjR46QkpICgLOzMxkZGYSEhBAYGMjGjRu5evUq48aN4+zZsxw7dkyJE2D8+PF6a5EuXLiQwMBAVq9ezYkTJ5g4cSIPHz5k//79xMfHY2xszPDhw+nbty/79u1T9uvSpQtffPEFEydOxNPTk127dhETE4ONjQ3t2rVT+l2+fJnhw4czYcIEatWqRa1atcp2c/V48OABPXr0YNSoUUybNg07OzsuXbqEn58fXl5eJCcnY2BgwNSpUwkODub8+fOYmJiQlpZG3759eeedd2jfvj1//PEHJ0+eJD8/XzX+woULadmyJStXruTChQvExsbi5ORUrtddSkpKuZ+/Z3Hnzh06duzIlStXOHr0KK6uruX6vfAs3nzzTVasWEGvXr24fPkyc+bMoUaNGsr2wsJCvvzyS6Kjo6lSpXxpvMLCQuW8tmzZwpdffsmqVauU7bdv3yYwMBADAwOWLFmCqakpU6dOVV5vNWvWBCA2NpYPPviACRMm4OfnR2pqKoMGDaKgoIChQ4cCKPF/+OGHODk58fPPPyvJ2n79+pGdnc3atWs5ePAgUDz796/Up08fDh48yKxZs6hduzYff/xxqQn/QYMG8cYbb5CSksLWrVuJi4vD29ubsLAw3nvvPa5fv87333+vlI9wcHCo0PukZWJiwuuvv866det4/fXXgeISFN27dy/X8Z5GksVCCCGEEEIIISq1KVOm0LJlS1asWAFAaGgo9+7dY/LkyUBxQmTixImMHTtWWWApJCQEY2NjRo8eTWxsLHZ2diQlJZGfn8/JkyeVBFBwcDAeHh7MmTNHNbvs9u3b7N69GysrKwBq1qxJcHAwe/fuJTQ0lN27d/P111+TlpZGy5YtAQgKCqJGjRpYW1vrnEOvXr0YP368Ev+lS5eYNGmSKlmcm5vLkSNHeOWVV4DihOGwYcOIi4vjvffeA4pn8G7ZsoWtW7cyYsQIoHhW4OOJTO332gSFljbBoS07odFo8PX1VbabmJjg5OSkanuSatWqUb9+fQC8vLxo2rSpTp+IiAhmzpypanv//fdVsYaEhHDy5EmSk5NVC2Q9ePCAGTNmKDVs69WrR506ddi9ezcxMTF88803FBQUsHDhQiwtLQFUtUIbN25M9erVMTExUZ3T1KlTqV69OqmpqRgZGQHF9zc0NJRdu3apygM0atSITz75ROe8XFxcWL16tXLM7du3M3/+fM6ePavUUf31118ZNmwY+fn5WFtbc+jQIbZv387evXtp27YtUPycXrlyhYkTJ6qSxXl5eezevZtXX31VddyS91R7DR9vNzAwUL1hUVBQwNSpU+natavS9uabb2Jra8v+/fsxNTUFimvs1q1bl08//ZQhQ4Zw8uRJZWasVocOHXSO7+zsrCTVwsLC+Prrr9m0aZOSLC7L665x48blfv7KKy8vj3bt2nHv3j3S0tKUWMr6e0Hf66yoqEh17TUajerNBq3JkycTEBDAyy+/zLBhw1Tbbty4wf3795XErVZRUZHqkxEl7+vZs2eV51drzJgx9OzZU/l5xYoVZGVlqZ7LVq1aUatWLZKSkpg7dy45OTksWLCA2NhYEhISAGjbti05OTkkJiYyePBgDA0NOXnyJNOnT1c9R7169QKgRo0a1KhRAwMDA537V/I8tN8/fPhQde0MDQ2feQG3//73v6SkpLBq1SreeOMNoPhZ1PcGFkCnTp2Ucw0ODmbnzp1s2rSJsLAw3N3dcXBwICsrS3UuV69erbD79Lju3bsTGRnJnTt3uHr1KqdOneKzzz4r9+KPTyJlKIQQQgghhBBCVFoPHz4kIyODqKgoVXt0dLTy/bFjx7hz5w6dO3emsLBQ+WrTpg13797lu+++A2Dfvn20bt0aW1tbpY+hoSGtWrVSfbQeoHXr1kqiGIoTwba2tpw4cQKAU6dOYW1trSSKAaX0gD4l4+/UqRMZGRmqJIOLi4uSKAaUWbZt2rRR2qytrXF0dFSVN0hMTMTIyEj56tu3L1lZWaq2ksmKv4q+5OK5c+eIiorCyckJQ0NDjIyMOH/+PBcuXFD1MzAwUJ27m5sbZmZmZGdnA+Dt7Y2hoSE9evRgx44d3Lx5s0wxHT16lMjISNU1adu2LdbW1nzxxRdPjR+Kk7yP8/DwwMXFRbXglvb+aePdt28ftra2BAUFqZ7TkJAQvvnmG9WzYGdnp5MoBnTuaVZWFn379lW1JSYm6uxX8jz27dtHREQEVapUUeKwsbGhcePGymvBx8eH3Nxcevfuzf79+/njjz/KdC3q16+vnLP2WGV93VWUnJwcpWTKoUOHVLOFyxrfW2+9pbrOkydPJi0tTdVW2mzopUuXKmVQSqvVWzJRunnzZtXYw4cPV213d3fn1KlTnDp1iiNHjjBlyhQWLFiguv9Hjx7Fy8tL9Vza2toSEhKiPOsnTpygoKBA59MaXbt25fr168rr0sfHhzlz5rB48WK9ZYBKc+TIEdV5vPTSSwC89NJLqvYjR46UecyStPcpIiJCaTMwMFC98fM47Zs1UHzdPT09Vc/sk1TEfXpcUFAQlpaWbN26lXXr1uHj46P6xMXzUGlnFq9fv55Zs2Zx7tw5zMzMCAoKYubMmWX6GMLDhw9p2bKl8vGguLg45R0tIYQQQgghhBCVx/Xr1yksLNT5KLiTk5PyfU5ODlCczNBHm1jNycnh+PHjehOnJf+tqe+j546Ojkrd4itXruDg4KC3jz764i8oKCAnJ0c5l5Izko2NjUttf3wBpAEDBhAeHq78nJqayrJly9i+fbveWP5Kj98nKJ6x3bZtWxwcHJg3bx61a9fG1NSUfv36qc4JiheG0l4DrcfP3cPDg9TUVKZNm0ZUVBQGBgaEhYWxcOHCJ5ZtyMvL04lLG+vjdYv1xa+l756Udv+08ebk5JCbm1tq4v7KlStKeYLSjlsyuRoREaFz/11cXFR9zM3NsbCwULXl5OSQlJREUlKSzjG0cQcFBbF69Wo++OADQkNDMTU1JTo6mqSkJGxtbZX++s778QX5yvO6qygXLlwgLy+PpKQkncUcyxpfQkKCUpIBYNmyZWRkZKhq+5qYmOiMceDAAdasWcMnn3zC9OnTGTZsmGqWqJ2dHSYmJjrJyuDgYL1JUC1TU1PVbP6AgACuXr3K1KlTGTp0KLa2tk981rVvomnLtpTsp/1Z+5rYsGED/4+9+w6L4voeP/5ekC6IFAmIipVABBW7wYoIKvauaOwtdkRENIJR7BWNNYrGiA1RYwsxiuVjIySmGKOxoGJHsDdAfn/w2/m6LCigG6M5r+fZJ+zMnTtnykI8e+fckJAQQkJCGDx4MM7OzoSHhyvlEnJTtWpVjfv2+vXrtGzZku3bt2tMROjs7PzKfl7l+vXrGBgYaHzBB7n/Ps7pns1eXiU7XV6nl+nr69OxY0eioqJITEykd+/er4yrIN7LZPHXX39N3759AShdujR37txRiu//+uuvr529dNKkSUqiWAghhBBCCCHE+8vW1pZChQpx69YtjeU3b95Uflb/Y3vLli1ajwhD1r8r1e18fX2V8hUvy57kyb4/9TJ1csPe3p7bt2/n2CYnt27donjx4hrxGxgYYGNjk2P7/HBwcNBIEP7xxx8YGhrmWBbin5Z9FN7Ro0dJSkpix44dVKpUSVl+7949jTqueeXr64uvry/3799nz549jBw5kl69evHjjz/muo2VlVWO1+nmzZtaiZuCPhaf235tbW1zfZz85cRWbvvNfk0NDQ1xcnJ65bXOqS8rKyuaN2/O4MGDtdapS3oA+Pv74+/vT3JyMtu2bWPkyJEYGBjw9ddf57q/nPaV18+drtSpU4fGjRszatQorK2t8ff3z3d8Tk5OGpNX7tixg7Nnz77y3D979ozBgwfj5eVFnz59KF68OE2bNiU6Opp27doBWeVhPv30U3788UcyMjKUMhZFixZV+s7+pUluXFxceP78OX///Tc1a9bEysqKM2fOaLV7+V5X/zen31Evr7e3t2flypWsWLGChIQEJk+eTKdOnThz5gxlypTJNSZzc3ONc6QeWe3m5pbjZKAFYW9vT1paGvfu3dNIGOf2+7ggdHmdsuvSpYvy1MrLZT/elveuDMXz588ZO3YskPVYzoULFzh9+jTm5ubcunVLo35RTo4cOcKUKVPo2LHjPxGuEEIIIYQQQggd0tfXx8PDQ5mgTG3z5s3Kz7Vr18bU1JSkpCSqVaum9bK2tgayyjn8+eefuLi4aLVxc3PT6H///v0aZQ327dtHSkqK8g/76tWrc/fuXQ4ePKi0efjwYa5JyuzxR0dHU7Vq1Rzrm74r2Ucs53UbIM/bPXnyRGM7yPp3fG6P5ueVhYUFHTt2pHPnzpw+ffqVbT09Pdm6datGvdQffviBu3fv4unp+UZxvErjxo25ffu2ksjP/sproultxfLHH39QpUoVrThyGuFpY2NDnz598Pb2fu35zWlfefncFeT+y48RI0YwefJkevbsqfH7Iz+/F/Jr6tSpXLp0SZlI0tfXl3bt2jFixAgePnyotBs1ahTXrl17bc7rddSjhdVfQnl6evL7779rJIxTU1PZu3evcq/XqFEDAwMDNm3apNHXxo0bKVasmFYJBD09PapXr87kyZNJT09XSlJkH1H+T1Ina7dt26Yse/HiBd99912B+svtXtTVdcqudu3adO3alREjRhToS7TXee9GFsfHxyuPEKm/ZXFwcKBWrVr88MMP7NmzJ9dt79+/j7+/Pw4ODixdupSNGzfmaZ/Pnj3TuKHv37//BkcghBBCCCGEEOJtCgkJoVWrVvTq1YvOnTuTkJCgTC4GWY8UT5o0iTFjxpCUlESDBg3Q19fnwoULbNu2jejoaExNTRk1ahTffvst9evXZ/jw4ZQsWZLbt29z/PhxHBwcGDlypNKnubk5TZs2ZezYsdy9e5egoCBq1KihTKDWtGlTPDw86Nq1K1OnTsXS0pIZM2Zgbm6uMbmR2po1azAxMcHDw4P169dz8OBBdu7cqfuTlw8uLi7s27ePH374gaJFi1K6dGkl0Z6bChUqoK+vz8qVKylUqBCFChV65UjLWrVqUbhwYT7//HPGjh3L1atXmThxosaIxrxaunQpR48exdfXF3t7ey5evMjatWs16pHmJCQkhDp16uDn58fQoUO5efMmY8eOpUaNGspkerrg7e1NixYt8PX1ZcyYMbi7u/Po0SNOnTrFuXPncpxIT1fCwsKoXr06Pj4+9O/fHzs7O27cuMGBAweoW7cuXbp0YeLEidy5c4cGDRpQrFgxfv/9d/bs2cOoUaPyta+8fu4Kcv/lV3BwME+ePKFr164YGxvj5+eXr98L+XH27FmmTZtGUFCQRsJ13rx5uLi4EBoayqxZs4CsmtJjx47liy++4OTJk3Tq1Al7e3vu3bvHoUOHuHHjhsaIb8j64uXYsWPKz4cOHWL58uV4e3sr5TN69erF3Llzad68OZMnT8bY2JgpU6ZQqFAhRowYAWQlLIcOHcrMmTMxNjamVq1a7Nq1i3Xr1hEREYG+vj737t3Dx8eH7t274+zszPPnz4mIiMDS0lIp/+Pi4kJ6ejrz58+nTp06WFhYvFFpifv372sk9dXUtadf9sknn9CmTRuGDRvG48ePKVWqFMuWLePJkycFejrAxcWFlStXEhUVRfny5bGxscHJyUln1yk7lUql8TfubXvvksUvF+l/+REMda2Uy5cv57rt559/zqVLl9i/f3+Os8/mZurUqYSFheU/WCGEEEIIIYQQOteyZUuWLFnClClTWL9+PTVr1mTDhg0aj+8GBARQvHhx5syZQ0REhDLZlJ+fnzJi09rammPHjjF+/HiCgoK4c+cOxYoVo1atWloT0LVp0wZHR0cGDhxIamoq3t7eLFmyRFmvUqnYtm0bAwYMoH///hQtWpRhw4Zx5swZTp48qXUMUVFRBAcHM2nSJIoVK8ayZct0mpgsiPDwcAYNGkS7du148OABq1atomfPnq/cxsbGhkWLFjFjxgy++eYb0tPTyczMzLW9nZ0dmzZtYvTo0bRq1YoKFSqwdOlSpk+fnu943d3d+e677xg1ahR37tzho48+okuXLjmWE3hZ1apViY2NJTg4mHbt2mFmZkbLli2ZPXu2zkd6b968mWnTpvHVV19x6dIlihQpQsWKFenVq5dO95tduXLlOHHiBOPHj2fw4ME8fPgQe3t76tWrh7u7O5A1en7evHls3LiR+/fv4+joSGBgIOPHj8/XvvL6uSvI/VcQkyZN4smTJ7Rv354dO3bQuHHjPP9eyI/BgwdTokQJgoODNZY7OjoSFhZGUFAQn332mTJ6eerUqXh6erJo0SIGDx7MvXv3sLKyomrVqqxcuZLOnTtr9HPhwgVq164NZI2ELVWqFIGBgcrT+pD1pVdcXByjRo2if//+ZGRk8Omnn3Lw4EGNkj0zZ87E0tKSFStWMHnyZJycnFiyZAkDBgwAsuruurm5ERERweXLlzExMaFatWrExsYqo2NbtGjB4MGDmTp1Krdu3aJevXrExcUV+PxduXJFa9I9yJq0LycrV65kyJAhjB49GmNjYz777DMqVqzIwoUL873vPn36cOLECYYOHcqdO3f47LPPiIyMBHRznf5pqsxX/Zb+F1q/fj1dunQBYO/evcpMsv7+/nz77bcYGRnlOBQ8JiaGtm3bMn78eOUPg/rbg9dNcJfTyOISJUpw7949LCws3tqxfeiqBq7Raf9ftm+g0/4rfp/zLLdvi3md7jrt3+/0ttc3egP9GnXTWd+lB23QWd8AHgP76bT/1QlFXt/oDVTxyn1yjrchbt2r/2f6TdXx9tFp/x8l6W5SDPs6OU+I8LbMO6D9Tfnb5Ovrq9P+L18Z9vpGb+Bj57c/mcPLup8trbO+g13K6axvgJmR/9Np//I399Xe57+5PT/Rrk0pXu3+/fsUKVLkvfu3wdOnT7l48SKlS5fG2Nj4XYfz3nFycsLPzy/fSYbnz5/j6upK3bp1WbVqlY6iE0IIkRf16tVDX1+f/fv3v+tQ/hF5/dv/3o0sfvmbjZcLUat/zm1G019//RWAOXPmMHfuXI11c+bMYe3atVozFqoZGRn9Y0XVhRBCCCGEEEJ8GJYtW8aLFy9wdnYmNTWVxYsXk5iYyPr16991aEII8Z8SHR3N5cuXcXNz4/Hjx6xbt45Dhw5p1YsX72GyuHr16lhbW3Pnzh2io6Pp0qUL165dU+p7qEdJffzxxwAMGTKEIUOGKNs/fvxYq8+0tDSNwuFCCCGEEEIIIcSbMjY2Ztq0acrkbJUqVWLnzp2vrNn7PsnMzCQjIyPX9Xp6ejnWZxbibZD7T+RH4cKF+eabb/j77795/vw5H3/8MWvXrqV169bvOrR/nffuU2NoaKjMKhgdHU2ZMmVwcXHhwYMH2NjYKDU9zpw5w5kzZ5TJ8EJDQ8nMzNR4qQUFBXH37t1//FiEEEIIIYQQQrx/EhMT81SCokePHvz55588fvyYx48fc/ToUWUCvA/B6tWrMTAwyPU1adKkdx2i+IDJ/Sfyw8fHh59//pkHDx7w7Nkzfv31V7p1011pr/fZezeyGKB///6YmZkxa9YsTp8+jbGxMW3btmXatGk4ODi86/CEEEIIIYQQQogPXosWLYiPj891vfz7XOiS3H9C6Ea+k8W6+Gbmiy++yPc23bp1e+U3AHmZt+89m9tPCCGEEEIIIYT417C2tsba2vpdhyH+o+T+E0I38p0sDg0NRaVSvdUgCpIsFkIIIYQQQgghhBBCCPH2FKgMxdsckfu2E89CCCGEEEIIIYQQQggh8i/fyeL9+/frIg4hhBBCCCGEEEIIIYQQ71C+k8X169fXRRxCCCGEEEIIIYQQQggh3iG9dx2AEEIIIYQQQgghhBBCiHdPksVCCCGEEEIIIYQQQgghdJ8sfvToEdu2bWP27NnMmTOHrVu38vDhQ13vVgghhBBCCCHEf9jdu3dRqVRERka+61BeKTIyEpVKRXJy8rsORUNKSgpt2rShaNGiqFQqtm7dyrx589i1a1e++klMTCQ0NJRr167pKNI38/z5c3r16oWtrS0qlYp58+a965D+UQMGDMDa2prbt29rLE9KSsLc3JzRo0drLH/06BHh4eFUqVKFwoULY2xsTIUKFRg4cCC///67RluVSqXxsrOzo0WLFlrt/kkFuYdzo1KpmDVrVq7re/bsScWKFfPdb163Cw0N5ciRIzmu08V1Cg0NRaVSUbx4cV68eKG1z08//RSVSkXPnj3zfrDiXynfNYszMzP54YcfAChRogQuLi65tl29ejUBAQGkpqZqLDczM2PKlCkMHTo0v7sXQgghhBBCCKFDp6fse2f7dglp9M72LTTNmTOH/fv3s2bNGooVK4azszMjRozAz8+PZs2a5bmfxMREwsLC8PPzw8HBQYcRF8yaNWv45ptvWL16NWXLlsXJyeldh/SPmjZtGlu3bmX06NGsXr1aWT5kyBCsrKwICwtTliUnJ9OoUSMuXbrE0KFDqVu3LoaGhpw6dYoVK1awbds2rl+/rtH/0KFD6dq1K5mZmSQlJREeHk6TJk04ffo0lpaW/9RhKubNm5fve7igJkyYwKNHj3TWf1hYGIULF6ZOnToay3V5nQwMDEhOTubgwYM0aNBAWX7p0iWOHj1K4cKFdXa84p+T72TxiRMn8PX1RaVSsXnz5lyTxd988w29evVCpVKRmZmpse7hw4eMGDGCtLQ0Ro0aVbDIhRBCCCGEEEIIkW+RkZGEhoaSmJiYa5u//voLd3d3WrZs+Y/F9eTJE0xMTP6x/UHWcTo4ONCtW7c37utdxA9Zg/qeP3+OkZGR1jonJydCQ0NzHe1ZtGhRZs2aRY8ePejVqxcNGjRg69atbNu2jW3btmFmZqa0HTRoEBcuXOD48eN88sknyvKGDRsyePBgvv76a63+S5YsSa1atZT3FSpUoHLlyhw5cuQfSdgWVGhoKHFxccTFxRW4j7Jly769gPJBl9fJ0NCQxo0bExUVpZEsXr9+PZ988gn6+vq6OSjxj8p3GYq9e/cCUKxYMVq3bp1jm9TUVIYPHw5k/dIqV64cEyZMYPHixfTp04dChQqRmZnJhAkTuHr1asGjF0IIIYQQQgghgOXLl+Pk5ISpqSleXl6cO3dOq01kZCTu7u4YGxtTvHhxQkJCyMjI0GiTlJSEv78/NjY2mJiYUK9ePRISEjTaODk5MWTIEGbOnEnx4sUxNTWlVatWWqP1kpKS8PPzw9TUlBIlSjB37lxGjBiR4+jVc+fO0ahRI0xNTXFycmLlypUa69WPpu/duxd3d3dMTEyoX78+iYmJpKSk0LFjRywsLChbtiwbNmwo4FnMolKpiI6O5tChQ8qj6U5OTly6dIlFixYpy15X4iMuLo6GDRsCUL16dWU79TqVSsXOnTtp3749FhYWdOjQAcga7evp6YmVlRVFixalQYMGnDhxQqPv0NBQChcuzO+//46npyempqZUrFiR77//XqPd9u3bqVatGoULF8bS0pJq1aopZQicnJyYPXs2V65cUWJTJ9APHjxInTp1MDExwcbGht69e5OSkqL0m5iYqJyDfv36YW1tTY0aNZTzN336dEJCQihWrBiWlpaMGTOGzMxMfvzxRypXrkzhwoXx8vLiypUrGvE+e/aMcePGUapUKYyMjHBxcWHdunUabdT3wq5du6hUqRJGRkZ89913r7usuerevTsNGzZk4MCB3Llzh6FDh9K6dWuNLwouXbpEdHQ0gwcP1khAqunp6dGvX7/X7svc3ByAtLQ0jeVbtmyhcuXKGBsb4+DgwKhRo3j69KlGm0uXLtG+fXuKFCmCmZkZPj4+WqUSXne983sPv4mcykkcPnyYKlWqYGxsjLu7Oz/88AOVK1fOMZkfFxdHlSpVMDMzo0aNGhq/h9Sfo8DAQOVY4uLidH6dALp06cLmzZs11q1bt46uXbu+tl/xfsh3svjEiROoVCpatmyp3JzZrV69WqkPVbduXU6ePElYWBgDBgxg+fLl7Ny5Ez09PZ4+fco333zzxgchhBBCCCGEEOK/a8eOHfTv35+GDRsSExODl5eXknhUmzNnDn379sXHx4fvvvuOoKAgFixYQEhIiNImNTUVT09PTp48SUREBNHR0ZiZmdGoUSNu3bql0V9MTAwxMTEsXryYxYsXc/z4cdq2bausz8zMpFWrVpw8eZKlS5eyaNEitmzZwpYtW3I8hs6dO+Pt7U1MTAwNGzakT58+7NmzR6PNjRs3CAgIICQkhG+//Zbz58/TrVs3OnXqhJubG9HR0VStWhV/f38uXbpU4PN59OhR6tWrR5UqVTh69ChHjx4lJiaGjz76iPbt2yvLmjdv/sp+PDw8WLRoEQCrVq1StntZ//79KVu2LDExMUp93MTERHr06MGmTZtYt24dJUuWpF69epw9e1Zj27S0NLp160bPnj2JiYmhWLFitGvXjjt37gBw/vx52rdvzyeffEJMTAwbNmygY8eOSqnMmJgYOnXqxEcffaTEZm9vT0JCAt7e3pibm7Np0yamT5/Od999R9OmTbW+XAgODiYzM5OoqChmzpypLF+4cCGXL1/mm2++YdSoUcycOZPRo0czcuRIgoOD+eabbzh79ix9+vTR6K9jx44sXbqUgIAAduzYga+vL/7+/uzevVuj3bVr1xg2bBgjR45kz549VK5c+ZXX4nUWL17MxYsXqVatGnfv3mXBggUa6w8ePEhmZiZNmjTJV78vXrwgPT2dtLQ0EhMTGTNmDDY2NhqjUrdv30779u1xdXVl69atjBkzhiVLluDv76+0efDgAQ0aNOCXX35hyZIlrF27ljt37lCvXj0l4Z6X653fe/htun79Or6+vpibm7Nx40YCAwMZNGhQjoMob9y4wbBhwwgMDGTjxo08ffqUNm3aKAla9edo6NChyrF4eHjo9DqptWjRgmfPnhEbGwvAn3/+yW+//Ubnzp3zeUbEv1W+y1Cofzl/+umnubaJiYlRfp43bx6mpqYa6729venQoQMbNmxg//79jB07Nr9hCCGEEEIIIYQQAEyePJm6deuyatUqAHx8fHj69ClffvklkJVomjhxImPGjCE8PBzI+nepoaEho0aNIjAwEGtra+bNm8fdu3c5ceIExYoVA8DLy4sKFSowa9YsZsyYoezzwYMH7N69myJFigBZc/p4eXnx/fff4+Pjw+7du/n55585ePAgdevWBaBRo0Y4OjrmWKu1R48eBAcHK/FfuHCBsLAwfH19lTYpKSkcOHBAGTF47do1hg4dSlBQEBMmTACyRvBu2bKFrVu3Kk/8vnjxQmNCKvXP6enpGjEUKpSVIqhVq5Yysd3Lj6YbGRlhZ2ensexVLCwscHV1BaBixYpUq1ZNq03Lli2ZPn26xrIvvvhCI1Zvb29OnDhBZGSkcv0ga3K6adOmKY/JOzs7U7p0aXbv3o2/vz+//PILaWlpLFy4UBkp6ePjo2xfpUoVPvroI4yMjDSOacqUKXz00Ufs2LEDAwMDIOv6+vj4sGvXLlq0aKG0rVy5MitWrNA6LgcHB2VwnI+PD9u3b2fu3LmcOnVKKed59epVhg4dyt27d7G0tGT//v1s376d77//Xkn2eXt7c/36dSZOnEjTpk2V/lNTU9m9ezc1a9bU2G/2a6o+hy8v19PTQ09Pc+ygs7Mz/v7+rFy5kilTplCiRAmN9eoJCrMvz35vqe8htaCgIIKCgpT3VlZWxMTEKJ8byBolXqtWLWUEta+vL6ampgwYMIDff/8dNzc3Vq1axaVLlzTOX/369SlZsiTz5s1j9uzZebreud3DOX1GMjMzNc6bSqV6ozILc+fOpVChQuzcuVOJr3Tp0srvh5dl/6ybmZnRsGFDjh8/jqenpxJ/9vIRurxOauonKdavX0/z5s2Jioqidu3alC5dOl/nQ/x75XtksfrGK1++fI7r09LSlNHH5cuXp0qVKjm2a9WqFZD1DYQQQgghhBBCCFEQGRkZJCQk0KZNG43l7du3V34+cuQIDx8+pEOHDqSnpyuvxo0b8+TJE/744w8AYmNjadiwIVZWVkobfX196tevT3x8vEb/DRs21EikNGrUCCsrK44fPw5AfHw8lpaWGokgdemBnGSPv127diQkJGiMZHVwcNB4tLxChQoANG7cWFlmaWlJsWLFNMobTJo0CQMDA+XVp08fLl26pLFMnRT9p+U0svP06dO0adMGOzs79PX1MTAw4MyZM1oji/X09DSO3cnJCRMTE5KSkgBwd3dHX1+frl278t1333Hv3r08xXTo0CFatWqlcU6aNGmCpaUlhw8ffm38kJXkfVmFChVwcHDQmPdJff3U8cbGxmJlZUWjRo007lNvb29++eUXjXvB2tpaK1EMaF3TS5cu0adPH41lkyZN0tru1q1bxMTEKOUMcpP9CfOWLVtq9P3TTz9prB8+fDjx8fHEx8ezc+dOateuTatWrfjtt9+ArDmtTp48qfF5BejUqROAcr4PHTpExYoVNc6flZUV3t7eSpuCXm+A3r17axzHl19+ycGDBzWWvWkN4vj4eBo2bKgkigGl3Ep22T/r6i9d1PfK67zt65Rdly5d2LZtG0+ePGH9+vV06dIlT3GJ90O+RxY/fvwYQKPI+ct+/fVXnj17ppSgyE25cuUAlMcBhBBCCCGEEEKI/Lp9+zbp6enKSGA1Ozs75efk5GQgqyxCTtSJ1eTkZI4dO5Zj4jR7oij7/tTL1HWLr1+/jq2tbY5tcpJT/GlpaSQnJyvHkn1EsqGhYa7LX6732r9/f/z8/JT3O3bsYNmyZWzfvj3HWP5JL18nyBqx3aRJE2xtbZkzZw6lSpXC2NiYvn37atWwNTExUc6B2svHXqFCBXbs2EF4eDht2rRBT08PX19fFi5cSMmSJXONKTU1VSsudawv1y3OKX61nK5JbtdPHW9ycjIpKSm5Ju6vX7+Oo6PjK/eb/UuNli1bal1/BwcHre0CAgIwMDBg/fr1dOrUiQ0bNigJ25e3SUpKUpLckPU0eWhoKAkJCQwcOFCrX0dHR40R5V5eXjg6OjJp0iQ2b97M3bt3yczM1DqeIkWKYGRkpJzvV10T9Zc9Bb3ekDW6eciQIcr7ZcuWkZCQwNKlS5VlOU0gmB/Xr1/PceBlTr8TXnev5EZX1yk7Hx8fDAwM+OKLL7h48SIdO3Z8ZVzi/ZLvZLGpqSkPHz7MNcmr/hYVoGrVqrnv+P8Pec+pWLYQQgghhBBCCJEXtra2FCpUSKum8M2bN5Wf1SP3tmzZovV4NqA8Pm1lZYWvr69SvuJl2RNF2fenXmZvbw+Avb09t2/fzrFNTm7dukXx4sU14jcwMMDGxibH9vnh4OCgkSD8448/MDQ0zLEsxD8t+wjIo0ePkpSUxI4dO6hUqZKy/N69e0qiND98fX3x9fXl/v377Nmzh5EjR9KrVy9+/PHHXLexsrLK8TrdvHlTaxRobnM5FYSVlRW2trbKhGzZvZxUzG2/2a+poaEhTk5Or7zW+/fvZ+3ataxZs4aOHTuyZcsWRo0aRbNmzZRRsPXq1UOlUhEbG0ujRo2UbdUDAR8+fJinYzQyMqJMmTKcOnUKyEqKqlQqrfN97949nj17ppxvKysrzpw5o9Vf9mtSkOsNWaPSX554cseOHZw9e/atfkby+zuhIHR1nbIzMDCgXbt2zJkzBy8vr1y/vBDvp3yXoVD/cs7+bZXagQMHlJ9fVcdIXXD+5eH3QgghhBBCCCFEfujr6+Ph4aExdw6gMRqudu3amJqakpSURLVq1bRe1tbWQFY5hz///BMXFxetNm5ubhr979+/X+Mx93379pGSkqKUBqhevTp3797l4MGDSpuHDx/mmrTKHr96sro3qZH6tmUfsZzXbeD1IyLVnjx5orEdZJURSUxMzNd+s7OwsKBjx4507tyZ06dPv7Ktp6cnW7du1ahX+8MPP3D37l08PT3fKI5Xady4Mbdv31YS+dlf2UdRvw3Pnz9n0KBBNGzYkO7duwNZk0E+ePBAqYMNUKpUKdq1a8eiRYtee/5e5enTp5w/f175EqRw4cJUrlxZa/Tqxo0bAZTz7enpye+//66RME5NTWXv3r05XpPcrndB7uG3pXr16uzbt48HDx4oyw4dOqQ1Wj2vDAwMtI5FV9cpJ3379qVFixZKbXTx4cj3yOJatWpx+vRpli9fzvDhwzUej0hOTmbnzp0A2NjYvHI2TvVjAqVKlcpvCEIIIYQQQgghhCIkJIRWrVrRq1cvOnfuTEJCgjK5GGSNXpw0aRJjxowhKSmJBg0aoK+vz4ULF9i2bRvR0dGYmpoyatQovv32W+rXr8/w4cMpWbIkt2/f5vjx4zg4ODBy5EilT3Nzc5o2bcrYsWO5e/cuQUFB1KhRQ5lQq2nTpnh4eNC1a1emTp2KpaUlM2bMwNzcXGtyMYA1a9ZgYmKCh4cH69ev5+DBg8q/r/8tXFxc2LdvHz/88ANFixaldOnSSqI9NxUqVEBfX5+VK1dSqFAhChUq9MrRmrVq1aJw4cJ8/vnnjB07lqtXrzJx4kSNUdd5tXTpUo4ePYqvry/29vZcvHiRtWvXKpPH5SYkJIQ6derg5+fH0KFDuXnzJmPHjqVGjRrKZHq64O3tTYsWLfD19WXMmDG4u7vz6NEjTp06xblz53KcSO9NTZs2jYsXL7Jt2zZlmYODA19++SUBAQH07NlTye0sXryYRo0aUbt2bYYMGULdunUxNjbm6tWrrF69Gj09PUxNTTX6v3z5MseOHQOySsYsWrSIO3fuaJRCCA0NpXXr1vj7++Pv78+ZM2cYN24c7dq1U76k6dWrF3PnzqV58+ZMnjwZY2NjpkyZQqFChRgxYgSQt+tdkHv4VX7//XetRHfhwoU1JqZUGzlyJF999RXNmzcnMDCQu3fvEhYWho2NTY6/E17HxcWFbdu2UbduXczMzHB2dsbc3Fxn1ym7GjVqsHXr1nzHLf798n039ujRA4Bz587RunVr/vrrL9LS0vjtt99o27YtT548QaVS0bVr11f2c+DAAVQqFRUrVixY5EIIIYQQQgghBFl1WZcsWcKPP/5I69atiY2NZcOGDRptAgICWLVqFfv376ddu3Z06NCBZcuWUb16dWXEprW1NceOHaNy5coEBQXRpEkTRo4cSWJiotZkYm3atKFly5YMHDiQAQMGUL16dY3RwSqVim3btlGpUiX69+/PgAEDaN68OY0bN9aYGE8tKiqK77//ntatW7Nv3z6WLVum08RkQYSHh+Po6Ei7du2oXr0633333Wu3sbGxYdGiRRw4cIC6detSvXr1V7a3s7Nj06ZN3Lp1i1atWjFv3jyWLl2qPEafH+7u7iQnJzNq1CiaNGnCxIkT6dKlC1999dUrt6tatSqxsbHcv3+fdu3aERgYSPPmzdm9e7fOR3pv3ryZgQMH8tVXX9G0aVP69OlDbGws9evXf+v7OnfuHFOnTmXMmDE4OztrrBsyZAhubm4MGjSIzMxMIOtaHjlyhMDAQHbs2EHbtm3x8fEhNDQUJycnTp48qUzEphYREUHt2rWpXbs2PXr04P79+8TExNCtWzelTcuWLdm0aRO///47rVq1Ytq0afTv35+1a9cqbczNzYmLi1M+T926daNo0aIcPHhQKS2Tl+tdkHv4VdasWUOHDh00Xi/XPn6Zvb09u3fv5sGDB7Rv356pU6cyf/58ChcunOPvhNdZtGgRL168oGnTplSvXp2EhARAd9dJ/HeoMtWf+nxo06YN27Zty7FGTmZmJubm5pw+fTrHoumQ9aiAvb09aWlpLF26lL59++Y/8nfo/v37FClShHv37mFhYfGuw3lvVA1co9P+v2zfQKf9V/w+51lu3xbzOt112r/f6W2vb/QG+jXS3R+R0oM2vL7RG/AY2E+n/a9OyP8f/vyo4vXqyRreVNw67Zp9b1Mdbx+d9v9R0pvNWvwq9nVynqDmbZl3QHsyibcppxEPb9PlK8N02v/Hzr112n/3s6V11newS/7/wZsfMyP/p9P+5W/uq73Pf3N7fjJYZ31/qN7Xfxs8ffqUixcvUrp0aYyNjd91OO8dJycn/Pz8WLhwYb62e/78Oa6urtStW5dVq1bpKDohxPvi77//5uOPP2blypV89tln7zoc8YHL69/+fJehAFi7di3t2rUjNjZWa52pqSnr1q3LNVEMsGTJEp4/f45KpdL5P1SFEEIIIYQQQoh3YdmyZbx48QJnZ2dSU1NZvHgxiYmJrF+//l2HJoR4B4KDg3F3d8fBwYELFy4QHh6Ovb097dq1e9ehCaEoULLYzMyMPXv2sGvXLrZt28bly5cxNDTEw8ODPn36vHaG0suXL9OuXTuKFy9eoNlMhRBCCCGEEEKIfztjY2OmTZumTM5WqVIldu7c+cqave+TzMxMMjIycl2vp6dXoFqsQnyonj9/TlBQEDdv3sTExIQGDRowc+ZMChcu/K5DE0JRoGSxWrNmzQpUQ2nx4sVvslshhBBCCCGEEOKdUSd/X6dHjx7KvD8fotWrV9OrV69c10+cOJHQ0NB/LiAh/uVmz57N7Nmz33UYQrzSGyWLhRBCCCGEEEII8d/UokUL4uPjc13/qvKUQggh/p0KlCzevXs3ISEhAIwePZquXbvmedt169Yxa9YsAGbMmEHjxo0LEoIQQgghhBBCCCHeIWtra6ytrd91GEIIId6ifBcPyszMZOTIkfz666/Y2trmK1EM0KVLF2xsbDh58iQBAQH53b0QQgghhBBCCCGEEEIIHch3snjfvn2cPXsWPT095s6dm+8dqlQq5s2bh76+Pn/88QcHDhzIdx9CCCGEEEIIIYQQQggh3q58J4ujo6MB8Pb2xtXVtUA7dXV1xcfHB4DNmzcXqA8hhBBCCCGEEEIIIYQQb0++k8UnTpxApVLRokWLN9qxn58fmZmZHDt27I36EUIIIYQQQgghhBBCCPHm8p0svnTpEgDOzs5vtOMKFSoAkJiY+Eb9CCGEEEIIIYQQQgghhHhz+U4W37t3DwArK6s32rF6+/v3779RP0IIIYQQQgghhBBCCCHeXL6TxRYWFgDcvXv3jXas3t7c3PyN+hFCCCGEEEIIIbK7e/cuKpWKyMjIdx3KK0VGRqJSqUhOTn7XobyXTp48SWhoKI8fP87Xdg0aNMDPz095HxoaSuHChZX3cXFxqFQqfvrpp7cWa175+vpSvnx5nj17prE8ISGBQoUKsXDhQo3ld+7cYezYsbi6umJqaoqpqSkVK1YkICBA42nuxMREVCqV8tLT06N48eJ07dpVeYr8XQgNDeXIkSNv3I/6+F41N1b2655Xednu7t27hIaG8ueff+a4XhfXqWfPnqhUKmrVqqW1v8zMTEqUKIFKpSI0NDTfxyz+uwrldwNbW1tSU1P5888/adCgQYF3fPr0aQCKFStW4D6EEEIIIYQQQrxdd/f/8c72bdmw4jvbt3g/nTx5krCwMIYMGYKpqWmB++nbty/Nmzd/i5EV3KJFi6hYsSLh4eGEhYUBkJGRwYABA/Dw8GDw4MFK23PnztGoUSPS0tIYNmwY1atXR6VS8fPPP7NkyRKOHDnC0aNHNfoPDw+nYcOGvHjxgvPnz/PFF1/QrFkzfvvtN/T19f/RYwUICwujcOHC1KlTR+f7+uqrr3R2jHfv3iUsLIyKFSvi6uqqsU6X16lw4cIcP36cixcvUrp0aWX5oUOHuHnzJkZGRjo5XvHhyneyuEaNGpw5c4bvvvtO4xdUfm3btg2VSkX16tUL3IcQQgghhBBCCCHyJzIyktDQ0HzNIfTkyRNMTEx0F9Q75ujoiKOj4z+yL5VKxf79+3MdgFe2bFnGjRvH5MmT6dq1K87OzkRERHDy5Eni4+PR0/u/h8S7du1Keno6CQkJODg4KMu9vLwYPnw4a9eu1eq/fPnyykjUOnXqYGFhQevWrTlz5oxWkvPfpGfPngBv9LTAuzo+XV6nUqVKUahQIdavX09wcLCyPCoqCh8fHw4dOqTDIxMfonyXoWjatCkAsbGxHD58uEA7PXjwILGxsRr9CSGEEEIIIYQQBbV8+XKcnJwwNTXFy8uLc+fOabWJjIzE3d0dY2NjihcvTkhICBkZGRptkpKS8Pf3x8bGBhMTE+rVq0dCQoJGGycnJ4YMGcLMmTMpXrw4pqamtGrViuvXr2v15efnh6mpKSVKlGDu3LmMGDECJycnrdjUIw9NTU1xcnJi5cqVGut79uxJxYoV2bt3L+7u7piYmFC/fn0SExNJSUmhY8eOWFhYULZsWTZs2FDAs/h/VCoV06ZNIygoiI8++kh5KjgzM5NZs2ZRoUIFjIyMKFOmDHPnztU67o4dO2JnZ4exsTGlS5dm5MiRynp1yYfff/8dT09P5XH877//XiuOV12zyMhIevXqBWQ9Ba1SqXI8t3mRvQxFTvbs2YOpqSkTJ07MU3xvIigoiNKlSzNo0CCuXLnChAkTGDp0KFWqVFHaHDp0iPj4eMaPH6+RgFQzNDSkd+/er92XujxoWlqaxvKlS5fi7OyMkZERTk5OTJ48mRcvXmi0+f333/Hx8cHMzIwiRYrQvn17Ll++rNFm5cqVfPLJJ5iYmGBtbY2npyfx8fFA1n0GEBgYqJRdiIuLe/0JKqCcyknExMTg7OyMsbExtWrV4ueff8bS0jLH0g2bN2/G2dmZwoUL06hRI86fPw9klY5Qj+rt0KGDciyJiYk6v04AXbp0ISoqSnmfnp7O5s2b6dq162v7FSK7fCeL27Vrh5OTE5mZmXTo0IG///47X9ufPXuWjh07Kr/E27dvn98QhBBCCCGEEEIIxY4dO+jfvz8NGzYkJiYGLy8vOnTooNFmzpw59O3bFx8fH7777juCgoJYsGABISEhSpvU1FQ8PT05efIkERERREdHY2ZmRqNGjbh165ZGfzExMcTExLB48WIWL17M8ePHadu2rbI+MzOTVq1acfLkSZYuXcqiRYvYsmULW7ZsyfEYOnfujLe3NzExMTRs2JA+ffqwZ88ejTY3btwgICCAkJAQvv32W86fP0+3bt3o1KkTbm5uREdHU7VqVfz9/d9KDdr58+dz9uxZvv76a2Xk4/Dhw/niiy/47LPP2LlzJz179iQoKIglS5Yo2/Xo0YPffvuNBQsWsGfPHsLCwrQSqGlpaXTr1o2ePXsSExNDsWLFaNeuHXfu3FHavO6aNW/enPHjxwNZidyjR48SExPzxsedky1bttC6dWsmTZqklIbIyz1VUIaGhixevJj9+/dTr149LC0tmTRpkkYbdVK1SZMm+er7xYsXpKen8/z5c06fPk1oaCgff/wxFSv+XxmYiIgIBg4cqBxbz549CQ0NZcyYMUqbK1euUK9ePe7cucPatWtZsmQJP//8M/Xr1+fBgwdA1mDBPn360KxZM3bt2sWaNWvw8vJS5rFSl14YOnQoR48e5ejRo3h4eOT3dBXYL7/8QocOHXB1dWXLli189tlndOrUSateNGSVPJk5cybTpk0jMjKSc+fO4e/vD4C9vb3y2Q4PD1eOxd7eXqfXSa1z58788ccfSr3k2NhYnjx5QsuWLfO1TyGgAGUoDAwMmDVrFu3bt+fWrVtUrVqVL7/8kr59+2JmZpbrdg8fPmTFihV88cUXPHz4EJVKxezZsylUKN8hCCGEEEIIIYQQismTJ1O3bl1WrVoFgI+PD0+fPuXLL78E4MGDB0ycOJExY8YQHh4OgLe3N4aGhowaNYrAwECsra2ZN28ed+/e5cSJE8pIWi8vLypUqMCsWbOYMWOGss8HDx6we/duihQpAkCJEiXw8vLi+++/x8fHh927d/Pzzz9z8OBB6tatC0CjRo1wdHTE0tJS6xh69OihPELu4+PDhQsXCAsLw9fXV2mTkpLCgQMH+OSTTwC4du0aQ4cOJSgoiAkTJgBQvXp1tmzZwtatWxk+fDiQlXR6eUSo+uf09HSNGLL/+9zKyootW7Yooz/Pnz/PwoULWbJkCf379wegcePGPH78mLCwMPr374+enh4nTpxg6tSpdOrUSeP4Xvb8+XOmTZtGs2bNAHB2dqZ06dLs3r0bf3//PF0zW1tbypYtC0DVqlWxsbHROq9vwzfffEOfPn1YsGABAwcOBPJ+T4H2eYasGsQvL9fX11fOs1rDhg1p1KgR+/bt49tvv1VGlqpdu3YNyLr3svedmZmpvM9+XV++LgAlS5Zk9+7dSh3cjIwMJk2aROfOnVmwYAGQleh8/vw5s2fPJjg4GGtra+bOnUtaWhqxsbFYWVkBUKVKFVxdXYmMjGTo0KGcOHECKysrZs6cqezv5drQ6jILJUuW1JqkLftxqH9++bypVKo3qkE8depUSpcuTXR0tFLew9zcnO7du2u1vXv3Lr/88gu2trZAVp6rV69eJCUl4ejoqIz6frl8BOjuOr2sVKlS1K5dm6ioKL788kuioqJo2bLlK/N0QuQm3yOLAdq2bUtYWBiZmZk8evSIUaNGYW9vT/Pmzfniiy9YuHAhq1atYuHChUyYMIHmzZvj4OBAQEAADx8+BLIKmLdu3fptHosQQgghhBBCiP+YjIwMEhISaNOmjcbyl59iPXLkCA8fPqRDhw6kp6crr8aNG/PkyRP++CNrUr/Y2FgaNmyIlZWV0kZfX5/69esrj82rNWzYUEkUQ1Yi2MrKiuPHjwMQHx+PpaWlkiiGrImovLy8cjyO7PG3a9eOhIQEjRG5Dg4OSqIYoEKFCkBWwlbN0tKSYsWKceXKFWXZpEmTMDAwUF59+vTh0qVLGssMDAy0YmratKlGAnPv3r1KbNnP440bN5R9enh4MGvWLBYvXpxjORAAPT09jbidnJwwMTEhKSkJyPs107Vly5bRp08fvv76ayVRnJ/4EhMTczzPjRs31li2evVqrX3/+eefHDp06LWlGbInmStVqqTRd3Jyssb66dOnEx8fz4kTJ4iJicHBwQFfX1+uXr0KwF9//UVycrLW6PxOnTrx/PlzTpw4AWSVwVDf92off/wxlSpVUsqWenh4kJKSQs+ePfnhhx94/PjxK8/3y7y8vDSOY82aNaxZs0ZjWW6fp7yKj4/Hz89Pow50q1atcmxbuXJlJVEM/1f/WH3Pvs7bvk7ZdenShfXr1/PkyRO2bdtGly5d8hSXENkVeFjvhAkTcHR0ZOjQoTx+/JiHDx+yZ88ercdk1NTflpiamrJw4UKlMLkQQgghhBBCCFFQt2/fJj09XRkJrGZnZ6f8rE7C5PZ4uzrJmZyczLFjx3JMnKpHsKpl3596mbpu8fXr1zUSS6/aLqfldnZ2pKWlkZycrBxL9hHJhoaGuS5/+vSp8r5///4adVp37NjBsmXL2L59e46xvBzDy5KTk8nMzMx1BO+VK1coVaoUGzZsICQkhJCQEAYPHoyzszPh4eEaZTpMTEyU+HOKO6/XTNeio6MpWbKkxmhYyHt8Dg4OWl80VK9enSVLllC1alVlmbrerVpmZiaDBg2ifPnyfP755wwZMoTevXtrjFhV179NSkqiTJkyyvINGzbw5MkTduzYoZTMeFmZMmWoVq2aEsunn37KRx99xNy5c5k1axapqamA9vVXv09JSQGyyrZUrlxZq387OzulTaNGjfjmm2+YP38+Pj4+GBsb0759e+bNm6eRZM7J0qVLlXIWgHIsL9eMzj7aOr9y+pyam5tjbGys1Ta3z9/Ln7Wc6Oo6ZdehQwdGjBjBF198gYGBgcZTCULkxxvVgOjVqxc+Pj7MmTOHNWvWaH0L8jIbGxs+++wzRo4cmWNBbyGEEEIIIYQQIr9sbW0pVKiQVk3hmzdvKj+rk1JbtmzRehQc/i9RZ2Vlha+vr1K+4mVGRkYa77PvT73M3t4eyKphevv27Rzb5OTWrVsUL15cI34DA4O3UlrBwcFB49/hf/zxB4aGhkoiKjfZR0JaWVmhUqk4fPiwVqIXskpJQNaxr1y5khUrVpCQkMDkyZPp1KkTZ86c0UiWvUper5murVmzhoCAAHx8fPjxxx+xsLDIV3y5nWdnZ+dXnv/IyEgOHTpEXFwcdevWZe3atQwaNIiffvpJKUPQoEEDIGtE/MujntWjz/M6+trW1hYbGxtOnTqlcWy5fabU662srHK8n2/evKmMegfw9/fH39+f5ORktm3bxsiRIzEwMODrr79+ZVzq+0lNXdbjdfdtfuT0OX3w4MFrE8D5oavrlJ2dnR2NGjVizpw59OnTJ8cvvYTIizcuGOzg4MCsWbOYNWsWp06d4tdff+XOnTs8ePAAc3NzrK2tqVSpksajMkIIIYQQQgghxNugr6+Ph4cHMTExjBw5Ulm+efNm5efatWtjampKUlKSVrmHlzVu3Ji1a9fi4uLy2lqf+/fv5969e0opin379pGSkkLNmjWBrJGAd+/e5eDBg9SrVw/IqnH6448/5lizOCYmRql5CiiT1b1JPda3Tf3I/507d2jRosVr2+vp6VG9enUmT57M9u3bOXfuXJ6TxXm9Znkd3VlQdnZ2/Pjjj9SrV4+mTZsSGxuLmZlZnuMriDt37hAYGMhnn32m3DuLFy+matWqREREMGLECADq1q2rnN9WrVopX1Tk182bN0lOTla+mHB2dsbW1pZNmzZpHNvGjRsxNDSkRo0aAHh6erJs2TJSU1MpWrQoAGfOnOG3336jd+/eWvuxsbGhT58+7Nq1i9OnTyvLDQwMdHb9Xqd69ers2LGD2bNnK6Uotm7dWqC+crsXdXWdcjJs2DBMTU3p169fgfYhBLyFZPHLPvnkE0kKCyGEEEIIIYT4R4WEhNCqVSt69epF586dSUhI4JtvvlHWW1paMmnSJMaMGUNSUhINGjRAX1+fCxcusG3bNqKjozE1NWXUqFF8++231K9fn+HDh1OyZElu377N8ePHcXBw0EhGm5ub07RpU8aOHcvdu3cJCgqiRo0a+Pj4AFn1fj08POjatStTp07F0tKSGTNmYG5urlEfVW3NmjWYmJjg4eHB+vXrOXjwIDt37tT9ycuHChUq8Pnnn9O9e3cCAwOpWbMmaWlpnD17lv3797N161bu3buHj48P3bt3x9nZmefPnxMREYGlpWWuJRtyktdr5uLiAsCiRYto3bo1pqamuLm5vdXjLl68uJIwbtmyJTt37sxzfAURGBgIoDEpXKVKlRg6dChffPEFHTt2VEaKr1u3jkaNGuHh4cHw4cOpXr06enp6JCYmsmTJEoyMjLRGmP79998cO3aMzMxMrl69ysyZM1GpVEqCUV9fnwkTJjBs2DCKFStGs2bNOHbsGNOnT2fEiBHKCN+RI0eyatUqmjRpQkhICE+fPmX8+PGULFlSKT06ceJE7ty5Q4MGDShWrBi///47e/bsYdSoUUo8Li4ubNu2jbp162JmZoazs/MblZc4duyY1jI7OzuN+uFqwcHBVK9enXbt2tG/f38uXbrErFmzMDY2zvFz+iofffQRlpaWREVFUbp0aYyMjHB3d8fQ0FAn1yknfn5+GiVnhCiIt5osFkIIIYQQQggh/mktW7ZkyZIlTJkyhfXr11OzZk02bNigjPIFCAgIoHjx4syZM4eIiAgMDAwoW7Ysfn5+yohAa2trjh07xvjx4wkKCuLOnTsUK1aMWrVqaY0ebdOmDY6OjgwcOJDU1FS8vb1ZsmSJsl6lUrFt2zYGDBhA//79KVq0KMOGDePMmTOcPHlS6xiioqIIDg5m0qRJFCtWjGXLltGsWTPdnLA3sGDBApydnVm6dCmTJk2icOHCODs7K5OhGRsb4+bmRkREBJcvX8bExIRq1aoRGxub75IaeblmVapUITQ0lBUrVjBjxgxKlChBYmLi2z5snJyc2LdvH/Xq1aNt27Zs3bo1T/Hl16FDh4iMjGT58uVa52vSpEls3LiRkSNHsmHDBgDKlSvHzz//zMyZM1m9ejVhYWGoVCrKlCmDj48P69ev15iIEWDcuHHKzzY2NlSqVEk5NrWhQ4diYGDAnDlz+Oqrr7C3tyc0NFRj2xIlSnDgwAFGjx5Nt27d0NfXx9vbmzlz5ijJ3urVqzNv3jw2btzI/fv3cXR0JDAwkPHjxyv9LFq0iOHDh9O0aVOePHnC/v37ldINBTF79mytZV5eXsoEjS+rUqUKGzduJDg4mDZt2lCxYkVWr15NgwYNtM7b6+jp6bFq1SrGjRuHl5cXz5494+LFizg5OensOgmhC6pM9cxzIs/u379PkSJFuHfvnlKvSLxe1cA1Ou3/y/YNdNp/xe+bv77RGzCv012n/fud3qbT/vs16qazvksP2qCzvgE8Bur2EZ3VCfn7n4z8quJVUqf9x63Trtn3NtXx9tFp/x8llX19owKyr5PzBDVvy7wDm1/f6A3oetKLy1eG6bT/j521H298m7qf1V0txGCXcjrrG2Bm5P902r/8zX219/lvbs9PBuus7w/V+/pvg6dPn3Lx4kVKly6d40RO4tWcnJzw8/Nj4cKF+dru+fPnuLq6UrduXVatWqWj6IQQb+LHH3+kcePGxMXFUb9+/XcdjhBvTV7/9svIYiGEEEIIIYQQQgeWLVvGixcvcHZ2JjU1lcWLF5OYmMj69evfdWhCiP9v8ODBeHl5YW1tzalTp/jyyy+pUqVKjmUrhPgvkGSxEEIIIYQQQgihA8bGxkybNk0pi1CpUiV27txJtWrV3m1gH7iMjAxe9RB1oUKSChH/JzU1laFDh5KcnEyRIkXw9fVl1qxZ+a5ZLMSHQn5DCiGEEEIIIYQQ+ZDXmrg9evSgR48eug1GaClbtiyXLl3Kdb1U4xQvi4qKetchCPGvIsliIYQQQgghhBBCfDC+++47nj179q7DEEKI95Iki4UQQgghhBBCCPHBcHNze9chCCHEe0sKsAghhBBCCCGEEEIIIYSQZLEQQgghhBBCCCGEEEIISRYLIYQQQgghhBBCCCGEQJLFQgghhBBCCCGEEEIIIZBksRBCCCGEEEIIIYQQQggkWSyEEEIIIYQQQgghhBACSRYLIYQQQgghhPgAzJ07l5IlS6Kvr4+lpSXh4eH57mPevHns2rVLB9G9HevWraN8+fIYGBhQuXLldx2OyEVcXFyB7j8nJyeGDBmivO/ZsycVK1ZU3kdGRqJSqUhOTn4rceZVWloabm5u1K9fn8zMTI11W7duRaVSsWPHDo3lly9f5vPPP6ds2bIYGxtjbm5O1apVmThxIrdv31baxcXFoVKplFehQoUoVaoUgwYN4s6dO//I8WV39+5dQkND+fPPP9/J/oV41wq96wCEEEIIIYQQQvx7hIaGvnf7/vvvvwkICCAoKIgWLVqwcOFCwsPDGTduXL76mTdvHn5+fjRr1qxAcejSw4cP6d27N126dCEyMhILC4t3HZLIRVxcHLNmzcr3/ZfdhAkTePTo0VuKquAMDAxYvHgx9erVIzIykl69egFZ9+TQoUNp27Ytfn5+Svvjx4/TtGlTrKysGD58OG5ubqSlpXHkyBGWLFnC2bNniYqK0tjHqlWr+Pjjj0lPT+fUqVOEhIRw8eJF9uzZ848eK2Qli8PCwqhYsSKurq7/+P6FeNckWSyEEEIIIYQQ4r125swZMjMz6devH2XKlCE2Nlan+3v27BkGBgbo6f1zD+smJiby7NkzunfvzqeffvpGfWVkZPDixQsMDAzeUnR59+TJE0xMTLSWh4aGEhcXR1xc3Bv39aEoW7bsP7KfxMRESpcuzcWLF3FycsqxjaenJ7169SIwMJAWLVpgY2PD+PHjuXfvHgsWLFDaPX36lA4dOuDo6Mjhw4c1vtRo0qQJAQEBfPfdd1r9V6xYkWrVqin7evr0KSNHjuThw4cULlz47R6wEOKVpAyFEEIIIYQQQoj3Vs+ePWnRogWQlVxTqVSEhYXx6NEj5dH2Bg0avLYfJycnLl26xKJFi5TtIiMjlXVDhgxhxowZlCpVChMTE1JSUvjrr7/o3LkzJUqUwNTUFFdXV2bPns2LFy+UfhMTE1GpVKxdu5YhQ4ZQtGhR7O3tGT16NOnp6Uq7pKQkOnbsiJ2dHcbGxpQuXZqRI0cCWYlUNzc3ALy8vFCpVMoo7JSUFHr37o2NjQ0mJibUqVOHgwcPahxbgwYN8PPzY/Xq1Tg7O2NkZMSvv/6qlDnYu3cv7u7umJiYUL9+fRITE0lJSaFjx45YWFhQtmxZNmzYoHXOdu7cSc2aNTExMcHW1pZBgwZpjIRVlxjYuXMn7du3x8LCgg4dOrz+ouZAfR4jIyPp168f1tbW1KhRA8hK3o8bN45SpUphZGSEi4sL69at09j+1KlTNGvWDGtra0xNTXF2dmbGjBnKevW5iIuLo0qVKpiZmVGjRg0SEhI0+snMzGTWrFlUqFABIyMjypQpw9y5c5X1oaGhBbr/cpK9DEVOVq1ahaGhIV9//XWe4nsTM2bMQKVSERgYSEJCAgsXLuTLL7+kePHiSptNmzZx5coVpk2bluPod3Nzc7p27frafZmbm5OZmUlGRoay7MWLF0yePBknJyeMjIz4+OOPWbp0qda2Bw8epE6dOpiYmGBjY0Pv3r1JSUnRaDNt2jTKlSuHsbExtra2NG7cmIsXLyqJc4AOHToo1zAxMTGvp0mI956MLBZCCCGEEEII8d6aMGECrq6uBAUFsWXLFmxtbVm1ahVRUVHs27cPIE8lG2JiYmjWrBmenp4EBAQAmiM7o6OjKV++PPPnz0dfXx8zMzN+/fVXnJ2d6datG+bm5pw8eZKJEyfy8OFDJk6cqNF/SEgIrVq1YuPGjRw5coTQ0FDKlSvHwIEDAejRowfXrl1jwYIF2NnZcfnyZX766ScA+vbtS9myZenRoweLFi3Cw8MDR0dHMjIyaNq0KRcuXGD69OnY2dmxYMECvL29OXLkCFWrVlX2/9NPP5GYmMikSZMoWrQoJUqUAODGjRsEBAQQEhKCgYEBw4YNo1u3bpiamlKvXj369evH8uXL8ff3p1atWpQqVQqAzZs306lTJ3r16kVYWBjXr19n7NixpKamsn79eo1j79+/P/7+/sTExKCvr5+v65tdcHAwzZs3JyoqSknKd+zYkcOHDzNx4kRcXFzYtWsX/v7+FC1alKZNmwLQokUL7Ozs+PrrrylSpAjnzp0jKSlJo+8bN24wbNgwxo4dS5EiRQgODqZNmzacP39eGYU9fPhwVqxYQUhICDVr1uTIkSMEBQVhYmLCwIED6du3L0lJSaxbty5f919BREREMHr0aNasWUPnzp3zFN+bsLa2ZsaMGfTu3Zu4uDgqVaqkUWMZsr4gKFSoEI0aNcpX3xkZGaSnpytlKGbNmkXjxo0pUqSI0iYwMJD58+czfvx46tSpw44dOxg4cCBpaWlKHAkJCXh7e9OgQQM2bdrEzZs3GTt2LKdOneLIkSPo6+uzZs0aJkyYwKRJk6hduzb37t3j0KFD3L9/n48//pgtW7bQtm1bwsPDadiwIQD29vZvdO6EeJ9IslgIIYQQQgghxHurbNmyVKhQAYAqVarg5OTE3r170dPTo1atWnnup0qVKhgZGWFnZ5fjdmlpaezevRszMzNlmZeXF15eXkDWiE5PT08eP37MwoULtZLFNWvWVB7X9/b2Zv/+/WzevFlJ4J04cYKpU6fSqVMnZZsePXoA4OjoqIwsdnV1VeLbvn07J06cYM+ePfj4+ADg4+NDuXLlCA8PJzo6WukrJSWF+Ph4JUn88vIDBw7wySefAHDt2jWGDh1KUFAQEyZMAKB69eps2bKFrVu3Mnz4cDIzMxk9ejSdOnVixYoVSl/29vY0a9aMCRMmKP0BtGzZkunTp2vs98WLFxojsF+8eEFmZqbGaGuVSqWVXK5cubLGPvfv38/27dv5/vvvadKkiXJ+r1+/zsSJE2natCnJyclcvHiR+fPnK6PQ1UnAV50LMzMzGjZsyPHjx/H09OT8+fMsXLiQJUuW0L9/fwAaN27M48ePCQsLo3///jg6OuLo6Jjv+y+/pk6dSlhYGJs2baJly5YAeYpPT09Pa8Su+md1wlZNX18flUqlsd+ePXsyZcoUzp8/z7fffqt1fa5du4aNjQ3GxsYayzMyMpTJ8XK6rtnPlbu7O2vWrFHeJycnExERQWBgoDKqvkmTJiQnJzNp0iQGDRqEvr4+U6ZM4aOPPmLHjh1Kgr9EiRL4+Piwa9cuWrRowYkTJ3B3dyc4OFjpv1WrVsrPVapUAaB8+fI6vYZC/FtJGQohhBBCCCGEEOI1GjRooJEohqz6rBMnTqRcuXIYGRlhYGBASEgI169f5+HDhxpt1YlMNVdXV42RrR4eHsyaNYvFixdz7ty5PMV06NAhLCwslEQxZE1G1rZtWw4fPqzR1t3dXStRDODg4KCR2FUn3hs3bqwss7S0pFixYly5cgWAs2fPcunSJTp27KiMBk1PT6d+/fro6ekpI6LVmjdvrrXf3r17Y2BgoLy+/PJLDh48qLEsp5q92fuKjY3FysqKRo0aacTi7e3NL7/8QkZGBtbW1pQqVYrg4GBWr16tNaI4t3OhntxM3X7v3r0AtGvXTmNfjRs35saNG8r50bWQkBCmTJnCjh07lERxfuI7cOCAxnkuV64cAOXKldNYfuDAAa19//jjj5w/fx6VSpVrfensCWaAIkWKKP2+PFpYbc2aNcTHx3P8+HGioqJ4/vw5vr6+yufo+PHjpKWlaZUx6dSpE7dv3+bs2bNA1meiVatWGvW4mzRpgqWlpfKZ8PDw4JdffmHUqFEcPnyYtLS0nE+0EP9RkiwWQgghhBBCCCFew87OTmtZUFAQM2fOpF+/fuzatYv4+HjGjx8PZCWSX2Zpaanx3tDQUKPNhg0b8PLyIiQkhPLlyyuPw79KamoqxYoVyzHW7DVac4o/t7heF29ycjIAbdq00UgumpqakpGRoZU0zWnfoaGhxMfHK69+/frh4eGhsSynidCy95WcnExKSopGHAYGBvTt25f09HSuX7+OSqUiNjYWFxcXPv/8c0qUKEG1atW0ajvndi5ePu7MzExsbGw09uXt7Q3wjyWLN2/ejJubG56enhrL8xpf1apVNc7z9u3bgayR6i8vf7mMCWTVhh40aBDe3t4EBwczefJkrVq+Dg4O3L59m2fPnmksP3TokHKdc+Li4kK1atWoUaMGnTt35ttvv+W3335T6oanpqYC2tdf/V59v6empuZ4v738mejZsydz587l+++/p27dutja2jJ8+HCePHmSY2xC/NdIGQohhBBCCCGEEOI1chotuWnTJgYMGEBQUJCybOfOnQXq397enpUrV7JixQoSEhKYPHkynTp14syZM5QpUybHbaysrLh165bW8ps3b2JlZfXa+AtK3ffChQupWbOm1noHB4fX7tvJyQknJyfl/Y4dOzh79izVqlV75b6z92VlZYWtrS27du3Ksb06mV6hQgU2bdpEWloaR44cYdy4cbRo0YKrV69SuHDhV+7z5X2pVCoOHz6sJJJf5uzsnKd+3tT27dtp27Yt7dq1Y+vWrcoo2rzGZ25urnGe1QlfNzc3jWuSXXh4OFeuXGH37t0UL16cqKgohg4dqpHUb9CgAStXrmT//v34+voqy9WlHXbs2JGnY3RxcQGyJiZUHxvArVu3NCbUu3nzpsb6vHwm9PT0GD58OMOHD+fq1ausX7+esWPHYmNjo5ReEeK/TEYWCyGEEEIIIYT4oBgaGmqNbMzrdtlHBL/KkydPNJJyGRkZWpO75Zeenh7Vq1dn8uTJpKenv7IkhaenJ/fv3yc2NlZZlp6eTkxMjNao07fp448/xtHRkQsXLlCtWjWtV/ZksS41btyY27dvY2homGMs2ZOmBgYG1K9fn7Fjx3L//n2uXbuW532p61PfuXMnx32Zm5sDBb//8srZ2Zm9e/dy/PhxunTpotQczmt8BXH27FmmT59OcHAw5cqVw8TEhAULFrBjxw62bt2qtOvQoQMlSpQgODiYBw8eFHh/f/zxBwA2NjYA1KhRAwMDAzZt2qTRbuPGjRQrVkwpn+Lp6cnWrVs1ai//8MMP3L17N8fPRPHixQkICMDd3Z3Tp08D2iPKhfivkZHFQgghhBBCCCE+KC4uLqSnpzN//nzq1KmDhYVFnkZ9uri4sG/fPn744QeKFi1K6dKlsba2zrW9t7c3y5cvx9XVFRsbG7766qsCJQnv3buHj48P3bt3x9nZmefPnxMREYGlpSUeHh65bte8eXNq1KiBv78/06ZNw87OjoiICK5fv864cePyHUdeqVQq5syZQ9euXXn06BHNmzfHzMyMS5cusXPnTsLDw5Xkna55e3vTokULfH19GTNmDO7u7jx69IhTp05x7tw5VqxYwW+//UZAQACdOnWibNmy3Lt3j6lTp+Lk5JRjXeTcVKhQgc8//5zu3bsTGBhIzZo1SUtL4+zZs+zfv19Jmhb0/ssPNzc3YmNjadSoEZ999hlr1qzJc3wFMWjQIEqVKsXYsWOVZX5+frRu3Zrhw4fj7e2NmZkZxsbGbNq0CV9fXzw8PBg6dChubm5kZGTw999/s2HDhhyT1n/88Qfp6em8ePGCCxcu8OWXX2JqaqpM8mhjY8PQoUOZOXMmxsbG1KpVi127drFu3ToiIiKUCfNCQkKoU6cOfn5+DB06lJs3bzJ27Fhq1KhBs2bNABgwYABFixalVq1aFC1alP/973/8+uuvDB48GICPPvoIS0tLoqKiKF26NEZGRri7u+c4WluID5Eki4UQQgghhBBCKEJDQ991CG+sRYsWDB48mKlTp3Lr1i3q1auX62RcLwsPD2fQoEG0a9eOBw8esGrVKnr27Jlr+4iICAYOHMjQoUMxNTWlZ8+etGnTJte6rLkxNjbGzc2NiIgILl++jImJCdWqVSM2NlYZWZkTfX19du3axejRowkMDOTRo0d4eHgQGxurVW/2bevQoQOWlpZMmTKFtWvXAlmlJXx9fXOtj6wrmzdvZtq0aXz11VdcunSJIkWKULFiRXr16gVkJf8++ugjpk6dytWrVylSpAh169Zl7dq1SpIxrxYsWICzszNLly5l0qRJFC5cGGdnZ42J1wp6/+WXh4cHe/bswdvbmwEDBrBs2bI8xZdf33zzDfv27WPv3r0YGRlprJs/fz6urq5MmjSJ6dOnA1CzZk1+/fVXpk2bxrx587h69SoGBgZUqFCBDh06MGTIEK19qK+VSqXCzs6OGjVqsGnTJsqXL6+0mTlzJpaWlqxYsYLJkyfj5OTEkiVLGDBggNKmatWqxMbGEhwcTLt27TAzM6Nly5bMnj1budZ16tRh+fLlLF++nMePH1OmTBnmzp1Lnz59gKzR/atWrWLcuHF4eXnx7NkzLl68+MoSHUJ8SFSZmZmZ7zqI9839+/cpUqQI9+7dw8LC4l2H896oGrhGp/1/2b6BTvuv+L32DL5vk3md7jrt3+/0Np32369RN531XXrQBp31DeAxMH//M59fqxO0Z/t9m6p4ldRp/3HrvtRp/3W8fV7f6A18lJT30SL5ZV9He0KZt2negc067f/lOnK6cPnKMJ32/7Fzb5323/1saZ31HexSTmd9A8yM/J9O+5e/ua/2Pv/N7fnJYJ31/aF6X/9t8PTpUy5evEjp0qUxNjZ+1+EIIYQQQsfy+rdfahYLIYQQQgghhBBCCCGEkDIUQgghhBBCCCE+fC9PeJWdSqXKdzkCIfJD7j8hxPtCksVCCCGEEEIIIT54BgYGua4rVaoUiYmJ/1ww4j9H7j8hxPtCksVCCCGEEEIIIT548fHxua7LPmmXEG+b3H9CiPeFJIuFEEIIIYQQQnzwqlWr9q5DEP9hcv8JId4X7+0Ed+vXr8fDwwMTExOsrKxo374958+ff+U2wcHBuLi4YGFhgbGxMaVKlaJ3795cunTpH4paCCGEEEIIIYQQQggh/p3ey2Tx119/TZcuXfjll1+wt7cnIyOD6Oho6tSpw40bN3Ld7vvvv+fRo0eUL1+eEiVKcPnyZVatWoWPj88/GL0QQgghhBBCCCGEEEL8+7x3yeLnz58zduxYANq1a8eFCxc4ffo05ubm3Lp1i/Dw8Fy3PXLkCJcvXyYhIYG///4bf39/AM6cOcOdO3f+kfiFEEIIIYQQQgghhBDi3+i9q1kcHx9PcnIykJUsBnBwcKBWrVr88MMP7NmzJ9dtjY2N+eqrr1i9ejUpKSmcO3cOAFdXV6ysrHLd7tmzZzx79kx5f//+/bdxKEIIIYQQQgghhBBCCPGv8d6NLL5y5Yryc7FixZSf7ezsALh8+fIrt798+TInTpxQEsVVqlThhx9+QKVS5brN1KlTKVKkiPIqUaLEmxyCEEIIIYQQQgghhBBC/Ou8d8ni3GRmZuap3bRp00hPT+evv/6iYcOG/PLLL3Tr1o2MjIxctwkODubevXvK6+WEtRBCCCGEEEKIf5+7d++iUqmIjIx816G8UmRkJCqVSnmC9t/gwoULmJqaMmHCBK11I0aMoEiRIly7dk1j+dGjR2nfvj329vYYGhpibW1No0aNWLp0Kc+fP1fahYaGolKplJexsTEuLi7MmDGDFy9e6PzYcnLy5ElCQ0N5/PjxG/cVGhpK4cKFc12fmJiISqVi8+bN+eo3r9vFxcW9sjynLq6Tus2SJUu09qcenKdSqUhMTMzXMQsh3o33Lln88qjeW7duaf1csmTJ1/ahr6+Ps7MzI0aMALJ+mf7444+5tjcyMsLCwkLjJYQQQgghhBBCfIjKlClDSEgIM2bM4MyZM8ryhIQEFi5cyOTJk3FwcFCWL168GE9PT+7cucP06dPZu3cvX3/9NRUqVGD48OGsWrVKo38TExOOHj3K0aNH2b17Nx06dGDs2LHMmDHjHzvGl508eZKwsLC3kix+HXt7e44ePUqjRo100v+rksW6vE6FCxdm/fr1WsujoqJemTwXQvz7vHc1i6tXr461tTV37twhOjqaLl26cO3aNY4dOwaAr68vAB9//DEAQ4YMYciQIfz999+cPn0aPz8/9PT0ePHihUZ940ePHv3zByOEEEIIIYQQ/zLqf1u9C7Vq1Xpn+/4viYyMJDQ09JUjPQMDA1m7di0DBw5k//79ZGRkMGDAAKpUqcLnn3+utPv1118ZNmwYPXr0YOXKlRolHlu3bk1AQIDW07l6enoa17phw4b8/vvvbNmyRZnQ/t9KpVKxf/9+GjRoUKDtjYyM3sl9ruvr1KpVK6Kiorh69SrFixcHsuZ/2rJlC61bt2bt2rU6PDohxNv03o0sNjQ0VL4li46OpkyZMri4uPDgwQNsbGyUX1hnzpzhzJkzyqM8V69epVWrVhQpUoRKlSrh4ODA4sWLAXB0dMTLy+vdHJAQQgghhBBCiDe2fPlynJycMDU1xcvLS5mn5mWRkZG4u7tjbGxM8eLFCQkJ0SpJmJSUhL+/PzY2NpiYmFCvXj0SEhI02jg5OTFkyBBmzpxJ8eLFMTU1pVWrVly/fl2rLz8/P0xNTSlRogRz585lxIgRODk5acV27tw5GjVqhKmpKU5OTqxcuVJjfc+ePalYsSJ79+7F3d0dExMT6tevT2JiIikpKXTs2BELCwvKli3Lhg0bCngW/4+hoSGLFy8mLi6O1atXExERwcmTJ1m6dCl6ev+XSliwYAH6+vrMnj07x7mAypcvn6dRtObm5qSlpWksS0lJoXfv3sq1qFOnDgcPHtTadunSpTg7O2NkZISTkxOTJ0/WKJVw9+5d+vXrR/HixTE2NqZEiRJ07twZyLonevXqBYCtrS0qlSrH6/O25FRO4vnz5wwbNgwrKyssLS0ZMGAA69aty7F0w9OnTxkyZAhFixbF3t6e0aNHk56eDmSVjggLC+PRo0dK6Qd1UluX1wmgcuXKVKhQQePe27VrF5mZmTRv3jwvp0YI8S/x3iWLAfr378/atWupXLky165dQ6VS0bZtW44cOaLxKMzLSpYsSevWrSlatChnzpwhNTWVsmXLMmDAAI4ePSqlJYQQQgghhBDiPbVjxw769+9Pw4YNiYmJwcvLiw4dOmi0mTNnDn379sXHx4fvvvuOoKAgFixYQEhIiNImNTUVT09PTp48SUREBNHR0ZiZmdGoUSONMogAMTExxMTEsHjxYhYvXszx48dp27atsj4zM5NWrVopCdZFixaxZcsWtmzZkuMxdO7cGW9vb2JiYmjYsCF9+vTReBoW4MaNGwQEBBASEsK3337L+fPn6datG506dcLNzY3o6GiqVq2Kv78/ly5detPTSoMGDejRowcBAQFMmDCBIUOG4OHhodEmLi6OatWqYWVlla++09PTSU9P58GDB2zfvp3o6Gjat2+vrM/IyKBp06Z89913TJ8+nU2bNlG4cGG8vb01kvcREREMHDhQua49e/YkNDSUMWPGKG1GjRrFjh07CA8P5/vvv2fmzJkYGRkB0Lx5c8aPHw/Anj17OHr0KDExMfk+V29i7NixLF26lKCgIDZs2MCLFy9yHWEdEhKCnp4eGzduZODAgcyePZsVK1YA0LdvX/r06aNRPuKrr74CdHedXtalSxeioqKU91FRUbRp0wZjY+N87VMI8W69d2Uo1Lp160a3bt1yXZ99wrsyZcr847/whRBCCCGEEELo3uTJk6lbt65Sc9XHx4enT5/y5ZdfAvDgwQMmTpzImDFjlCdVvb29MTQ0ZNSoUQQGBmJtbc28efO4e/cuJ06coFixYgB4eXlRoUIFZs2apVGr9cGDB+zevZsiRYoAWfPreHl58f333+Pj48Pu3bv5+eefOXjwIHXr1gWgUaNGODo6YmlpqXUMPXr0IDg4WIn/woULhIWFKaUWIWuk7YEDB/jkk08AuHbtGkOHDiUoKEiZjK569eps2bKFrVu3Mnz4cABevHihMdJW/bN6RKpaoULaKYLJkyezZs0arKyslPP5smvXrlGjRg2t5S/3raenpzEa+dGjRxgYGGi079Spk0aCdOfOnZw4cYI9e/bg4+OjnJdy5coRHh5OdHQ0GRkZTJo0ic6dO7NgwQIAmjRpwvPnz5k9ezbBwcFYW1tz4sQJunbtymeffab0rx5ZbGtrS9myZQGoWrUqNjY2uR6HWkZGhsZyfX39HEfr5kVKSgqLFy9m/PjxBAUFKcfZuHFjrbIQADVr1lSO1dvbm/3797N582YGDhyIo6Mjjo6OWuUjQHfX6WVdunRh4sSJnD9/Hjs7O3bs2MHWrVv/kVrQQoi3570cWSyEEEIIIYQQQkBW4i4hIYE2bdpoLH959OORI0d4+PAhHTp0UEZKpqen07hxY548ecIff/wBQGxsLA0bNsTKykppo6+vT/369YmPj9fov2HDhkqiGLISwVZWVhw/fhyA+Ph4LC0tlUQxZE0CllsJxOzxt2vXjoSEBI0yGQ4ODkqiGKBChQoANG7cWFlmaWlJsWLFNBKNkyZNwsDAQHn16dOHS5cuaSzLnhRUW7p0KSqVitTUVH777bcc22RPlP70008a/bZs2VJjvYmJCfHx8cTHx3P48GHmz5/Pnj176Nevn9Lm0KFDWFhYKIliAAMDA9q2bcvhw4cB+Ouvv0hOTtYaRd6pUyeeP3/OiRMnAPDw8CAyMpJZs2Yp1zovEhMTczxHjRs31li2evXqPPeZ3e+//87Tp0+1zlGrVq1ybN+kSRON966uriQlJeVpX7q4Ti8rX748VatWJSoqiq1bt2Jubi4lP4V4D723I4uFEEIIIYQQQojbt2+Tnp6ujARWs7OzU35Wz2WTvYSCmjqxmpyczLFjx3JMnKpHn6pl3596mbpu8fXr17G1tc2xTU5yij8tLY3k5GTlWLKPSDY0NMx1+dOnT5X3/fv3x8/PT3m/Y8cOli1bxvbt23OMRe2vv/5i5syZTJo0iT179jBo0CB+/vlnjRHIDg4OWslKV1dXJbk+YMAArX719PSoVq2a8v7TTz8lPT2dgIAARo0aRcWKFUlNTc3xXNnZ2ZGSkgJklQ1RL8veBlDaRUREYGVlxezZswkMDKREiRIEBwczaNCgVx6/g4OD1pcE1atXZ8mSJVStWlVZVrp06Vf28yrq+yX7vZLbffK6a50bXV2n7Lp06cLKlSspVaoUHTt2RF9f/7WxCSH+XSRZLIQQQgghhBDivWVra0uhQoW0agrfvHlT+Vldp3XLli2UKFFCqw91ss/KygpfX98cyy2oa9yqZd+fepm9vT0A9vb23L59O8c2Obl16xbFixfXiN/AwECrLEJBODg4aMzv88cff2BoaKiRCMzJwIEDKVOmDGPGjKFVq1Z4eHgwf/58AgIClDYNGjRg3bp1pKamUrRoUQBMTU2Vvs3NzfMUo4uLCwCnTp2iYsWKWFlZ5Xiubt68qVxP9X9zu/bq9UWKFGHevHnMmzeP33//nfnz5zN48GAqVqyoMfI7u9zOkbOz82vPXV6p75fbt29rXKPc7pOC0tV1yq5Tp04EBgby119/cejQobcUvRDinyRlKIQQQgghhBBCvLf09fXx8PDQmqNm8+bNys+1a9fG1NSUpKQkqlWrpvWytrYGssoL/Pnnn7i4uGi1cXNz0+h///793Lt3T3m/b98+UlJSqFmzJpA1AvXu3bscPHhQafPw4UN+/PHHHI8je/zqyere1cjMyMhIDhw4wOLFizE0NMTNzY3hw4cTGhqqMUJ12LBhpKenExgY+Eb7U5eHUCfHPT09uX//PrGxsUqb9PR0YmJi8PT0BLKStra2tmzatEmjr40bN2JoaJhjjV43Nzfmzp0LwOnTp4H/G6GdlxG6b1vFihUxNjZm27ZtGsu3bt1aoP4MDQ159uyZ1nJdXafsHB0dGTFiBF27dqVOnTpvtC8hxLshI4uFEEIIIYQQQrzXQkJCaNWqFb169aJz584kJCTwzTffKOstLS2ZNGkSY8aMISkpiQYNGqCvr8+FCxfYtm0b0dHRmJqaMmrUKL799lvq16/P8OHDKVmyJLdv3+b48eM4ODgwcuRIpU9zc3OaNm3K2LFjuXv3LkFBQdSoUUOpsdu0aVM8PDzo2rUrU6dOxdLSkhkzZmBubq4xiZjamjVrMDExwcPDg/Xr13Pw4EF27typ+5OXgzt37hAYGEiPHj1o0KCBsjw0NJQNGzYwYsQIJRlfqVIlFixYwJAhQ7hw4QK9evXCycmJhw8f8tNPP/Hbb79p1B2GrAn2jh07BsDz589JSEhg8uTJuLq6Uq9ePQCaN29OjRo18Pf3Z9q0adjZ2REREcH169cZN24ckPVFwYQJExg2bBjFihWjWbNmHDt2jOnTpzNixAjlS4BPP/2UNm3aULFiRfT19VmzZg2GhobKqGL1aNlFixbRunVrTE1Ntb4cyI+MjAyNLyvUckpeW1tbM2jQIKZMmYKxsTGVK1dm06ZNnD17FiDHe+VVXFxcSE9PZ/78+dSpUwcLCwucnZ11dp1yMmfOnHzFLIT4d5FksRBCCCGEEEKI91rLli1ZsmQJU6ZMYf369dSsWZMNGzYoo3wBAgICKF68OHPmzCEiIgIDAwPKli2Ln5+fMrLU2tqaY8eOMX78eIKCgrhz5w7FihWjVq1aWhPQtWnTBkdHRwYOHEhqaire3t4sWbJEWa9Sqdi2bRsDBgygf//+FC1alGHDhnHmzBlOnjypdQxRUVEEBwczadIkihUrxrJly2jWrJluTthrjBkzhhcvXjBr1iyN5YULF2b+/Pm0a9eO3bt307RpUwAGDRpEpUqVlJrAd+7cwdzcnMqVKxMeHk7v3r01+nny5Am1a9cGoFChQpQoUQJ/f38mTpyo1IvW19dn165djB49msDAQB49eoSHhwexsbEa9YKHDh2KgYEBc+bM4auvvsLe3p7Q0FAloQxZyeI1a9Zw8eJF9PT0cHNz47vvvlOSxFWqVCE0NJQVK1YwY8YMSpQoQWJiYoHP39OnT7Um3QP45ptvlFHRL5s2bRppaWlMnTqVFy9e0KZNG8aOHcuQIUM0JlHMixYtWjB48GCmTp3KrVu3qFevHnFxcYBurpMQ4sOjyszMzHzXQbxv7t+/T5EiRbh37x4WFhbvOpz3RtXANTrt/8v2DXTaf8Xvm+u0f/M63XXav9/pba9v9Ab6Neqms75LD9qgs74BPAbmPJvv27I6IX//g5dfVbxK6rT/uHXaNfvepjrePq9v9AY+Sir7+kYFZF8n54lH3pZ5B7RHpLxNvr6+Ou3/8pVhOu3/Y+fer2/0BrqfLfhkNa8T7FJOZ30DzIz8n077l7+5r/Y+/83t+clgnfX9oXpf/23w9OlTLl68SOnSpTE2Nn7X4bx3nJyc8PPzY+HChfna7vnz57i6ulK3bl1WrVqlo+jEh6B79+4cPnyYixcvvutQhBAfiLz+7ZeRxUIIIYQQQgghhA4sW7aMFy9e4OzsTGpqKosXLyYxMZH169e/69DEv8iBAwf43//+R9WqVXnx4gU7duzg22+/lXIOQoh3QpLFQgghhBBCCCGEDhgbGzNt2jSlpEGlSpXYuXMn1apVe7eBiX+VwoULs2PHDqZPn86TJ08oXbo0c+bMYcSIEe86NCHEf5Aki4UQQgghhBBCiHzIaz3bHj160KNHD90GI957VatW5ciRI+86DCGEACB/02oKIYQQQgghhBBCCCGE+CBJslgIIYQQQgghhBBCCCGEJIuFEEIIIYQQQgghhBBCSLJYCCGEEEIIIYQQQgghBJIsFkIIIYQQQgghhBBCCIEki4UQQgghhBBCCCGEEEIgyWIhhBBCCCGEEEIIIYQQSLJYCCGEEEIIIcQHYO7cuZQsWRJ9fX0sLS0JDw/Pdx/z5s1j165dOoju7Vi3bh3ly5fHwMCAypUrv+twRC7i4uIKdP85OTkxZMgQ5X3Pnj2pWLGi8j4yMhKVSkVycvJbiTM/sseSXVxcHCqVip9++ilf/eZ1u61bt/LVV1/lun737t00a9YMW1tbDAwMsLOzo3nz5kRFRfHixQuN41CpVMrLzMyMSpUq8fXXX2v0l5iYqLTZs2eP1v6WL1+urBfiQ1PoXQcghBBCCCGEEOLfY+OmGu9s3x07nCjQdn///TcBAQEEBQXRokULFi5cSHh4OOPGjctXP/PmzcPPz49mzZoVKA5devjwIb1796ZLly5ERkZiYWHxrkMSuYiLi2PWrFn5vv+ymzBhAo8ePXpLUemWh4cHR48excXFRSf9b926lZ9++onBgwdrrRs3bhxTp06lTZs2LFy4EHt7e27evMnWrVvx9/fHysoKHx8fpX2ZMmX49ttvAXjw4AExMTH07dsXMzMzOnfurNF34cKFWb9+Pb6+vhrLo6KiKFy4MA8fPtTB0QrxbsnIYiGEEEIIIYQQ77UzZ86QmZlJv379qFOnDhUqVNDp/p49e6YxWvGfkJiYyLNnz+jevTuffvopbm5uBe4rIyODtLS0txhd3j158iTH5aGhoTRo0OCt9PWhKFu2LO7u7jrfj3oUbWJiYoH7sLCwoFatWpiZmb29wPJg586dTJ06lYkTJ7JlyxY6depEvXr16NChA99++y1Hjx6lWLFiGtuYmJhQq1YtatWqhbe3N1999RWVK1dmy5YtWv23atWKmJgYnj59qiy7fv06Bw4coHXr1ro+PCHeCUkWCyGEEEIIIYR4b/Xs2ZMWLVoAWck1lUpFWFgYjx49Uh4Tz0sS0snJiUuXLrFo0SJlu8jISGXdkCFDmDFjBqVKlcLExISUlBT++usvOnfuTIkSJTA1NcXV1ZXZs2drJJLVibi1a9cyZMgQihYtir29PaNHjyY9PV1pl5SURMeOHbGzs8PY2JjSpUszcuRIICuRqk4Oe3l5oVKpCA0NBSAlJYXevXtjY2ODiYkJderU4eDBgxrH1qBBA/z8/Fi9ejXOzs4YGRnx66+/KqUF9u7di7u7OyYmJtSvX5/ExERSUlLo2LEjFhYWlC1blg0bNmids507d1KzZk1MTEywtbVl0KBBGiNh1SUGdu7cSfv27bGwsKBDhw6vv6g5UJ/HyMhI+vXrh7W1NTVqZI2Cf/bsGePGjaNUqVIYGRnh4uLCunXrNLY/deoUzZo1w9raGlNTU5ydnZkxY4ayXn0u4uLiqFKlCmZmZtSoUYOEhASNfjIzM5k1axYVKlTAyMiIMmXKMHfuXGV9aGhoge6/nLyu9APAqlWrMDQ0VMoovC4+XcmpnMS9e/fw9/fH3NycYsWKMW7cOGbPnp1j6YbU1FS6du2Kubk5pUqV0ro2q1ev5tSpU8o57dmzJwBz5szB3t6e8ePH5xhXjRo1qFKlymvjNzc3z/ELlKZNm6JSqTTK06xfv55y5cpRtWrV1/YrxPtIylAIIYQQQgghhHhvTZgwAVdXV4KCgtiyZQu2trasWrWKqKgo9u3bB5Cnkg0xMTE0a9YMT09PAgICgKzks1p0dDTly5dn/vz56OvrY2Zmxq+//oqzszPdunXD3NyckydPMnHiRB4+fMjEiRM1+g8JCaFVq1Zs3LiRI0eOEBoaSrly5Rg4cCAAPXr04Nq1ayxYsAA7OzsuX76sJN769u1L2bJl6dGjB4sWLcLDwwNHR0cyMjJo2rQpFy5cYPr06djZ2bFgwQK8vb05cuSIRjLrp59+IjExkUmTJlG0aFFKlCgBwI0bNwgICCAkJAQDAwOGDRtGt27dMDU1pV69evTr14/ly5fj7+9PrVq1KFWqFACbN2+mU6dO9OrVi7CwMK5fv87YsWNJTU1l/fr1Gsfev39//P39iYmJQV9fP1/XN7vg4GCtWrQdO3bk8OHDTJw4ERcXF3bt2oW/vz9FixaladOmALRo0QI7Ozu+/vprihQpwrlz50hKStLo+8aNGwwbNoyxY8dSpEgRgoODadOmDefPn8fAwACA4cOHs2LFCkJCQqhZsyZHjhwhKCgIExMTBg4cSN++fUlKSmLdunX5uv8KIiIigtGjR7NmzRqlfMLr4vsn9erVi3379ilfsixfvlwr+a42cOBAunfvTkxMDFu3biUoKAh3d3d8fX2ZMGECt2/f5q+//lLKR9ja2pKens7//vc/2rdvT6FC+Utvqb+oefjwIVu2bOF///sfa9as0WpnZGRE27ZtiYqKom3btkBWCYouXbrka39CvE8kWSyEEEIIIYQQ4r1VtmxZpexElSpVcHJyYu/evejp6VGrVq0891OlShWMjIyws7PLcbu0tDR2796t8Zi9l5cXXl5eQNaITk9PTx4/fszChQu1ksU1a9ZkwYIFAHh7e7N//342b96sJPBOnDjB1KlT6dSpk7JNjx49AHB0dFRGFru6uirxbd++nRMnTrBnzx6lJquPjw/lypUjPDyc6Ohopa+UlBTi4+OVJPHLyw8cOMAnn3wCwLVr1xg6dChBQUFMmDABgOrVq7Nlyxa2bt3K8OHDyczMZPTo0XTq1IkVK1Yofdnb29OsWTMmTJig9AfQsmVLpk+frrHfFy9eaIzAfvHiBZmZmRqjrVUqlVZyuXLlyhr73L9/P9u3b+f777+nSZMmyvm9fv06EydOpGnTpiQnJ3Px4kXmz5+vjEJv2LAh2WU/F2ZmZjRs2JDjx4/j6enJ+fPnWbhwIUuWLKF///4ANG7cmMePHxMWFkb//v1xdHTE0dEx3/dffk2dOpWwsDA2bdpEy5YtAfIUn56eHpmZmWRkZCh9qX/OyMjQOP/6+voFnsDtzz//JCYmhjVr1tC9e3cAfH19+fjjj3Ns365dO2W0vJeXFzt37mTz5s34+vpStmxZbG1tuXTpksY5vXnzJs+ePdO6p7Mfn56eHnp6//dg/alTp5Tkv1pAQADdunXLMbYuXbrQqlUrHj58yM2bN4mPj2ft2rX/6skwhXgTUoZCCCGEEEIIIYR4jQYNGmjVY3369CkTJ06kXLlyGBkZYWBgQEhICNevX9ea+EqdyFRzdXXVGNnq4eHBrFmzWLx4MefOnctTTIcOHcLCwkJj8i4DAwPatm3L4cOHNdq6u7trJdUAHBwcNBK76sR748aNlWWWlpYUK1aMK1euAHD27FkuXbpEx44dSU9PV17169dHT09PoxQBQPPmzbX227t3bwwMDJTXl19+ycGDBzWWvTyyO7e+YmNjsbKyolGjRhqxeHt788svv5CRkYG1tTWlSpUiODiY1atXa40ozu1cuLq6Aijt9+7dC2QlNl/eV+PGjblx44ZyfnQtJCSEKVOmsGPHDiVRnJ/4Dhw4oHGey5UrB0C5cuU0lh84cKDAMcbHxwNoxKenp6ck67N7+fOhUqlwcXHJ9Tpllz2hHR0drXEcw4YN01hftmxZ4uPjiY+P58CBA0yePJmIiAgmTZqUY/+NGjXC3NycrVu3EhUVhYeHh87rogvxLsnIYiGEEEIIIYQQ4jXs7Oy0lgUFBbF8+XImTpxI1apVsbS0ZNu2bUyePJmnT59SuHBhpa2lpaXGtoaGhhqTZm3YsIGQkBBCQkIYPHgwzs7OhIeHK4++5yQ1NVVr8i51rCkpKa+NP7e4XhdvcnIyAG3atMmxz+xJ05z2HRoaypAhQ5T3y5YtIyEhgaVLlyrLjIyMtLbL3ldycjIpKSlaI0XVrl+/jqOjI7GxsYSEhPD555/z6NEjqlatypw5c6hXr57SNrdz8fJxZ2ZmYmNjk+O+rly5opTp0KXNmzfj5uaGp6enxvK8xle1alUlmQtZ56hly5Zs374de3t7Zbmzs3OBY7x+/ToGBgYUKVJEY3lO9yvkfO7v3r37yn1YW1tjZGSklVT28vLKMVmtZmxsTLVq1ZT39erV4+bNm0yZMoUhQ4ZgZWWl0V5fX5+OHTsSFRVFYmIivXv3fmVcQrzvJFkshBBCCCGEEEK8Rk6P42/atIkBAwYQFBSkLNu5c2eB+re3t2flypWsWLGChIQEJk+eTKdOnThz5gxlypTJcRsrKytu3bqltfzmzZtaCa+ClhPIbb8ACxcupGbNmlrrHRwcXrtvJycnnJyclPc7duzg7NmzGkm8nGTvy8rKCltb21xLAqiTkxUqVGDTpk2kpaVx5MgRxo0bR4sWLbh69apGUv9VrKysUKlUHD58WEkkv+xNkqv5sX37dtq2bUu7du3YunWrkijPa3zm5uYa5zkxMREANzc3jWvyJuzt7UlLS+PevXsaCeOc7teCKlSoEJ9++ik//vgjGRkZSsmSokWLKseX03nIiYuLC8+fP+fvv//O8Z7u0qULdevWBdAoFSPEh0iSxUIIIYQQQgghPiiGhoY8e/asQNu9PNr3dZ48eaKRjMrIyNCa3C2/9PT0qF69OpMnT2b79u2cO3cu12Sxp6cnM2fOJDY2VnmMPz09nZiYGK1Rp2/Txx9/jKOjIxcuXODzzz/X2X7yonHjxsyYMQNDQ0Pc3d1f297AwID69eszduxYWrZsybVr1/JcUkBdn/rOnTu5llOAgt9/eeXs7MzevXtp2LAhXbp0YcOGDejr6+c5vn+COlm7bds2pfb2ixcv+O677wrUX26fzVGjRuHn50d4eLhSY7sg/vjjD4BcR2XXrl2brl27UqxYMRwdHQu8HyHeB5IsFkIIIYQQQgjxQXFxcSE9PZ358+dTp04dLCws8jTq08XFhX379vHDDz9QtGhRSpcujbW1da7tvb29Wb58Oa6urtjY2PDVV18VKEl47949fHx86N69O87Ozjx//pyIiAgsLS3x8PDIdbvmzZtTo0YN/P39mTZtGnZ2dkRERHD9+nXGjRuX7zjySqVSMWfOHLp27cqjR49o3rw5ZmZmXLp0iZ07dxIeHv6P1XT19vamRYsW+Pr6MmbMGNzd3Xn06BGnTp3i3LlzrFixgt9++42AgAA6depE2bJluXfvHlOnTsXJySnHusi5qVChAp9//jndu3cnMDCQmjVrkpaWxtmzZ9m/fz9bt24FCn7/5YebmxuxsbE0atSIzz77jDVr1uQ5voK6f/8+mzdv1lqe02SBn3zyCW3atGHYsGE8fvyYUqVKsWzZMp48eVKgUe4uLi6sXLmSqKgoypcvj42NDU5OTjRv3pyxY8fyxRdfcPLkSTp16oS9vT337t3j0KFD3LhxA3Nzc42+njx5wrFjx5SfDx06xPLly/H29s71flCpVHzzzTf5jluI95Eki4UQQgghhBBCfFBatGjB4MGDmTp1Krdu3aJevXrExcW9drvw8HAGDRpEu3btePDgAatWraJnz565to+IiGDgwIEMHToUU1NTevbsSZs2bejXr1++4jU2NsbNzY2IiAguX76MiYkJ1apVIzY2NteRjpBVS3XXrl2MHj2awMBAHj16hIeHB7GxsVStWjVfMeRXhw4dsLS0ZMqUKaxduxbIKi3h6+uba31kXdm8eTPTpk3jq6++4tKlSxQpUoSKFSvSq1cvAD766CM++ugjpk6dytWrVylSpAh169Zl7dq1SumCvFqwYAHOzs4sXbqUSZMmUbhwYZydnenQoYPSpqD3X355eHiwZ88evL29GTBgAMuWLctTfAV15cqVHPs5dOhQju1XrlzJkCFDGD16NMbGxnz22WdUrFiRhQsX5nvfffr04cSJEwwdOpQ7d+7w2WefERkZCcDUqVPx9PRk0aJFDB48mHv37mFlZUXVqlVZuXIlnTt31ujrwoUL1K5dG8gasVyqVCkCAwMZO3ZsvuMS4kOkyszMzHzXQbxv7t+/T5EiRbh37x4WFhbvOpz3RtXANTrt/8v2DXTaf8XvtWfwfZvM63TXaf9+p7fptP9+jbrprO/SgzborG8Aj4H5+5/5/FqdUOT1jd5AFa+SOu0/bt2XOu2/jrfP6xu9gY+S8j5aJL/s6+Q8QcfbMu+A9siNt8nX11en/V++Muz1jd7Ax866nVyk+9nSOus72KWczvoGmBn5P532L39zX+19/pvb85PBOuv7Q/W+/tvg6dOnXLx4kdKlS2NsbPyuwxFC/EfUq1cPfX199u/f/65DEeI/J69/+2VksRBCCCGEEEIIIYR4q6Kjo7l8+TJubm48fvyYdevWcejQIWJiYt51aEKIV5BksRBCCCGEEEKID156enqu61QqVb7LEQiRH//F+69w4cJ88803/P333zx//pyPP/6YtWvX0rp163cdmhDiFSRZLIQQQgghhBDig2dgYJDrulKlSpGYmPjPBSP+c/6L95+Pjw8+ProtOSeEePskWSyEEEIIIYQQ4oMXHx+f6zojI6N/MBLxXyT3nxDifSHJYiGEEEIIIYQQH7xq1aq96xDEf5jcf0KI94Xeuw5ACCGEEEIIIYQQQgghxLsnyWIhhBBCCCGEEEIIIYQQkiwWQgghhBBCCCGEEEIIIcliIYQQQgghhBBCCCGEEEiyWAghhBBCCCGEEEIIIQSSLBZCCCGEEEIIIYQQQgiBJIuFEEIIIYQQQnwA5s6dS8mSJdHX18fS0pLw8PB89zFv3jx27dqlg+jejnXr1lG+fHkMDAyoXLnyuw5H5CIuLq5A95+TkxNDhgxR3vfs2ZOKFSsq7yMjI1GpVCQnJ7+VOIUQIieF3nUAQgghhBBCCCH+PX77bck727e7+8ACbff3338TEBBAUFAQLVq0YOHChYSHhzNu3Lh89TNv3jz8/Pxo1qxZgeLQpYcPH9K7d2+6dOlCZGQkFhYW7zokkYu4uDhmzZqV7/svuwkTJvDo0aO3FJUQQuSNjCwWQgghhBBCCPFeO3PmDJmZmfTr1486depQoUIFne7v2bNnvHjxQqf7yC4xMZFnz57RvXt3Pv30U9zc3ArcV0ZGBmlpaW8xurx78uRJjstDQ0Np0KDBW+nrQ1G2bFnc3d3fdRhCiP8YSRYLIYQQQgghhHhv9ezZkxYtWgBZyTWVSkVYWBiPHj1CpVKhUqnylIR0cnLi0qVLLFq0SNkuMjJSWTdkyBBmzJhBqVKlMDExISUlhb/++ovOnTtTokQJTE1NcXV1Zfbs2RqJ5MTERFQqFWvXrmXIkCEULVoUe3t7Ro8eTXp6utIuKSmJjh07Ymdnh7GxMaVLl2bkyJFAViJVnRz28vJCpVIRGhoKQEpKCr1798bGxgYTExPq1KnDwYMHNY6tQYMG+Pn5sXr1apydnTEyMuLXX39Vyhzs3bsXd3d3TExMqF+/PomJiaSkpNCxY0csLCwoW7YsGzZs0DpnO3fupGbNmpiYmGBra8ugQYM0RsLGxcWhUqnYuXMn7du3x8LCgg4dOrz+ouZAfR4jIyPp168f1tbW1KhRA8hK3o8bN45SpUphZGSEi4sL69at09j+1KlTNGvWDGtra0xNTXF2dmbGjBnKevW5iIuLo0qVKpiZmVGjRg0SEhI0+snMzGTWrFlUqFABIyMjypQpw9y5c5X1oaGhBbr/cpK9DEVOVq1ahaGhIV9//XWe4hNCiNeRMhRCCCGEEEIIId5bEyZMwNXVlaCgILZs2YKtrS2rVq0iKiqKffv2AeSpZENMTAzNmjXD09OTgIAAICv5rBYdHU358uWZP38++vr6mJmZ8euvv+Ls7Ey3bt0wNzfn5MmTTJw4kYcPHzJx4kSN/kNCQmjVqhUbN27kyJEjhIaGUq5cOQYOzCq90aNHD65du8aCBQuws7Pj8uXL/PTTTwD07duXsmXL0qNHDxYtWoSHhweOjo5kZGTQtGlTLly4wPTp07Gzs2PBggV4e3tz5MgRqlatquz/p59+IjExkUmTJlG0aFFKlCgBwI0bNwgICCAkJAQDAwOGDRtGt27dMDU1pV69evTr14/ly5fj7+9PrVq1KFWqFACbN2+mU6dO9OrVi7CwMK5fv87YsWNJTU1l/fr1Gsfev39//P39iYmJQV9fP1/XN7vg4GCaN29OVFSUkpTv2LEjhw8fZuLEibi4uLBr1y78/f0pWrQoTZs2BaBFixbY2dnx9ddfU6RIEc6dO0dSUpJG3zdu3GDYsGGMHTuWIkWKEBwcTJs2bTh//jwGBgYADB8+nBUrVhASEkLNmjU5cuQIQUFBmJiYMHDgQPr27UtSUhLr1q3L1/1XEBEREYwePZo1a9bQuXPnPMUnhBCvI8liIYQQQgghhBDvrbJlyyplJ6pUqYKTkxN79+5FT0+PWrVq5bmfKlWqYGRkhJ2dXY7bpaWlsXv3bszMzJRlXl5eeHl5AVkjOj09PXn8+DELFy7UShbXrFmTBQsWAODt7c3+/fvZvHmzksA7ceIEU6dOpVOnTso2PXr0AMDR0VEZWezq6qrEt337dk6cOMGePXvw8fEBwMfHh3LlyhEeHk50dLTSV0pKCvHx8UqS+OXlBw4c4JNPPgHg2rVrDB06lKCgICZMmABA9erV2bJlC1u3bmX48OFkZmYyevRoOnXqxIoVK5S+7O3tadasGRMmTFD6A2jZsiXTp0/X2O+LFy80RmC/ePGCzMxMjdHWKpVKK7lcuXJljX3u37+f7du38/3339OkSRPl/F6/fp2JEyfStGlTkpOTuXjxIvPnz1dGoTds2JDssp8LMzMzGjZsyPHjx/H09OT8+fMsXLiQJUuW0L9/fwAaN27M48ePCQsLo3///jg6OuLo6Jjv+y+/pk6dSlhYGJs2baJly5YAeYpPT08eMBdCvJr8lhBCCCGEEEIIIV6jQYMGGoligKdPnzJx4kTKlSuHkZERBgYGhISEcP36dR4+fKjRVp3IVHN1ddUY2erh4cGsWbNYvHgx586dy1NMhw4dwsLCQkkUAxgYGNC2bVsOHz6s0dbd3V0rUQzg4OCgkdhVJ94bN26sLLO0tKRYsWJcuXIFgLNnz3Lp0iU6duxIenq68qpfvz56enrKiGi15s2ba+23d+/eGBgYKK8vv/ySgwcPaix7eWR3bn3FxsZiZWVFo0aNNGLx9vbml19+ISMjA2tra0qVKkVwcDCrV6/WGlGc27lwdXUFUNrv3bsXgHbt2mnsq3Hjxty4cUM5P7oWEhLClClT2LFjh5Io/jfFJ4R4v0myWAghhBBCCCGEeA07OzutZUFBQcycOZN+/fqxa9cu4uPjGT9+PJCVSH6ZpaWlxntDQ0ONNhs2bMDLy4uQkBDKly/Pxx9/zJYtW14ZU2pqKsWKFcsx1pSUlNfGn1tcr4s3OTkZgDZt2mgkd01NTcnIyNBKSua079DQUOLj45VXv3798PDw0Fj23Xff5XhsL0tOTiYlJUUjDgMDA/r27Ut6ejrXr19HpVIRGxuLi4sLn3/+OSVKlKBatWpatZ1zOxcvH3dmZiY2NjYa+/L29gb4x5Kxmzdvxs3NDU9PT43l/5b4hBDvNylDIYQQQgghhBBCvIZKpdJatmnTJgYMGEBQUJCybOfOnQXq397enpUrV7JixQoSEhKYPHkynTp14syZM5QpUybHbaysrLh165bW8ps3b2JlZfXa+AtK3ffChQupWbOm1noHB4fX7tvJyQknJyfl/Y4dOzh79izVqlV75b6z92VlZYWtrS27du3Ksb06mV6hQgU2bdpEWloaR44cYdy4cbRo0YKrV69SuHDhV+7z5X2pVCoOHz6sJJJf5uzsnKd+3tT27dtp27Yt7dq1Y+vWrUo95X9LfEKI95ski4UQQgghhBBCfFD+H3t3Hl7TufZx/LsTkUTIJJpGDYmEkKIVMcWUiggitKaYG9RY4SiO+YihoYYagg7UdFSouUV7UiUoWqm22jpKi5jnmRoyvX/kynptCRJsGuf3ua59HXutZ93PvdbaTurOs++VP39+bt++/UjH3bsi+EFu3rxpVpRLTU3N8nC33LKysqJKlSqMGzeOzz//nD///PO+xeJatWoxadIk4uPjjTYXKSkprF69Osuq0yepbNmyFCtWjEOHDvH2229bbJ6cqF+/PhMnTiR//vxUrFjxoeNtbGyoW7cuQ4YMoWnTppw8edJovfEwmf2pL1y4YPQ+zs6jfv5yytfXl40bN/Laa6/Rtm1bli1bhrW1dY7zExF5EBWLRURERERE5LlSrlw5UlJSmD59OoGBgTg6OuZoVWW5cuXYtGkTX3/9NS4uLnh5eVG4cOH7jg8JCWHOnDn4+fnh5ubG7NmzH6lIeOXKFUJDQ+nYsSO+vr7cuXOH2NhYnJ2d8ff3v+9xYWFhVK1alQ4dOjBhwgTc3d2JjY3l1KlTDBs2LNd55JTJZOL999+nXbt23Lhxg7CwMBwcHDhy5Ajr168nJiYmxwXYxxUSEkJ4eDgNGzbkn//8JxUrVuTGjRvs3buXP//8k7lz5/LLL78wYMAAIiIi8Pb25sqVK4wfPx5PT89s+yLfT5kyZXj77bfp2LEjgwYNolq1aiQnJ3PgwAE2b97MmjVrgEf//OVGhQoViI+Pp169erz55pssWrQox/mJiDyIisUiIiIiIiLyXAkPD6d3796MHz+es2fPUqdOHRISEh56XExMDL169aJFixZcu3aN+fPnExkZed/xsbGx9OzZk6ioKAoUKEBkZCRvvPEG3bp1y1W+dnZ2VKhQgdjYWI4ePYq9vT0BAQHEx8fj5uZ23+Osra3ZsGEDAwcOZNCgQdy4cQN/f3/i4+OpXLlyrnLIrVatWuHs7My7777L4sWLgYzWEg0bNrxvf2RLWbFiBRMmTGD27NkcOXIEJycnypcvT+fOnQF48cUXefHFFxk/fjwnTpzAycmJ2rVrs3jxYqytrXM114wZM/D19eWjjz5izJgxFCxYEF9fX1q1amWMedTPX275+/vz1VdfERISQo8ePfj4449zlJ+IyIOY0tPT0591EnnN1atXcXJy4sqVKzg6Oj7rdPKMyoMWWTT+2JZBFo1f/j9Zn+D7JBUK7GjR+E32rbVo/G712lsstlevZRaLDeDfM3f/MZ9bC3c7WTR+peASFo2fsGSsReMHhoQ+fNBjePF4zleL5JZHYNYHyjxJ07assGj8hg0bWjT+0WN9LRq/rG8Xi8bveMDLYrGHlvOxWGyASQu2WzS+fuY+WF7+mRv5cm+LxX5e5dV/G9y6dYvDhw/j5eWFnZ3ds05HRERELCynP/utnmJOIiIiIiIiIiIiIvI3pTYUIiIiIiIi8txLSUm57z6TyZTrdgQiuaHPn4jkFSoWi4iIiIiIyHPPxsbmvvtKlixJUlLS00tG/ufo8ycieYWKxSIiIiIiIvLcS0xMvO8+W1vbp5iJ/C/S509E8goVi0VEREREROS5FxAQ8KxTkP9h+vyJSF6hB9yJiIiIiIiIiIiIiIrFIiIiIiIiIiIiIqJisYiIiIiIiIiIiIigYrGIiIiIiIiIiIiIoGKxiIiIiIiIiIiIiKBisYiIiIiIiIiIiIigYrGIiIiIiIg8B6ZOnUqJEiWwtrbG2dmZmJiYXMeYNm0aGzZssEB2T8aSJUsoXbo0NjY2vPrqq886HbmPhISER/r8eXp60qdPH+N9ZGQk5cuXN94vWLAAk8nE+fPnn0ieOZWcnEyFChWoW7cu6enpZvvWrFmDyWRi3bp1ZtuPHj3K22+/jbe3N3Z2dhQqVIjKlSszatQozp07Z4xLSEjAZDIZr3z58lGyZEl69erFhQsXnsr53evy5ctER0fz3//+97FjZZ7fDz/8cN8x9973nMrJcUlJSURHR3Py5Mls91viPgUFBWEymWjTpk2W+a5du4a9vT0mk4kFCxbk+pzl6cj3rBMQERERERGRv49XVvznmc29p2XoIx33xx9/MGDAAAYPHkx4eDgzZ84kJiaGYcOG5SrOtGnTaNKkCY0bN36kPCzp+vXrdOnShbZt27JgwQIcHR2fdUpyHwkJCUyePDnXn797jRw5khs3bjyhrB6djY0NH3zwAXXq1GHBggV07twZyPhMRkVF0bx5c5o0aWKM//7772nUqBGurq7069ePChUqkJyczI4dO/jwww85cOAAcXFxZnPMnz+fsmXLkpKSwt69exk+fDiHDx/mq6++eqrnChnF4tGjR1O+fHn8/PwsPt/q1atxcXGxSOykpCRGjx5NkyZNKFq0qNk+S96nggUL8sUXX3Djxg0cHBzMzjVfPpUi/+50h0RERERERCRP279/P+np6XTr1o1SpUoRHx9v0flu376NjY0NVlZP78u6SUlJ3L59m44dO1KzZs3HipWamkpaWho2NjZPKLucu3nzJvb29lm2R0dHk5CQQEJCwmPHel54e3s/lXmSkpLw8vLi8OHDeHp6ZjumVq1adO7cmUGDBhEeHo6bmxsjRozgypUrzJgxwxh369YtWrVqRbFixfj222/NfqnRoEEDBgwYwBdffJElfvny5QkICDDmunXrFv379+f69esULFjwyZ7wExQUFERQUBDR0dGPHKNSpUpPLqEcsvR9qlmzJrt37+bzzz+nbdu2xva4uDhef/11Fi9ebMGzk8elNhQiIiIiIiKSZ0VGRhIeHg5kFNdMJhOjR4/mxo0bxlemg4KCHhrH09OTI0eOMGvWLOO4zK9JZ37de+LEiZQsWRJ7e3suXrzI77//Tps2bShevDgFChTAz8+PKVOmkJaWZsRNSkrCZDKxePFi+vTpg4uLCx4eHgwcOJCUlBRj3PHjx2ndujXu7u7Y2dnh5eVF//79gYxCaoUKFQAIDg7GZDIZxamLFy/SpUsX3NzcsLe3JzAwkK1bt5qdW1BQEE2aNGHhwoX4+vpia2vLnj17jDYHGzdupGLFitjb21O3bl2SkpK4ePEirVu3xtHREW9vb5YtW5blmq1fv55q1aphb29PkSJF6NWrl9lK2Myvrq9fv56WLVvi6OhIq1atHn5Ts5F5HRcsWEC3bt0oXLgwVatWBTKK98OGDaNkyZLY2tpSrlw5lixZYnb83r17ady4MYULF6ZAgQL4+voyceJEY3/mtUhISKBSpUo4ODhQtWpVdu/ebRYnPT2dyZMnU6ZMGWxtbSlVqhRTp0419kdHRz/S5y8797ahyM78+fPJnz8/n3zySY7yexwTJ07EZDIxaNAgdu/ezcyZMxk7diwvvfSSMWb58uUcO3aMCRMmZLv6vVChQrRr1+6hcxUqVIj09HRSU1ONbWlpaYwbNw5PT09sbW0pW7YsH330UZZjt27dSmBgIPb29ri5udGlSxcuXrxoNmbChAn4+PhgZ2dHkSJFqF+/PocPHzYK5wCtWrUy7mFSUlJOL1OuZddO4qOPPqJkyZIUKFCAkJAQfvrpp/u2bpg1axYlS5bEycmJ119/3WgfkZCQwGuvvQZAlSpVjHMBy94ngHz58tGyZUuzlcnnzp1j48aNOYorz5ZWFouIiIiIiEieNXLkSPz8/Bg8eDCrVq2iSJEizJ8/n7i4ODZt2gSQo5YNq1evpnHjxtSqVYsBAwYA5is7V65cSenSpZk+fTrW1tY4ODiwZ88efH19ad++PYUKFeLnn39m1KhRXL9+nVGjRpnFHz58OM2aNeOzzz5jx44dREdH4+PjQ8+ePQHo1KkTJ0+eZMaMGbi7u3P06FGjz+lbb72Ft7c3nTp1YtasWfj7+1OsWDFSU1Np1KgRhw4d4r333sPd3Z0ZM2YQEhLCjh07qFy5sjH/Dz/8QFJSEmPGjMHFxYXixYsDcPr0aQYMGMDw4cOxsbGhb9++tG/fngIFClCnTh26devGnDlz6NChA9WrV6dkyZIArFixgoiICDp37szo0aM5deoUQ4YM4dKlSyxdutTs3Lt3706HDh1YvXo11tbWubq/9xo6dChhYWHExcUZRfnWrVvz7bffMmrUKMqVK8eGDRvo0KEDLi4uNGrUCIDw8HDc3d355JNPcHJy4s8//+T48eNmsU+fPk3fvn0ZMmQITk5ODB06lDfeeIODBw8aq7D79evH3LlzGT58ONWqVWPHjh0MHjwYe3t7evbsyVtvvcXx48dZsmRJrj5/jyI2NpaBAweyaNEioz/sw/J7HIULF2bixIl06dKFhIQEXnnllSxFzoSEBPLly0e9evVyFTs1NZWUlBSjvcHkyZOpX78+Tk5OxphBgwYxffp0RowYQWBgIOvWraNnz54kJycbeezevZuQkBCCgoJYvnw5Z86cYciQIezdu5cdO3ZgbW3NokWLGDlyJGPGjKFGjRpcuXKFbdu2cfXqVcqWLcuqVato3rw5MTExRrHVw8Pjsa5dbnz++efGZ6lly5b8/PPPtG7d+r5j//jjD2bNmsX58+fp378/UVFRLF26FH9/f2bNmsXbb79ttI/IZMn7lKlt27aEhIRw6dIlXFxcWL58OcWKFaNGjRq5uyDy1KlYLCIiIiIiInmWt7c3ZcqUATK+zu3p6cnGjRuxsrKievXqOY5TqVIlbG1tcXd3z/a45ORkvvzyS7P+m8HBwQQHBwMZKzpr1arFX3/9xcyZM7MUi6tVq2Z8XT8kJITNmzezYsUKo4C3a9cuxo8fT0REhHFMp06dAChWrJixstjPz8/I7/PPP2fXrl189dVXhIZm9HsODQ3Fx8eHmJgYVq5cacS6ePEiiYmJRpH47u1btmzh5ZdfBuDkyZNERUUxePBgRo4cCWSsSly1ahVr1qyhX79+pKenM3DgQCIiIpg7d64Ry8PDg8aNGzNy5EgjHkDTpk157733zOZNS0szW4GdlpZGenq62Wprk8mUpbj86quvms25efNmPv/8c/7zn//QoEED4/qeOnWKUaNG0ahRI86fP8/hw4eZPn26sQo9swj4oGvh4ODAa6+9xvfff0+tWrU4ePAgM2fO5MMPP6R79+4A1K9fn7/++ovRo0fTvXt3ihUrRrFixXL9+cut8ePHM3r0aJYvX07Tpk0BcpSflZVVlpWgmX/OLARmsra2NlaiZoqMjOTdd9/l4MGDfPrpp1nuz8mTJ3Fzc8POzs5se2pqqvFwvOzu673XqmLFiixatMh4f/78eWJjYxk0aJCxqr5BgwacP3+eMWPG0KtXL6ytrXn33Xd58cUXWbdunVHgL168OKGhoWzYsIHw8HB27dpFxYoVGTp0qBG/WbNmxp8z20KULl06S153nwdk/L1PS0szu25WVlaP1aJm3Lhx1KtXjzlz5gAZf6eTk5ONv493S09P5/PPP8fW1hbIWIEfExNDWloajo6ORs/lu9tHgOXu091q167NCy+8wKpVq+jatStxcXFmLSnk7yvPtqHI/C2Jvb09rq6utGzZkoMHDz7wmCFDhlCjRg1eeOEF7OzsKFWqFFFRUZw9e/YpZS0iIiIiIiJ5UVBQkFmhGDL6fo4aNQofHx9sbW2xsbFh+PDhnDp1iuvXr5uNzSxkZvLz8zNb2erv78/kyZP54IMP+PPPP3OU07Zt23B0dDQKxZDxMLLmzZvz7bffmo2tWLFilkIxQNGiRc0Ku5mF9/r16xvbnJ2deeGFFzh27BgABw4c4MiRI7Ru3dpYZZiSkkLdunWxsrIyVkRnCgsLyzJvly5dsLGxMV5jx45l69atZtuy69l7b6z4+HhcXV2pV6+eWS6ZX91PTU2lcOHClCxZkqFDh7Jw4cIsK4rvdy0yC22Z4zdu3AhAixYtzOaqX78+p0+fNq6PpQ0fPpx3332XdevWGYXi3OS3ZcsWs+vs4+MDgI+Pj9n2LVu2ZJn7m2++4eDBg5hMpvv2l763wAzg5ORkxM1uFeqiRYtITEzk+++/Jy4ujjt37tCwYUPj79H3339PcnJyljYmERERnDt3jgMHDgAZfyeaNWtm1o+7QYMGODs7G38n/P39+emnn3jnnXf49ttvSU5Ozv5CZ8Pb29vsGm3dupWxY8eabevSpUuO490rNTWVn376yey+gnkx+25169Y1CsWQ8ZlNTk7OUZ3LEvfp3vgRERHExcVx7Ngxtm/frmJxHpEnVxZ/8sknvPXWWwB4eXlx4cIFVq5cybZt29izZw8vvvhitse99957WFtbU65cOWxsbDh8+DAzZ84kISGBPXv2PNWHE4iIiIiIiEje4e7unmXb4MGDmTNnDqNGjaJy5co4Ozuzdu1axo0bx61bt8we+OTs7Gx2bP78+bl165bxftmyZQwfPpzhw4fTu3dvfH19iYmJoXnz5vfN6dKlS7zwwgvZ5npvj9bs8r9fXg/L9/z58wC88cYb2ca8t2ia3dzR0dFmLQw+/vhjdu/ebdaD9u4i2P1inT9/nosXL973YX2nTp2iWLFixMfHM3z4cN5++21u3LhB5cqVef/996lTp44x9n7X4u7zTk9Px83NLdu5jh07ZrTpsKQVK1ZQoUIFatWqZbY9p/lVrlyZxMREY/upU6do2rQpn3/+uVm7BV9fX7Pjb9++Ta9evQgJCaFKlSqMGzeOdu3amT0Ur2jRomzcuJHbt2+b3b9t27aRmprKxx9/nKWfNEC5cuWMla9Vq1alTJkyVK5cmQULFtCnTx8uXboEZL3/me8zP++XLl3K9vN299+JyMhIrl27xscff8zUqVNxcnLizTffZMKECQ99YOIXX3zB7du3jfc9evSgcuXKxkpu4L7XPyfOnTtHSkoKRYoUMdue3d9zePhn9n4sdZ/u1bZtW6ZNm8bUqVN5+eWXqVChApcvX35gbvLs5bli8Z07dxgyZAiQ8duyFStWcPLkScqWLcvZs2eJiYkxexLn3YYPH06/fv0oUqQIqampREREsHLlSn777Tf27NnzTJ5AKSIiIiIiIn9/2a3CW758OT169GDw4MHGtvXr1z9SfA8PD+bNm8fcuXPZvXs348aNIyIigv3791OqVKlsj3F1dc12BeGZM2dwdXV9aP6PKjP2zJkzqVatWpb9RYsWfejcnp6eZkXGdevWceDAAbOvymfn3liurq4UKVKEDRs2ZDs+s8hWpkwZli9fTnJyMjt27GDYsGGEh4dz4sQJs6L+g7i6umIymfj222+Notzd7i2uWsrnn39O8+bNadGiBWvWrDEK5TnNr1ChQmbXOfPhbRUqVDC7J/eKiYnh2LFjfPnll7z00kvExcURFRXFF198YYwJCgpi3rx5bN68mYYNGxrbM+st69aty9E5litXDsh4MGHmuQGcPXvW7IF6Z86cMdufk78TVlZW9OvXj379+nHixAmWLl3KkCFDcHNzy7bVw90y28FkKlSoEEWLFn3o5zanihQpQr58+YyH1GV60t+It9R9ulflypUpVaoU06dPZ+zYsY+ZtTwteW4pbWJiovFbzBYtWgAZP4gy+6Z89dVX9z123Lhxxm9nrK2tCQwMNPZl9xtLERERERERyXvy589vtvovN8c9bEXe3W7evGlWlEtNTc3ycLfcsrKyMlZtpqSkPLAlRa1atbh69Srx8fHGtpSUFFavXp1l1emTVLZsWYoVK8ahQ4cICAjI8rq3WGxJ9evX59y5c+TPnz/bXO4tmtrY2FC3bl2GDBnC1atXOXnyZI7nyuxPfeHChWznKlSoEPDon7+c8vX1ZePGjXz//fe0bdvW6Dmc0/wexYEDB3jvvfcYOnQoPj4+2NvbM2PGDNatW8eaNWuMca1ataJ48eIMHTqUa9euPfJ8v/32G/D/q3SrVq2KjY0Ny5cvNxv32Wef8cILLxjtU2rVqsWaNWvMegh//fXXXL58Odu/Ey+99BIDBgygYsWK7Nu3D8j56lxLsLa2plKlSqxdu9Zs+93XODfudy6Wuk/ZGTJkCOHh4bRv3/6R55GnK8+tLL776yx3L8PP/JrB0aNHcxTnxo0bRhPumjVrGr2IsnP79m2z/6O/evVqrnIWERERERGRp6dcuXKkpKQwffp0AgMDcXR0zNGqz3LlyrFp0ya+/vprXFxc8PLyonDhwvcdHxISwpw5c/Dz88PNzY3Zs2c/UpHwypUrhIaG0rFjR3x9fblz5w6xsbE4Ozvj7+9/3+PCwsKoWrUqHTp0YMKECbi7uxMbG8upU6cYNmxYrvPIKZPJxPvvv0+7du24ceMGYWFhODg4cOTIEdavX09MTIxRvLO0kJAQwsPDadiwIf/85z+pWLEiN27cYO/evfz555/MnTuXX375hQEDBhAREYG3tzdXrlxh/PjxeHp6ZtsX+X7KlCnD22+/TceOHRk0aBDVqlUjOTmZAwcOsHnzZqOg96ifv9yoUKEC8fHx1KtXjzfffJNFixblOL9H0atXL0qWLGl80xugSZMmvP766/Tr14+QkBAcHByws7Nj+fLlNGzYEH9/f6KioqhQoQKpqan88ccfLFu2LNui9W+//UZKSgppaWkcOnSIsWPHUqBAAeMhj25ubkRFRTFp0iTs7OyoXr06GzZsYMmSJcTGxhoPYhs+fDiBgYE0adKEqKgozpw5w5AhQ6hatSqNGzcGMlpHuLi4UL16dVxcXNi+fTt79uyhd+/eALz44os4OzsTFxeHl5cXtra2VKxYMdvV2jm1adMmYwV3Ji8vLypXrpxl7IgRI2jWrBndunWjVatW/PTTTyxcuBAg1+1Ty5Qpg7W1NfPmzSNfvnzky5ePgIAAi92n7HTp0uWx+jjL05fnisX3c/fTKB/m3LlzhIeHs2fPHsqWLZvlN1P3ynzKqIiIiIiIiPz9hYeH07t3b8aPH8/Zs2epU6fOfR/GdbeYmBh69epFixYtuHbtGvPnzycyMvK+42NjY+nZsydRUVEUKFCAyMhI3njjDbp165arfO3s7KhQoQKxsbEcPXoUe3t7AgICiI+Pf+CKPWtrazZs2MDAgQMZNGgQN27cwN/fn/j4+GyLUE9Sq1atcHZ25t1332Xx4sVARmuJhg0b3rc/sqWsWLGCCRMmMHv2bI4cOYKTkxPly5enc+fOQEbx78UXX2T8+PGcOHECJycnateuzeLFi40iY07NmDEDX19fPvroI8aMGUPBggXx9fU1e/Dao37+csvf35+vvvqKkJAQevTowccff5yj/HLr3//+N5s2bWLjxo1ZvpU9ffp0/Pz8GDNmDO+99x4A1apVY8+ePUyYMIFp06Zx4sQJbGxsKFOmDK1atcq2t23mvTKZTLi7u1O1alWWL19O6dKljTGTJk3C2dmZuXPnMm7cODw9Pfnwww/p0aOHMaZy5crEx8czdOhQWrRogYODA02bNmXKlCnGvQ4MDGTOnDnMmTOHv/76i1KlSjF16lS6du0KZBRk58+fz7BhwwgODub27dscPnz4gS06HubuVjWZunbtyty5c7Nsb9q0KR988AExMTEsXryYatWq8cEHH9CgQYNsHzr3IG5ubsyaNYuJEyfy73//m5SUFKN+Zqn7JHmfKT03Vda/ge3btxtfHViyZInxJMUGDRrw9ddfU7p0aeMpmNnZv38/jRs35tChQ1SvXp0vvvjioc3Hs1tZXLx4ca5cuYKjo+MTOKv/DZUHLbJo/LEtgywav/x/sj7B90kqFNjRovGb7Fv78EGPoVs9y32lxKvXMovFBvDvmbv/mM+thbtz9wM9tyoFl7Bo/IQllu0tFRgS+vBBj+HF4zlfLZJbHoHZP2jiSZm2ZYVF49/dn8wSjh7ra9H4ZX0tu0Kh4wEvi8UeWs7HYrEBJi3YbtH4+pn7YHn5Z27ky70tFvt5dfXqVZycnPLcvw1u3brF4cOH8fLyws7O7lmnIyIiD/DJJ5/w1ltvPXbRWv635fRnf57rWVylShXja0ArV64E4OTJk3z33XfA///Dt2zZspQtW5aZM2cax27dupXAwEAOHTpEy5Yt2bx5c46eUmlra4ujo6PZS0RERERERERE5Em6ePEi/fr1Y+3atWzatIn33nuP/v3706xZMxWK5anIc20o8ufPT0xMDD169GDlypWUKlWKCxcucO3aNdzc3Iz+Ofv37wcwHoYHGb2M7ty5g8lk4ujRowQFBRn7Ro4cSViYZVexiIiIiIiIyLNx9wOv7mUymXLdjkAkN/T5k5yysbHh4MGDLFmyhMuXL1OkSBE6duxotPkQsbQ8VywG6N69Ow4ODkyePJl9+/ZhZ2dH8+bNmTBhwgOfunrnzh0go7/xrl27zPadO3fOojmLiIiIiIjIs2NjY3PffSVLlszy8CmRJ0mfP8mpQoUKsW7dumedhvwPy5PFYoD27dvTvv39+7Vl14o5j7VnFhERERERkSckMTHxvvvufWiXyJOmz5+I5BV5tlgsIiIiIiIiklMBAQHPOgX5H6bPn4jkFXnuAXciIiIiIiIiIiIi8uSpWCwiIiIiIiIiIiIiKhaLiIiIiIiIiIiIiIrFIiIiIiIiIiIiIoKKxSIiIiIiIiIiIiKCisUiIiIiIiIiIiIigorFIiIiIiIiIk9FdHQ0O3bsyNUxCxYswGQycf78eQCSkpIwmUysWLHCGOPp6UmfPn2eaK45ERcXh8lk4ptvvjHbnpqaSkBAAFWrViUtLc3Ynp6ezqeffkq9evVwdXUlf/78vPTSS7Rs2ZINGzaYxQgKCsJkMhkvJycnqlevztq1a5/KuWVnzZo1zJ49+5nNLyLyNOR71gmIiIiIiIjI38fSvQef2dxtXvZ+ZnM/DaNHj6ZgwYIEBgY+cgwPDw927txJmTJlnmBmj6Zt27bMnz+f3r1788svv2BrawtAbGwsP//8M4mJiVhZZaxRS09Pp0OHDixdupROnToRFRVF4cKFOXr0KMuWLSMsLIzff/8dX19fI37NmjWZPHkyAJcvX+aTTz6hefPmbN26lZo1az71812zZg0//PADvXv3fupzi4g8LSoWi4iIiIiIyHMlPT2dO3fuGMXL54mtrS3Vq1d/KnNFRkYCGaub72f27NmUL1+e8ePHEx0dzfHjxxk5ciR9+/alUqVKZuOWLFnC/PnzjbiZOnTowIYNGyhQoIDZdmdnZ7NzrV+/Ph4eHqxdu/aZFItFRP4XqA2FiIiIiIiI5GmRkZGUL1+eDRs28Morr2Bra8sXX3zBzp07qVevHg4ODjg5OdGuXTvOnj1rduyECRPw8fHBzs6OIkWKUL9+fQ4fPgz8f8uHxYsX06dPH1xcXPDw8GDgwIGkpKSYxdm3bx/NmjXDyckJBwcHwsLCOHjw/1dpm0wmAAYNGmS0VkhISMj1uWbXhuJeFy5coEqVKlSuXNloX/Gw/B6Vj48PQ4cOZcKECRw4cIA+ffrg7OzMmDFjzMa9//77VKlSJUuhOFPjxo0pXrz4A+fKly8f9vb2JCcnm23/9ddfCQ0NNe5zy5YtOXr0qNmYW7du8c4771C0aFHs7Ox49dVXWb16tdmYvXv30rhxYwoXLkyBAgXw9fVl4sSJQMZnbOHChezdu9e4f/c7FxGRvEzFYhEREREREcnzTp48Sd++fenfvz9fffUV7u7uBAUF4eTkxLJly/j4449JTEykWbNmxjGLFi1i5MiRdO3ala+++oq5c+fy6quvcvXqVbPYw4cPx8rKis8++4yePXsyZcoU5s6da+w/dOgQgYGBXLx4kQULFrBkyRLOnTtHcHAwt2/fBmDnzp0AREVFsXPnTnbu3Im/v/8Tvw6nT58mKCgIW1tbNm3ahJubW47yexxDhgyhZMmShIaGsnbtWmJjYylYsKCx/9ixYxw6dIgGDRrkKm56ejopKSmkpKRw/vx53n33XU6cOEHz5s3NYtepU4cLFy6wePFiPvzwQ3788Ufq1q3LtWvXjHHt27fno48+4p///Cdr1qzBz8+PFi1a8PnnnxtjwsPDuXTpEp988gnr169n4MCB3LhxA4CRI0fSuHFjSpUqZdy/kSNHPuolExH521IbChEREREREcnzLl26xJdffkm1atUAqFu3LgEBAaxatcpY1VuhQgVjBXLjxo3ZtWsXFStWZOjQoUacu4vJmapVq8aMGTMACAkJYfPmzaxYsYKePXsCGb2IXV1d+frrr7GzswMgMDCQUqVK8cknn9C7d2+jnUKJEiUs1kbi6NGjBAcH4+npyZo1a3BwcMhxfpDxYLr09HQjXuaf715FbTKZsLa2NpvX1taWESNG0KlTJ0JCQnj99dfN9p88eRIgy8rh9PR0UlNTjffW1tbGvQLYsGEDNjY2Zvvff/99ateubWybOnUqycnJxMfH4+rqCkClSpXw8/NjwYIFREVF8csvv7Bq1So+/PBDevToAUDDhg1JSkpi9OjRNG3alPPnz3P48GGmT59OeHg4AK+99poxj7e3N0WKFOHIkSNPrQ2IiMizoJXFIiIiIiIikucVLlzYKBT/9ddfbN++nVatWpGammqsTi1TpgzFixcnMTERAH9/f3766Sfeeecdvv322yztDTLduyLWz8+P48ePG+/j4+Np2rQp+fLlM+ZycXGhUqVKxlyWdvDgQWrXro2fnx/r1q0zCsW5yS84OBgbGxvjtWjRIhYtWmS2LTg4OMvc6enpfPzxx5hMJvbs2cPly5ezzfHuQjDAlClTzGJPmTLFbH+tWrVITEwkMTGRTZs20b9/f9555x0WLlxojNm2bRv16tUzCsUAZcuW5ZVXXuHbb781xgC0atXKLH5ERAQ//fQTN27coHDhwpQsWZKhQ4eycOFCs/srIvK/RMViERERERERyfPc3d2NP1+6dInU1FT69+9vVoy0sbHh6NGjHDt2DMjoQzt16lT+85//ULt2bYoUKUK/fv24efOmWWxnZ2ez9/nz5+fWrVvG+/PnzzNt2rQsc23bts2Yy9J27drF0aNH6dKlS5YH++U0v48++sgoziYmJtKkSROaNGlitu2jjz7KMve8efPYvn07K1as4M6dO2YrtQGKFi0KkKUA27FjRyNudpycnAgICCAgIIDXXnuNSZMmERYWxsCBA41Vz5cuXTK795nc3d25ePGiMcbGxsasoJw5Jj09ncuXL2MymYiPj6dcuXK8/fbbFC9enICAALZu3ZptbiIizyu1oRAREREREZE87+5Vq87OzphMJoYNG5alJQKAm5sbAFZWVvTr149+/fpx4sQJli5dypAhQ3Bzc8tVP1pXV1fCwsKMdg53K1SoUO5P5hG0bduWfPny0aZNG9atW2e2Ajin+fn6+prtK1y4MAABAQH3nff8+fMMHjyYzp0707x5c86ePcvbb79Nly5dqFKlCpDRfqJUqVLEx8ebPfjO3d0920Lvg5QrV44vvviCs2fP4u7ujqura5aHFgKcOXOGMmXKABnnn5yczKVLl3BxcTEbYzKZjF8GlClThuXLl5OcnMyOHTsYNmwY4eHhnDhxwqwHs4jI80zFYhEREREREXmuODg4UKNGDfbt28e4ceNydMxLL73EgAEDWLJkCfv27cvVfPXr1+e3336jUqVKWfr53s3GxsZsRfKTNm3aNG7dukWzZs34z3/+Q82aNXOV36MYOHAgJpOJiRMnAtC9e3fmz59Pz549SUxMxMoq4wvN77zzDn369OHf//43HTt2fOT5fvvtN2xsbHB0dAQyWlV8/PHHZoXg/fv388svv9ClSxdjDMDy5cvp3r27EWv58uVUqlTJrGUHZNynunXrMmTIEJo2bcrJkycpU6ZMlhXlIiLPIxWLRURERERE5LkzadIk6tWrR0REBG3atMHFxYXjx4/z9ddf07lzZ4KCgujRowcuLi5Ur14dFxcXtm/fzp49e7Jdgfsgo0ePpkqVKoSGhtK9e3fc3d05ffo0W7ZsoXbt2rRt2xbIWBW7du1aateujYODA76+vk985fEHH3zAzZs3ady4MRs3bqRKlSo5zi+3tmzZwsKFC5k3b56xCtnKyooPPviAqlWrMnv2bPr06QNA79692bFjB5GRkWzevJnw8HDc3Ny4cOEC8fHxQNZV2JcvX+a7774D4Nq1a2zYsIENGzbQrVs37O3tAejfvz/z58+nQYMGDB8+nFu3bjFixAhKlChBZGQkABUrVqR58+a888473Lx5E19fXxYvXsyOHTtYu3YtAL/88gsDBgwgIiICb29vrly5wvjx4/H09MTb2xvIuH/z5s0jLi6O0qVL4+bmhqen5yNdOxGRvysVi0VERERERMTQ5mXvZ53CExEYGMi3337LqFGj6Ny5M3fu3KFYsWIEBwfj4+NjjJkzZw5z5szhr7/+olSpUkydOpWuXbvmai4fHx927drFiBEj6N27N9evX8fDw4M6depQsWJFY9ysWbPo168fjRo14ubNm2zevJmgoKAnedqYTCbmzZvH7du3CQ0NJSEhgYoVK+Yov9y4c+cOvXr1onbt2kZRNpO/vz+9e/dmxIgRtGzZkhdffBGTycTixYtp1KgRc+fOpUuXLty4cYMiRYpQvXp11q1bR1hYmFmc7du3U6NGDQDs7e0pVaoUkyZNom/fvsaY4sWLs2XLFgYOHEj79u2xtrYmJCSE999/36z4vHjxYoYNG8aECRO4ePEiZcuWZcWKFYSHhwPw4osv8uKLLzJ+/HhOnDiBk5MTtWvXZvHixcZq7K5du7Jr1y6ioqK4cOECb775JgsWLHik6yci8ndlSs/sCi85dvXqVZycnLhy5Yrx1Rd5uMqDFlk0/tiWQRaNX/4/YQ8f9BgKBT76V7Fyosm+tRaN361ee4vF9uq1zGKxAfx7drNo/IW7nSwav1JwCYvGT1gy1qLxA0NCLRr/xeOW+wevR+ALFosNMG3LCovGb9iwoUXjHz3W9+GDHkNZ3y4Wjd/xgJfFYg8t52Ox2ACTFmy3aHz9zH2wvPwzN/Ll3K2mlLz7b4Nbt25x+PBhvLy8sLOze9bpiIiIiIXl9Ge/1VPMSURERERERERERET+ptSGQkREREREROQZSEtLIy0t7b77ra2tMZlMTzEjERH5X6eVxSIiIiIiIiLPwJgxY7Cxsbnva+HChc86RRER+R+jlcUiIiIiIiIiz0D37t1p0qTJffd7eVmuf76IiEh2VCwWEREREREReQaKFi1K0aJFn3UaIiIiBrWhEBEREREREREREREVi0VERERERERERERExWIRERERERERERERQcViEREREREREREREUHFYhERERERERERERFBxWIRERERERERERERQcViEREREREReQ5MnTqVEiVKYG1tjbOzMzExMbmOMW3aNDZs2GCB7J6MJUuWULp0aWxsbHj11VefdTpP1Y4dO7CysuKTTz7Jsu/111+nZMmS3Lhxw2z7l19+SePGjSlSpAg2Nja4u7sTFhZGXFwcaWlpxrjIyEhMJpPxcnBw4JVXXsl2rqclISHhkT7DIiKPK9+zTkBERERERET+PioPWvTM5t49qdMjHffHH38wYMAABg8eTHh4ODNnziQmJoZhw4blKs60adNo0qQJjRs3fqQ8LOn69et06dKFtm3bsmDBAhwdHZ91Sk9VYGAgXbt2ZfDgwTRr1gw3NzcA1qxZw9q1a/n8889xcHAwxg8bNozx48fzxhtvMHPmTDw8PDhz5gxr1qyhQ4cOuLq6EhoaaowvVaoUn376KQDXrl1j9erVvPXWWzg4ONCmTZune7JkFIsnT56c68+wiMjjUrFYRERERERE8rT9+/eTnp5Ot27dKFWqFPHx8Rad7/bt29jY2GBl9fS+rJuUlMTt27fp2LEjNWvWfKxYqamppKWlYWNj84Syy7mbN29ib2+fZXt0dDQJCQkkJCTc99j33nuPtWvXMnDgQBYsWMD169eJiorijTfeIDw83Bi3fv16xo8fz6hRo4iOjjaL0apVK/r165fl3O3t7alevbrxPiQkhJ07d7Jq1apnUiwWEXlW1IZCRERERERE8qzIyEijUOjt7Y3JZGL06NHcuHHDaCsQFBT00Dienp4cOXKEWbNmGcctWLDA2NenTx8mTpxIyZIlsbe35+LFi/z++++0adOG4sWLU6BAAfz8/JgyZYpZi4OkpCRMJhOLFy+mT58+uLi44OHhwcCBA0lJSTHGHT9+nNatW+Pu7o6dnR1eXl70798fyCikVqhQAYDg4GBMJpNRBL148SJdunTBzc0Ne3t7AgMD2bp1q9m5BQUF0aRJExYuXIivry+2trbs2bOHyMhIypcvz8aNG6lYsSL29vbUrVuXpKQkLl68SOvWrXF0dMTb25tly5ZluWbr16+nWrVq2NvbU6RIEXr16mXWCiIhIQGTycT69etp2bIljo6OtGrV6uE39T5cXV2ZNGkSCxcuJCEhgREjRnD58mVmzJhhNu7999/Hw8ODESNGZBunatWqVKpU6aHzFSpUiOTkZLNtR44coWXLljg5OeHg4EBoaCi//vqr2Zi0tDTGjRuHp6cntra2lC1blo8++shszMPu96N8hkVEngStLBYREREREZE8a+TIkfj5+TF48GBWrVpFkSJFmD9/PnFxcWzatAkgRy0bVq9eTePGjalVqxYDBgwAMorPmVauXEnp0qWZPn061tbWODg4sGfPHnx9fWnfvj2FChXi559/ZtSoUVy/fp1Ro0aZxR8+fDjNmjXjs88+Y8eOHURHR+Pj40PPnj0B6NSpEydPnmTGjBm4u7tz9OhRfvjhBwDeeustvL296dSpE7NmzcLf359ixYqRmppKo0aNOHToEO+99x7u7u7MmDGDkJAQduzYQeXKlY35f/jhB5KSkhgzZgwuLi4UL14cgNOnTzNgwACGDx+OjY0Nffv2pX379hQoUIA6derQrVs35syZQ4cOHahevTolS5YEYMWKFURERNC5c2dGjx7NqVOnGDJkCJcuXWLp0qVm5969e3c6dOjA6tWrsba2ztX9vdebb77J/Pnzjes1efJkihUrZuxPSUlh+/bttGzZknz5clfyyCzeX79+nVWrVrF9+3YWLfr/tizXrl0jKCgIKysrPvzwQ+zs7Hj33XepU6cOv/zyi3FNBw0axPTp0xkxYgSBgYGsW7eOnj17kpycTJ8+fYCH3+/jx4+zZMmSXH2GRUSeBBWLRUREREREJM/y9vamTJkyAFSqVAlPT082btyIlZWVWVuBh6lUqRK2tra4u7tne1xycjJffvmlWV/c4OBggoODAUhPT6dWrVr89ddfzJw5M0uxuFq1asYK2JCQEDZv3syKFSuM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qVMHb29vFi9ezK1btxg+fDh169bll19+oVChQkBGDeGrr77i3XffpWzZsixatIgWLVqwZs0amjZtCkB4eDju7u588sknODk58eeff3L8+HEARo4cyblz5/j999/59NNPAZ7qyt/09HSaNWvGmTNn+Oijj3BycmLSpEkcOXLEaPVxt/bt29OtWzfeeecd5syZQ2RkJFWqVKFcuXLMnj2bDh06UKBAAaN9RLFixSx6nzIVLVqUunXrEhcXh7+/P2lpaXz22WeMHz+en3/+OfcXRkSeuDxbLBYRERERERHJdOnSJb788kuqVasGQN26dQkICGDVqlXGqt4KFSoYK5AbN27Mrl27qFixIkOHDjXiNGvWLEvsatWqMWPGDABCQkLYvHkzK1asMIrFo0ePxtXVla+//ho7OzsAAgMDKVWqFJ988gm9e/c2vqZfokQJi7WROHr0KMHBwXh6erJmzRocHBxynB9kPJju7oVXmX++exW1yWTC2trabF5bW1tGjBhBp06dCAkJ4fXXXzfbn/nt3ntXpKanp5Oammq8t7a2Nu4VwIYNG7CxsTHb//7771O7dm1j29SpU0lOTiY+Ph5XV1cAKlWqhJ+fHwsWLCAqKopffvmFVatW8eGHH9KjRw8g43lHSUlJjB49mqZNm3L+/HkOHz7M9OnTCQ8PB+C1114z5vH29qZIkSIcOXIky/279zwy/3zv6vN8+R69BPPll1/y448/snXrVuP869WrR7FixbLta9ynTx/jvgYGBrJ+/XpWrlzJiBEj8PPzw9HRkYIFC5qdy/fffw9Y5j7drW3btowdO5aJEyeyefNmLl++TPPmzVUsFvmbyJNtKERERERERETuVrhwYaNQ/Ndff7F9+3ZatWpFamoqKSkppKSkUKZMGYoXL05iYiIA/v7+/PTTT7zzzjt8++232X5tHqBBgwZm7/38/IwVpwDx8fE0bdqUfPnyGXO5uLhQqVIlYy5LO3jwILVr18bPz49169YZheLc5BccHIyNjY3xWrRoEYsWLTLbFhwcnGXu9PR0Pv74Y0wmE3v27OHy5cvZ5nh3gRFgypQpZrGnTJlitr9WrVokJiaSmJjIpk2b6N+/P++88w4LFy40xmzbto169eoZhWLIeOD9K6+8wrfffmuMAWjVqpVZ/IiICH766Sdu3LhB4cKFKVmyJEOHDmXhwoVm9/dh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IDIykjfeeINu3brlKl87OzsqVKhAbGwsR48exd7enoCAAOLj4x+40tTa2poNGzYwcOBABg0axI0bN/D39yc+Pp7KlSvnKofcatWqFc7Ozrz77rssXrwYyGgt0bBhQ4u2SFi0aBGLFi0y2+bt7Z3tCmwPDw++/PJL+vbtS8uWLfH29mb69On06dMHJyenXM89a9Ys+vXrR6NGjbh58yabN28mKCgINzc3duzYwfTp01m+fDlTp04lNTWVEiVK8Nprr/Hzzz8bD8zLFBsbS2xsLJDRL7lcuXKsXr2a119/Pdd5iYg8Sab09PT0Z51EXnP16lWcnJy4cuUKjo6OzzqdPKPyoEUPH/QYxrYMsmj88v/J+gTfJ6lQYEeLxm+yb61F43er195isb16LbNYbAD/nrn7j/ncWrg79/8hmhuVgktYNH7CkrEWjR8YEvrwQY/hxeOP9xTtB/EIzPpwlCdp2pYVDx/0GLJbgfMkHT3W16Lxy/p2sWj8jge8LBZ7aDkfi8UGmLRgu0Xj62fug+Xln7mRL/e2WOznVV79t8GtW7c4fPgwXl5e2NnZPet0RJ6aP/74g7JlyzJv3jzefPPNZ52OiMhTk9Of/VpZLCIiIiIiIiLPpaFDh1KxYkWKFi3KoUOHiImJwcPDgxYtWjzr1ERE/pZULBYREREREZHnXkpKyn33mUwmrK2tn2I28rTcuXOHwYMHc+bMGezt7QkKCmLSpEkULFjwWacmIvK3pGKxiIiIiIiIPPdsbGzuu69kyZIkJSU9vWTkqZkyZQpTpkx51mmIiOQZKhaLiIiIiIjIcy8xMfG++2xtbZ9iJiIiIn9fKhaLiIiIiIjIcy8gIOBZpyAiIvK3Z/WsExARERERERERERGRZ0/FYhERERERERERERFRsVhEREREREREREREVCwWEREREREREREREVQsFhERERERERERERFULBYRERERERERERERVCwWERERERGR58DUqVMpUaIE1tbWODs7ExMTk+sY06ZNY8OGDRbI7slYsmQJpUuXxsbGhldfffVZp/NU7dixAysrKz755JMs+15//XVKlizJjRs3zLZ/+eWXNG7cmCJFimBjY4O7uzthYWHExcWRlpZmjIuMjMRkMhkvBwcHXnnllWzneloSEhIe6TOcncjISMqXL//AuUwmEz/88EOu4ub0uDVr1jB79uz7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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10, 8))\n", + "palette = sns.color_palette(\"tab20\", n_colors=len(df['model'].unique())) # 더 많은 색상 지원\n", + "sns.barplot(x='region', y='CSI', hue='model', ci=None, data=df.loc[(df['region']=='seoul'),:], palette=palette)\n", + "plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', fontsize=11)\n", + "plt.title('Soft Voting Ensemble: Model Performance Comparison in Seoul', fontsize=15, fontweight='bold') # 제목 볼드 및 크기 조정\n", + "plt.ylabel('CSI', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "plt.xlabel('') # y축 라벨 변경 및 스타일 조정\n", + "# x축(도시명) 글씨 크기 조정\n", + "plt.xticks(fontsize=15, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.yticks(fontsize=10, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "table = df.loc[(df['region']=='busan'),:'Accuracy']\n", + "table['CSI'] = table['CSI'].round(3)\n", + "table['MCC'] = table['MCC'].round(3)\n", + "table['Accuracy'] = table['Accuracy'].round(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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dOgAGxsb6OjoQEtLCzY2Nmjfvj2WLl2qlGyryPf59+Xk5ITExET069cPFhYW0NbWRv369RETE6OUQPXw8MCRI0fg6ekJuVwOfX19uLu7Y+/evRV6zQAFvU/Xr1+PwYMHw8XFBdWrV4empia0tbXh4OCAnj174ujRoxg6dKhkOS8vL1y5cgVhYWFwcXGBgYEBNDQ0YGlpifbt2+Onn37C7t27JV/k/5co7tfNmjXDtGnTcPXqVTRq1EhSRyaTYceOHRgxYoT43lK7dm1Mnz4dx48fL/bL7Xc5ZpV5jhERERH9V8iEkh4VTETFun//PqpXr67U++zx48do3LixOGaunZ1dsT10iIiI/kmSkpIkQwxMnz4d4eHhlRcQERERERF9UByGgugdffPNN9i2bRu8vb1hY2MDLS0t3LlzBzt37pQ8UZ0/iSQiIiIiIiIioqqAyWKi9/D06VNs2bJFZZmamhrCwsJK/TA1IiIiIiIiIiKiysRkMdE7+uyzzyAIAk6dOoWHDx8iIyMDcrkc9vb2cHd3xxdffIGGDRtWdphERERERERERESlwjGLiYiIiIiIiIiIiAgf/rHaRERERERERERERPSPw2QxEREREREREREREXHM4neRn5+PBw8ewMDAADKZrLLDISIiIiKiSiIIAl68eAFra2uoqbEvDhEREVVtTBa/gwcPHsDW1raywyAiIiIion+Ie/fuwcbGprLDICIiInovTBa/AwMDAwAF/xAaGhpWcjRERERERFRZnj9/DltbW/EzAhEREVFVxmTxO1AMPWFoaMhkMRERERERcXg6IiIi+lfgoFpERERERERERERExGQxERERERERERERETFZTERERERERERERERgspiIiIiIiIiIiIiIwAfcERERERER/afl5eUhJyenssMgIiKiCqKpqQl1dfVS1WWymIiIiIiI6D9IEAQ8evQIGRkZlR0KERERVTBjY2NUr14dMpmsxHpMFhMREREREf0HKRLFFhYWkMvlb/3wSERERFWPIAh4/fo1njx5AgCwsrIqsT6TxURERERERP8xeXl5YqLY1NS0ssMhIiKiCqSrqwsAePLkCSwsLEockoIPuCMiIiIiIvqPUYxRLJfLKzkSIiIi+hAU7/lve04Bk8VERERERET/URx6goiI6L+htO/5TBYTEREREREREREREZPFRERERERE9O+TkZEBmUyG2NjYyg6lRLGxsZDJZEhJSansUKqkCxcuIDw8HK9fvy7Tcp6enggMDBSnw8PDoa+vL04fPXoUMpkMv/32W7nFSkRUFfABd0RERERERCRqPGFtpa07cW6/Sls3VU0XLlxAREQERowY8V5jcA8aNAjt27cvx8iIiKom9iwmIiIiIiIi+g+JjY2Fvb19mZbJzMysmGD+IWxsbODm5lbZYRARVTomi4mIiIiIiKjK++GHH2Bvbw+5XA4fHx/cuHFDqU5sbCwaNGgAHR0d1KhRA2FhYcjLy5PUSU5ORnBwMMzMzKCrqwsPDw8kJiZK6tjb22PEiBGYO3cuatSoAblcjk6dOuHhw4dKbQUGBkIul8PW1hYLFy7EmDFjVCZqb9y4AW9vb8jlctjb22PVqlWS8gEDBqBevXr45Zdf0KBBA+jq6qJ169ZISkpCWloaevToAUNDQ9SuXRtbtmx5x734f2QyGWbNmoXQ0FBUr14dFhYWAABBEDBv3jw4OjpCW1sbtWrVwsKFC5W2u0ePHrC0tISOjg4cHBwwduxYsVwx5MOlS5fQqlUryOVy1KtXDwcOHFCKo6RjFhsbi4EDBwIAzM3NIZPJypwELxpTSfbv3w+5XI7p06eXKj4ioqqIyWIiIiIiIiKq0nbv3o3BgwfDy8sL8fHx8PHxQffu3SV1FixYgEGDBsHf3x+7du1CaGgoFi1ahLCwMLFOeno6WrVqhQsXLmDx4sWIi4uDnp4evL298eTJE0l78fHxiI+Px7Jly7Bs2TKcOXMGXbt2FcsFQUCnTp1w4cIFrFixAkuXLsW2bduwbds2ldvQq1cv+Pn5IT4+Hl5eXggJCcH+/fsldR49eoTx48cjLCwMGzZswM2bN9G3b1/07NkT9evXR1xcHBo3bozg4GDcuXPnfXcrvvvuO1y/fh0rV67E+vXrAQCjR4/GtGnT0L9/f+zZswcDBgxAaGgoli9fLi7Xr18//PHHH1i0aBH279+PiIgIpQRqTk4O+vbtiwEDBiA+Ph4WFhYICgpCamqqWOdtx6x9+/aYMmUKgIJE7qlTpxAfH//e263Ktm3b0LlzZ0RGRiIiIqJU8RERVUUcs5iIiIiIiIiqtBkzZsDd3R2rV68GAPj7+yMrKwvffPMNAODFixeYPn06Jk6ciKioKACAn58ftLS0MG7cOEyYMAGmpqaIjo5GRkYGzp49K/ak9fHxgaOjI+bNm4c5c+aI63zx4gX27dsHIyMjAICtrS18fHxw4MAB+Pv7Y9++fTh//jyOHz8Od3d3AIC3tzdsbGxgbGystA39+vXD5MmTxfhv3bqFiIgIBAQEiHXS0tJw7NgxfPLJJwCABw8eYOTIkQgNDcXUqVMBAG5ubti2bRu2b9+O0aNHAwDy8/ORn58vtqP4Ozc3VxKDhoY0RWBiYoJt27ZBJpMBAG7evIklS5Zg+fLlGDx4MADA19cXr1+/RkREBAYPHgw1NTWcPXsWM2fORM+ePSXbV1h2djZmzZqFdu3aAQCcnJzg4OCAffv2ITg4uFTHzNzcHLVr1wYANG7cGGZmZkr7tTysW7cOISEhWLRoEYYOHQqg9OcUEVFVU2V7Fm/evBmurq7Q1dWFiYkJunXrhps3bxZbX/Ek0+Je//Qn5BIREREREZGyvLw8JCYmokuXLpL53bp1E/8+efIkXr58ie7duyM3N1d8+fr6IjMzE5cvXwYAJCQkwMvLCyYmJmIddXV1tG7dGufOnZO07+XlJSaKgYJEsImJCc6cOQMAOHfuHIyNjcVEMQDo6+vDx8dH5XYUjT8oKAiJiYmSHrnW1tZiohgAHB0dARQkbBWMjY1hYWGBe/fuifMiIyOhqakpvkJCQnDnzh3JPE1NTaWY2rZtKyaKAeCXX34RYyu6Hx89eiSu09XVFfPmzcOyZctUDgcCAGpqapK47e3toauri+TkZAClP2YVLSYmBiEhIVi5cqWYKP4nxUdEVN6qZM/ilStXYtCgQQAABwcHpKamIi4uDidOnMDFixdRvXp1pWUMDQ3RrFkzybzHjx8jKSkJAGBlZVXhcRMREREREVH5evr0KXJzc8WewAqWlpbi3ykpKQAKkpiqKJKcKSkpOH36tMrEqaIHq0LR9SnmKcYtfvjwIczNzVXWUUVV/Dk5OUhJSRG3pWiPZC0trWLnZ2VlidODBw9GYGCgOL17927ExMRg586dKmMpHENhKSkpEASh2B689+7dQ82aNbFlyxaEhYUhLCwMw4YNg5OTE6KioiTDdOjq6orxq4q7tMesosXFxcHOzg7t27eXzP+nxEdEVN6qXLI4OzsbkyZNAlDwbebWrVvx4MED1KlTB0+ePEFUVBQWLVqktJyrqytOnz4tmRcYGIikpCQ4OTmhTZs2HyR+IiIiIiIiKj/m5ubQ0NBQGlP48ePH4t8mJiYACsadtbW1VWrDwcFBrBcQECAOX1GYtra2ZLro+hTzFB2RrKys8PTpU5V1VHny5Alq1KghiV9TU7NchlawtraGtbW1OH358mVoaWmhSZMmJS5XuFcxULB/ZDIZfv31V6VEL1AwlARQsO2rVq3Cjz/+iMTERMyYMQM9e/bEtWvXUKtWrVLFXNpjVtHWrl2L8ePHw9/fH4cOHYKhoeE/Kj4iovJW5ZLF586dE7/BCwoKAlDwxte8eXMcPHhQ6QEAxbl69Sr27t0LABg/frzSmyARERERERH986mrq8PV1RXx8fEYO3asOH/r1q3i3y1atIBcLkdycrLScA+F+fr6Yv369XB2doaenl6J6z1y5AiePXsmDkVx+PBhpKWlib9odXNzQ0ZGBo4fPw4PDw8AwMuXL3Ho0CGVYxbHx8fDxcVFnFY8rE5dXf3tO+EDUQyhkZqaig4dOry1vpqaGtzc3DBjxgzs3LkTN27cKHWyuLTHTJG0LtyTujxZWlri0KFD8PDwQNu2bZGQkAA9Pb1Sx0dEVNVUuWRx4Z9yFP6ZjuLnMXfv3i1VO/PmzYMgCLCwsFAaaL+oN2/e4M2bN+L08+fPyxIyERERERERVaCwsDB06tQJAwcORK9evZCYmIh169aJ5cbGxoiMjMTEiRORnJwMT09PqKur49atW9ixYwfi4uIgl8sxbtw4bNiwAa1bt8bo0aNhZ2eHp0+f4syZM7C2tpYkow0MDNC2bVtMmjQJGRkZCA0NRdOmTeHv7w+gYLxfV1dX9OnTBzNnzoSxsTHmzJkDAwMDqKkpPz5o7dq10NXVhaurKzZv3ozjx49jz549Fb/zysDR0RHDhw/HZ599hgkTJqBZs2bIycnB9evXceTIEWzfvh3Pnj2Dv78/PvvsMzg5OSE7OxuLFy+GsbFxsUM2qFLaY+bs7AwAWLp0KTp37gy5XI769euX63bXqFFDTBh37NgRe/bsKXV8RERVTZVLFhdHEIRS13306BE2bNgAABg5cqTSz4mKmjlzJiIiIt4rPiIiIiIiIqoYHTt2xPLly/Htt99i8+bNaNasGbZs2SJ5bs348eNRo0YNLFiwAIsXL4ampiZq166NwMBAsXeqqakpTp8+jSlTpiA0NBSpqamwsLBA8+bNlXqPdunSBTY2Nhg6dCjS09Ph5+eH5cuXi+UymQw7duzAkCFDMHjwYFSrVg2jRo3CtWvXcOHCBaVt2LRpEyZPnozIyEhYWFggJiYG7dq1q5gd9h4WLVoEJycnrFixApGRkdDX14eTkxO6d+8OANDR0UH9+vWxePFi3L17F7q6umjSpAkSEhLKPKRGaY6Zi4sLwsPD8eOPP2LOnDmwtbUVn01Unuzt7XH48GF4eHiga9eu2L59e6niIyKqamRCWbKs/wD/+9//0KpVKwDAxo0b0bt3bwBAmzZtcPDgQXz88ce4fv16iW2EhYUhKioKenp6uHv3rjjWUHFU9Sy2tbXFs2fPxPGKiIiIiIjov+f58+cwMjKqcp8NsrKycPv2bTg4OEBHR6eyw6ly7O3tERgYiCVLlpRpuezsbNStWxfu7u5YvXp1BUVHRESkrLTv/VWuZ7GbmxtMTU2RmpqKuLg49O7dGw8ePBAfXhcQEAAAqFOnDgBgxIgRGDFihLj8q1evsGzZMgDAwIED35ooBgoeZPC23sdEREREREREhcXExCA/Px9OTk5IT0/HsmXLkJSUhM2bN1d2aERERCpVuWSxlpYWoqKiMGTIEMTFxaFWrVpITU3FixcvYGZmhkmTJgEArl27BgDiw/AUVq5cifT0dKirq2PcuHEfPH4iIiIiIiL6b9DR0cGsWbPEYREaNmyIPXv2oEmTJpUb2L9cXl5eiUNVamhUuVQIEdEHUyXvkIMHD4aenh7mzZuHq1evQkdHB127dsWsWbNgbW1d7HJ5eXmIjo4GAHTt2hUODg4fKGIiIiIiIiL6tyjtmLj9+vV76wPVqfzVrl0bd+7cKba8io3GSUT0QVXJZDEA9O3bF3379i22XNXNX/FkUqocjSesrdD2E+fynzAiIiIiIqL/ul27dkmeO0RERKVXZZPFRERERERERERF1a9fv7JDICKqstQqOwAiIiIiIiIiIiIiqnxMFhMRERERERERERERk8VERERERERERERExGQxEREREREREREREYHJYiIiIiIiIiIiIiICk8VEREREREREREREBCaLiYiIiIiI6F8oIyMDMpkMsbGxlR1KiWJjYyGTyZCSklLZoUikpaWhS5cuqFatGmQyGbZv347o6Gjs3bu3TO0kJSUhPDwcDx48qKBI3092djYGDhwIc3NzyGQyREdHV3ZIVIx3Of+OHj0KmUyG3377TZwnk8kwb948cdrT0xOBgYHlFidRVadR2QEQERERERHRP8feM3crbd3tmtlV2rpJasGCBThy5AjWrl0LCwsLODk5YcyYMQgMDES7du1K3U5SUhIiIiIQGBgIa2vrCoz43axduxbr1q3DmjVrULt2bdjb21d2SFSM6OjoMp9/qpw6dQo1a9Ysp6iI/n3Ys5iIiIiIiIjoPyQ2NvatSdG//voLDRo0QMeOHdG8eXNUq1atwuPKzMys8HUU9ddff8Ha2hp9+/ZF8+bNUb169XduqzLiBwBBEPDmzRuVZfb29mXuXV9Z2/GhNG/eHFZWVpUdBtE/FpPFREREREREVOX98MMPsLe3h1wuh4+PD27cuKFUJzY2Fg0aNICOjg5q1KiBsLAw5OXlSeokJycjODgYZmZm0NXVhYeHBxITEyV17O3tMWLECMydOxc1atSAXC5Hp06d8PDhQ6W2AgMDIZfLYWtri4ULF2LMmDEqE7U3btyAt7c35HI57O3tsWrVKkn5gAEDUK9ePfzyyy9o0KABdHV10bp1ayQlJSEtLQ09evSAoaEhateujS1btrzjXiwgk8kQFxeHEydOQCaTQSaTwd7eHnfu3MHSpUvFeW9LQh49ehReXl4AADc3N3E5RZlMJsOePXvQrVs3GBoaonv37gAKevu2atUKJiYmqFatGjw9PXH27FlJ2+Hh4dDX18elS5fQqlUryOVy1KtXDwcOHJDU27lzJ5o0aQJ9fX0YGxujSZMm4lAG9vb2mD9/Pu7duyfGlpSUBAA4fvw4WrZsCV1dXZiZmeHzzz9HWlqa2G5SUpK4D7744guYmpqiadOm4v6bPXs2wsLCYGFhAWNjY0ycOBGCIODQoUNo1KgR9PX14ePjg3v37kniffPmDb7++mvUrFkT2tracHZ2xsaNGyV1FOfC3r170bBhQ2hra2PXrl1vO6wqKfbj2bNn0aJFC+jo6GDp0qUAgKtXr6JTp04wMjKCnp4e2rdvj5s3b0qWX7VqFT755BPo6urC1NQUrVq1wrlz58RymUyGOXPmIDw8HJaWljAzM8PAgQPx6tUrSTtvu+7e5fwrTtFhKIrKzMxE+/btUatWLdy6datU8RH9mzBZTERERERERFXa7t27MXjwYHh5eSE+Ph4+Pj5i4lFhwYIFGDRoEPz9/bFr1y6EhoZi0aJFCAsLE+ukp6ejVatWuHDhAhYvXoy4uDjo6enB29sbT548kbQXHx+P+Ph4LFu2DMuWLcOZM2fQtWtXsVwQBHTq1AkXLlzAihUrsHTpUmzbtg3btm1TuQ29evWCn58f4uPj4eXlhZCQEOzfv19S59GjRxg/fjzCwsKwYcMG3Lx5E3379kXPnj1Rv359xMXFoXHjxggODsadO3feeX+eOnUKHh4ecHFxwalTp3Dq1CnEx8ejevXq6Natmzivffv2Jbbj6uoqJh5Xr14tLlfY4MGDUbt2bcTHx+Orr74CUJCI7devH37++Wds3LgRdnZ28PDwwPXr1yXL5uTkoG/fvhgwYADi4+NhYWGBoKAgpKamAgBu3ryJbt264ZNPPkF8fDy2bNmCHj16ID09HUDBMezZsyeqV68uxmZlZYXExET4+fnBwMAAP//8M2bPno1du3ahbdu2Sl8uTJ48GYIgYNOmTZg7d644f8mSJbh79y7WrVuHcePGYe7cufjqq68wduxYTJ48GevWrcP169cREhIiaa9Hjx5YsWIFxo8fj927dyMgIADBwcHYt2+fpN6DBw8watQojB07Fvv370ejRo1KPBYlyc7ORp8+fcT1tGnTBrdu3ULLli2RlpaG2NhYbNy4EU+fPoWPj4/Yi/n48eMICQlBu3btsHfvXqxduxY+Pj7IyMiQtL9kyRL8/fffWLNmDaZNm4aNGzfim2++EctLc929y/n3Ll6+fIl27drh5s2bOHHiBGrVqlWm+wLRvwHHLCYiIiIiIqIqbcaMGXB3d8fq1asBAP7+/sjKyhITUi9evMD06dMxceJEREVFAQD8/PygpaWFcePGYcKECTA1NUV0dDQyMjJw9uxZWFhYAAB8fHzg6OiIefPmYc6cOeI6X7x4gX379sHIyAgAYGtrCx8fHxw4cAD+/v7Yt28fzp8/j+PHj8Pd3R0A4O3tDRsbGxgbGyttQ79+/TB58mQx/lu3biEiIgIBAQFinbS0NBw7dgyffPIJgIKE4ciRIxEaGoqpU6cCKOjBu23bNmzfvh2jR48GAOTn5yM/P19sR/F3bm6uJAYNjYIUgWLYCZlMhubNm4vl2trasLS0lMwriaGhIerWrQsAqFevHpo0aaJUp2PHjpg9e7Zk3rRp0ySx+vn54ezZs4iNjRWPH1CQ5Jw1a5Y4hq2TkxMcHBywb98+BAcH4/fff0dOTg6WLFkCAwMDAAX7VsHFxQXVq1eHtra2ZJu+/fZbVK9eHbt374ampiaAguPr7++PvXv3okOHDmLdRo0a4ccff1TaLmtra6xbt05c586dO7Fw4UJcuXIFzs7OAID79+9j5MiRyMjIgLGxMY4cOYKdO3fiwIEDaNOmDYCC8/Thw4eYPn062rZtK7afnp6Offv2oVmzZpL1Fj2min1YeL6amhrU1P6v72BOTg6+/fZb9OzZU5zXv39/mJiY4ODBg9DR0QEAtGzZErVq1cLKlSsxbNgwnD17FiYmJpIkuaoErpWVFTZs2AAACAgIwPnz57F161bMmjULAEp13bm4uJT5/Cur9PR0tG3bFllZWTh+/LgYS1nuC0T/BuxZTERERERERFVWXl4eEhMT0aVLF8n8bt26iX+fPHkSL1++RPfu3ZGbmyu+fH19kZmZicuXLwMAEhIS4OXlBRMTE7GOuro6WrduLflpPQB4eXmJiWKgIBFsYmKCM2fOAADOnTsHY2NjMVEMQBx6QJWi8QcFBSExMVHSk9Xa2lpMFAOAo6MjAMDX11ecZ2xsDAsLC8nwBpGRkdDU1BRfISEhuHPnjmSeIin6oalKLl69ehVdunSBpaUl1NXVoampiWvXrin1LFZTU5Nsu729PXR1dZGcnAwAaNCgAdTV1dGnTx/s2rULz549K1VMJ06cQKdOnST7pE2bNjA2Nsavv/761viBgiRvYY6OjrC2thYTxYp5AMR4ExISYGJiAm9vb8l56ufnh99//11yLpiamioligEoHdM7d+4gJCREMi8yMlJpuaLbkZCQgI4dO0JDQ0OMo1q1anBxcRGvBVdXV6SlpWHAgAE4ePAgXr9+Xap9UbduXXGbFesq7XVXUVJSUsQhU44cOSImhf8p8RF9SOxZTERERERERFXW06dPkZubK0nuAIClpaX4d0pKCoCC5JYqisRqSkoKTp8+rTJxWrt2bcl00fUp5inGLX748CHMzc1V1lFFVfw5OTlISUkRt6Voj2QtLa1i52dlZYnTgwcPRmBgoDi9e/duxMTEYOfOnSpj+ZAKHyegoMd2mzZtYG5ujgULFqBmzZrQ0dHBoEGDJNsEALq6uuI+UCi87Y6Ojti9ezeioqLQpUsXqKmpISAgAEuWLIGdnV2xMaWnpyvFpYi18LjFquJXUHVMijt+inhTUlKQlpZWbOL+4cOHsLGxKXG9RZOXHTt2VDr+1tbWkjpyuRz6+vqSeSkpKYiOjkZ0dLTSOhRxe3t7Y926dfjuu+/g7+8PHR0ddOvWDdHR0TAxMRHrq9ruwg/kK8t1V1GuX7+O9PR0REdHKz3M8Z8QH9GHxGQxERERERERVVnm5ubQ0NBQGjv08ePH4t+KxNW2bdtga2ur1IaDg4NYLyAgQDKeqoK2trZkWtVYpU+ePIGVlRWAgp/eP336VGUdVZ48eYIaNWpI4tfU1ISZmZnK+mVhbW0tSRBevnwZWlpaKoeF+NAUD7xTOHXqFJKTk7F79240bNhQnP/s2TMxUVoWAQEBCAgIwPPnz7F//36MHTsWAwcOxKFDh4pdxsTEROVxevz4sSQJqir+92FiYgJzc3PxAXxFFf5Cobj1Fj2mWlpasLe3L/FYq2rLxMQE7du3x7Bhw5TKFEN6AEBwcDCCg4ORkpKCHTt2YOzYsdDU1MTKlSuLXZ+qdZX2uqsoLVu2hK+vL8aNGwdTU1MEBwf/o+Ij+pCYLCYiIiIiIqIqS11dHa6uroiPj8fYsWPF+Vu3bhX/btGiBeRyOZKTk5WGeyjM19cX69evh7OzM/T09Epc75EjR/Ds2TNxKIrDhw8jLS1NHBrAzc0NGRkZOH78ODw8PAAUPDzr0KFDKscsjo+Ph4uLiziteFidurr623fCB1K0x3JplwFQ6uUyMzMlywEFw4gkJSVJhuAoK0NDQ/To0QNnzpzBpk2bSqzbqlUrbN++HfPnzxfHcT548CAyMjLQqlWrd47hbXx9fTFnzhxoaWmhQYMGFbae0sZy+fJluLi4lOocNDMzQ0hICPbu3YurV6+WeV2lue7e5fwrizFjxiAzMxMDBgwQe0mXJT6ifwsmi4mIiIiIiKhKCwsLQ6dOnTBw4ED06tULiYmJ4sPFgIKfwUdGRmLixIlITk6Gp6cn1NXVcevWLezYsQNxcXGQy+UYN24cNmzYgNatW2P06NGws7PD06dPcebMGVhbW0uS0QYGBmjbti0mTZqEjIwMhIaGomnTpuID1Nq2bQtXV1f06dMHM2fOhLGxMebMmQMDAwPJw8UU1q5dC11dXbi6umLz5s04fvw49uzZU/E7rwycnZ1x+PBhHDx4ENWqVYODgwNMTU1LXMbR0RHq6upYtWoVNDQ0oKGhUWIv1+bNm0NfXx/Dhw/HpEmTcP/+fUyfPl3S67q0VqxYgVOnTiEgIABWVla4ffs21q9fLz48rjhhYWFo2bIlAgMDMXLkSDx+/BiTJk1C06ZNxYfpVQQ/Pz906NABAQEBmDhxIho0aIBXr17hypUruHHjhsoH6VWUiIgIuLm5wd/fH4MHD4alpSUePXqEY8eOwd3dHb1798b06dORmpoKT09PWFhY4NKlS9i/fz/GjRtXpnWV9rp7l/OvrCZPnozMzEz06dMHOjo6CAwMLNN9gejfgA+4IyIiIiIioiqtY8eOWL58OQ4dOoTOnTsjISEBW7ZskdQZP348Vq9ejSNHjiAoKAjdu3dHTEwM3NzcxF6spqamOH36NBo1aoTQ0FC0adMGY8eORVJSktLDxLp06YKOHTti6NChGDJkCNzc3BAfHy+Wy2Qy7NixAw0bNsTgwYMxZMgQtG/fHr6+vpIH4yls2rQJBw4cQOfOnXH48GHExMRUaGLyXURFRcHGxgZBQUFwc3PDrl273rqMmZkZli5dKiYZ3dzcSqxvaWmJn3/+GU+ePEGnTp0QHR2NFStW4KOPPipzvA0aNEBKSgrGjRuHNm3aYPr06ejduze+//77Epdr3LgxEhIS8Pz5cwQFBWHChAlo37499u3bV+E9vbdu3YqhQ4fi+++/R9u2bRESEoKEhAS0bt26Qtdb1EcffYSzZ8/C1NQUw4YNg7+/PyZNmoRXr16JvZ7d3Nzw119/YdiwYWjTpg0WLlyICRMmYPr06WVaV2mvu3c5/95FZGQkRo8ejW7duuGXX34p032B6N9AJgiCUNlBVDXPnz+HkZERnj17BkNDw8oOp8poPGFthbafOLdfhbZPRERERFRUVf1skJWVhdu3b8PBwQE6OjqVHU6VY29vj8DAQCxZsqRMy2VnZ6Nu3bpwd3fH6tWrKyg6IiIiZaV97+cwFEREREREREQVICYmBvn5+XByckJ6ejqWLVuGpKQkbN68ubJDIyIiUonJYiIiIiIiIqIKoKOjg1mzZiEpKQkA0LBhQ+zZs6fEMXurEkEQkJeXV2y5mpqayvGZicoDzz+iisGrhoiIiIiIiKgMkpKSSjUERb9+/fDnn3/i9evXeP36NU6dOiU+AO/fYM2aNdDU1Cz2FRkZWdkh0r8Yzz+iisGexURERERERERUZh06dMC5c+eKLbe2tv6A0dB/Dc8/oorBZDERERERERERlZmpqSlMTU0rOwz6j+L5R1QxOAwFERERERERERERETFZTERERERERERERERMFhMRERERERERERERmCwmIiIiIiIiIiIiIjBZTERERERERERERERgspiIiIiIiIiIiIiIwGQxERERERER/QtlZGRAJpMhNja2skMpUWxsLGQyGVJSUio7lCrpwoULCA8Px+vXr8u0nKenJwIDA8Xp8PBw6Ovri9NHjx6FTCbDb7/9Vm6xllbRWIpKSkqCTCbD1q1by9RuaZc7evQooqKiii0/deoUunXrBisrK2hpacHU1BTe3t5YsWIFsrOzJdshk8nEl46ODpydnTFnzhzk5+dL2lTUWb58udL6Dh48KJYnJSWVaZuJqOw0KjsAIiIiIiIi+ue4G1m/0tZtN+1Spa2bqqYLFy4gIiICI0aMgFwuf+d2Bg0ahPbt25djZBXHysoKp06dgqOjY4W0f/ToUcybNw9ff/21UtmyZcswYsQIeHh4YPbs2bC3t0daWhr279+P0aNHAwCGDBki1tfV1cXhw4cBAJmZmThy5AgmTZqE/Px8TJo0SdK2vr4+Nm/ejKFDh0rmb9q0Cfr6+nj58mV5byoRqcCexURERERERET/IbGxsbC3ty/TMpmZmRUTzD+EjY0N3NzcPsi6ZDIZjh49+s7La2tro3nz5jAxMSm/oErh4sWLGDVqFPr164fDhw+jX79+8PDwQOfOnbF8+XJcunQJH3/8sWQZNTU1NG/eHM2bN4eXlxciIyPRqVMnbNu2Tan9Tp064cSJE7h//744782bN9i2bRs6d+5c0ZtHRP8fk8VERERERERU5f3www+wt7eHXC6Hj48Pbty4oVQnNjYWDRo0gI6ODmrUqIGwsDDk5eVJ6iQnJyM4OBhmZmbQ1dWFh4cHEhMTJXXs7e0xYsQIzJ07FzVq1IBcLkenTp3w8OFDpbYCAwMhl8tha2uLhQsXYsyYMSoTtTdu3IC3tzfkcjns7e2xatUqSfmAAQNQr149/PLLL2jQoAF0dXXRunVrJCUlIS0tDT169IChoSFq166NLVu2vONe/D8ymQyzZs1CaGgoqlevDgsLCwCAIAiYN28eHB0doa2tjVq1amHhwoVK292jRw9YWlpCR0cHDg4OGDt2rFiuGGbh0qVLaNWqFeRyOerVq4cDBw4oxVHSMYuNjcXAgQMBAObm5pDJZGVOgheNqST79++HXC7H9OnTSxVfRVE1nER2djZGjRoFExMTGBsbY8iQIdi4caPKoRuysrIwYsQIVKtWDVZWVvjqq6+Qm5sLoGA/RERE4NWrV+LQD56engCARYsWQV1dHfPnz4dMJlOK6+OPP4a3t/db4zcwMEBOTo7S/EaNGsHR0VFy/u7duxeCIFSZXt9E/wZMFhMREREREVGVtnv3bgwePBheXl6Ij4+Hj48PunfvLqmzYMECDBo0CP7+/ti1axdCQ0OxaNEihIWFiXXS09PRqlUrXLhwAYsXL0ZcXBz09PTg7e2NJ0+eSNqLj49HfHw8li1bhmXLluHMmTPo2rWrWC4IAjp16oQLFy5gxYoVWLp0KbZt26ayRyUA9OrVC35+foiPj4eXlxdCQkKwf/9+SZ1Hjx5h/PjxCAsLw4YNG3Dz5k307dsXPXv2RP369REXF4fGjRsjODgYd+7ced/diu+++w7Xr1/HypUrsX79egDA6NGjMW3aNPTv3x979uzBgAEDEBoaKhlrtl+/fvjjjz+waNEi7N+/HxEREUoJ1JycHPTt2xcDBgxAfHw8LCwsEBQUhNTUVLHO245Z+/btMWXKFAAFidxTp04hPj7+vbdbFUXv1sjISERERJQqvg9p0qRJWLFiBUJDQ7FlyxaVwzwohIWFQU1NDT/99BOGDh2K+fPn48cffwRQMBxHSEgIdHV1cerUKZw6dQrff/89gILhKZo0aVLmHs25ubnIzc3FixcvsHPnTsTFxaFbt24q6/bu3RubNm0Spzdt2oQuXbpAR0enTOskonfHMYuJiIiIiIioSpsxYwbc3d2xevVqAIC/vz+ysrLwzTffAABevHiB6dOnY+LEieKDu/z8/KClpYVx48ZhwoQJMDU1RXR0NDIyMnD27FmxJ62Pjw8cHR0xb948zJkzR1znixcvsG/fPhgZGQEAbG1t4ePjgwMHDsDf3x/79u3D+fPncfz4cbi7uwMAvL29YWNjA2NjY6Vt6NevHyZPnizGf+vWLURERCAgIECsk5aWhmPHjuGTTz4BADx48AAjR45EaGgopk6dCgBwc3PDtm3bsH37dnEM2fz8fMkDxRR/K3qTKmhoSFMEJiYm2LZtm9iL9ObNm1iyZAmWL1+OwYMHAwB8fX3x+vVrREREYPDgwVBTU8PZs2cxc+ZM9OzZU7J9hWVnZ2PWrFlo164dAMDJyQkODg7Yt28fgoODS3XMzM3NUbt2bQBA48aNYWZmprRfy8O6desQEhKCRYsWiePplvacApT3MwDk5eVJ5qurq6vsrVsaaWlpWLZsGaZMmYLQ0FAABeeQr68v7t27p1S/WbNmWLRokRjzkSNHsHXrVgwdOhQ2NjawsbERh48o7MGDB2jatKlSe4W3Q01NDWpq/9cv8dWrV9DU1JTU79mzZ7GJ7N69e2P69Om4efMmLC0tsXv3bmzfvr3MDzAkonfHnsVERERERERUZeXl5SExMRFdunSRzC/cc/HkyZN4+fIlunfvLvZyzM3Nha+vLzIzM3H58mUAQEJCAry8vGBiYiLWUVdXR+vWrXHu3DlJ+15eXmKiGChIBJuYmODMmTMAgHPnzsHY2FhMFAMFD/Dy8fFRuR1F4w8KCkJiYqKkR661tbWYKAYgPuDM19dXnGdsbAwLCwtJkjAyMhKampriKyQkBHfu3JHMK5rQA4C2bdtKEpi//PKLGFvR/fjo0SNxna6urpg3bx6WLVumcjgQoCCpWDhue3t76OrqIjk5GUDpj1lFi4mJQUhICFauXCl58Fpp40tKSlK5n319fSXz1qxZ884xXrp0CVlZWejYsaNkfqdOnVTWb9OmjWS6bt264n5/m6IJ7d9++02yHUVj0NXVxblz53Du3Dn8+uuv+O6777B//3588cUXKtv/+OOP0bhxY2zatAnbt2+HgYFBsdcMEVUM9iwmIiIiIiKiKuvp06fIzc0VewIrWFpain+npKQAKEhiqqJIcqakpOD06dMqE6eKHqwKRdenmKcYt/jhw4cwNzdXWUcVVfHn5OQgJSVF3JaiPZK1tLSKnZ+VlSVODx48GIGBgeL07t27ERMTg507d6qMpXAMhaWkpEAQhGJ78N67dw81a9bEli1bEBYWhrCwMAwbNgxOTk6IioqSDNOhq6srxq8q7tIes4oWFxcHOzs7pTFzSxuftbW10hcNbm5uWL58ORo3bizOc3BweOcYFedc0fOtuHPtbedLcaytrZWSynXr1hW3b8iQIUrLqKmpoUmTJuL0p59+itzcXIwfPx7jxo1DvXr1lJbp3bs3Vq1ahZo1a6JHjx5QV1d/a2xEVH6YLCYiIiIiIqIqy9zcHBoaGkpjCj9+/Fj8WzHG6rZt22Bra6vUhiJRZ2JigoCAAHH4isK0tbUl00XXp5hnZWUFALCyssLTp09V1lHlyZMnqFGjhiR+TU3NchlawdraGtbW1uL05cuXoaWlJUniqVK0F6mJiQlkMhl+/fVXpUQvUDCUBFCw7atWrcKPP/6IxMREzJgxAz179sS1a9dQq1atUsVc2mNW0dauXYvx48fD398fhw4dgqGhYZniK24/Ozk5vXX/l5binHv69KnkOBd3rr0rT09PbNy4Eenp6ahWrRoAQC6Xi9thYGBQqnacnZ0BAFeuXFGZLO7ZsycmTJiAv/76CydOnCin6ImotJgspn+NvWfuVmj77ZrZVWj7RERERERUdurq6nB1dUV8fDzGjh0rzt+6dav4d4sWLSCXy5GcnKw03ENhvr6+WL9+PZydnaGnp1fieo8cOYJnz56JQ1EcPnwYaWlpaNasGYCC3qMZGRk4fvw4PDw8AAAvX77EoUOHVI5ZHB8fDxcXF3Fa8bC6f1KvSsVwAKmpqejQocNb66upqcHNzQ0zZszAzp07cePGjVIni0t7zBRJ69L0jH0XlpaWOHToEDw8PNC2bVskJCRAT0+v1PF9CPXq1YOOjg527NiBhg0bivO3b9/+Tu1paWnhzZs3SvNHjRqFtWvXYsKECeID8d6FYoiO4r4IsbGxwZgxY/D06VO0bNnynddDRO+GyWIiIiIiIiKq0sLCwtCpUycMHDgQvXr1QmJiItatWyeWGxsbIzIyEhMnTkRycjI8PT2hrq6OW7duYceOHYiLi4NcLse4ceOwYcMGtG7dGqNHj4adnR2ePn2KM2fOwNraWpKMNjAwQNu2bTFp0iRkZGQgNDQUTZs2hb+/P4CC8X5dXV3Rp08fzJw5E8bGxpgzZw4MDAwkDwBTWLt2LXR1deHq6orNmzfj+PHj2LNnT8XvvDJwdHTE8OHD8dlnn2HChAlo1qwZcnJycP36dRw5cgTbt2/Hs2fP4O/vj88++wxOTk7Izs7G4sWLYWxsXOyQDaqU9pgpeqkuXboUnTt3hlwuR/369ct1u2vUqCEmjDt27Ig9e/aUOr53lZeXJ/nCQ0HVA+ZMTU3x5Zdf4ttvv4WOjg4aNWqEn3/+GdevXwcAledbSZydnZGbm4vvvvsOLVu2hKGhIZycnNCwYUMsWrQII0aMwK1btzBw4EDY29vj5cuX+O233/DHH3+I579Cfn4+Tp8+DaDgoYaKnuZ169YVv0RRZcGCBWWKmYjKD5PFREREREREVKV17NgRy5cvx7fffovNmzejWbNm2LJli9jLFwDGjx+PGjVqYMGCBVi8eDE0NTVRu3ZtBAYGir1TTU1Ncfr0aUyZMgWhoaFITU2FhYUFmjdvrtR7tEuXLrCxscHQoUORnp4OPz8/LF++XCyXyWTYsWMHhgwZgsGDB6NatWoYNWoUrl27hgsXLihtw6ZNmzB58mRERkbCwsICMTExaNeuXcXssPewaNEiODk5YcWKFYiMjIS+vj6cnJzQvXt3AICOjg7q16+PxYsX4+7du9DV1UWTJk2QkJBQ5iE1SnPMXFxcEB4ejh9//BFz5syBra0tkpKSynuzYW9vj8OHD8PDwwNdu3bF9u3bSxXfu8rKyhL3aWHr1q1Dq1atlObPmjULOTk5mDlzJvLz89GlSxdMmjQJI0aMkDyIsTQ6dOiAYcOGYebMmXjy5Ak8PDxw9OhRAMCXX36Jhg0bYv78+ZgwYQJSU1NhYGCARo0aISoqCp9//rmkrczMTLRo0QIAoKGhAVtbWwQHB2P69OkqxwYnosonEwRBqOwgqprnz5/DyMgIz549E8crordrPGFthbb/TTfPCm2fw1AQERERUVFV9bNBVlYWbt++DQcHB+jo6FR2OFWOvb09AgMDsWTJkjItl52djbp168Ld3R2rV6+uoOiICnz22Wf49ddfcfv27coOhYj+AUr73s+exUREREREREQVICYmBvn5+XByckJ6ejqWLVuGpKQkbN68ubJDo3+ZY8eO4X//+x8aN26M/Px87N69Gxs2bOBwDkRUZkwWExEREREREVUAHR0dzJo1SxwWoWHDhtizZw+aNGlSuYH9y+Xl5aGkH1FraPz7UiH6+vrYvXs3Zs+ejczMTDg4OGDBggUYM2ZMZYdGRFXMv+8OSURERERERFSBSjsmbr9+/dCvX7+KDYaU1K5dG3fu3Cm2/N84Gmfjxo1x8uTJyg6DiP4FmCwmIiIiIiIion+NXbt24c2bN5UdBhFRlcRkMVEp3Y2sX6Ht2027VKHtExERERER/RfUr1+xn92IiP7N1Co7ACIiIiIiIiIiIiKqfEwWExERERERERERERGTxURERERERERERETEZDERERERERERERERgcliIiIiIiIiIiIiIgKTxUREREREREREREQEJouJ/jHSf5lToS8iIiIiov+SjIwM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zJo1C99//z3u3LkDIyMj1KtXDwMHDqzQ9Rb10Ucf4ezZs5gyZQqGDRuGly9fwsrKCh4eHmKvZzc3N0RHR+Onn37C8+fPYWNjgwkTJmDKlCllWldpr7t3Of/eRWRkJDIzM9GtWzfs3r0bvr6+pb4vvIu1a9di7dq1knm1a9fGjRs3lOpaWVlh3759GDVqFLp164batWvju+++w4gRIyQP3CytpUuXYvTo0Wjbti0yMzNx5MgReHp6wszMDCdPnsR3332Hn3/+GQsXLkReXh7s7Ozg5eWFCxcuiA/MU1i8eDEWL14MoOALOmdnZ8THx6Nz585ljosql0wo6S5NKj1//hxGRkZ49uwZDA0NKzucKqPxhLVvr/QevunmWaHt1zug+im35cWg5WcV2n7g1R0V2v4X3n0rrG2HL7dUWNsA4Dq0Yn/ysiax7G/aZTFifocKbZ+IiIiKV1U/G2RlZeH27dtwcHCAjo5OZYdT5djb2yMwMBBLliwp03LZ2dmoW7cu3N3dsXr16gqKjoj+S/7++2/UqVMHq1atQv/+/Ss7HPoHK+17P3sWExEREREREVWAmJgY5Ofnw8nJCenp6Vi2bBmSkpKwefPmyg6NiKqoyZMno0GDBrC2tsatW7cQFRUFKysrBAUFVXZo9C/BZDERURX3v70XK7T9T9s1fHslIiIiIlKio6ODWbNmISkpCQDQsGFD7Nmzp8Qxe6sSQRCQl5dXbLmamto7jaNKVBr/1fMvOzsboaGhePz4MXR1deHp6Ym5c+dCX1+/skOjf4l/31VDREREREREVIGSkpJKNQRFv3798Oeff+L169d4/fo1Tp06JT4A799gzZo10NTULPYVGRlZ2SHSv9h/9fybP38+7t69izdv3iAjIwPbt2/Hxx9/XNlh0b8IexYTERERERERUZl16NAB586dK7bc2tr6A0ZD/zU8/4gqBpPFRERERERERFRmpqamMDU1reww6D+K5x9RxeAwFERERERERERERERUdZPFmzdvhqurK3R1dWFiYoJu3brh5s2bb13u9u3bGDBgAKysrKClpQVLS0u0b98ez549+wBRExEREREREREREf0zVclhKFauXIlBgwYBABwcHJCamoq4uDicOHECFy9eRPXq1VUud/36dbRs2RKpqamQy+VwdnZGdnY2Dh48iBcvXsDIyOhDbgYRERERERER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EQwYMICsrCz++c9/sn//frOSPTNmzMDZ2Zl3332XiRMn4u3tzdtvv83AgQOBnPrItWvXZu7cufz44484ODjQoEEDEhISjFnMHTp04KWXXmLKlCmcP3+eZs2asXfv3oe+fmI5pux7/Sst+bp8+TJOTk5cunSJMmXKFHU4xUb9UUstOv7rXVpYdPxaO/Nf5fZRKd3kOYuOH3pio0XH7x/Yy2JjV31xtcXGBvAb1N+i4y9JdLp/p9+hXpBla3vuXXHv/5n+vZoEt7Ho+OVTLLcohmeT/BeoeVRi9629f6ffISQkxKLj//jT0Pt3+h2eqPG8Rcd/7tuqFht7rM/jFhsbYEbcfy06vqV/56pmsRQnxfVvgxs3bvDDDz9QtWpV7O3tizqcYsfb25vQ0FDmzZtXqP1u3rxJzZo1adq0KYsXL7ZQdCIiInk96O9+zSwWERERkT+VH2NqW3R8S79BW7bVaIuOLyLFx6JFi7h9+zY1atQgPT2dBQsWkJSUxKpVq4o6NBERkXwpWSwiIiIiIiJiAfb29kydOpWkpCQA6tSpw9atW+9Zs7c4yc7OJisrq8DtVlZW+dZnFnkU9PyJWIZ+akREREREREQKISkp6YFKUPTu3Zuvv/6aX3/9lV9//ZWDBw8aC+D9FSxZsgQbG5sCv2JiYoo6RPkL0/MnYhmaWSwiIiIiIiIihdahQweOHj1a4HYvL68/MBr5u9HzJ2IZShaLiIiIiIiISKG5urri6upa1GHI35SePxHLUBkKEREREREREREREVGyWERERERERERERESULBYRERERERERERERVLNYREREROSR+ufcf1p0/P8O+a9FxxcRERGRvy/NLBYRERERERERERERJYtFRERERERERERERMliERERERER+QvKyMjAZDIRFxdX1KHcU1xcHCaTidTU1KIOxUxaWhqdOnWibNmymEwmNmzYQGxsLNu2bSvUOElJSURHR3PmzBkLRfr73Lx5k759++Lm5obJZCI2NraoQ/pDPcjzZzKZmDlzZqHHfpD9jh07RnR0NL/++mu+27/++mv+9a9/UblyZezs7HBycqJJkybMnDmTK1eu5DmP3C9bW1uqVavG2LFj84zt7e2NyWRizJgxeY733XffGWPs3bu30Ocs8legmsUiIiIiIiJiuLJieZEdu/Sz4UV2bDE3e/Zs9uzZw9KlS3F3d6dGjRoMGzaM0NBQ2rVr98DjJCUlMWHCBEJDQ/Hy8rJgxA9n6dKlLFu2jCVLllCtWjW8vb2LOqQ/nYMHD1KlShWLjH3s2DEmTJjA4MGDcXR0NNu2adMmunfvjo+PD+PHj6d69epcu3aN3bt38/rrr3Px4kWmTJlits+OHTtwcnLi5s2bHD16lHHjxpGens7bb79t1q9UqVKsXr2aqVOnmrWvXLmSUqVKcfXqVYucr0hxoJnFIiIiIiIiIn8jcXFx902KfvPNN/j6+tKxY0f8/f0pW7asxeO6fv26xY9xt2+++QYvLy969eqFv78/5cuXf+ixiiJ+gOzsbH777bd8t3l7e//u2fX+/v54enr+rjEK65dffiE8PJymTZty+PBh+vfvT/PmzWnXrh0zZ87k5MmT+Pv759mvfv36+Pv706xZM0aOHMmgQYNYv359nn7t27cnJSWFgwcPmrWvXLmSp59+2lKnJVIsKFksIiIiIiIixd4777yDt7c3jo6OBAUFcerUqTx94uLi8PX1xd7engoVKhAZGUlWVpZZn5SUFMLDwylXrhwODg40a9aMxMREsz7e3t4MHjyYGTNmUKFCBRwdHQkLC+Ps2bN5xgoNDcXR0ZFKlSoxZ84chg0blm+i9tSpUwQGBuLo6Ii3tzfvv/++2fY+ffpQq1YtPvroI3x9fXFwcKB58+YkJSWRlpZGt27dKFOmDNWqVWP16tUPeRVzmEwm1q1bx8cff2x8JN/b25vk5GTmz59vtN0vCbl3715atmwJQMOGDY39creZTCa2bt1Kly5dKFOmDF27dgVyZvsGBATg4uJC2bJladGiBUeOHDEbOzo6mlKlSvHll18SEBCAo6MjtWrVYufOnWb9Nm3aRIMGDShVqhTOzs40aNDAKKXh7e3NrFmz+Omnn4zYkpKSANi/fz9NmjTBwcGBcuXK8fzzz5OWlmaMm5SUZFyD/v374+rqSqNGjYzrN23aNCIjI3F3d8fZ2ZnRo0eTnZ3Nrl27qFu3LqVKlSIoKIiffvrJLN7ffvuN1157jSpVqmBnZ4ePjw8rVqww65P7LGzbto06depgZ2fH5s2b73dbH9rd5SSys7OJiYmhfPnylCpViq5du/LRRx/lW7rh9u3bREdH4+HhQbly5ejbty/Xrl0Dcn4e+/btC2CUAcn92XjnnXe4cuUKc+bMwcbGJk9M5cuXJyws7L6xly5dmlu3buVpL1euHK1atWLlypVG22effca3335Ljx497juuyF+ZksUiIiIiIiJSrG3ZsoUBAwbQsmVL4uPjCQoKMhKPuWbPns0LL7xAmzZt2Lx5MxEREbz55ptERkYafdLT0wkICODYsWPMnTuXdevWUbJkSQIDAzl//rzZePHx8cTHx7NgwQIWLFjA4cOHeeaZZ4zt2dnZhIWFcezYMRYuXMj8+fNZv359vrMcAXr06EFwcDDx8fG0bNmSfv36sWPHDrM+v/zyCyNHjiQyMpIPPviA77//nl69etG9e3dq167NunXrqF+/PuHh4SQnJz/09Tx48CDNmjWjXr16HDx4kIMHDxIfH0/58uXp0qWL0da+fft7juPn58f8+fMBWLx4sbHfnQYMGEC1atWIj4/n1VdfBXISsb1792bNmjWsWLGCypUr06xZM7799luzfW/dukWvXr3o06cP8fHxuLu707lzZy5evAjA999/T5cuXXjyySeJj49n9erVdOvWjfT0dCDnHnbv3p3y5csbsXl6epKYmEhwcDClS5dmzZo1TJs2jc2bN9O2bds8by6MHTuW7OxsVq5cyYwZM4z2efPm8eOPP7Js2TJGjBjBjBkzePXVVxk+fDhjx45l2bJlfPvtt/Tr189svG7durFw4UJGjhzJli1bCAkJITw8nO3bt5v1O3PmDEOHDmX48OHs2LGDunXr3vNePEpz584lOjqaPn36sH79eqpVq8YLL7yQb9958+bx3XffsWTJEv7973+zYsUKXn/9dSBndu+4ceOAnPIRuc8Z5LyZUKFCBZ588slCxZaVlUVmZia//vor+/bt45133qFLly759u3Zsydr1qzh9u3bQM6s4qZNm1KhQoVCHVPkr0Y1i0VERERERKRYmzhxIk2bNmXx4sUAtGnThhs3bhhJqStXrhAVFcXo0aOZPHkyAMHBwdja2jJixAhGjRqFq6srsbGxZGRkcOTIEdzd3QEICgqievXqzJw5k+nTpxvHvHLlCtu3b8fJyQmASpUqERQUxM6dO2nTpg3bt2/n008/Zf/+/TRt2hSAwMBAKlasiLOzc55z6N27N2PHjjXiP336NBMmTCAkJMTok5aWxr59+4wE2pkzZxgyZAgRERGMHz8eyJnBu379ejZs2MArr7wC5MzuzE2I5b4GyMzMNIuhRImcFEFu2QmTyWT2UX87Ozs8PDzy/fh/fsqUKUPNmjUBqFWrFg0aNMjTp2PHjkybNs2s7d///rdZrMHBwRw5coS4uDjj/kHO4nRTp041aijXqFGDqlWrsn37dsLDw/nss8+4desW8+bNo3Tp0kDOtc1Vr149ypcvj52dndk5TZo0ifLly7NlyxZjVmulSpVo06YN27Zto0OHDkbfunXr8u677+Y5Ly8vL5YtW2Ycc9OmTcyZM4fjx4/j4+MDwM8//8yQIUPIyMjA2dmZPXv2sGnTJnbu3Enr1q2BnOf07NmzREVF0bZtW2P89PR0tm/fTuPGjc2Oe/c9zb2Gd7ZbWVlhZfVwcwezsrKYOnUqffv2Ner9tm7dmtTUVN577708/T09Pfnggw8ACAkJ4dNPP2Xt2rVMnToVNzc3qlWrBuSUjyhXrpyx35kzZ6hUqVKe8e48D5PJhLW1tdn2u8uItGjRgjlz5uR7Lk8//TQDBw5kz549BAYGsmrVKiN5LfJ3ppnFIiIiIiIiUmxlZWWRmJhIp06dzNrvnE144MABrl69SteuXcnMzDS+WrVqxfXr1/nqq68ASEhIoGXLlri4uBh9rK2tad68OUePHjUbv2XLlkaiGHISwS4uLhw+fBiAo0eP4uzsbCSKAaP0QH7ujr9z584kJiaazWT18vIym2lZvXp1AFq1amW0OTs74+7ublbeICYmBhsbG+OrX79+JCcnm7Xl91H/P0J+s5NPnDhBp06d8PDwwNraGhsbG06ePJlnZrGVlZXZuXt7e+Pg4EBKSgoAvr6+WFtb8+yzz7J582YuXbr0QDF9/PHHhIWFmV2T1q1b4+zszCeffHLf+CEnyXun6tWr4+XlZSSKc9sAI96EhARcXFwIDAw0e06Dg4P57LPPzJ4FV1fXPIliIM89TU5Opl+/fmZtMTExD3Qd8pOSksLZs2fp2LGjWXtBJSHuvg41a9Y0zvd+ckuW5EpNTTU7jzp16uTZ56OPPuLo0aMcPHiQ9957j++++45OnTqZvVmSq0yZMrRv356VK1fy3//+l19++aXAWcgifyeaWSwiIiIiIiLF1oULF8jMzDRmAufy8PAwvk9NTQVyyiLkJzexmpqayqFDh/JNnObOgMx19/Fy23LrFp89exY3N7d8++Qnv/hv3bpFamqqcS53z0i2tbUtsP3GjRvG6wEDBhAaGmq83rJlC4sWLWLTpk35xvJHuvM+Qc6M7datW+Pm5sbs2bOpUqUK9vb2vPDCC2bnBODg4GBcg1x3nnv16tXZsmULkydPplOnTlhZWRESEsK8efOoXLlygTGlp6fniSs31jvrFucXf6787klB9y833tTUVNLS0gpM3J89e5aKFSve87h3v6nRsWPHPPffy8sr330fRO7zffezXdBznd85F7QY3528vLz47rvv8oyVe34TJkzghx9+yLNfnTp1jBnK/v7+ODs707lzZ7Zt22Z2DXL17NmT/v37AzkzwF1cXPjxxx/vG5/IX1mxTRavWrWK6dOnc+LECRwcHAgMDGTatGl5foHfqU+fPixZsiRPe4UKFR74nS0RERERERH583Bzc6NEiRJ5agqfO3fO+N7FxQWA9evX5/vR9qpVqxr9QkJCjPIVd7KzszN7fffxcts8PT2BnI/fX7hwId8++Tl//rxZrdRz585hY2Nj9tH8h+Xl5WWWIPzqq6+wtbXNtyzEH+3u2aMHDx4kJSWFLVu2mM0cvXTpkpEoLYyQkBBCQkK4fPkyO3bsYPjw4fTt25ddu3YVuI+Li0u+9+ncuXPGs1RQ/L+Hi4sLbm5uxgJ8d7szIVvQce++p7a2tnh7ez+ye537fN/9bBf0XD+sFi1asHv3bk6cOGHMxi5RooRxHq6urvkmi++Wu+/x48fzTRa3b9+ezMxMFi9ebJQNEfm7K5ZlKN577z169uzJZ599hqenJ1lZWaxbt44mTZrwyy+/3Hf/ChUq0LhxY+OroHeXRURERERE5M/N2toaPz8/Y2GsXGvXrjW+f+qpp3B0dCQlJYUGDRrk+XJ1dQVyyjl8/fXX+Pj45OlTu3Zts/H37NljVtZg9+7dpKWlGaUBGjZsSEZGBvv37zf6XL16tcAk5d3x5y5Wd3dN1qJ094zlB90HeOD9rl+/brYf5JQRSUpKKtRx71amTBm6detGjx49OHHixD37BgQEsGHDBrP6uB9++CEZGRkEBAT8rjjupVWrVly4cMFI5N/9dfcs6qJQsWJFypcvz8aNG83aN2zY8FDjFfR89O/fn9KlSzNixAhu3br1UGMDRomZgt50sbe357XXXiMsLKzAUhoifzfFbmbxzZs3GTNmDJBTw2nt2rWcOXOGJ554gvPnzzN58mTefPPNe47xwgsvEB0d/QdEKyIiIiIiIpYWGRlJWFgYffv2pUePHiQmJprNEnR2diYmJobRo0eTkpJCixYtsLa25vTp02zcuJF169bh6OjIiBEj+OCDD2jevDmvvPIKlStX5sKFCxw+fBgvLy+GDx9ujFm6dGnatm3LmDFjyMjIICIigkaNGhkLqLVt2xY/Pz+effZZpkyZgrOzM9OnT6d06dL5Li62dOlSHBwc8PPzY9WqVezfv5+tW7da/uIVgo+PD7t37+bDDz+kbNmyVK1a1Ui0F6R69epYW1vz/vvvU6JECbPZofnx9/enVKlSvPzyy4wZM4aff/6ZqKgos1nXD2rhwoUcPHiQkJAQPD09+eGHH1i+fLmxeFxBIiMjadKkCaGhoQwZMoRz584xZswYGjVqZCymZwnBwcF06NCBkJAQRo8eja+vL9euXeP48eOcOnUq34X0HpXNmzcbiwDmqlWrFk888YRZm7W1NWPHjmXYsGF4eHjQsmVL9uzZw0cffQRQ6IXzcmf+zp8/n6effhpHR0dq165N+fLlWbZsGd27d8ff359BgwZRo0YNbty4wZdffsmuXbvynWmemJiIk5MTmZmZnDhxgqioKDw8PPLUBL9Tbo5JRHIUu5nFR48eNepNde7cGcj5SE3uyqU7duy47xixsbHY2dlRqVIlevTowffff2+5gEVERERERMSiOnbsyNtvv82uXbt4+umnSUhIYPXq1WZ9Ro4cyeLFi9mzZw+dO3ema9euLFq0iIYNGxqzG11dXTl06BB169YlIiKC1q1bM3z4cJKSkvIsJtapUyc6duzIoEGDGDhwIA0bNjSbHWwymdi4cSN16tRhwIABDBw4kPbt29OqVSuzhfFyrVy5kp07d/L000+ze/duFi1aZNHE5MOYPHkyFStWpHPnzjRs2JDNmzffd59y5coxf/589u3bR9OmTWnYsOE9+3t4eLBmzRrOnz9PWFgYsbGxLFy4kMcff7zQ8fr6+pKamsqIESNo3bo1UVFR9OzZk7feeuue+9WvX5+EhAQuX75M586dGTVqFO3bt2f79u0Wn+m9du1aBg0axFtvvUXbtm3p168fCQkJNG/e3KLHff755+natavZ152z8+80ZMgQoqKieP/99+nUqRNff/01M2bMAMj32b6XevXqER0dzfLly2nSpAkdOnQwtoWFhZGYmMiTTz5JTEwMrVq1omvXrqxbt46hQ4eSkJCQ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Xc36zJ49mxdeeIE2bdqwefNmIiIiePPNN4mMjDT6pKenExAQwLFjx5g7dy7r1q2jZMmSBAYGmiUPAeLj44mPj2fBggUsWLCAw4cP88wzzxjbs7OzCQsL49ixYyxcuJD58+ezfv161q9fn+859OjRg+DgYOLj42nZsiX9+vVjx44dZn1++eUXRo4cSWRkJB988AHff/89vXr1onv37tSuXZt169ZRv359wsPDSU5O/r2XtVCuX79O69atuXjxIsuXL2fKlClMnTo1T6IdcmoO9+rViz59+hAfH4+7uzudO3fm4sWLQM61LV++PF26dOHgwYMcPHiQ9u3b87///Y9r167RunXrQsWWnZ1NZmYmmZmZnD17luHDh1OiRIl8y2g0btyYKlWqsGbNGiCn9vWOHTvo2bPnQ1wVEZHiR2UoREREREREpFibOHEiTZs2ZfHixQC0adOGGzdu8PrrrwNw5coVoqKiGD16NJMnTwYgODgYW1tbRowYwahRo3B1dSU2NpaMjAyOHDmCu7s7AEFBQVSvXp2ZM2cyffp045hXrlxh+/btODk5AVCpUiWCgoLYuXMnbdq0Yfv27Xz66afs37+fpk2bAhAYGEjFihVxdnbOcw69e/dm7NixRvynT59mwoQJhISEGH3S0tLYt28fTz75JABnzpxhyJAhREREMH78eAAaNmzI+vXr2bBhA6+88goAt2/f5vbt28Y4ud9nZmaaxVCixMOnCBYvXsy5c+f473//a8ycbtCgAY8//nieusA3b95k6tSpRj3iGjVqULVqVbZv3054eDj16tXDzs4uT/mI3bt3AznX+k53n5+1tbVZKYq33nqLt956y3jt4ODA0qVLefzxx/M9lx49erBq1Spefvll1q1bh5ubG82aNSM2NrbwF0ZEpJhRslhEREREpBiJO/7W/Ts9pD5PvnT/TiJ/MllZWSQmJpolciFnUbPcZPGBAwe4evUqXbt2NUuQtmrViuvXr/PVV1/RvHlzEhISaNmyJS4uLkY/a2trmjdvztGjR83Gb9mypZEohpxEsIuLC4cPH6ZNmzYcPXoUZ2dnI1EMUKpUKYKCgvKdbdupUyez1507d+bVV18lKysLa2trALy8vIxEMUD16tWN88jl7OyMu7s7P/30k9EWExPDhAkT8hzz7rIK2dnZefo8qKNHj1K7dm2zEhve3t7UqVMnT18rKyuzmL29vXFwcCAlJeWBjnV3TeKhQ4cyf/584/WaNWvo0qWL8bpbt26MGjUKyEm4r1ixgueeew5nZ2eCg4PzjN+zZ0+mTJnCTz/9xMqVK+nevTtWVvpgtoj8PShZLCIiIiIiIsXWhQsXyMzMNGYC5/Lw8DC+T01NBcDPzy/fMXITq6mpqRw6dCjf2rR3z469+3i5bbl1i8+ePYubm1u+ffKTX/y3bt0iNTXVOJe7ZyTn1ubNr/3GjRvG6wEDBhAaGmq83rJlC4sWLWLTpk35xvIw7nW+169fN2tzcHDIU1f47pjz4+XlBZAnqTx69Gj69OnD2bNn6dixY5793NzcaNCggfE6ODiYzz77jLFjx+abLK5VqxZPPvkkc+bMYc+ePUybNu2ecYmI/JUoWSwiIiIiIiLFlpubGyVKlMhTU/jcuXPG9y4uLgCsX78+TwkDgKpVqxr9QkJCjBnJd7KzszN7fffxcts8PT0B8PT05MKFC/n2yc/58+epUKGCWfw2NjaUK1cu3/6F4eXlZSRaAb766itsbW3NEqi/l6enJ8eOHcvTfv78eUqXLv1IjtGgQQNKlixJQkICzz//vNFeuXJlKleuTFJS0gONYzKZeOKJJ+6ZLO/Zsyfjx4/n8ccfp379+r83dBGRYkOfoxAREREREZFiy9raGj8/P+Lj483a165da3z/1FNP4ejoSEpKCg0aNMjz5erqCuSUc/j666/x8fHJ06d27dpm4+/Zs4dLly4Zr3fv3k1aWhqNGzcGcmoHZ2RksH//fqPP1atX2bVrV77ncXf8uYvV5Zag+LNr2LAhX3zxBT/88IPRlpSUxOeff/5Q4+U309jBwYEXX3yRtWvXsnfv3oeONTs7m6+//vqeifhnn32WDh06MGbMmIc+johIcaSZxSIiIiIiIlKsRUZGEhYWRt++fenRoweJiYksW7bM2O7s7ExMTAyjR48mJSWFFi1aYG1tzenTp9m4cSPr1q3D0dGRESNG8MEHH9C8eXNeeeUVKleuzIULFzh8+DBeXl4MHz7cGLN06dK0bduWMWPGkJGRQUREBI0aNaJNmzYAtG3bFj8/P5599lmmTJmCs7Mz06dPp3Tp0vnWv126dCkODg74+fmxatUq9u/fz9atWy1/8e7h+++/N0u6Q0694WeeeSZP3759+zJp0iRCQ0ON+sjR0dGUL1/+oer9+vj4sHv3bj788EPKli1L1apVcXV15fXXXycxMZG2bdsycOBAgoODKV26NOfPnzdiLVWqlNlY586d49ChQwCkp6ezYsUKvvrqKyZNmlTg8b29vdmwYUOh4xYRKe6ULBYREREREZFirWPHjrz99ttMmjSJVatW0bhxY1avXm3M8gUYOXIkFSpUYPbs2cydOxcbGxuqVatGaGioUT/X1dWVQ4cOMW7cOCIiIrh48SLu7u74+/vnWYCuU6dOVKxYkUGDBpGenk5wcDBvv/22sd1kMrFx40YGDhzIgAEDKFu2LEOHDuXkyZP5lmtYuXIlY8eOJSYmBnd3dxYtWkS7du0sc8Ee0I4dO9ixY4dZm7W1tdkigbkcHBxISEhg0KBB9OrViwoVKjB+/HiWLl1qthDgg5o8eTIvvvginTt35sqVKyxevJg+ffpgb2/Pzp07WbhwIcuXL+e9997j5s2beHp60rRpUz755BP++c9/mo21du1aI5FcunRpHn/8cd577z369u1b6LhERP7qTNm/Z7nTv6nLly/j5OTEpUuXKFOmTFGHU2zUH7XUouO/3qWFRcevtbO9Rccv3eQ5i44femKjRcfvH9jLYmNXfXG1xcYG8BvU36LjL0ks/P8cF0a9oMoWHX/virw1+x6lJsFtLDp++ZRq9+/0kDyb5L9AzaMSu2/t/Tv9DiEhIRYd/8efhlp0/CdqPH//Tr/Dc99WtdjYY30et9jYADPi/mvR8fU7996K8+/cPk++ZLGx/6qK698GN27c4IcffqBq1arY29sXdTjFjre3N6GhocybN69Q+928eZOaNWvStGlTFi9ebKHo/jzS0tJ47LHHGD58OFFRUUUdjojI39qD/u7XzGIRERERERERC1i0aBG3b9+mRo0apKens2DBApKSkli1alVRh2YR06ZNw8PDA29vb86ePcvMmTPJysoyW4xORET+3JQsFhEREREREbEAe3t7pk6dSlJSEgB16tRh69atNGjQoGgDsxArKysmTpzIzz//TIkSJWjcuDG7d++mUqVKRR2aiIg8ICWLRURERERERAohN/l7P71796Z3796WDeZPZNSoUYwaNaqowxARkd+h8EuSioiIiIiIiIiIiMhfjpLFIiIiIiIiIiIiIqJksYiIiIiIiIiIiIgoWSwiIiIiIiIiIiIiKFksIiIiIiIiIiIiIihZ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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10, 8))\n", + "palette = sns.color_palette(\"tab20\", n_colors=len(df['model'].unique())) # 더 많은 색상 지원\n", + "sns.barplot(x='region', y='CSI', hue='model', ci=None, data=df.loc[(df['region']=='busan'),:], palette=palette)\n", + "plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', fontsize=11)\n", + "plt.title('Soft Voting Ensemble: Model Performance Comparison in Busan', fontsize=15, fontweight='bold') # 제목 볼드 및 크기 조정\n", + "plt.ylabel('CSI', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "plt.xlabel('') # y축 라벨 변경 및 스타일 조정\n", + "# x축(도시명) 글씨 크기 조정\n", + "plt.xticks(fontsize=15, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.yticks(fontsize=10, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "table = df.loc[(df['region']=='incheon'),:'Accuracy']\n", + "table['CSI'] = table['CSI'].round(3)\n", + "table['MCC'] = table['MCC'].round(3)\n", + "table['Accuracy'] = table['Accuracy'].round(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABYsAAAKyCAYAAACUpIHxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd1gTafc38G9AWuhdECWIUhRQKcq6SBVBRRAbFlTsDXsBRRewgF1X7BUruquABQtrQdm1Ia71sawFbIhSxIbS5v2DN/NjSKgSWdzzua5cMjP33HOmJDEnd87wGIZhQAghhBBCCCGEEEIIIeQ/Taq+AyCEEEIIIYQQQgghhBBS/yhZTAghhBBCCCGEEEIIIYSSxYQQQgghhBBCCCGEEEIoWUwIIYQQQgghhBBCCCEElCwmhBBCCCGEEEIIIYQQAkoWE0IIIYQQQgghhBBCCAEliwkhhBBCCCGEEEIIIYSAksWEEEIIIYQQQgghhBBCQMliQgghhBBCCCGEEEIIIaBkcZ14+vQpJk2ahNatW0NJSQlycnLQ1dVFq1at0KtXLyxYsAB37typ020+e/YMw4YNQ9OmTSEjIwMejwcej4eAgIBv7vvr169QV1dn+1RTU0NBQUGF7ePj49m2PB4PQ4YM+eYYqpKWlsbZZlhYmMS3+a0EAgEn5ooePXv2rO9Q/zWio6M5xyYpKem7rCspSUlJIudbTU0Nnz9/Ftt+8eLFIu2dnZ2/S6xhYWGc7aalpX1zn9/yvA0ICKjwOaOkpAQzMzOMGTOmzl9ra0KSr8uk/n358gWbN29Gz5490axZM/D5fMjLy6NZs2bw8vLC+vXrkZeXV99hNljOzs7sc0YgENR3OHWu/GvY91D+Pac+X4sk8Z5CCCGEEEIko1F9B9DQ/fHHH/D19cWnT58489+8eYM3b97g3r17iIuLQ3FxMSwsLOpkm/n5+XBycqr0P9rR0dEYNmwYO33u3LlqJ5nk5OTQq1cvbN++HQCQl5eHkydPwtvbW2z7AwcOcKYHDhxYre1UxNnZGefPnwcAGBoa0gcK8kPLy8vD/v37MXz4cM78kpISbNq0qZ6ialg+ffqEBw8e4MGDB9ixYwfWr1+PkSNHftcYqvO6TBqu06dPY8iQIcjIyBBZ9vz5czx//hwJCQk4ffo0YmNj6yFCQgghhBBCCKkblCz+Bh8/fsSgQYM4iWIrKys0a9YMX79+xYMHD/Ds2bM6325SUhInIdGkSRPY2dlBWloadnZ2dbKNgQMHssliANi/f7/YZPHnz59x9OhRdlpHRwedO3eukxgqo6ioiN69e7PTrVq1kvg261rZ+Mtq3779d46E1LdNmzaJJItPnjxJicdKODo6QltbGwUFBbh+/TpevnwJACgsLMSYMWNga2uLtm3bfrd4vsfrMqkfsbGx6Nu3L0pKSth5fD4fdnZ2UFFRwcuXL3Hz5k0UFxdz2pCacXJygpaWFoDS/0v8aOzs7PDx48f6DoMQQgghhJAqUbL4G5w8eRJv375lpw8dOoRevXpx2qSlpeHgwYPQ1NSss+2+efOGM719+3Z06dKlzvoHABcXF+jp6bGjqI4ePYr8/HwoKChw2h07doyTLO/bty8aNZL8ZaWtrY2DBw9KfDuS1NDjJ3Xn6tWruHHjBie5uXHjxvoLqAEIDw9nfy3x5csX+Pj4IDExEUDpqOz169dj8+bN3y2e7/G6TL6/58+fY8iQIZwk8MiRI7FixQqoqKiw87Kzs7Fhwwbcv3+/PsL8IYSHh9d3CBI1YcIETJgwob7DIIQQQgghpEpUs/gbPHr0iDPt5uYm0kYgEGDGjBmckhBlPX36FFOnToWlpSWUlZUhJyeHZs2aoV+/fjhz5gynrbD2XPmacx4eHmwNOGGd1vLbc3FxqVGtPCkpKfj5+bHTHz9+REJCgki78iUoBg0axJm+ePEi/P39YWRkBAUFBSgpKcHc3BwTJkzAgwcPOG2F9fyEJSgAID09XWy9vapqn5ZfJysrC1OmTIGhoSHk5ORgZGSEX375BUVFRWL3/+jRo/j555+hqKgIDQ0N+Pj44MaNG/VSB7d8HcfCwkKsWrUKlpaWkJeXh7a2NoYOHYrMzEyRdd+9e4fQ0FDY2NhAVVUVMjIy0NLSQqtWrTBw4ECsWbMGX758EVnv/v37mDBhAszNzaGkpAQFBQWYmJhg4sSJYke7ijsff//9N7p16wZVVVVoaGigX79+7Lo5OTkYP3489PT0IC8vj7Zt22Lfvn3VOh5//fUXPDw8oKamBmVlZbi5uSE5OblGx1ToxYsXmDVrFtq2bQsVFRXIyclBIBBg2LBhFda+rctrQE9Pj/27bHL42bNn7PNNX1+/Wn0dP34cvXv3hoGBAeTk5KCiooI2bdpg1qxZ7KhbcbZt24Z27dpBQUEBurq6GDp0KF68eFGtbdb0OpEUeXl5BAcHc+Zdu3ZNpF1KSgoCAgJgbGwMPp8PRUVFWFhYYPbs2Zwv/oTK1/uMjo7GlStX0L17d2hoaLDnvzqvy0IlJSWIiYlBt27d0LhxY8jKykJNTQ3t27fHggULkJOTIxKHuGvu+PHjcHFxgaqqKqf+Z/nXvidPnsDPzw+amppQVVVF165dcfPmTQClpTPmzJnDvi6amZlh9erVItv/8OEDFi5cCF9fX5iZmUFbWxsyMjJQUVGBlZUVJk+ejCdPnlTr+N25cwf9+vWDlpZWtZ77T58+xfTp09G2bVuoqqpCTk4OBgYG8PDw4Pz6RejTp09YvXo1HB0doampCVlZWejq6qJHjx5i38OqsnjxYs4Xor6+vtiyZQsnUQwAmpqamDt3LrZt2yZ2H6r7Pi9Utsa9s7Mz3rx5g1GjRkFXVxdKSkro1KkT+9pTXFyMZcuWwcTEhH1/mzdvHgoLCzl9inudfvLkCfz9/aGrq8ueD3H7wDAMli5dCj8/P7Ru3Rq6urqQlZVl64WPHDmSva6q2ub9+/fh5+cHHR0dSElJsc+PymoWl5SUYMuWLXBxcWGvP1VVVbRo0QJeXl5YuHCh2F9yvXnzBvPmzYOtrS3U1NQgKysLfX199OjRA4cOHQLDMCLrfMt7bmUqq1ksrp7vkSNH4OTkBGVlZSgrK8Pd3V3s69q3+NZ9LS4uRkxMDHr06IEmTZpATk4OampqaN26NSZMmFDl+8CpU6fg4uJS7X08ffo0/Pz80KxZM8jLy0NFRQW2traIiIjAhw8fKlzvzp07GD16NExMTKCoqAgFBQUYGxsjICCgwu196/8jCSGEEEIaNIbU2vLlyxkA7MPT05M5c+YMk5+fX631f//9d4bP53P6KP8YM2YMU1JSwjAMw5w7d67StgCYHTt2VNmmuqf96tWrnHV69+7NWf7+/XtGXl6eXW5kZMRZPnPmzEpjkJWVZXbs2MG2Hzp0aJVxDx06lGEYhnn69ClnfmhoKGfbZZf9/PPPjIGBgdj+hg8fLrLfUVFRFcY7aNAgzrxz585V61gyDMMYGhrW+BwwDMM4OTmx6+jq6jLOzs5i42vVqhXn2vv06RPTqlWrKo/p8+fPOdvbuHEjIyMjU2F7JSUl5vjx45x1yp8PNzc3Rk5OTmRdPT095t69e4yxsbHYvnfu3Mnpt/z1PGHCBEZaWlpkPWlpaebgwYOVrlv+XB0+fJhRVlaucD9lZGSY7du3i5yPqvqtTPnn8NSpUxlFRUUGAKOsrMx8+PCBYRiGCQkJYdvMmzePs46TkxOnz8LCQmbAgAGVnmMVFRXmxIkTIvFMnjxZbHttbW2mf//+nHlPnz7lrFsX10n5521lyr8+lD/ud+/e5Sxv2bIlZ/m8efMYHo9XYby6urrMtWvXKj1fffr0YRo1aiQSR1XPMeHr3Pv37xlXV9dK2+rp6YnEUf6aK39uyp6fsvN++uknRkNDQ+y5+fvvv5kOHTqIjWH+/Pmc7f/zzz9V7qOioiLz559/Vnr8fH19GVlZ2Wo99xmGYbZv3855jyn/aNOmDaf9gwcPmJYtW1Ya58iRI9n31KqUlJQwurq6nPXv3LlTrXWFavo+L1T2/aJVq1aMQCAQWU9GRoY5e/Ys07NnT7H9ln9/K//88/b2ZlRVVcWuO3nyZM66hYWFVV4DMjIyzG+//VbpNr28vBglJSWxz4+y73WGhoacfgICAqrc/u7duznrnD9/ntHU1Kx0nR49ejBfvnzhrFfb99yqlH8NKys0NLTK5zgAhs/nM/fu3av2Nss/B4X/h6qLfX379i3j4OBQ6fGNi4urcB/Hjh1b7X0sKipihg0bVum2WrZsyTx58kTkGPz6669i/98gfPB4PGbhwoUi65VtU9P/RxJCCCGENHSULP4GFy9eFPsfx0aNGjFt27ZlAgMDmdOnT4v9YHr9+nWRD81t27ZlXFxcGAUFBc78xYsXMwzDMHfu3GF69+7N2NracpY7OjoyvXv3Znr37s2sXbu2yjblk76VKfvBW0FBgU1mMQzD7N69m7ONOXPmsMvWrl3LWSYrK8t06tSJsbOz4yRspKWl2QSDMHYtLS3Oh4ayca9du5ZhmJoli4WPNm3aMA4ODpzt83g8zoeLO3fuiCTAzM3NxZ4X4NuSxWX3q+zj6tWrnPXKfpgTPpo1a8a4ubmxiUbho2zyfc+ePZxlLVq0YHr06ME4OjoyRkZG7PyyyeKTJ09yjg+fz2fc3NwYd3d3TtJGSUmJefToEbte+fMBgJGXl2dcXFxE9lt4HK2srJiOHTtylgkEAs6+i/vyQ1VVlencubNIwllVVZV5/fp1heuWPVe3bt3i7I+MjAzj6OjIeHp6cpIn0tLSzF9//VVpTN+SLA4NDWVGjBjBTm/atIkpKChgGjduzABgpKSkmPT0dM465ZPFM2bM4CxXUlJiXF1dGQsLC858RUVFzjk7fvy4yLG1tbVlOnXqJDYJXDZZXFfXSV0mi/ft28dZ3qlTJ3bZ5s2bOcvU1dUZDw8PxsnJiZP81dPTY3Jzcys8X8JHq1atmK5duzLNmjWr1muuMNY+ffqIxOHu7s60aNGCM79x48acOMQ9D6SkpJi2bdsynp6ejK6urthkMVD6fuTg4MCYmZmJfR62aNGCcXFx4ZxPRUVFzmu9MFmsr6/P/PTTT4yXlxfTrVs3xtLSkrOemZkZ5/1O3PETvheYm5tX+txPTExkpKSkOG309PSYLl26MC4uLoyioiInWfz582eR14S2bdsy3bt3F3kNWrJkSbWuufLXq76+frXWE6rN+7xQ+ZgBMO3bt2esra3FnkcDAwOmc+fOnO2Vf38T9zotIyPDdOrUSeT6BcD5gkmYLNbW1mbat2/PdO3alenRowdjY2PDScRpaGgwHz9+rHSbAJjmzZszXbt2ZUxMTKpMFj9//pyzrpaWFtO1a1emS5cujJmZGbvPZZPFL168YNTU1DjrmZqaMp07d2ZUVFQ488eOHcs59rV9z61KTZLFABg1NTWmc+fO7PuB8FE+4VuZmiSLa7qvjo6OIq81NjY2jJeXF2NqasoAlSeLa7KPc+bMEXmN7Nq1K2Nvb895DbK0tGQKCwvZ9Y4ePSryutmhQwfm559/Fvnib//+/Zxtirtuq/P/SEIIIYSQHwEli7+Rt7e32P9Qln1YW1szDx8+5Kzn6+vLafPrr7+yy27dusX5T7qKigrz+fNndnl1klXfktAq65dffuH0s3fvXnaZl5cXZ5lwxFVhYSGjra3NzpeVleUkQLdt28ZZz93dnbPNykYXCdU0WbxixQp22cKFCyv8ADR69GjOsilTprDLbt68KTJC7FuSxRU9yn64Kn88ADC9evViCgoKGIZhmD///LPCD1iLFy/mfEguLi7m9PvixQtm06ZNzLt379h5NjY27DoCgYDJyMhglz1+/JgzEnfUqFHssvLnQ0pKirl48SLDMAzz7t07keM2YcIEdt2+fftylpVNSpa/jps2bcq8ePGCYZjSkUblR9RGRERUuG7Zc9W7d2/Oh9X79++zy7KysphmzZpVeH3WdbI4JSWF81rx22+/sdNeXl4Mw3Cv57LJ4jdv3nCSQ9ra2pzkbPlRyWXPmbu7O2fZ+vXrOXGWH4Vb9rzU1XVSF8nir1+/MufPn+ecMwBMeHg4wzCl10nZ0aF2dnacROiVK1c4+7po0aIKzxcAJjo6ml1eUlLCfP36lWGYqq+LmzdvcpabmpoymZmZDMMwTHFxscjIybJxlO9bVlaWSUxMZJcXFRUxRUVFDMOIvvYdOHCAYRiGKSgoEBmd6u3tza5X/pcgZeP/9OkT8+DBA7HnZcOGDZz1yo68LX/8ZGVlmUuXLrH77OHhUeE1Zmdnx1k2Y8YM9nWPYRjmw4cPnORO+V+ElF1WVFTEea9WVVXlvKdW5MqVK5w+O3ToUOU6ZX3L+3xFCe6SkhKR0Zx2dnbMp0+fGIZhmHXr1nGWlX1/E/c6XfY8r1+/nrO8S5cu7LKSkhLm5s2bYr/8PnHiBGe9Y8eOVbjNss9NIeHI3ore+y9fvsxZ/+XLl5z1379/zxw8eJD5+++/2XlTp07lrDN16lR22bNnz5gmTZqwy6SlpZn09HR2eW3fc6tSk2Rxy5Yt2dfVrKwsTjK1ov8XiVPTZHF19zUhIYGzrGnTpsytW7c4fV+9epUzr7b7+PbtW86XkN7e3pzXgrLvmQD3/6nt2rXjLDt8+DC77PTp05zX/vK/Ril/3Vb3/5GEEEIIIT8CShZ/o69fvzKzZs0SGYFR/tG8eXP2A1FRURGnfdOmTUUSeeWTlmfOnGGXfc9k8f379zn99OjRg2EYhsnJyeEkqcqO8Cr/wW7gwIEi/ZqYmLDLZWRkOD9vrOtkcbNmzTjHNzU1lbO8bIKx7Ag/OTk5Ji8vj9PvyJEja31c6ypZXDYZyDAMJzFX9sP9wYMH2fmysrJMSEgIExcXx9y7d48z8kbo9evXnO0YGxuLjHpWV1dnlxsYGLDrlj8fZeNgGNEPbK9evWKXlU/yCJPMDCN6HUdGRnL6ffjwIWd52cRuRc+B4uJizs+gGzduLLKfZX9uKiMjU63EUnWISxYzjGjyVfi3MOlSdp2yyeL9+/dzlpUd3c8wDJOfn88ZRde0aVOGYUq/0Cn74Vvca1CXLl04fQsTeXV5nXxLsriyh56eHpOdnc0wjGjCz9LSUiTesiVTHBwcKjxfHh4eFcZX1Wtu2S9vADCbN2/mLH/16hVnedmR0eX7HjNmTIVxlG1nYmLCWVY+eVn2uVZ+BN6+ffs46969e5cZN24cY2FhwSgrK4uM+hU+YmNjKzx+/v7+nD5XrFghNp7y15iZmZnI9Vle165d2fbS0tIi57j8a9Dp06cr7Y9hvi1Z/K3v82XfL1RUVDilEsonQsueq9u3b3OWlX1/K//8K389FxcXM02bNmWXKygosF8mMExpknXGjBmMtbU1o6amVuFP+1euXFnhNsuPPi+rovf+t2/fcvoYNGgQs2/fPiY1NZUzirmssiPp5eXlmffv33OWR0REcPrctm2b2DiA6r/nVqUmyeKtW7dylvfo0YNdJisrW+1t1jRZXN19HTduHGe9sgnaitR2Hw8cOMBZz97envPcLl+GRfg6k5GRwZnfsWNHkZjKv889fvyYXVZ2fk3+H0kIIYQQ8iNoBPJNZGVlsWTJEsydOxd//PEHzp8/j+TkZNy4cYNz45QnT57gxIkT6NmzJ7Kzszk3zDEzM4OUFPdeg61bt+ZMp6enS3ZHKmBqagpra2tcv34dQOnNSN69e4e4uDgUFBSw7QYOHMj+XT7W8vsinPfw4UMAQGFhITIyMmBkZCSJXUCbNm04x1dVVZWz/OvXr+zfZW/s1axZM5GbGFlYWNRZXGWvj+pSVlaGsbExZ56qqip7Y5ey++Ll5YU2bdrg5s2bKCgowKJFi9hlCgoK6NSpEyZOnAgvLy8Aouft8ePHePz4cYWxvHz5EsXFxZCWlhZZ1qpVK860kpIS+7eamhrnxm5ll5Xfh6r6bdGiBWRlZdlr8fnz5xWuK5SVlYWPHz+y069fv8ahQ4cqbC+8Pps3b15l37U1duxYjBo1CgDYGwIZGhqia9eula5X1XNNXl4exsbG+PvvvwGUXt/FxcXIysri3NiwotegxMTEKrf5LdeJJFhYWODAgQPQ0NAAAJEbLN2+fRu3b9+ucP3KXms7depU67iqOld6enpQV1dHbm5uncVR2fOw/PLKnoenTp2Ct7c35zW/Iu/fv69wWbt27TjTFb0Wl993e3t7keuzvLLnubi4uNLntLhtiKOjo8OZrs7ri1Bdvs83b94ccnJy7HRtz2N55a8PKSkpmJmZsfuZn5+PrKws6Orq4saNG3B2dkZeXl6F/QlVdg04ODhU6ya7ZWlpaWHs2LHsTUD37t2LvXv3sjG3bdsWQ4cOxfjx49GoUel/a8sey6ZNm0JZWZnTZ3WPfU3ec+tSZc+V6jwPa6Mm+1r+dfXnn3+u8faqu4/lt3X58uVK+xWey/I3PKzo/6Jl3+fS09PFvtfX5P+RhBBCCCE/AkoW1xFlZWX06tULvXr1AlD6n1t/f3/89ddfbJsHDx7UV3jfZODAgWyyuKCgAHFxcdi/fz+7nMfjYcCAAfUVXpWESSOh6iatavqB9nsovy9AxfsjJyeH8+fPY+3atTh69Chu3bqF/Px8AKVJgMTERCQmJuLw4cPw9vaucSwMwyA/P18kOQGIfpCq7EPWt/oe5+nz588S7X/AgAGYPn06J8kyatSoKhNkdUWSx7Cy6+RbODo6QltbGzweDwoKCjAwMICTkxPc3d2/6bhVdq7LfslRn6obR2XPQ3HLKzJ58mRO8sbIyAitW7eGnJwc3r59iwsXLrDLKvsSrLavxZJQnee0oaEhdHV1kZmZCQB49eoV7t69KzbpJEl1dR6/RXBwMCdRrKenh7Zt24LP5+Pz5884ceIEu6yya6C2z6F169bB3t4eMTExSElJQU5ODgCgpKQE169fx/Xr15GWloaVK1fWqv+K1OQ9V5LbrY9tSnq7ktpHSbxf/5teuwghhBBCvofvk4n4Qb19+xZFRUVilwkEAkyYMIEzTzjiRVNTE4qKiuz8+/fvo6SkhNP27t27nOlmzZrVKLa6TP7079+f8+F0w4YNOHv2LDvt4OCApk2bstPlY/3f//4n0mfZeTIyMpwPkPWZpC0b+/Pnz0U+dNy5c+d7h/RNVFVVERISgsuXL+PTp094/vw54uLiYGBgwLZZv349ANHzNmzYMDClpWoqfNR1ArAq5a+lJ0+ecEb0lL0OK1L++efi4lLlftbliHJxFBUVMXjwYHZaRkYGI0aMqHK9qp5rX7584Yz6bdKkCaSlpaGlpQV5eXl2/v3790USPPfu3avWNuvrOgkPD8fBgwfx+++/Y9euXYiIiICHh4dIIs3Q0FBkvcpizcrKqnCb35KErupcZWRksKOKxbWvqzhqKicnh/NFp5eXFx4/foyjR4/i4MGDGDduXJ1vs/w5u3z5ssh7ZGXr8Pl85OfnV3qeAwMDq4yDx+Ohd+/enHnz5s2rdB3h69H3eJ//VuWvQYZhOOdaQUEBmpqaAICLFy+y89u1a4e0tDQcP34cBw8exC+//FLtbdb22pWSksLQoUNx8uRJZGdnIysrC0lJSXB2dmbbbNy4kT3G5d/Ly/6aBKj/Y9/QCQQCznTZgRF1rfzrwc6dOyt9bl+7dg1A9f4vStcBIYQQQoh4lCz+BgkJCTAzM8OaNWvw9u1bzrLi4mIcOXKEM8/MzAxA6YgEd3d3dv7z58/ZhB1Q+p9X4U8sgdJRyx07dqxRbAoKCpzpV69e1Wj9spo0aQJHR0d2OiUlBcXFxez0oEGDOO1tbW2hpaXFTh88eBCpqans9M6dOzkfSJ2cnDiJq7KxZ2dnS+wnl+K4urqyf+fn5yMyMpKdvnXrFvbt2/fdYvlW169fx/bt29kRWDweDwYGBvDx8eH8zFL4k83GjRtzfhYaExODM2fOiPT76NEjLFiwgP1J8Pe0fv16vHz5EkDpiLLQ0FDO8rKJg4pIS0ujS5cu7PT58+exZ88ekXYvX77EqlWrsGDBAs786Oho8Hg89pGUlFTzHRFj7Nix0NTUhKamJgYMGIDGjRtXuY6rqytkZWXZ6c2bN+PJkyfs9JIlSzijlT09PQGUfnHl4ODAzn/27Bk2b97MTicnJ4stQQE0jOukLBsbG2hra7PTUVFRuHnzpki7W7duYebMmYiPj5dIHOVLiqxYsYJNTJeUlGDu3Lmc5cJzVd8KCws503w+n/1CLzs7G4sXL67zberq6sLW1padvn//PoKDgzlfzubn5+O3335jp8se38+fP2PGjBki7x0fPnxATEwM/P39qx1LcHAw+Hw+Ox0XF4fRo0eLlFrIzc1FREQE+yXP93if/1bC0llCmzdv5vx038HBgf2Su+x1ICcnBxkZGQClx7r863Bd+/jxI5YsWcL54ktTUxNOTk6c17H8/Hz2/2Jlr4cvX74gPDycnX758iXnXEhLS6Nz586S3IUfTvfu3TnTwcHBIuV9rl+/XmnJn+oq/z63YMECkbIhDMPg8uXLGDt2LK5cuQKg9L2qbdu2bJu//voLx44dY6fPnTuHP/74g51u0aKFSBkOQgghhJD/KipD8Y0eP36MyZMnY8qUKTAzM4OhoSF4PB5u3rzJSdDq6+vDzc2NnZ47dy4SEhLYD2ATJ07E9u3boaamhsuXL7PlAoDS/4SXT/5WpUWLFpzp8ePHY9++fZCXl0f79u0xa9asGvU3cOBAsUkxGRkZ9O3blzOvUaNGmDdvHiZPngygdKTVzz//jA4dOuDLly9ISUlh20pJSYmMSiob+8ePH9G2bVu23mNQUBDs7OxqFHtNTJw4Edu2bWPPy8KFC3H48GFoaWmJnJdv1adPH7HzFRUVsXPnzm/u/8mTJxgxYgTGjBkDMzMzNGvWDI0aNcK9e/fwzz//sO3KHu8FCxagR48eYBgGX758QefOnWFpaQmBQID8/Hw8ePCArWcp6QSBOM+fP4eFhQXs7Ozw9OlTPHr0iF2moqJSrdG4APDLL78gISEBBQUFKCkpweDBgzF//nyYmJigqKgIjx49wpMnT8AwDIYOHSqp3eGwsLCodFSrODo6OpgwYQJWrVoFoPTXDm3atEGHDh3w5s0bzgd1Pp/Ped5PnToVp0+fZqfHjh2Lbdu2QUFBocqRnP/266SsRo0aISwsjP2lR1ZWFtq1awcbGxvo6+vjw4cP+N///seWGpBUiYE2bdrA19cXcXFxAEoToKamprC1tcXTp085z0kdHR2JjNitDV1dXTRr1oxNIv722294+PAhdHV1ceXKlWrVsK2NRYsWwdPTkx3xvmzZMuzZswdWVlYoLCzEtWvXYGRkhH79+gEARo4ciVWrVrH1TdetW4fff/8dbdq0gZycHJ4/f47//e9/KCwsFBmpWJmmTZti9+7d6Nu3L/uc2LJlC/bu3Yv27dtDRUUFr169wo0bN1BUVAQfHx92XUm/z3+rkpISuLu7w97eXuS9GSh9jRCys7NDcnIygNKR3ubm5jA2Nsb169fZ546kfPnyBcHBwQgODkbz5s1hbGwMRUVFvHr1ihOzmpoaOxJ62rRp2L59O5vUX758ORISEmBgYICrV69yrtvhw4fX6JogQLdu3eDg4IA///wTQOl7s7W1Ndq2bQs9PT08efIEd+/eRVxcHCwtLb9pW9ra2pg8eTKWLVsGoPSLyBYtWsDOzg7a2trIzc3FnTt32F9m9O/fn103PDyc85zs2bMn7Ozs0KhRI1y5coXzi5qwsLBvipMQQggh5EdCyeJvULZcAsMwuHfvntifbisrK7OJWiEbGxvs2rULw4cPZz8wCm9CVdaIESMQHBxc49jatWsHCwsLtmxCXl4eEhISAKDC0hmV6dOnDwIDA0VGanl4eIitczdp0iSkpaWxSayvX79y6loCpYnm9evXi9ysyd/fH+vWrWM/mJc9rv7+/hJNFrdq1QorVqzApEmT2HnChJu8vDyGDh3KSeSWHe1SUxXdgKmu608WFRXhzp07YktoKCkpcZJ53bt3x9q1azFlyhQ2wVHRDcHqo2afv78/9u7dyxkNBJR+6bBlyxbo6upWq5+2bdsiJiYGQ4cOZX+e/M8//3ASdkL/9tqES5YswcuXL9lRlh8/fhQZ6ausrIyYmBi0bNmSndetWzdMmDAB69atY+cJEy8qKirw8PDA0aNHxW7z336dlDd+/Hi8ePECixcvFvmpcnmSjDc6Oho5OTnsaM6cnByREdy6uro4cuSI2NfV+rJ48WLOTUxv3LgBoPT1b+7cuSKj7+tCly5dsHnzZgQGBrKlHTIyMpCRkSG2PZ/Px/Hjx9GjRw92BOqbN29EXiuAmp/jXr164eTJkxgyZAhev34NoHRErbgvUMuWWZD0+/y36t+/P86cOcMmgcsKDAzkjM5duHAh3Nzc2P8/PHjwAA8ePACPx0N4eHiNSlF8iydPnnB+PVFWZGQkOxK6adOmiI+PR58+fdhf14j7P1q3bt2wZs0ayQb9A+LxeIiNjYW3tzd7w7mioqIKX1e/VWRkJDIzM7Fr1y52W5cuXRLbtuzz29vbGytWrMCsWbNQXFyM4uJikRvk8Xg8/PLLLyK/kiOEEEII+S+jMhTfwN/fHxcuXMDcuXPh7u4OgUAABQUFSElJQUVFBe3atcPMmTNx9+5dODk5iazfv39/3LlzB5MnT0arVq2gqKgIWVlZNGnSBH369MGpU6ewdevWWtX44/F4OH78OPr37w8dHZ1vrnGprq4u9mfRZRMI5a1cuRIXLlzAwIEDYWhoCDk5OSgoKMDExARjx47FzZs3MXLkSJH12rdvj0OHDsHe3p5T8/F7mThxIo4cOYKffvoJCgoKUFdXh7e3N65evSpSz646pQLqi5OTE9auXQs/Pz+Ym5tDU1MT0tLSUFRUROvWrREYGIgbN25wfu4NlCbWbt++jUmTJsHS0hLKysqQlpaGuro6bGxsMGHCBJw4cQJz5sz57vs0YsQIJCYmwsXFBcrKylBUVISLiwvOnj3LjjCsrl69euHevXuYPXs2bG1toaqqCmlpaaioqMDKygrDhw/HwYMHsWHDBgntTd2QkZHBgQMHcOTIEfTs2RP6+vqQkZGBoqIiLC0tMX36dNy9e1fkZ8NAaUmGzZs3w8rKCnJyctDS0oKfnx9SU1NhbW1d6Xb/zdeJOBEREbh69SpGjBgBU1NTKCoqolGjRtDS0sJPP/2E6dOnIzk5mVM7uq6pqKjgzJkz2L17Nzw9PaGjo4NGjRpBWVkZtra2CAsLw927d9G+fXuJxVAbAwYMQHx8PNq3bw85OTmoqqrCw8MDycnJnNI9dW3kyJG4c+cOpk6dCisrKygrK0NGRgb6+vpwd3fnfKkHAObm5rh58ybWrFkDFxcXaGlpoVGjRuDz+WjRogV69+6NjRs34urVqzWOxd3dHU+fPsXGjRvRo0cPGBgYQF5eHrKysjAwMED37t2xbt067Nixg7OeJN/nv5WpqSlSU1MxZMgQ6OjoQE5ODpaWlti8ebNIAtXR0RHnzp2Ds7Mz+Hw+lJSU0KlTJxw/flyizxmgdMTwnj17MHr0aLRr1w6NGzeGjIwM5OTkYGRkBD8/PyQlJWHs2LGc9VxcXHD37l2EhISgXbt2UFZWRqNGjaCrq4vu3bvjt99+w7Fjxzhf5JPq09bWRnJyMnbv3o3u3buz50VFRQWtWrXCuHHjOGUgvoW0tDR27tyJM2fOYODAgTAyMoKCggJkZGTQuHFjODk5Ye7cufj7779FBiBMmzYNqampGDlyJFq0aAF5eXnIy8tDIBBg8ODBuHTpEo0qJoQQQggph8dUdttqQv6DXr58icaNG4uMPsvMzISNjQ1bM7dZs2YidfMIIYSQf6O0tDQYGRmx06GhoZQkI4QQQgghhIigMhSElLNgwQLExsbC1dUVBgYGkJWVRXp6Oo4cOcK5o/r3+tktIYQQQgghhBBCCCHfAyWLCRHj7du3OHDggNhlUlJSCAkJqfbN1AghhBBCCCGEEEIIaQgoWUxIOYMHDwbDMLh06RIyMjLw7t078Pl8CAQCdOrUCaNGjUKbNm3qO0xCCCGEEEIIIYQQQuoU1SwmhBBCCCGEEEIIIYQQgu9/+21CCCGEEEIIIYQQQggh/zqULCaEEEIIIYQQQgghhBBCNYtro6SkBK9evYKysjJ4PF59h0MIIYQQQgipJwzD4MOHD9DX14eUFI3FIYQQQkjDRsniWnj16hWaNm1a32EQQgghhBBC/iWeP38OAwOD+g6DEEIIIeSbULK4FpSVlQGU/odQRUWlnqMhhBBCCCGE1Jf379+jadOm7GcEQgghhJCGjJLFtSAsPaGiokLJYkIIIYQQQgiVpyOEEELID4GKahFCCCGEEEIIIYQQQgihZDEhhBBCCCGEEEIIIYQQShYTQgghhBBCCCGEEEIIASWLCSGEEEIIIYQQQgghhIBucEcIIYQQQggh/2nFxcUoLCys7zAIIYQQIiEyMjKQlpauVltKFhNCCCGEEELIfxDDMHj9+jXevXtX36EQQgghRMLU1NTQuHFj8Hi8SttRspgQQgghhBBC/oOEiWIdHR3w+fwqPzwSQgghpOFhGAafP3/GmzdvAAB6enqVtqdkMSGEEEIIIYT8xxQXF7OJYk1NzfoOhxBCCCESpKCgAAB48+YNdHR0Ki1JQTe4I4QQQgghhJD/GGGNYj6fX8+REEIIIeR7EL7nV3WfAkoWE0IIIYQQQsh/FJWeIIQQQv4bqvueT8liQgghhBBCCCGEEEIIIZQsJoQQQgghhBDy43n37h14PB6io6PrO5RKRUdHg8fjISsrq75D4cjJyYGvry/U1dXB4/EQHx+P1atX4/jx4zXqJy0tDWFhYXj16pWEIv02BQUFGDZsGLS1tcHj8bB69er6DolUoDbXX1JSEng8Hq5du8bO4/F4WL58OTvt7OwMLy+vOouzui5evAgpKSls27ZNZFnPnj1haGiIT58+ceafOHEC3bp1g7a2NmRkZKCrq4vu3bsjJiYGJSUlbLuAgADweDz2oaioiDZt2ojd1veSlJSEiIiIOukrICAAFhYWlW6r/HmvjuquFx8fj/Xr11e4vK7PU1paGtvm5MmTItvbsmULu7wu0A3uCCGEEEIIIYSwbGbuqrdtpy4bUm/bJlwrV67EuXPnsGvXLujo6MDU1BRTpkyBl5cXunXrVu1+0tLSEB4eDi8vL+jr60sw4trZtWsXdu/ejZ07d8LY2BgCgaC+QyIVWL16dY2vP3EuXboEQ0PDOoqq9jp27IgRI0YgKCgIPj4+0NLSAlCaiDx8+DCOHDkCRUVFtv2cOXMQGRkJX19frF27Fnp6esjMzER8fDz8/f2hoaEBDw8Ptn3z5s2xd+9eAMCHDx8QFxeHkSNHQlFREf379/++O4vSROzy5csxZ84ciW/L2toaly5dgrm5uUT6j4+Px7Vr1zB+/HiRZZI8T0pKSti/fz88PT0582NiYqCkpISPHz/Wyf7RyGJCCCGEEEIIIeQ/JDo6usqk6P3792FlZQVvb2/Y29tDXV1d4nHl5+dLfBvl3b9/H/r6+hg0aBDs7e3RuHHjWvdVH/EDAMMw+Pr1q9hlAoGgxqPr62s/vhd7e3vo6elJfDthYWFwdnautM2SJUsgJSWFGTNmAAA+fvyIiRMnwtfXFz169GDbJSQkIDIyEqGhoYiNjYWfnx8cHR3Rt29f7N27F5cuXYKOjg6nbwUFBdjb28Pe3h7u7u5Yv3492rZti9jY2Drf17okHEWblpZW6z5UVFRgb2/PSbZ/D5I+Tz4+PoiLi8OXL1/YeRkZGTh//jx69uxZZ/tByWJCCCGEEEIIIQ3eli1bIBAIwOfz4ebmhkePHom0iY6OhpWVFeTl5dGkSROEhISguLiY0+bFixfw9/eHlpYWFBQU4OjoiNTUVE4bgUCAwMBALFu2DE2aNAGfz4ePjw8yMjJE+vLy8gKfz0fTpk2xatUqTJkyRWyi9tGjR3B1dQWfz4dAIMD27ds5y4U/uz59+jSsrKygoKAAJycnpKWlIScnB/369YOKigqMjY1x4MCBWh7FUjweD4cOHUJycjL702aBQID09HSsW7eOnVdVEjIpKQkuLi4AADs7O87PpIU/905ISECfPn2goqKCvn37Aigd7evg4AANDQ2oq6vD2dkZV69e5fQdFhYGJSUl3L59Gw4ODuDz+bCwsMCpU6c47Y4cOQJbW1soKSlBTU0Ntra2bCkDgUCAFStW4Pnz52xswgTVhQsX0LFjRygoKEBLSwvDhw9HTk4O268woRUdHY1Ro0ZBU1MT7du3Z4/fkiVLEBISAh0dHaipqWHWrFlgGAZnzpxB27ZtoaSkBDc3Nzx//pwT79evXzFnzhwYGhpCTk4O5ubm2LdvH6eN8Fo4fvw42rRpAzk5ORw9erSq0yqW8DhevXoVP/30E+Tl5bFu3ToAwL179+Dj4wNVVVUoKiqie/fuePz4MWf97du3o3Xr1lBQUICmpiYcHByQkpLCLufxeFi6dCnCwsKgq6sLLS0tDBs2TKS8QlXPu9pcfxUpX4aivPz8fHTv3h3NmzfHkydPqhVfbWloaGDZsmXYuXMnkpKSMHfuXLx79w5r1qzhtFu5ciX09PQwd+5csf20b98e7dq1q3J7ysrKKCws5MxLT09Hnz592PPs4eGB27dvc9qUlJRg4cKFEAgEkJOTg5mZGTZt2sRp8+LFC/Tr1w+6urqQl5eHkZERpk6dCqD0OgsPD8enT5/Y81dVIv1biCsnkZeXB39/fygrK0NHRwdz5szBihUrxJZuyM3NxcCBA6GsrAxDQ0MsXbqUXRYQEICdO3fi7t277L4EBAQAkOx5AoCuXbuCx+NxyrHs378fLVq0gI2NTZX9VheVoSCEEEIIIYQQ0qAdO3YMo0ePRkBAAPr374/U1FQ28Si0cuVKzJo1C1OnTsWKFStw7949Nlm8ePFiAKUJAgcHBygpKSEqKgqqqqqIioqCq6sr/vnnH86IsLi4OBgaGmLDhg3Izc1FUFAQevXqhUuXLgEoHe3p4+ODzMxMbNq0Caqqqli2bBnS09MhJSU6bqt///4YM2YMgoKCsH//fowYMQL6+vqcnxu/fv0a06dPR0hICGRkZDBp0iQMGjQIfD4fjo6OGDVqFLZs2QJ/f3/Y29vX+qf2ly5dQlBQED58+MDW5ZSTk0O3bt3g4OCA6dOnAwCMjY0r7cfa2hrr1q3DhAkTsGPHDpiZmYm0GT16NPz9/REXFwdpaWkApYnYIUOGwNjYGAUFBYiJiYGjoyNu3boFExMTdt3CwkIMGjQIkyZNwrx587BkyRL07t0b6enp0NTUxOPHj9GnTx8MGDAAkZGRKCkpwc2bN5Gbmwug9BwuWbIE58+fR1xcHABAT08PqampcHd3h7OzM37//XdkZmYiODgYd+/excWLF9k4AWD27Nlia5GuXbsWzs7O2L17N65cuYLQ0FAUFxfjjz/+QEhICGRlZTFp0iSMGDECiYmJ7Hr9+vXDn3/+idDQUJibm+P48ePw9/eHuro6unbtyrZ79eoVJk2ahLlz56JZs2Zo1qxZ9U6uGAUFBRg4cCCmTp2KiIgIaGpq4smTJ+jYsSMsLCwQHR0NKSkpLFq0CG5ubnjw4AHk5ORw4cIFjBgxAjNmzEC3bt3w+fNnXL16Fe/eveP0v3btWnTq1Ak7d+7Ew4cPMXPmTOjq6tboeRcXF1fj6682Pn78iB49eiAjIwPJyclo0qRJjV4XamPo0KHYsWMHhgwZglevXmH58uUwMDBglxcVFeGvv/5Cnz590KhRzdJ4RUVF7H7Fxsbir7/+wq5d/1dq6MOHD3B2doaUlBQ2btwIeXl5LFq0iH2+NW3aFAAwc+ZM/Prrr5g7dy46duyIY8eOYezYsSgsLERgYCAAsPGvWbMGurq6ePbsGZusHTlyJF68eIF9+/bh7NmzAEpH/35Pw4YNw9mzZ7F06VIYGhpiy5YtFSb8x44di8GDByMuLg7x8fEICgqClZUVPD09MW/ePLx9+xb3799ny0doa2tL9DwJycnJoVevXoiJiUGvXr0AlJagGDBgQI22VxVKFhNCCCGEEEIIadAWLlyITp06YceOHQAADw8PfPnyBQsWLABQmhAJDQ3FrFmz2Bssubu7Q1ZWFtOmTcPMmTOhqamJ1atX4927d7h69SqbAHJzc4OJiQmWL1/OGV324cMHnDhxAqqqqgCApk2bws3NDadOnYKHhwdOnDiB69ev48KFC+jUqRMAwNXVFQYGBlBTUxPZhyFDhmD27Nls/E+ePEF4eDgnWZyTk4Pz58+jdevWAEoThhMnTkRQUBDmzZsHoHQEb2xsLOLj4zF58mQApaMCyyYyhX8LExRCwgSHsOwEj8eDvb09u1xOTg66urqceZVRUVFBq1atAAAWFhawtbUVaePt7Y0lS5Zw5v3yyy+cWN3d3XH16lVER0dzbpBVUFCAxYsXszVsTU1NYWRkhBMnTsDf3x9///03CgsLsXbtWigrKwMAp1Zou3bt0LhxY8jJyXH2adGiRWjcuDGOHTsGGRkZAKXn18PDA8ePH+eUB2jbti22bt0qsl/6+vrYvXs3u80jR45g1apVuHv3LltH9eXLl5g4cSLevXsHNTU1nDt3DkeOHMGpU6fQpUsXAKXXaUZGBkJDQznJ4tzcXJw4cQIdOnTgbLf8ORUew7LzpaSkOF9YFBYWYtGiRfDz82PnDR06FBoaGvjjjz8gLy8PoLTGbvPmzbFt2zaMHz8eV69eZUfGCnXv3l1k+3p6emxSzdPTE9evX8fBgwfZZHF1nnft2rWr8fVXU7m5uejatSu+fPmCCxcusLFU93VB3POMYRjOsefxeJwvG4QWLFgAR0dHmJmZYeLEiZxl2dnZ+Pr1K5u4FWIYhvPLiPLn9e7du+z1KzR9+nQMGjSInd6xYwfS09M516WTkxOaNWuG1atXY8WKFcjKykJUVBRmzpyJsLAwAECXLl2QlZWF+fPnY9y4cZCWlsbVq1cRGRnJuY6GDCmtQ29gYAADAwNISUmJnL/y+yH8u7i4mHPspKWla30Dt//973+Ii4vDrl27MHjwYACl16K4L7AAoHfv3uy+urm5ISEhAQcPHoSnpyeMjY2hra2N9PR0zr5kZmZK7DyVNWDAAPj4+ODjx4/IzMxESkoK9uzZU+ObP1aGylAQQgghhBBCCGmwiouLkZqaCl9fX878Pn36sH9fvHgRHz9+RN++fVFUVMQ+OnfujPz8fNy5cwcAkJiYCBcXF2hoaLBtpKWl4eTkxPlpPQC4uLiwiWKgNBGsoaGBK1euAABSUlKgpqbGJooBsKUHxCkff+/evZGamspJMujr67OJYgDsKNvOnTuz89TU1KCjo8MpbzB//nzIyMiwjxEjRiA9PZ0zr3yy4nsRl1y8d+8efH19oaurC2lpacjIyODBgwd4+PAhp52UlBRn3wUCARQUFPDixQsAgJWVFaSlpTFw4EAcPXoUeXl51YopOTkZPj4+nGPSpUsXqKmp4c8//6wyfqA0yVuWiYkJ9PX1OTfcEp4/YbyJiYnQ0NCAq6sr5zp1d3fH33//zbkWNDU1RRLFAETOaXp6OkaMGMGZN3/+fJH1yu9HYmIivL290ahRIzYOdXV1tGvXjn0uWFtbIycnBwEBAfjjjz/w+fPnah2LVq1asfss3FZ1n3eSkpWVxZZMOXfuHGe0cHXjGz58OOc4L1iwABcuXODMq2g09KZNm9gyKBXV6i2fKD106BCn70mTJnGWGxsbIyUlBSkpKTh//jwWLlyIqKgozvlPTk6GhYUF57rU0NCAu7s7e61fuXIFhYWFIr/W8PPzw9u3b9nnpbW1NZYvX44NGzaILQNUkfPnz3P2o0WLFgCAFi1acOafP3++2n2WJzxP3t7e7DwpKSnOFz9lCb+sAUqPu7m5OeearYwkzlNZrq6uUFZWRnx8PGJiYmBtbc35xUVdoJHFhBBCCCGEEEIarLdv36KoqEjkp+C6urrs31lZWQBKkxniCBOrWVlZuHz5stjEafkkj7ifnuvo6LB1izMyMqCtrS22jTji4i8sLERWVha7L+VHJMvKylY4v+wNkEaPHg0vLy92+tixY9i8eTOOHDkiNpbvqex5AkpHbHfp0gXa2tpYuXIlDA0NIS8vj5EjR3L2CSi9MZTwGAiV3XcTExMcO3YMERER8PX1hZSUFDw9PbF27dpKyzbk5uaKxCWMtWzdYnHxC4k7JxWdP2G8WVlZyMnJqTBxn5GRwZYnqGi75ZOr3t7eIudfX1+f04bP50NJSYkzLysrC6tXr8bq1atFtiGM29XVFbt378avv/4KDw8PyMvLo0+fPli9ejU0NDTY9uL2u+wN+WryvJOUhw8fIjc3F6tXrxa5mWN14wsLC2NLMgDA5s2bkZqayqntKycnJ9LHmTNnsHfvXmzduhWRkZGYOHEiZ5SopqYm5OTkRJKVbm5uYpOgQvLy8pzR/I6OjsjMzMSiRYsQGBgIDQ2NSq914ZdowrIt5dsJp4XPiQMHDiAkJAQhISEYP348TE1NERERwZZLqIiNjQ3nus3IyIC3tzeOHDnCuRGhqalppf1UJiMjAzIyMpwv+ICKX4/FXbPly6uUJ8nzVJa0tDT69euHmJgYpKWlYfjw4ZXGVRuULCaEEEIIIYQQ0mBpa2ujUaNGePPmDWd+ZmYm+7fww3ZsbKzIT4QBwMjIiG3n6enJlq8oq3ySp/z2hPOEyQ09PT28fftWbBtx3rx5gyZNmnDil5GRgZaWltj2NaGvr89JEN65cweysrJiy0J8b+VH4V26dAkvXrzAsWPH0KZNG3Z+Xl4ep45rdXl6esLT0xPv37/HyZMnMXXqVAwbNgxnzpypcB0NDQ2x5ykzM1MkcVPbn8VXtF1tbe0Kf05eNrFV0XbLn1NZWVkIBIJKz7W4vjQ0NNC9e3eMHz9eZJmwpAcA+Pv7w9/fH1lZWTh8+DCmTp0KGRkZbNu2rcLtidtWdZ93ktKxY0d07twZ06ZNg6amJvz9/Wscn0Ag4Ny88tixY3j48GGlx/7r168YP3483NzcMGLECDRp0gRdu3bFoUOH0Lt3bwCl5WF+/vlnnDlzBsXFxWwZC3V1dbbv8l+aVMTc3BwFBQX4559/0KFDB2hoaODBgwci7cpe68J/xb1GlV2up6eH7du3Y+vWrUhNTcXChQvh5+eHBw8eoHnz5hXGpKyszDlGwpHVlpaWYm8GWht6enooLCxEXl4eJ2Fc0etxbUjyPJU3YMAA9lcrZct+1BVKFhNCCCGEEEIIabCkpaVhbW2NuLg4TJ06lZ1/8OBB9u+ffvoJfD4fL168ECn3UFbnzp2xZ88emJubQ1FRsdLtnjt3jpN4OHv2LHJyctgP9nZ2dnj37h0uXLgAR0dHAKU3Lzpz5ozYmsVxcXFo164dO33o0CHY2NiIrW9aX8qPWK7uOgCqvV5+fj5nPaC0jEhaWhqnBEdNqaiooF+/frhy5QpiYmIqbevg4ID4+HisWLGCreP8xx9/4N27d3BwcKh1DFXp3Lkzli5dCllZWVhZWUlsO9WN5c6dO2jXrl21rkEtLS2MGDECx48fx71792q8reo872pz/dXElClTkJ+fj4CAAHaUdE3iq43IyEikp6fj6NGjAEq/3OjduzemTJkCDw8PdsT3tGnT4OXlhYiICLY+eW0IRwsLv4RycHDAwYMH8eDBA3bkbm5uLk6fPo3Ro0cDANq3bw8ZGRn8/vvvnNeo3377DTo6OiIlEKSkpGBnZ4eFCxfiyJEjePToEZo3by4yovx7EiZrDx8+zNZRLikpYY97TVV0LUrqPJX3008/YeDAgdDR0anVl2hVoWQxIYQQQgghhJAGLSQkBD4+Phg2bBj69++P1NRU9uZiQOlPiufPn49Zs2bhxYsXcHZ2hrS0NJ48eYLDhw/j0KFD4PP5mDZtGvbu3QsnJydMnjwZzZo1w9u3b3HlyhXo6+tzktHKysro2rUrgoOD8e7dOwQFBaF9+/bsDdS6du0Ka2trDBw4EJGRkVBTU8PSpUuhrKzMubmR0K5du6CgoABra2vs378fFy5cQEJCguQPXg2Ym5vj7Nmz+OOPP6Curg4jIyNoampWuo6JiQmkpaWxfft2NGrUCI0aNap0pKW9vT2UlJQwYcIEBAcH4+XLlwgNDeWMaKyuTZs24dKlS/D09ISenh6ePn2KPXv2cOqRihMSEoKOHTvCy8sLEydORGZmJoKDg9G+fXv2ZnqS4O7ujh49esDT0xOzZs2ClZUVPn36hLt37+LRo0dib6QnKeHh4bCzs4OHhwdGjx4NXV1dvH79GufPn0enTp0wYMAAhIaGIjs7G87OztDR0cHt27dx8uRJTJs2rUbbqu7zrjbXX03Nnj0b+fn5GDhwIOTl5eHl5VWj14WaePjwIRYvXoygoCBOwnX16tUwNzdHWFgYli9fDqC0pnRwcDB++eUX3LhxA35+ftDT00NeXh6Sk5Px+vVrzohvoPSLl8uXL7N/JycnY8uWLXB3d2fLZwwbNgyrVq1C9+7dsXDhQsjLy2PRokVo1KgRpkyZAqA0YTlx4kQsW7YM8vLysLe3x/Hjx7Fv3z5ERUVBWloaeXl58PDwwODBg2FqaoqCggJERUVBTU2NLf9jbm6OoqIi/Prrr+jYsSNUVFS+qbTE+/fvOV8KCglrT5fVunVr+Pr6YtKkSfj8+TMMDQ2xefNm5Ofn1+rXAebm5ti+fTtiYmLQsmVLaGlpQSAQSOw8lcfj8TjvcXWNksWEEEIIIYQQQho0b29vbNy4EYsWLcL+/fvRoUMHHDhwgPPz3enTp6NJkyZYuXIloqKi2JtNeXl5saNYNTU1cfnyZcydOxdBQUHIzs6Gjo4O7O3tRUYk+/r6wsDAAGPHjkVubi7c3d2xceNGdjmPx8Phw4cxZswYjB49Gurq6pg0aRIePHiAGzduiOxDTEwMZs+ejfnz50NHRwebN2+WaGKyNiIiIjBu3Dj07t0bHz58wI4dOxAQEFDpOlpaWli3bh2WLl2K3bt3o6ioCAzDVNheV1cXv//+O2bMmAEfHx+YmJhg06ZNWLJkSY3jtbKywtGjRzFt2jRkZ2ejcePGGDBggNhyAmXZ2NggMTERs2fPRu/evaGoqAhvb2+sWLFC4iO9Dx48iMWLF2P9+vVIT0+HqqoqLCwsMGzYMIlut7wWLVrg6tWrmDt3LsaPH4+PHz9CT08Pjo6O7KhnOzs7rF69Gr/99hvev38PAwMDzJw5E3Pnzq3Rtqr7vKvN9Vcb8+fPR35+Pvr06YNjx46hc+fO1X5dqInx48ejadOmmD17Nme+gYEBwsPDERQUhKFDh8LS0hJA6ShkBwcHrFu3DuPHj0deXh40NDRgY2OD7du3o3///px+njx5gp9++glA6UhYQ0NDzJw5E8HBwWwbZWVlJCUlYdq0aRg9ejSKi4vx888/48KFC5ySPcuWLYOamhq2bt2KhQsXQiAQYOPGjRgzZgyA0rq7lpaWiIqKwrNnz6CgoABbW1skJiayo2N79OiB8ePHIzIyEm/evIGjoyOSkpJqffyeP38uctM9oPSmfeJs374dgYGBmDFjBuTl5TF06FBYWFhg7dq1Nd72iBEjcPXqVUycOBHZ2dkYOnQooqOjAUjmPH1vPKayV2ki1vv376Gqqoq8vDyoqKjUdziEEEIIIYSQetJQPxt8+fIFT58+hZGREeTl5es7nAZHIBDAy8urxkmGgoICtGrVCp06dcKOHTskFB0hhJDqcHR0hLS0NM6dO1ffoXwX1X3vp5HFhBBCCCGEEEKIBGzevBklJSUwNTVFbm4uNmzYgLS0NOzfv7++QyOEkP+UQ4cO4dmzZ7C0tMTnz5+xb98+JCcnIy4urr5D+9ehZDEhhBBCCCGEECIB8vLyWLx4MdLS0gAAbdq0QUJCQqU1exsShmFQXFxc4XIpKSmx9ZkJqQt0/ZGaUFJSwu7du/HPP/+goKAAZmZm2LNnD3r27Fnfof3rUBmKWmioPzUjhBBCCCGE1K2G+tmAylCQuhAdHV1pLd3Q0FCEhYV9v4DIfwpdf4TUDJWhIP86NjN3SbT/1GVDJNo/IYQQQgghhJD/06NHD6SkpFS4XF9f/ztGQ/5r6PojRDIoWUwIIYQQQgghhJAa09TUhKamZn2HQf6j6PojRDKoeAshhBBCCCGEEEIIIYQQShYTQgghhBBCCCGEEEIIoTIU5Ady/MozifZvcaq7RPtX7jhYov173Tss0f7/mviXRPsnhBBCCCGEEEIIIZJFyWJCSJ2IvrteYn0bjTsgsb4BwHrsKIn2rzzQX6L9E0IIIYQQQgghhNSFBpss3r9/P5YuXYp79+5BQUEBrq6uWLJkCYyNjStd7+nTpwgPD8epU6eQnZ0NdXV12NraYt++fVBVVf1O0RNC/kvWTj8q0f7buTWTaP8/d2sj0f4JIYQQQgghhBDy79Agk8Xbtm3DyJEjAQBGRkbIzs7GoUOHkJycjJs3b6Jx48Zi13v48CE6duyI7Oxs8Pl8mJubo6CgAH/88Qc+fPhAyWJCCBFjkX8fifbf0d1Dov27DJXsyHFCCCGEEEIIIeRH0eCSxQUFBQgODgYA9O7dGwcPHsSrV69gZmaGN2/eICIiAmvWrBG77qRJk5CdnQ0XFxfExsZCTU0NAJCfnw8ZGZnvtQuEEEK+o3uLzkqsb/MQV4n1TQghhJBv8+7dO6irq2PHjh0ICAio73AqFB0djWHDhuHt27fQ0tKq73AanBs3biA+Ph6zZs0Cn8+v9nrOzs5QUlLCsWPHAABhYWFYvnw5Pn78CABISkqCi4sLUlJSYGtrK5HYK+Lp6YnHjx/jzp07kJOTY+enpqaiQ4cOWL16NQIDA9n52dnZWLZsGY4cOYK0tDQAQPPmzeHh4YGJEydCIBAAANLS0mBkZMSux+PxoKenBycnJ0RGRsLQ0PC77F95YWFh6NKlCzp27Fgv2yeEcDW4ZHFKSgqysrIAlCaLAUBfXx/29vb4448/cPLkSbHr5ebmIjExEQDY0hOZmZlo3bo1FixYAHd39wq3+fXrV3z9+pWdfv/+fV3tDiGEkAbs3bk7Eu1/9fmDEu0/LCxMov0TQghpmCR94+jKdOsg2fJa5Mdz48YNhIeHIzAwsEbJ4vJGjhyJ7t0le1Pz6lq3bh0sLCwQERGB8PBwAEBxcTHGjBkDa2trjB8/nm376NEjuLq6orCwEJMmTYKdnR14PB6uX7+OjRs34uLFi7h06RKn/4iICLi4uKCkpASPHz/GL7/8gm7duuHWrVuQlpb+rvsKAOHh4VBSUqJkMSH/ElL1HUBNPX/+nP1bR0eH/VtXVxcA8OyZ+P/Y/PPPP2AYBgAQGxuLkpISyMvL48qVK+jatSuuXLlS4TYjIyOhqqrKPpo2bVoXu0IIIYQQQgghhHx30dHR7GjT6srPz5dMMP8SBgYGsLOz+y7b4vF4SEpKqnC5sbEx5syZg8WLF+PBgwcAgKioKNy4cQObNm2ClNT/pXIGDhyIoqIipKamYvbs2ejcuTPc3Nwwc+ZM3Lt3D6NGiZZka9myJezt7dGxY0cMHjwYq1evxv/+9z92W4SQ/7YGlyyuiDARXJGioiL2786dO+Px48d49OgRNDQ0UFxcjA0bNlS47uzZs5GXl8c+yiasCSGEkIbq8uXLEn0QQggh39OWLVsgEAjA5/Ph5uaGR48eibSJjo6GlZUV5OXl0aRJE4SEhKC4uJjT5sWLF/D394eWlhYUFBTg6OiI1NRUThuBQIDAwEAsW7YMTZo0AZ/Ph4+PDzIyMkT68vLyAp/PR9OmTbFq1SpMmTJFbKJWOEKUz+dDIBBg+/btnOUBAQGwsLDA6dOnYWVlBQUFBTg5OSEtLQ05OTno168fVFRUYGxsjAMHDtTyKP4fHo+HxYsXIygoCI0bN2YHazEMg+XLl8PExARycnJo3rw5Vq1aJbLf/fr1g66uLuTl5WFkZISpU6eyy8PCwqCkpITbt2/DwcEBfD4fFhYWOHXqlEgclZ0zYQkPANDW1gaPx6txErx8TJU5efIk+Hw+QkNDqxXftwgKCoKRkRHGjRuH58+fY968eZg4cSLatWvHtklOTkZKSgrmzp0LfX19kT5kZWUxfPjwKrelrKwMACgsLOTM37RpE0xNTSEnJweBQICFCxeipKSE0+b27dvw8PCAoqIiVFVV0adPH5FBfNu3b0fr1q2hoKAATU1NODg4ICUlBUDpdQYAM2fOBI/HqzKRTgiRvAaXLC47qvfNmzcifzdrJv5nS02aNGH/trW1BY/Hg6qqKkxMTACAresjjpycHFRUVDgPQgghhBBCCCH/DseOHcPo0aPh4uKCuLg4uLm5oW/fvpw2K1euxMiRI+Hh4YGjR48iKCgIa9asQUhICNsmNzcXDg4OuHHjBqKionDo0CEoKirC1dWV8/kTAOLi4hAXF4cNGzZgw4YNuHLlCnr16sUuZxgGPj4+7GjQdevWITY2FrGxsWL3oX///nB3d0dcXBxcXFwwYsQIkTKLr1+/xvTp0xESEoK9e/fi8ePHGDRoEPz8/GBpaYlDhw7BxsYG/v7+SE9P/9bDil9//RUPHz7Etm3bsGfPHgDA5MmT8csvv2Do0KFISEhAQEAAgoKCsHHjRna9IUOG4NatW1izZg1OnjyJ8PBwkQRqYWEhBg0ahICAAMTFxUFHRwe9e/dGdnY226aqc9a9e3fMnTsXQGki99KlS4iLi/vm/RYnNjYWPXv2xPz589nSENW5pmpLVlYWGzZswLlz5+Do6Ag1NTXMnz+f00aYVO3SpUuN+i4pKUFRUREKCgpw7949hIWFwczMDBYWFmybqKgojB07lt23gIAAhIWFYdasWWyb58+fw9HREdnZ2dizZw82btyI69evw8nJCR8+fAAAXLhwASNGjEC3bt1w/Phx7Nq1C25ubnj37h0AsCUyJk6ciEuXLuHSpUuwtrau6eEihNShBlez2M7ODpqamsjOzsahQ4cwYMAAvHr1ih3B5OnpCQAwMzMDAAQGBiIwMBCGhoZo2bIl/vnnH6SmpoJhGHz48AEPHz4EUPozDEIIIYTUnd9+by/R/s1Mqx4p8y2srMZKtH9CCCF1Z+HChejUqRN27NgBAPDw8MCXL1+wYMECAMCHDx8QGhqKWbNmISIiAgDg7u4OWVlZTJs2DTNnzoSmpiZWr16Nd+/e4erVq+xIWjc3N5iYmGD58uVYunQpu80PHz7gxIkTUFVVBVA6sMnNzQ2nTp2Ch4cHTpw4gevXr+PChQvo1KkTAMDV1RUGBgbszdbLGjJkCGbPns3G/+TJE4SHh7OfcQEgJycH58+fR+vWrQEAr169wsSJExEUFIR58+YBKP3MHBsbi/j4eEyePBlAaXKw7IhQ4d9lf4ELAI0acVMEGhoaiI2NZUd/Pn78GGvXrsXGjRsxevRoAKW/3P38+TPCw8MxevRoSElJ4erVq4iMjISfnx9n/8oqKCjA4sWL0a1bNwCAqakpjIyMcOLECfj7+1frnGlra8PY2BgAYGNjI7EbBO7evRsjRozAmjVrMHZs6f8PqntNAaLHGSitQVx2vrS0NHuchVxcXODq6oqzZ89i79697AhgoVevXgGASKnM4uJizq+vy5/XsucFKB10d+LECbZecXFxMebPn4/+/ftjzZo1AEoT0gUFBVixYgVmz54NTU1NrFq1CoWFhUhMTISGhgYAoF27dmjVqhWio6MxceJEXL16FRoaGli2bBm7vbK1oe3t7dkYhH8TQupXg0sWy8rKIiIiAmPGjMGhQ4fQvHlzZGdn48OHD9DS0kJwcDAAsLV2hDfDA4DFixejT58++OOPP9CiRQt8+PABOTk5UFRUxLRp0+plfwghhBDy79TmoOhPYevKbPMWEusbAJZF/yXR/lOXDam6ESGEfCfFxcVITU3lJHIBoE+fPmyy+OLFi/j48SP69u0rUqIwPz8fd+7cgZOTExITE+Hi4gINDQ22nbS0NJycnNifzQu5uLiwiWKgNBGsoaGBK1euwMPDAykpKVBTU2MTxQCgpKQENzc3kbIWAODr68uZ7t27N2bMmIHi4mI2iaevr88migGwv5Tt3LkzO09NTQ06Ojqc8ollR8OWJSMjw5kuX96xa9eunATm6dOn2djKH8clS5bg+fPnMDQ0hLW1NZYvX45GjRrB3d0dLVqIvu9JSUlx4hYIBFBQUMCLFy8AVP+cSdrmzZsRHR2Nbdu2YfDgwez86saXlpYGIyMjkX7L7jsA7NixAwEBAZx5//vf/5CcnMyWZhg4cKDYGMsnmdu0aYO7d++y02/fvuUk0pcsWQJXV1cwDIOXL19iyZIl8PT0xKVLl9CkSRPcv38fWVlZIqPz/fz8EBkZiatXr6Jr165ITk5mr3shMzMztGnTBn/++ScmTpwIa2tr5OTkICAgAIMGDcLPP//8TTciJIRIXoMrQwEAo0ePxp49e9C2bVu8evUKPB4PvXr1wsWLF8XW6RHq1asX4uPjYWdnh1evXkFKSgo9e/bEtWvXYG5u/h33gBBCCCGEEEJIXXj79i2Kioo4N0AH/u8m6MD/DSKytraGjIwM+xD+wlSYWM3KykJ8fDynjYyMDHbv3i1y75ry2xPOE9YtzsjIgLa2ttg24oiLv7CwkDMAqvyIZFlZ2Qrnf/nyhZ0ePXo0UlJS2EdoaCj09PQ488onw4UxlJWVlQWGYaClpcU5Pu7u7gD+7zgeOHAAbm5uCAkJQcuWLWFmZiZSfkNBQYGNX1zc1T1nknbo0CE0a9aMMxq2JvHp6+uLPc4bN27kzOvRowenf4ZhMG7cOLRs2RJr167F1q1bRe4JIcx/CBPsQgcOHGDPszjNmzeHra0t7Ozs0LNnTxw5cgQvX75ka0/n5uYCED3/wumcnBy2Xfk2wnbCNq6urti9ezfu3r0LDw8PaGlpYciQIexyQsi/T4MbWSw0aNAgDBo0qMLlFd3wztvbG97e3pIKixBCCCHkh3f8yrOqG30Di1Pdq270DZr9clui/RNCvi9tbW00atRIpKZwZmYm+7dw5GNsbKzIT/YBsCM/NTQ04OnpyY5ILktOTo4zXX57wnl6enoAAD09Pbx9+1ZsG3HevHnDuddOZmYmZGRk6qS0gr6+Pmdg1Z07dyArKwtbW9tK1ys/YlVDQwM8Hg9//vmnSKIXKC0lAZTu+/bt27F161akpqZi4cKF8PPzw4MHD9C8efNqxVzdcyZpu3btwvTp0+Hh4YEzZ86w9zCqbnwVHWdTU9NKj390dDSSk5ORlJSETp06Yc+ePRg3bhyuXbvGjjR3dnYGACQmJrLlMQCwo8/v3LlTrX3U1taGlpYWOxpZuG8VPaeEyzU0NMRez5mZmeyodwDw9/eHv78/srKycPjwYUydOhUyMjLYtm1bteIjhHxfDTZZTAghhBBCCCGESEtLw9raGnFxcZg6dSo7/+DBg+zfP/30E/h8Pl68eCFS7qGszp07Y8+ePTA3N4eiomKl2z137hzy8vLYUhRnz55FTk4OOnToAKC0dvC7d+9w4cIFODo6AgA+fvyIM2fOiK1ZHBcXh3bt2rHTwpvVCROD/wZubm4AgOzsbJGRsOJISUnBzs4OCxcuxJEjR/Do0aNqJ4ure86ESeuyI6nrkq6uLs6cOQNHR0d07doViYmJUFRUrHZ8tZGdnY2ZM2di6NCh7LWzYcMG2NjYICoqClOmTAEAdOrUiT2+Pj4+7BcVNZWZmYmsrCz2iwlTU1Noa2vj999/5+zbb7/9BllZWbRvX3pfCgcHB2zevBm5ublQV1cHUFoS9NatWxg+XPTeElpaWhgxYgSOHz+Oe/fusfNlZGQkdv4IITVHyWJCCCGEEPKfknt6adWNvoHXvcMS7f+viZKtSU1IQxQSEgIfHx8MGzYM/fv3R2pqKnbv3s0uV1NTw/z58zFr1iy8ePECzs7OkJaWxpMnT3D48GEcOnQIfD4f06ZNw969e+Hk5ITJkyejWbNmePv2La5cuQJ9fX1OMlpZWRldu3ZFcHAw3r17h6CgILRv3x4eHh4ASuv9WltbY+DAgYiMjISamhqWLl0KZWVlSEmJVoTctWsXFBQUYG1tjf379+PChQtISEiQ/MGrARMTE0yYMAGDBw/GzJkz0aFDBxQWFuLhw4c4d+4c4uPjkZeXBw8PDwwePBimpqYoKChAVFQU1NTUYG1tXe1tVfecCUtKrlu3Dj179gSfz4elpWWd7neTJk3YhLG3tzcSEhKqHV9tzJw5EwA4N4Vr06YNJk6ciF9++QX9+vVjR4rv27cPrq6usLa2xuTJk2FnZwcpKSmkpaVh48aNkJOTE6lN/c8//+Dy5ctszeJly5aBx+Nh1KhRAEq/gJk3bx4mTZoEHR0ddOvWDZcvX8aSJUswZcoU9sZ9U6dOxY4dO9ClSxeEhITgy5cvmDt3Lpo1a8bWXw4NDUV2djacnZ2ho6OD27dv4+TJk5z7Rpmbm+Pw4cPo1KkTFBUVYWpqKnIzP0LI90PJYkIIIYQQQgghDZq3tzc2btyIRYsWYf/+/ejQoQMOHDjAjvIFgOnTp6NJkyZYuXIloqKiICMjA2NjY3h5ebGjUzU1NXH58mXMnTsXQUFByM7Oho6ODuzt7UVGj/r6+sLAwABjx45Fbm4u3N3dsXHjRnY5j8fD4cOHMWbMGIwePRrq6uqYNGkSHjx4gBs3bojsQ0xMDGbPno358+dDR0cHmzdvRrdu3SRzwL7BmjVrYGpqik2bNmH+/PlQUlKCqakpezM0eXl5WFpaIioqCs+ePYOCggJsbW2RmJhY45Ia1Tln7dq1Q1hYGLZu3YqlS5eiadOmSEtLq+vdhkAgwNmzZ+Ho6MjeD6k68dVUcnIyoqOjsWXLFpHjNX/+fPz222+YOnUqDhw4AABo0aIFrl+/jmXLlmHnzp0IDw8Hj8dD8+bN4eHhgf3793NuxAgAc+bMYf/W0tJCmzZt2H0TmjhxImRkZLBy5UqsX78eenp6CAsL46zbtGlTnD9/HjNmzMCgQYMgLS0Nd3d3rFy5kk322tnZYfXq1fjtt9/w/v17GBgYYObMmZg7dy7bz7p16zB58mR07doV+fn5OHfuHFtigxDy/fGYior7kgq9f/8eqqqqyMvLY+sVkarZzNwl0f4X9HGWaP+Srp+o3HFw1Y2+gaRHOY1yrbiG+LcyGndAYn0DgPXYURLtf2eqatWNvkE7t2YS7T9pn2jNvrrU0d1Dov03fmEssb71Ooq/QU1dWX3+YNWNvoGnp6dE+3/2fJJE+zczFf15Y10a/FBytRBnm4veFb4uLYuW7MhTes+tHI0s/m9pqJ8Nvnz5gqdPn8LIyAjy8vL1HU6DIxAI4OXlhbVr19ZovYKCArRq1QqdOnXCjh07JBQdIYQQIqq67/00spgQQgghhBBCCJGAzZs3o6SkBKampsjNzcWGDRuQlpaG/fv313dohBBCiFiULCaEEEIIIaQBib67XmJ9B7QeL7G+CfkvkpeXx+LFi9myCG3atEFCQgJsbW3rN7AfXHFxMSr7EXWjRpQKIYSQitArJCGEEEIIIYQQUgPVrYk7ZMgQDBkyRLLBEBHGxsZIT0+vcDlV4ySEkIpRspgQQgghhBBCCCE/jKNHj+Lr16/1HQYhhDRIlCwmhBBCCCGEEELID8PS0rK+QyCEkAZLqr4DIIQQQgghhBBCCCGEEFL/KFlMCCGEEEIIIYQQQgghhJLFhBBCCCGEEEIIIYQQQihZTAghhBBCCCGEEEIIIQSULCaEEEIIIYQQQgghhBACShYTQgghhBBCCCGEEEIIASWLCSGEEEIIIYT8gN69ewcej4fo6Oj6DqVS0dHR4PF4yMrKqu9QGqQbN24gLCwMnz9/rtF6zs7O8PLyYqfDwsKgpKTETiclJYHH4+HatWt1Fmt1lY+lvLS0NPB4PBw8eLBG/VZ3vaSkJERERFS4/NKlS+jTpw/09PQgKysLTU1NuLq6YtOmTSgoKODsB4/HYx/y8vIwNzfH0qVLUVJSwulT2Gbjxo0i2/vjjz/Y5WlpaTXaZ0JIzTWq7wAIIYQQQgghhPx7PJtvWW/bbvbL7XrbNmmYbty4gfDwcAQGBoLP59e6n5EjR6J79+51GJnk6Onp4dKlSzAxMZFI/0lJSVi+fDnmzJkjsmzDhg0IDAyEo6MjlixZAoFAgJycHJw8eRKTJ08GAIwZM4Ztr6CggLNnzwIA8vPzce7cOQQHB6OkpATBwcGcvpWUlLB//36MHTuWMz8mJgZKSkr4+PFjXe8qIUQMGllMCCGEEEIIIYT8h0RHR0MgENRonfz8fMkE8y9hYGAAOzu777ItHo+HpKSkWq8vJycHe3t7aGho1F1Q1XDz5k1MmjQJQ4YMwdmzZzFkyBA4OjqiZ8+e2LhxI27fvo2WLVty1pGSkoK9vT3s7e3h4uKC+fPnw8fHB7GxsSL9+/j4IDk5GS9fvmTnff36FbGxsejZs6ekd48Q8v9RspgQQgghhBBCSIO3ZcsWCAQC8Pl8uLm54dGjRyJtoqOjYWVlBXl5eTRp0gQhISEoLi7mtHnx4gX8/f2hpaUFBQUFODo6IjU1ldNGIBAgMDAQy5YtQ5MmTcDn8+Hj44OMjAyRvry8vMDn89G0aVOsWrUKU6ZMEZuoffToEVxdXcHn8yEQCLB9+3bO8oCAAFhYWOD06dOwsrKCgoICnJyckJaWhpycHPTr1w8qKiowNjbGgQMHankU/w+Px8PixYsRFBSExo0bQ0dHBwDAMAyWL18OExMTyMnJoXnz5li1apXIfvfr1w+6urqQl5eHkZERpk6dyi4Xllm4ffs2HBwcwOfzYWFhgVOnTonEUdk5i46OxrBhwwAA2tra4PF4NU6Cl4+pMidPngSfz0doaGi14pMUceUkCgoKMGnSJGhoaEBNTQ1jxozBvn37xJZu+PLlCwIDA6Gurg49PT3MmDEDRUVFAEqPQ3h4OD59+sSWfnB2dgYArFmzBtLS0lixYgV4PJ5IXC1btoSrq2uV8SsrK6OwsFBkftu2bWFiYsK5fo8fPw6GYRrMqG9CfgSULCaEEEIIIYQQ0qAdO3YMo0ePhouLC+Li4uDm5oa+ffty2qxcuRIjR46Eh4cHjh49iqCgIKxZswYhISFsm9zcXDg4OODGjRuIiorCoUOHoKioCFdXV7x584bTX1xcHOLi4rBhwwZs2LABV65cQa9evdjlDMPAx8cHN27cwKZNm7Bu3TrExsaKHVEJAP3794e7uzvi4uLg4uKCESNG4OTJk5w2r1+/xvTp0xESEoK9e/fi8ePHGDRoEPz8/GBpaYlDhw7BxsYG/v7+SE9P/9bDil9//RUPHz7Etm3bsGfPHgDA5MmT8csvv2Do0KFISEhAQEAAgoKCOLVmhwwZglu3bmHNmjU4efIkwsPDRRKohYWFGDRoEAICAhAXFwcdHR307t0b2dnZbJuqzln37t0xd+5cAKWJ3EuXLiEuLu6b91sc4ejW+fPnIzw8vFrxfU/BwcHYtGkTgoKCcODAAbFlHoRCQkIgJSWF3377DWPHjsWKFSuwdetWAKXlOEaMGAEFBQVcunQJly5dwvr16wGUlqewtbWt8YjmoqIiFBUV4cOHDzhy5AgOHTqEPn36iG07YMAAxMTEsNMxMTHw9fWFvLx8jbZJCKk9qllMCCGEEEIIIaRBW7hwITp16oQdO3YAADw8PPDlyxcsWLAAAPDhwweEhoZi1qxZ7I273N3dISsri2nTpmHmzJnQ1NTE6tWr8e7dO1y9epUdSevm5gYTExMsX74cS5cuZbf54cMHnDhxAqqqqgCApk2bws3NDadOnYKHhwdOnDiB69ev48KFC+jUqRMAwNXVFQYGBlBTUxPZhyFDhmD27Nls/E+ePEF4eDg8PT3ZNjk5OTh//jxat24NAHj16hUmTpyIoKAgzJs3DwBgZ2eH2NhYxMfHszVkS0pKODcUE/4tHE0q1KgRN0WgoaGB2NhYdhTp48ePsXbtWmzcuBGjR48GAHTu3BmfP39GeHg4Ro8eDSkpKVy9ehWRkZHw8/Pj7F9ZBQUFWLx4Mbp16wYAMDU1hZGREU6cOAF/f/9qnTNtbW0YGxsDAGxsbKClpSVyXOvC7t27MWLECKxZs4atp1vdawoQPc4AUFxczJkvLS0tdrRudeTk5GDDhg2YO3cugoKCAJReQ507d8bz589F2nfo0AFr1qxhYz537hwOHjyIsWPHwsDAAAYGBmz5iLJevXqF9u3bi/RXdj+kpKQgJfV/4xI/ffoEGRkZTns/P78KE9kDBgxAaGgoHj9+DF1dXRw7dgzx8fE1voEhIaT2aGQxIYQQQgghhJAGq7i4GKmpqfD19eXMLzty8eLFi/j48SP69u3LjnIsKipC586dkZ+fjzt37gAAEhMT4eLiAg0NDbaNtLQ0nJyckJKSwunfxcWFTRQDpYlgDQ0NXLlyBQCQkpICNTU1NlEMlN7Ay83NTex+lI+/d+/eSE1N5YzI1dfXZxPFANgbnHXu3Jmdp6amBh0dHU6ScP78+ZCRkWEfI0aMQHp6Omde+YQeAHTt2pWTwDx9+jQbW/nj+Pr1a3ab1tbWWL58OTZs2CC2HAhQmlQsG7dAIICCggJevHgBoPrnTNI2b96MESNGYNu2bZwbr1U3vrS0NLHHuXPnzpx5O3furHWMt2/fxpcvX+Dt7c2Z7+PjI7Z9ly5dONOtWrVij3tVyie0r127xtmP8jEoKCggJSUFKSkp+PPPP/Hrr7/i5MmTGDVqlNj+W7ZsCRsbG8TExCA+Ph7KysoVPmcIIZJBI4sJIYQQQgghhDRYb9++RVFRETsSWEhXV5f9OysrC0BpElMcYZIzKysLly9fFps4FY5gFSq/PeE8Yd3ijIwMaGtri20jjrj4CwsLkZWVxe5L+RHJsrKyFc7/8uULOz169Gh4eXmx08eOHcPmzZtx5MgRsbGUjaGsrKwsMAxT4Qje58+fw9DQEAcOHEBISAhCQkIwfvx4mJqaIiIiglOmQ0FBgY1fXNzVPWeSdujQITRr1kykZm5149PX1xf5osHOzg4bN26EjY0NO8/IyKjWMQqvufLXW0XXWlXXS0X09fVFksqtWrVi92/MmDEi60hJScHW1pad/vnnn1FUVITp06dj2rRpsLCwEFlnwIAB2L59OwwNDdGvXz9IS0tXGRshpO5QspgQQgghhBBCSIOlra2NRo0aidQUzszMZP8W1liNjY1F06ZNRfoQJuo0NDTg6enJlq8oS05OjjNdfnvCeXp6egAAPT09vH37Vmwbcd68eYMmTZpw4peRkamT0gr6+vrQ19dnp+/cuQNZWVlOEk+c8qNINTQ0wOPx8Oeff4okeoHSUhJA6b5v374dW7duRWpqKhYuXAg/Pz88ePAAzZs3r1bM1T1nkrZr1y5Mnz4dHh4eOHPmDFRUVGoUX0XH2dTUtMrjX13Ca+7t27ec81zRtVZbzs7O2LdvH3Jzc6Gurg4A4PP57H4oKytXqx9zc3MAwN27d8Umi/38/DBz5kzcv38fycnJdRQ9IaS6KFlMCCGEEEIIIaTBkpaWhrW1NeLi4jB16lR2/sGDB9m/f/rpJ/D5fLx48UKk3ENZnTt3xp49e2Bubg5FRcVKt3vu3Dnk5eWxpSjOnj2LnJwcdOjQAUDp6NF3797hwoULcHR0BAB8/PgRZ86cEVuzOC4uDu3atWOnhTer+zeNqhSWA8jOzkaPHj2qbC8lJQU7OzssXLgQR44cwaNHj6qdLK7uORMmraszMrY2dHV1cebMGTg6OqJr165ITEyEoqJiteP7HiwsLCAvL4/Dhw+jTZs27Pz4+Pha9ScrK4uvX7+KzJ80aRJ27dqFmTNnsjfEqw1hiY6KvggxMDDAlClT8PbtW3Ts2LHW2yGE1A4liwkhhBBCCCGENGghISHw8fHBsGHD0L9/f6SmpmL37t3scjU1NcyfPx+zZs3Cixcv4OzsDGlpaTx58gSHDx/GoUOHwOfzMW3aNOzduxdOTk6YPHkymjVrhrdv3+LKlSvQ19fnJKOVlZXRtWtXBAcH4927dwgKCkL79u3h4eEBoLTer7W1NQYOHIjIyEioqalh6dKlUFZW5twATGjXrl1QUFCAtbU19u/fjwsXLiAhIUHyB68GTExMMGHCBAwePBgzZ85Ehw4dUFhYiIcPH+LcuXOIj49HXl4ePDw8MHjwYJiamqKgoABRUVFQU1OrsGSDONU9Z8JRquvWrUPPnj3B5/NhaWlZp/vdpEkTNmHs7e2NhISEasdXW8XFxZwvPITE3WBOU1MT48aNw6JFiyAvL4+2bdvi999/x8OHDwFA7PVWGXNzcxQVFeHXX39Fx44doaKiAlNTU7Rp0wZr1qxBYGAgnjx5gmHDhkEgEODjx4+4du0abt26xV7/QiUlJbh8+TKA0psaCkeat2rViv0SRZyVK1fWKGZCSN2hZDEhhBBCCCGEkAbN29sbGzduxKJFi7B//3506NABBw4cYEf5AsD06dPRpEkTrFy5ElFRUZCRkYGxsTG8vLzY0amampq4fPky5s6di6CgIGRnZ0NHRwf29vYio0d9fX1hYGCAsWPHIjc3F+7u7ti4cSO7nMfj4fDhwxgzZgxGjx4NdXV1TJo0CQ8ePMCNGzdE9iEmJgazZ8/G/PnzoaOjg82bN6Nbt26SOWDfYM2aNTA1NcWmTZswf/58KCkpwdTUFH379gUAyMvLw9LSElFRUXj27BkUFBRga2uLxMTEGpfUqM45a9euHcLCwrB161YsXboUTZs2RVpaWl3vNgQCAc6ePQtHR0f06tUL8fHx1Yqvtr58+cIe07J2794NBwcHkfmLFy9GYWEhIiMjUVJSAl9fXwQHByMwMJBzI8bq6NGjB8aPH4/IyEi8efMGjo6OSEpKAgCMGzcObdq0wYoVKzBz5kxkZ2dDWVkZbdu2RUREBIYPH87pKz8/Hz/99BMAoFGjRmjatCn8/f0RGhoqtjY4IaT+8RiGYeo7iIbm/fv3UFVVRV5eHluviFTNZuYuifa/oI+zRPu3ONW96kbfQLnjYIn273XvsET7H+U6SGJ9G407ILG+AcB6rPg78daVnak1+89ZTbVzaybR/pP2idbsq0sd3T2qbvQNGr8wrrpRLel1FH/TkLqy+rzoaJK65OnpKdH+nz2fJNH+zUyHV93oGwx+KLlaiLPNW0isbwBYFv2XRPun99zKNeT33IDW4yXW94+qoX42+PLlC54+fQojIyPIy8vXdzgNjkAggJeXF9auXVuj9QoKCtCqVSt06tQJO3bskFB0hJQaPHgw/vzzTzx9+rS+QyGE/AtU972fRhYTQgghhBBCCCESsHnzZpSUlMDU1BS5ubnYsGED0tLSsH///voOjfxgzp8/j7/++gs2NjYoKSnBsWPHsHfvXirnQAipMUoWE0IIIYQQQgghEiAvL4/FixezZRHatGmDhIQE2Nra1m9gP7ji4mJU9iPqRo1+vFSIkpISjh07hiVLliA/Px9GRkZYuXIlpkyZUt+hEUIamB/vFZIQQgghhBBCCJGg6tbEHTJkCIYMGSLZYIgIY2NjpKenV7j8R6zGaWNjg4sXL9Z3GISQHwAliwkhhBBCCCGEEPLDOHr0KL5+/VrfYRBCSINEyWJCCCGEEEIIIYT8MCwtLes7BEIIabCk6jsAQgghhBBCCCGEEEIIIfWPksWEEEIIIYQQQgghhBBCKFlMCCGEEEIIIYQQQgghhJLFhBBCCCGEEEIIIYQQQkDJYkIIIYQQQgghhBBCCCGgZDEhhBBCCCGEEEIIIYQQULKYEEIIIYQQQsgPYNWqVWjWrBmkpaWhpqaGiIiIGvexevVqHD9+XALR1Y19+/ahZcuWkJGRQdu2bes7HFKBpKSkWl1/AoEAgYGB7HRAQAAsLCzY6ejoaPB4PGRlZdVJnDVRPpbykpKSwOPxcO3atRr1W9314uPjsX79+gqXnzhxAt26dYO2tjZkZGSgq6uL7t27IyYmBiUlJZz94PF47ENRURFt2rTBtm3bOP2lpaWxbU6ePCmyvS1btrDLCfnRNKrvAAghhBBCCCGE/Hvknl5ab9tW7zyrVuv9888/mD59OoKCgtCjRw+sXbsWERERmDNnTo36Wb16Nby8vNCtW7daxSFJHz9+xPDhwzFgwABER0dDRUWlvkMiFUhKSsLy5ctrfP2VN2/ePHz69KmOopIsa2trXLp0Cebm5hLpPz4+HteuXcP48eNFls2ZMweRkZHw9fXF2rVroaenh8zMTMTHx8Pf3x8aGhrw8PBg2zdv3hx79+4FAHz48AFxcXEYOXIkFBUV0b9/f07fSkpK2L9/Pzw9PTnzY2JioKSkhI8fP0pgbwmpXzSymBBCCCGEEEJIg/bgwQMwDINRo0ahY8eOMDExkej2vn79yhmt+D2kpaXh69evGDx4MH7++WdYWlrWuq/i4mIUFhbWYXTVl5+fL3Z+WFgYnJ2d66SvH4WxsTGsrKwkvh3hKNq0tLRa96GiogJ7e3soKirWXWDVkJCQgMjISISGhiI2NhZ+fn5wdHRE3759sXfvXly6dAk6OjqcdRQUFGBvbw97e3u4u7tj/fr1aNu2LWJjY0X69/HxQVxcHL58+cLOy8jIwPnz59GzZ09J7x4h9YKSxYQQQgghhBBCGqyAgAD06NEDQGlyjcfjITw8HJ8+fWJ/Jl6dJKRAIEB6ejrWrVvHrhcdHc0uCwwMxNKlS2FoaAgFBQXk5OTg/v376N+/P5o2bQo+n49WrVphxYoVnESyMBG3Z88eBAYGQl1dHXp6epgxYwaKiorYdi9evEC/fv2gq6sLeXl5GBkZYerUqQBKE6nC5LCbmxt4PB7CwsIAADk5ORg+fDi0tLSgoKCAjh074sKFC5x9c3Z2hpeXF3bu3AlTU1PIycnh5s2bbGmB06dPw8rKCgoKCnByckJaWhpycnLQr18/qKiowNjYGAcOHBA5ZgkJCejQoQMUFBSgra2NcePGcUbCCksMJCQkoE+fPlBRUUHfvn2rPqliCI9jdHQ0Ro0aBU1NTbRv3x5AafJ+zpw5MDQ0hJycHMzNzbFv3z7O+nfv3kW3bt2gqakJPp8PU1NTLF36f6PohcciKSkJ7dq1g6KiItq3b4/U1FROPwzDYPny5TAxMYGcnByaN2+OVatWscvDwsJqdf2JU1XpBwDYsWMHZGVl2TIKVcUnKeLKSeTl5cHf3x/KysrQ0dHBnDlzsGLFCrGlG3JzczFw4EAoKyvD0NBQ5Nzs3LkTd+/eZY9pQEAAAGDlypXQ09PD3LlzxcbVvn17tGvXrsr4lZWVxX6B0rVrV/B4PE55mv3796NFixawsbGpsl9CGiIqQ0EIIYQQQgghpMGaN28eWrVqhaCgIMTGxkJbWxs7duxATEwMzp49CwDVKtkQFxeHbt26wcHBAdOnTwdQmnwWOnToEFq2bIlff/0V0tLSUFRUxM2bN2FqaopBgwZBWVkZN27cQGhoKD5+/IjQ0FBO/yEhIfDx8cFvv/2GixcvIiwsDC1atMDYsWMBAEOGDMGrV6+wZs0a6Orq4tmzZ2zibeTIkTA2NsaQIUOwbt06WFtbw8DAAMXFxejatSuePHmCJUuWQFdXF2vWrIG7uzsuXrzISWZdu3YNaWlpmD9/PtTV1dG0aVMAwOvXrzF9+nSEhIRARkYGkyZNwqBBg8Dn8+Ho6IhRo0Zhy5Yt8Pf3h729PQwNDQEABw8ehJ+fH4YNG4bw8HBkZGQgODgYubm52L9/P2ffR48eDX9/f8TFxUFaWrpG57e82bNni9Si7devH/7880+EhobC3Nwcx48fh7+/P9TV1dG1a1cAQI8ePaCrq4tt27ZBVVUVjx49wosXLzh9v379GpMmTUJwcDBUVVUxe/Zs+Pr64vHjx5CRkQEATJ48GVu3bkVISAg6dOiAixcvIigoCAoKChg7dixGjhyJFy9eYN++fTW6/mojKioKM2bMwK5du9jyCVXF9z0NGzYMZ8+eZb9k2bJli0jyXWjs2LEYPHgw4uLiEB8fj6CgIFhZWcHT0xPz5s3D27dvcf/+fbZ8hLa2NoqKivDXX3+hT58+aNSoZukt4Rc1Hz9+RGxsLP766y/s2rVLpJ2cnBx69eqFmJgY9OrVC0BpCYoBAwbUaHuENCSULCaEEEIIIYQQ0mAZGxuzZSfatWsHgUCA06dPQ0pKCvb29tXup127dpCTk4Ourq7Y9QoLC3HixAnOz+zd3Nzg5uYGoHREp4ODAz5//oy1a9eKJIs7dOiANWvWAADc3d1x7tw5HDx4kE3gXb16FZGRkfDz82PXGTJkCADAwMCAHVncqlUrNr4jR47g6tWrOHnyJFuT1cPDAy1atEBERAQOHTrE9pWTk4OUlBQ2SVx2/vnz59G6dWsAwKtXrzBx4kQEBQVh3rx5AAA7OzvExsYiPj4ekydPBsMwmDFjBvz8/LB161a2Lz09PXTr1g3z5s1j+wMAb29vLFmyhLPdkpISzgjskpISMAzDGW3N4/FEkstt27blbPPcuXM4cuQITp06hS5durDHNyMjA6GhoejatSuysrLw9OlT/Prrr+wodBcXF5RX/lgoKirCxcUFV65cgYODAx4/foy1a9di48aNGD16NACgc+fO+Pz5M8LDwzF69GgYGBjAwMCgxtdfTUVGRiI8PBy///47vL29AaBa8UlJSYFhGBQXF7N9Cf8uLi7mHH9paela38Dtf//7H+Li4rBr1y4MHjwYAODp6QkzMzOx7Xv37s2Olndzc0NCQgIOHjwIT09PGBsbQ1tbG+np6ZxjmpmZia9fv4pc0+X3T0pKClJS//fD+rt377LJf6Hp06dj0KBBYmMbMGAAfHx88PHjR2RmZiIlJQV79uz5V98Mk5BvQWUoCCGEEEIIIYSQKjg7O4vUY/3y5QtCQ0PRokULyMnJQUZGBiEhIcjIyBC58ZUwkSnUqlUrzshWa2trLF++HBs2bMCjR4+qFVNycjJUVFQ4N++SkZFBr1698Oeff3LaWllZiSTVAEBfX5+T2BUm3jt37szOU1NTg46ODp4/fw4AePjwIdLT09GvXz8UFRWxDycnJ0hJSXFKEQBA9+7dRbY7fPhwyMjIsI8FCxbgwoULnHllR3ZX1FdiYiI0NDTg6urKicXd3R1///03iouLoampCUNDQ8yePRs7d+4UGVFc0bFo1aoVALDtT58+DaA0sVl2W507d8br16/Z4yNpISEhWLRoEY4dO8YmimsS3/nz5znHuUWLFgCAFi1acOafP3++1jGmpKQAACc+KSkpNllfXtnnB4/Hg7m5eYXnqbzyCe1Dhw5x9mPSpEmc5cbGxkhJSUFKSgrOnz+PhQsXIioqCvPnzxfbv6urK5SVlREfH4+YmBhYW1tLvC46IfWJRhYTQgghhBBCCCFV0NXVFZkXFBSELVu2IDQ0FDY2NlBTU8Phw4excOFCfPnyBUpKSmxbNTU1zrqysrKcm2YdOHAAISEhCAkJwfjx42FqaoqIiAj2p+/i5Obmity8SxhrTk5OlfFXFFdV8WZlZQEAfH19xfZZPmkqbtthYWEIDAxkpzdv3ozU1FRs2rSJnScnJyeyXvm+srKykJOTIzJSVCgjIwMGBgZITExESEgIJkyYgE+fPsHGxgYrV66Eo6Mj27aiY1F2vxmGgZaWlthtPX/+nC3TIUkHDx6EpaUlHBwcOPOrG5+NjQ2bzAVKj5G3tzeOHDkCPT09dr6pqWmtY8zIyICMjAxUVVU588Vdr4D4Y//u3btKt6GpqQk5OTmRpLKbm5vYZLWQvLw8bG1t2WlHR0dkZmZi0aJFCAwMhIaGBqe9tLQ0+vXrh5iYGKSlpWH48OGVxkVIQ0fJYkIIIYQQQgghpArifo7/+++/Y8yYMQgKCmLnJSQk1Kp/PT09bN++HVu3bkVqaioWLlwIPz8/PHjwAM2bNxe7joaGBt68eSMyPzMzUyThVdtyAhVtFwDWrl2LDh06iCzX19evctsCgQACgYCdPnbsGB4+fMhJ4olTvi8NDQ1oa2tXWBJAmJw0MTHB77//jsLCQly8eBFz5sxBjx498PLlS05SvzIaGhrg8Xj4888/2URyWd+SXK2JI0eOoFevXujduzfi4+PZRHl141NWVuYc57S0NACApaUl55x8Cz09PRQWFiIvL4+TMBZ3vdZWo0aN8PPPP+PMmTMoLi5mS5aoq6uz+yfuOIhjbm6OgoIC/PPPP2Kv6QEDBqBTp04AwCkVQ8iPiJLFhBBCCCGEEEJ+KLKysvj69Wut1is72rcq+fn5nGRUcXGxyM3dakpKSgp2dnZYuHAhjhw5gkePHlWYLHZwcMCyZcuQmJjI/oy/qKgIcXFxIqNO65KZmRkMDAzw5MkTTJgwQWLbqY7OnTtj6dKlkJWVhZWVVZXtZWRk4OTkhODgYHh7e+PVq1fVLikgrE+dnZ1dYTkFoPbXX3WZmpri9OnTcHFxwYABA3DgwAFIS0tXO77vQZisPXz4MFt7u6SkBEePHq1VfxU9N6dNmwYvLy9ERESwNbZr486dOwBQ4ajsn376CQMHDoSOjg4MDAxqvR1CGgJKFhNCCCGEEEII+aGYm5ujqKgIv/76Kzp27AgVFZVqjfo0NzfH2bNn8ccff0BdXR1GRkbQ1NSssL27uzu2bNmCVq1aQUtLC+vXr69VkjAvLw8eHh4YPHgwTE1NUVBQgKioKKipqcHa2rrC9bp374727dvD398fixcvhq6uLqKiopCRkYE5c+bUOI7q4vF4WLlyJQYOHIhPnz6he/fuUFRURHp6OhISEhAREfHdarq6u7ujR48e8PT0xKxZs2BlZYVPnz7h7t27ePToEbZu3Ypbt25h+vTp8PPzg7GxMfLy8hAZGQmBQCC2LnJFTExMMGHCBAwePBgzZ85Ehw4dUFhYiIcPH+LcuXOIj48HUPvrryYsLS2RmJgIV1dXDB06FLt27ap2fLX1/v17HDx4UGS+uJsFtm7dGr6+vpg0aRI+f/4MQ0NDbN68Gfn5+bUa5W5ubo7t27cjJiYGLVu2hJaWFgQCAbp3747g4GD88ssvuHHjBvz8/KCnp4e8vDwkJyfj9evXUFZW5vSVn5+Py5cvs38nJydjy5YtcHd3r/B64PF42L17d43jJqQhomQxIYQQQgghhJAfSo8ePTB+/HhERkbizZs3cHR0RFJSUpXrRUREYNy4cejduzc+fPiAHTt2ICAgoML2UVFRGDt2LCZOnAg+n4+AgAD4+vpi1KhRNYpXXl4elpaWiIqKwrNnz6CgoABbW1skJiZWONIRKK2levz4ccyYMQMzZ87Ep0+fYG1tjcTERNjY2NQohprq27cv1NTUsGjRIuzZswdAaWkJT0/PCusjS8rBgwexePFirF+/Hunp6VBVVYWFhQWGDRsGAGjcuDEaN26MyMhIvHz5EqqqqujUqRP27NnDli6orjVr1sDU1BSbNm3C/PnzoaSkBFNTU/Tt25dtU9vrr6asra1x8uRJuLu7Y8yYMdi8eXO14qut58+fi+0nOTlZbPvt27cjMDAQM2bMgLy8PIYOHQoLCwusXbu2xtseMWIErl69iokTJyI7OxtDhw5FdHQ0ACAyMhIODg5Yt24dxo8fj7y8PGhoaMDGxgbbt29H//79OX09efIEP/30E4DSEcuGhoaYOXMmgoODaxwXIT8iHsMwTH0H0dC8f/8eqqqqyMvLg4qKSn2H02DYzNwl0f4X9HGWaP8Wp0Tv4FuXlDsOlmj/XvcOS7T/Ua6DJNa30bgDEusbAKzH1uw/8zW1M1W16kbfoJ1bM4n2n7RvgUT77+juUXWjb9D4RfVHi9SUXkfxN+ioK6vPi47cqEuenp4S7f/Z80lVN/oGZqaSvbnI4IdGEut7tnkLifUNAMui/5Jo//SeW7mG/J4b0Hq8xPr+UTXUzwZfvnzB06dPYWRkBHl5+foOhxDyH+Ho6AhpaWmcO3euvkMh5D+nuu/9NLKYEEIIIYQQQgghhNSpQ4cO4dmzZ7C0tMTnz5+xb98+JCcnIy4urr5DI4RUgpLFhBBCCCGEEEJ+eEVFRRUu4/F4NS5HQEhN/BevPyUlJezevRv//PMPCgoKYGZmhj179qBnz571HRohpBKULCaEEEIIIYQQ8sOTkZGpcJmhoSHS0tK+XzDkP+e/eP15eHjAw0OyJecIIXWPksWEEEIIIYQQQn54KSkpFS6Tk5P7jpGQ/yK6/gghDQUliwkhhBBCCCGE/PBsbW3rOwTyH0bXHyGkoZCq7wAIIYQQQgghhBBCCCGE1D9KFhNCCCGEEEIIIYQQQgihZDEhhBBCCCGEEEIIIYQQShYTQgghhBBCCCGEEEIIASWLCSGEEEIIIYQQQgghhICSxYQQQgghhBBCCCGEEEJAyWJCCCGEEEIIIT+gd+/egcfjITo6ur5DqVR0dDR4PB6ysrLqOxSOnJwc+Pr6Ql1dHTweD/Hx8Vi9ejWOHz9eo37S0tIQFhaGV69eSSjSb1NQUIBhw4ZBW1sbPB4Pq1evru+QSAVqc/0lJSWBx+Ph2rVr7Dwej4fly5ez087OzvDy8qqzOKvr4sWLkJKSwrZt20SW9ezZE4aGhvj06RNn/okTJ9CtWzdoa2tDRkYGurq66N69O2JiYlBSUsK2CwgIAI/HYx+Kiopo06aN2G19L0lJSYiIiKi37ZPqa1TfARBCCCGEEEII+ff4Oernetv2XxP/qrdtE66VK1fi3Llz2LVrF3R0dGBqaoopU6bAy8sL3bp1q3Y/aWlpCA8Ph5eXF/T19SUYce3s2rULu3fvxs6dO2FsbAyBQFDfIZEKrF69usbXnziXLl2CoaFhHUVVex07dsSIESMQFBQEHx8faGlpAQDi4+Nx+PBhHDlyBIqKimz7OXPmIDIyEr6+vli7di309PSQmZmJ+Ph4+Pv7Q0NDAx4eHmz75s2bY+/evQCADx8+IC4uDiNHjoSioiL69+//fXcWpcni5cuXY86cOd9926RmaGQxIYQQQgghhBDyHxIdHV1lUvT+/fuwsrKCt7c37O3toa6uLvG48vPzJb6N8u7fvw99fX0MGjQI9vb2aNy4ca37qo/4AYBhGHz9+lXsMoFAUOPR9fW1H9+Lvb099PT0JL6dsLAwODs7V9pmyZIlkJKSwowZMwAAHz9+xMSJE+Hr64sePXqw7RISEhAZGYnQ0FDExsbCz88Pjo6O6Nu3L/bu3YtLly5BR0eH07eCggLs7e1hb28Pd3d3rF+/Hm3btkVsbGyd7yv5sVCymBBCCCGEEEJIg7dlyxYIBALw+Xy4ubnh0aNHIm2io6NhZWUFeXl5NGnSBCEhISguLua0efHiBfz9/aGlpQUFBQU4OjoiNTWV00YgECAwMBDLli1DkyZNwOfz4ePjg4yMDJG+vLy8wOfz0bRpU6xatQpTpkwRm6h99OgRXF1dwefzIRAIsH37ds7ygIAAWFhY4PTp07CysoKCggKcnJyQlpaGnJwc9OvXDyoqKjA2NsaBAwdqeRRL8Xg8HDp0CMnJyezP2AUCAdLT07Fu3Tp2XlVJyKSkJLi4uAAA7Ozs2PWEy3g8HhISEtCnTx+oqKigb9++AEpH+zo4OEBDQwPq6upwdnbG1atXOX2HhYVBSUkJt2/fhoODA/h8PiwsLHDq1ClOuyNHjsDW1hZKSkpQU1ODra0tW8pAIBBgxYoVeP78ORtbWloaAODChQvo2LEjFBQUoKWlheHDhyMnJ4ftNy0tjT0Go0aNgqamJtq3b88evyVLliAkJAQ6OjpQU1PDrFmzwDAMzpw5g7Zt20JJSQlubm54/vw5J96vX79izpw5MDQ0hJycHMzNzbFv3z5OG+G1cPz4cbRp0wZycnI4evRoVadVLOFxvHr1Kn766SfIy8tj3bp1AIB79+7Bx8cHqqqqUFRURPfu3fH48WPO+tu3b0fr1q2hoKAATU1NODg4ICUlhV3O4/GwdOlShIWFQVdXF1paWhg2bJhIeYWqnne1uf4qUr4MRXn5+fno3r07mjdvjidPnlQrvtrS0NDAsmXLsHPnTiQlJWHu3Ll49+4d1qxZw2m3cuVK6OnpYe7cuWL7ad++Pdq1a1fl9pSVlVFYWMiZl56ejj59+rDn2cPDA7dv3+a0KSkpwcKFCyEQCCAnJwczMzNs2rSJ0+bFixfo168fdHV1IS8vDyMjI0ydOhVA6XUWHh6OT58+seevqkQ6qT9UhoIQQgghhBBCSIN27NgxjB49GgEBAejfvz9SU1PZxKPQypUrMWvWLEydOhUrVqzAvXv32GTx4sWLAQC5ublwcHCAkpISoqKioKqqiqioKLi6uuKff/7hjNyLi4uDoaEhNmzYgNzcXAQFBaFXr164dOkSgNLRnj4+PsjMzMSmTZugqqqKZcuWIT09HVJSouO2+vfvjzFjxiAoKAj79+/HiBEjoK+vD09PT7bN69evMX36dISEhEBGRgaTJk3CoEGDwOfz4ejoiFGjRmHLli3w9/eHvb19rX9qf+nSJQQFBeHDhw9Yv349AEBOTg7dunWDg4MDpk+fDgAwNjautB9ra2usW7cOEyZMwI4dO2BmZibSZvTo0fD390dcXBykpaUBlCZihwwZAmNjYxQUFCAmJgaOjo64desWTExM2HULCwsxaNAgTJo0CfPmzcOSJUvQu3dvpKenQ1NTE48fP0afPn0wYMAAREZGoqSkBDdv3kRubi6A0nO4ZMkSnD9/HnFxcQAAPT09pKamwt3dHc7Ozvj999+RmZmJ4OBg3L17FxcvXmTjBIDZs2eLrRm7du3a/8fencfllL+PH3/dpV1aSQlZpmRolHUaS1oUirHvJvsyYixNEqNCdiLGTpaxjCVLlokhyzA0Zszi48NYQvZU9qXS749+9/m6VRRuxnyu5+PRY7rPeZ/3+zpbjav3uQ4eHh6sXLmSo0ePMnbsWLKzs9m9ezdhYWHo6+szePBgevXqRUJCgrJd+/btOXToEGPHjsXZ2ZkdO3bQtWtXLCwsaNq0qdLu6tWrDB48mNGjR1OuXDnKlStXuJObj6dPn9K5c2eGDh1KVFQUVlZWnD9/Hnd3d6pVq0ZsbCw6OjpMmDABLy8vTp8+jYGBAQcOHKBXr16MGDGCZs2a8fDhQ44dO0ZGRoZG/3PmzKFBgwYsX76cM2fOEBwcjI2NTZHuu7i4uCJff6/j/v37BAQEcO3aNQ4ePEiZMmWK9HPhdXzxxRcsW7aM7t27c/XqVaZNm4a9vb2yPisri59++om2bdtSrFjR0nhZWVnKfm3atImffvqJFStWKOvv3buHh4cHOjo6zJ8/H0NDQyZMmKDcb2XLlgUgODiYWbNmMXr0aNzd3YmPj6d///5kZmYyaNAgACX+2bNnY2Njw6VLl5Ra0b179yYlJYXVq1ezd+9eAEqUKPH6B01olSSLhRBCCCGEEEJ80MaPH0+DBg1YtmwZAL6+vjx+/Jhx48YBuQmRsWPH8vXXXysvWPLx8UFfX59hw4YRHByMlZUV0dHRZGRkcOzYMSUB5OXlhaOjI9OmTWPKlCnKmPfu3WPnzp2YmZkBULZsWby8vPjhhx/w9fVl586d/Prrrxw4cIAGDRoA4Onpib29Pebm5nn2oXv37oSGhirxnz9/noiICI1kcVpaGvv37+fjjz8GchOGQUFBhISEMGbMGCB3Bu+mTZvYvHkzQ4YMAXJnBT6fyFR/r04kqakTUeqyEyqVinr16inrDQwMsLGx0Vj2MiVKlKBq1aoAVKtWjVq1auVp06JFCyZPnqyx7JtvvtGI1cfHh2PHjhEbG6vxgqynT58yadIkpYatk5MTFSpUYOfOnXTt2pXffvuNzMxM5syZg6mpKYBGTVdXV1dKly6NgYGBxj5NmDCB0qVLEx8fj56eHpB7fn19fdmxY4dGeYAaNWqwePHiPPtlZ2fHypUrlTG3bt3KzJkzOXnyJM7OzgBcuXKFoKAgMjIyMDc3Z9++fWzdupUffviBJk2aALnX6bVr1xg7dqxGsjg9PZ2dO3dSt25djXFfPKfqY/j8ch0dHY0/WGRmZjJhwgQ6dOigLPviiy+wtLRk9+7dGBoaArk1ditWrMiSJUsYOHAgx44dU2bGqjVv3jzP+La2tkrtXD8/P3799Vc2bNigJIsLc9+5uroW+forqvT0dJo2bcrjx485cOCAEkthfy7kd5/l5ORoHHuVSqXxxwa1cePG0bBhQ6pUqUJQUJDGutu3b/PkyRMlcauWk5Oj8WTEi+f15MmTyvWrNnz4cLp06aJ8XrZsGRcvXtS4Lhs1akS5cuWIjo5m+vTppKamEhMTQ3BwMOHh4QA0adKE1NRUIiMjGTBgALq6uhw7doyJEydqXEfdu3cHwN7eHnt7e3R0dLR2/sTbI2UohBBCCCGEEEJ8sLKzszl+/DitWrXSWN62bVvl+8OHD3P//n3atWtHVlaW8uXt7c2jR4/466+/AEhISKBx48ZYWloqbXR1dWnUqJHGo/UAjRs3VhLFkJsItrS05OjRowAkJSVhbm6uJIoBpfRAfl6Mv02bNhw/flwjGWRnZ6ckigFllq23t7eyzNzcnFKlSmmUN4iMjERPT0/56tWrFxcvXtRY9mJS6V3JL7l46tQpWrVqhY2NDbq6uujp6XH69GnOnDmj0U5HR0dj3x0cHDAyMiIlJQUAFxcXdHV16dy5M9u2bePOnTuFiungwYO0bNlS45g0adIEc3NzDh069Mr4ITfJ+zxHR0fs7OyUhJx6GaDEm5CQgKWlJZ6enhrXqY+PD7/99pvGtWBlZZUnUQzkOacXL16kV69eGssiIyPzbPfifiQkJNCiRQuKFSumxGFhYYGrq6tyL7i5uZGWlkZgYCC7d+/m4cOHhToWVatWVfZZPVZh7zttSU1NVUqm7Nu3T2O2cGHj69mzp8ZxHjduHAcOHNBYVtBs6AULFihlUNSlUF6kLuGitnHjRo2+Bw8erLG+UqVKJCUlkZSUxP79+xk/fjwxMTEa5//gwYNUq1ZN47q0tLTEx8dHudaPHj1KZmZmnqc1OnTowK1bt5T70s3NjWnTpjFv3rx8ywCJD4fMLBZCCCGEEEII8cG6desWWVlZeR4Ft7GxUb5PTU0FcpMZ+VEnVlNTU/n555/zTZy+mOTJ79HzUqVKKXWLr127RsmSJfNtk5/84s/MzCQ1NVXZlxdnJOvr6xe4/PHjx8rnvn374u/vr3yOj49n4cKFbN26Nd9Y3qXnzxPkzthu0qQJJUuWZMaMGZQvXx5DQ0N69+6tsU+Q+wIv9TFQe37fHR0diY+PJyoqilatWqGjo4Ofnx9z5sx5admG9PT0PHGpY32+bnF+8avld04KOn/qeFNTU0lLSyswcX/t2jWlPEFB476YXG3RokWe829nZ6fRxtjYmOLFi2ssS01NJTo6mujo6DxjqOP29PRk5cqVzJo1C19fXwwNDWnbti3R0dFYWloq7fPb7+dfyFeU+05bzpw5Q3p6OtHR0Xle5ljY+MLDw5WSDAALFy7k+PHjGrV9DQwM8vTx448/8t1337F48WImTpxIUFCQUlcbcv8wYGBgoJFgh9zZzerz3aJFizz9Ghoaaszmb9iwITdu3GDChAkMGjQIS0vLl17r6j+iqcu2vNhO/Vl9T6xbt46wsDDCwsIYOHAgTk5OREVF0bp16zz9i382SRYLIYQQQgghhPhglSxZkmLFinHz5k2N5Tdu3FC+VyeuNm3alOdRboAKFSoo7fz8/JTyFc97Mcnz4njqZba2tkDuo/e3bt3Kt01+bt68SZkyZTTi19PTw9raOt/2RWFnZ6eRIPzrr7/Q19fPtyzEu/bibMkjR46QkpJCfHw8n3zyibL8zp07GnVcC8vPzw8/Pz/u3r3Lrl27GDp0KD169ODHH38scBtLS8t8z9ONGzc0kqD5xf8mLC0tKVmypEai8HnP/0GhoHFfPKf6+vo4ODi89Fzn15elpSXNmzdn4MCBedapS3oAdO3ala5du5KamsqWLVsYOnQoenp6LFmypMDx8hursPedtri7u+Pt7c2wYcOwsrKia9euRY7PwcFB4+WV8fHxnDlz5qXH/smTJwwcOBAvLy969epFmTJlaNq0KRs3bqRNmzZAbnmYzz77jB9//JHs7GyljIWFhYXS94t/NCmIs7MzT58+5e+//6Zu3bpYWlpy+vTpPO2ev9bV/83vZ9Tz621tbVm6dCmLFy/m+PHjjB8/ng4dOnD69GkqVqxYqPjEP4Mki4UQQgghhBBCfLB0dXVxc3MjLi6OoUOHKss3bNigfP/pp59ibGxMSkpKnnIPz/P29mbVqlU4OztjYmLy0nH37dvHnTt3lFIUe/fuJS0tTSkNULt2bTIyMjhw4AANGzYEcl8y9eOPP+ZbszguLg5XV1fl88aNG6lZs2a+9U3flxdnLBd2G6DQ2z169EhjO8gtI5KcnKxRgqOoSpQoQfv27Tl69Chr1qx5adv69euzefNmpk+frtRx3r17NxkZGdSvX/+1Y3gVb29vpkyZgr6+Pi4uLlobp7Cx/PXXX7i6uhbqGrS2tqZXr17s2LGDU6dOFXmswtx3r3P9FcVXX33Fo0ePCAwMVGZJFyW+1zFx4kQuXrzItm3bgNw/brRp04avvvoKX19fZcb3sGHD8Pf3JyoqSqlP/jrUs4XVf4SqX78+GzZs4PTp0zg5OQG5M4n37NlD3759AahTpw56enqsX79e42fU999/T6lSpTReOgm55WFq167N+PHj2bp1K2fPnqVixYp5ZpSLfy5JFgshhBBCCCGE+KCFhYXRsmVLevToQceOHTl+/LjycjHIfQw+MjKSr7/+mpSUFDw8PNDV1eX8+fNs2bKFjRs3YmxszLBhw/juu+9o1KgRQ4YMoVy5cty6dYujR49iZ2enkYw2NTWladOmjBw5koyMDEJCQqhTp47yArWmTZvi5uZG586dmThxIubm5kyZMgVTU1ONl1CprVixAiMjI9zc3Fi7di0HDhxg+/bt2j94ReDs7MzevXvZvXs3FhYWVKhQASsrq5du4+joiK6uLkuXLqVYsWIUK1bspTMt69WrR/Hixfnyyy8ZOXIkV65cYezYsRozGgtrwYIFHDlyBD8/P2xtbblw4QKrVq1SXh5XkLCwMNzd3fH39ycoKIgbN24wcuRI6tSpo7xMTxt8fHwICAjAz8+Pr7/+GhcXFx48eMDJkyc5e/Zsvi/S05aIiAhq166Nr68vffv2xcbGhuvXr7N//34aNGhAp06dGDt2LLdv38bDw4NSpUrx559/smvXLoYNG1aksQp7373O9VdUoaGhPHr0iM6dO2NoaIi/v3+Rfi4UxZkzZ5g0aRIhISEaCdfo6GicnZ0JDw9n2rRpQG5N6ZEjR/LNN99w4sQJOnTogK2tLXfu3OHgwYNcv35dY8Y35P7h5eeff1a+P3jwIIsWLcLHx0cpn9GjRw9mzpxJ8+bNGT9+PIaGhkyYMIFixYrx1VdfAbmJ5aCgIKZOnYqhoSH16tVjx44drF69mpiYGHR1dblz5w6+vr5069YNJycnnj59SkxMDObm5kr5H2dnZ7Kyspg1axbu7u6UKFFCSVCLfxZJFgshhBBCCCGEUPwU9NP7DqHIWrRowfz585kwYQJr166lbt26rFu3TuMFYMOHD6dMmTLMmDGDmJgY5WVT/v7+yixWKysrfv75Z0aPHk1ISAi3b9+mVKlS1KtXL8+M5FatWmFvb0///v1JT0/Hx8eH+fPnK+tVKhVbtmyhX79+9O3bFwsLCwYPHszp06c5ceJEnn1Ys2YNoaGhREZGUqpUKRYuXKjVxOTriIqKYsCAAbRp04Z79+6xbNkyAgMDX7qNtbU1c+fOZcqUKaxcuZKsrCxycnIKbG9jY8P69esZMWIELVu2xNHRkQULFjB58uQix+vi4sK2bdsYNmwYt2/fpnTp0nTq1CnfcgLPq1mzJgkJCYSGhtKmTRtMTExo0aIF06dP1/pM7w0bNjBp0iS+/fZbLl68iJmZGdWqVaNHjx5aHfdFlStX5tixY4wePZqBAwdy//59bG1tadiwoTLruXbt2kRHR/P9999z9+5d7O3tCQ4OZvTo0UUaq7D33etcf68jMjKSR48e0bZtW+Lj4/H29i70z4WiGDhwIGXLliU0NFRjub29PREREYSEhPDFF19QvXp1IHcWcv369Zk7dy4DBw7kzp07WFpaUrNmTZYuXUrHjh01+jl//jyffvopkDsru3z58gQHBzNy5EiljampKYmJiQwbNoy+ffuSnZ3NZ599xoEDBzRK9kydOhVzc3MWL17M+PHjcXBwYP78+fTr1w/IrY9cvXp1YmJiuHTpEkZGRtSqVYuEhARlFnNAQAADBw5k4sSJ3Lx5k4YNG5KYmPjax09ojyrnZT+lRb7u3r2LmZkZd+7coUSJEu87nA9GzeAVWu1/XFsPrfZf7Yf833L7tpi6d9Nq//6ntmi1/z6eXbTWd4UB67TWN4Bb/z5a7X/5cbNXN3oDrl4Fv5zjbUhc/fL/mX5T7j6+Wu2/dIr2Xoph657/C2reluj9G17d6A34+flptf9Llwe/utEbqOLUU6v9dztTQWt9hzpX1lrfAFNjtZvokd+5L/ch/84N/DhvbUrxch/qvw0eP37MhQsXqFChAoaGhu87nA+Og4MD/v7+zJkzp0jbPX36lKpVq9KgQQOWLVumpeiEEEKIvAr7u19mFgshhBBCCCGEEFqwcOFCnj17hpOTE+np6cybN4/k5GTWrl37vkMTQggh8iXJYiGEEEIIIYQQQgsMDQ2ZNGkSycnJAHzyySds3779pTV7PyQ5OTlkZ2cXuF5HRyff+sxCvA1y/QmhHXLXCCGEEEIIIYQQRZCcnFyoEhTdu3fnP//5Dw8fPuThw4ccOXJEeQHev8Hy5cvR09Mr8CsyMvJ9hyj+xeT6E0I7ZGaxEEIIIYQQQgghiiwgIICkpKQC19vZ2b3DaMT/Grn+hNAOSRYLIYQQQgghhBCiyKysrLCysnrfYYj/UXL9CaEdUoZCCCGEEEIIIYQQQgghhCSLhRBCCCGEEEIIIYQQQkiyWAghhBBCCCGEEEIIIQSSLBZCCCGEEEIIIYQQQgjBB5wsXrt2LW5ubhgZGWFpaUnbtm05d+7cS7cJDAxEpVLl+bK3t39HUQshhBBCCCGEEEIIIcQ/0weZLF6yZAmdOnXit99+w9bWluzsbDZu3Ii7uzvXr19/5fZlypShbt26ypebm9s7iFoIIYQQQgghxLuSkZGBSqUiNjb2fYfyUrGxsahUKlJTU993KB+kEydOEB4ezsOHD4u0nYeHB/7+/srn8PBwihcvrnxOTExEpVLxyy+/vLVYC8vPz4+PPvqIJ0+eaCw/fvw4xYoVY86cORrLb9++zciRI6latSrGxsYYGxtTrVo1hg8fTnJystIuOTlZY+Kcjo4OZcqUoXPnzly8ePFd7Fq+wsPDOXz48Bv3o96/DRs2FNjmxfNeWIXZLiMjg/DwcP7zn//ku14b50k9KbJevXp5xsvJyaFs2bKoVCrCw8OLvM/if1ex9x1AUT19+pSRI0cC0KZNGzZs2MDVq1epUqUKN2/eJCoqitmzZ7+0j969e8uNIoQQQgghhBBCfOBOnDhBREQEgwYNwtjY+LX76d27N82bN3+Lkb2+uXPnUq1aNaKiooiIiAAgOzubfv364ebmxsCBA5W2Z8+exdPTk8zMTAYPHkzt2rVRqVT8+uuvzJ8/n8OHD3PkyBGN/qOiomjcuDHPnj3j3LlzfPPNNzRr1ow//vgDXV3dd7qvABERERQvXhx3d3etj/Xtt99qbR8zMjKIiIigWrVqVK1aVWOdNs9T8eLFOXr0KBcuXKBChQrK8oMHD3Ljxg0MDAy0sr/i3+uDSxYnJSUpf3Ft06YNAHZ2dtSrV4/du3eza9euV/YRHR3NxIkTKVWqFJ999hkTJkygUqVKBbZ/8uSJxl/07t69+4Z7IYQQQgghhBD/TLEnv31vYwd+PPDVjcQbi42NJTw8XGM246s8evQIIyMj7QX1ntnb27+zEpUqlYp9+/bh4eGR7/pKlSoxatQoxo8fT+fOnXFyciImJoYTJ06QlJSEjs7/PSTeuXNnsrKyOH78OHZ2dspyLy8vhgwZwqpVq/L0/9FHHykzUd3d3SlRogSff/45p0+fzpPk/CcJDAwEeKOnBd7X/mnzPJUvX55ixYqxdu1aQkNDleVr1qzB19eXgwcPanHPxL/RB1eG4vLly8r3pUqVUr63sbEB4NKlSy/dXl9fH1tbW+zt7UlJSWHdunXUrl2bK1euFLjNxIkTMTMzU77Kli37hnshhBBCCCGEEOJtWrRoEQ4ODhgbG+Pl5cXZs2fztImNjcXFxQVDQ0PKlClDWFgY2dnZGm1SUlLo2rUr1tbWGBkZ0bBhQ44fP67RxsHBgUGDBjF16lTKlCmDsbExLVu25Nq1a3n68vf3x9jYmLJlyzJz5ky++uorHBwc8sSmnnlobGyMg4MDS5cu1VgfGBhItWrV2LNnDy4uLhgZGdGoUSOSk5NJS0ujffv2lChRgkqVKrFu3brXPIr/R6VSMWnSJEJCQihdurTy7++cnBymTZuGo6MjBgYGVKxYkZkzZ+bZ7/bt22NjY4OhoSEVKlRg6NChynp1yYc///yT+vXrK4/j//DDD3nieNk5i42NpUePHgCULFkSlUqV77EtjBfLUORn165dGBsbM3bs2ELF9yZCQkKoUKECAwYM4PLly4wZM4agoCBcXV2VNgcPHiQpKYnRo0drJCDV9PX16dmz5yvHMjU1BSAzM1Nj+YIFC3BycsLAwAAHBwfGjx/Ps2fPNNr8+eef+Pr6YmJigpmZGW3bts2Tl1m6dCkff/wxRkZGWFlZUb9+fZKSkoDc6wwgODhYKbuQmJj46gP0mvIrJxEXF4eTkxOGhobUq1ePX3/9FXNz83yfSN+wYQNOTk4UL14cT09P5d1ZycnJyqzedu3aKfuSnJys9fME0KlTJ9asWaN8zsrKYsOGDXTu3PmV/Qrxog8uWVyQnJycV7YZMWIEt2/f5tSpU5w7d4758+cDkJ6ezrJlywrcLjQ0lDt37ihfzyeshRBCCCGEEEK8X/Hx8fTt25fGjRsTFxeHl5cX7dq102gzY8YMevfuja+vL9u2bSMkJITZs2cTFhamtElPT6d+/fqcOHGCmJgYNm7ciImJCZ6enty8eVOjv7i4OOLi4pg3bx7z5s3j6NGjtG7dWlmfk5NDy5YtOXHiBAsWLGDu3Lls2rSJTZs25bsPHTt2xMfHh7i4OBo3bkyvXr3yPDl7/fp1hg8fTlhYGN999x3nzp2jS5cudOjQgerVq7Nx40Zq1qxJ165d30oN2lmzZnHmzBmWLFmizHwcMmQI33zzDV988QXbt28nMDCQkJAQ5d/XAN27d+ePP/5g9uzZ7Nq1i4iIiDwJ1MzMTLp06UJgYCBxcXGUKlWKNm3acPv2baXNq85Z8+bNGT16NJCbyD1y5AhxcXFvvN/52bRpE59//jmRkZFKaYjCXFOvS19fn3nz5rFv3z4aNmyIubk5kZGRGm3USdUmTZoUqe9nz56RlZXF06dPOXXqFOHh4VSpUoVq1aopbWJiYujfv7+yb4GBgYSHh/P1118rbS5fvkzDhg25ffs2q1atYv78+fz66680atSIe/fuAXDgwAF69epFs2bN2LFjBytWrMDLy4uMjAwApfRCUFAQR44c4ciRI+/0vVK//fYb7dq1o2rVqmzatIkvvviCDh065KkXDbklT6ZOncqkSZOIjY3l7NmzdO3aFQBbW1vl3o6KilL2xdbWVqvnSa1jx4789ddfSr3khIQEHj16RIsWLYo0phDwAZaheH5W7/O/rNXflytXrsBtX7yhunTpQv/+/YGXz0g2MDCQGi9CCCGEEEII8Q81fvx4GjRooEwC8vX15fHjx4wbNw6Ae/fuMXbsWL7++muioqIA8PHxQV9fn2HDhhEcHIyVlRXR0dFkZGRw7NgxZSatl5cXjo6OTJs2jSlTpihj3rt3j507d2JmZgbk/lvVy8uLH374AV9fX3bu3Mmvv/7KgQMHaNCgAQCenp7Y29tjbm6eZx+6d++uPELu6+vL+fPniYiIwM/PT2mTlpbG/v37+fjjjwG4evUqQUFBhISEMGbMGABq167Npk2b2Lx5M0OGDAFyk07PzwhVf5+VlaURQ7FimikCS0tLNm3apMz+PHfuHHPmzGH+/Pn07dsXAG9vbx4+fEhERAR9+/ZFR0eHY8eOMXHiRDp06KCxf897+vQpkyZNolmzZgA4OTlRoUIFdu7cSdeuXQt1zkqWLKmUlKxZsybW1tZ5juvbsHLlSnr16sXs2bOVHEJhrynIe5whtwbx88t1dXWV46zWuHFjPD092bt3L999950ys1Tt6tWrAHmefs7OztaYUPfieX3+vEBuHmXnzp1KHdzs7GwiIyPp2LGj8k6oJk2a8PTpU6ZPn05oaChWVlbMnDmTzMxMEhISsLS0BMDV1ZWqVasSGxtLUFAQx44dw9LSkqlTpyrjPV8bWl1moVy5cnle0vbifqi/f/64qVSqN6pBPHHiRCpUqMDGjRuV8h6mpqZ069YtT9uMjAx+++03SpYsCcD9+/fp0aMHKSkp2NvbK7O+ny8fAdo7T88rX748n376KWvWrGHcuHGsWbOGFi1aYGJiUuhjIYTaBzezuHbt2soP3I0bNwK5N97PP/8MoPwirVKlClWqVNF4S+jYsWO5deuW8nnt2rXK96/7qIoQQgghhBBCiPcnOzub48eP06pVK43lbdu2Vb4/fPgw9+/fp127dmRlZSlf3t7ePHr0iL/++gvInY3XuHFjLC0tlTa6uro0atRIeWxerXHjxkqiGHITwZaWlhw9ehTIfd+Oubm5kiiG3BdReXl55bsfL8bfpk0bjh8/rjEj187OTkkUAzg6OgK5CVs1c3NzSpUqpfFEbGRkJHp6espXr169uHjxosYyPT29PDE1bdpUI4G5Z88eJbYXj+P169eVMd3c3Jg2bRrz5s3LtxwIgI6OjkbcDg4OGBkZkZKSAhT+nGnbwoUL6dWrF0uWLFESxUWJLzk5Od/j7O3trbFs+fLlecb+z3/+w8GDB19ZmuHFJPMnn3yi0bf6vU9qkydPJikpiWPHjhEXF4ednR1+fn5Kec7//ve/pKam5pmd36FDB54+fcqxY8eA3DIY6uterUqVKnzyySccOnQIyL0W0tLSCAwMZPfu3Tx8+PClx/t5Xl5eGvuxYsUKVqxYobGsoPupsJKSkvD399eoA92yZct829aoUUNJFMP/1T9WX7Ov8rbP04s6derE2rVrefToEVu2bKFTp06FikuIF31wM4v19fWJioqiX79+bNy4kYoVK3L79m3u3buHtbU1I0eOBOD06dMAGjdbZGQk48ePp2LFiuTk5Ci1ZUqXLk3v3r3f/c4IIYQQQgghhHgjt27dIisrS+OdNvB/77WB//t3YUGPt6uTnKmpqfz888/5Jk5ffCn6i+Opl6nrFl+7dk0jsfSy7fJbbmNjQ2ZmJqmpqcq+vDgjWV9fv8Dljx8/Vj737dtXo05rfHw8CxcuZOvWrfnG8nwMz0tNTSUnJ6fAGbyXL1+mfPnyrFu3jrCwMMLCwhg4cCBOTk5ERUVplOkwMjJS4s8v7sKeM23buHEj5cqV05gNC4WPz87OLs8fGmrXrs38+fOpWbOmskxd71YtJyeHAQMG8NFHH/Hll18yaNAgevbsqTFjVV3/NiUlhYoVKyrL161bx6NHj4iPj1dKZjyvYsWK1KpVS4nls88+o3Tp0sycOZNp06aRnp4O5D3/6s9paWlAbtmWGjVq5OnfxsZGaePp6cnKlSuZNWsWvr6+GBoa0rZtW6KjozWSzPlZsGCBUs4CUPbl+ZrRL862Lqr87lNTU1MMDQ3ztC3o/nv+XsuPts7Ti9q1a8dXX33FN998g56ensZTCUIUxQeXLIbcX3QmJiZMmzaNU6dOYWhoSOvWrZk0aVK+xcLVJkyYwM6dOzlz5gx3796lcuXKeHt7M3r06AJ/YQshhBBCCCGE+OcqWbIkxYoVy1NT+MaNG8r36qTUpk2b8n1huTpRZ2lpiZ+fn1K+4nkvliZ8cTz1MltbWyC3hunzT7a+bDv18jJlymjEr6en91ZKK9jZ2Wn8W/mvv/5CX19fSUQV5MWZkJaWlqhUKg4dOpQn0Qu5pSQgd9+XLl3K4sWLOX78OOPHj6dDhw6cPn1aI1n2MoU9Z9q2YsUKhg8fjq+vLz/++CMlSpQoUnwFHWcnJ6eXHv/Y2FgOHjxIYmIiDRo0YNWqVQwYMIBffvlFKUPg4eEB5M6If37Ws3r2eWFnX5csWRJra2tOnjypsW8F3VPq9ZaWlvlezzdu3FBmvQN07dqVrl27kpqaypYtWxg6dCh6enosWbLkpXGpryc19VPmr7puiyK/+/TevXuvTAAXhbbO04tsbGzw9PRkxowZ9OrVK98/eglRGB9kshhy6w136dKlwPX5vfBu1KhRjBo1SpthCSGEEEIIIYR4h3R1dXFzcyMuLo6hQ4cqyzds2KB8/+mnn2JsbExKSkqecg/P8/b2ZtWqVTg7O7+y1ue+ffu4c+eOUopi7969pKWlUbduXSB3JmBGRgYHDhygYcOGQG6N0x9//DHfmsVxcXFKzVNAeVndm9RjfdvUj/zfvn2bgICAV7bX0dGhdu3ajB8/nq1bt3L27NlCJ4sLe84KO7vzddnY2PDjjz/SsGFDmjZtSkJCAiYmJoWO73Xcvn2b4OBgvvjiC+XamTdvHjVr1iQmJoavvvoKgAYNGijHt2XLlsofKorqxo0bpKamKn+YcHJyomTJkqxfv15j377//nv09fWpU6cOAPXr12fhwoWkp6djYWEB5D7l/ccff9CzZ88841hbW9OrVy927NjBqVOnlOV6enpaO3+vUrt2beLj45k+fbpSimLz5s2v1VdB16K2zlN+Bg8ejLGxMX369HmtMYSADzhZLIQQQgghhBBCAISFhdGyZUt69OhBx44dOX78OCtXrlTWm5ubExkZyddff01KSgoeHh7o6upy/vx5tmzZwsaNGzE2NmbYsGF89913NGrUiCFDhlCuXDlu3brF0aNHsbOz00hGm5qa0rRpU0aOHElGRgYhISHUqVMHX19fILfer5ubG507d2bixImYm5szZcoUTE1NNeqjqq1YsQIjIyPc3NxYu3YtBw4cYPv27do/eEXg6OjIl19+Sbdu3QgODqZu3bpkZmZy5swZ9u3bx+bNm7lz5w6+vr5069YNJycnnj59SkxMDObm5gWWbMhPYc+Zs7MzAHPnzuXzzz/H2NiY6tWrv9X9LlOmjJIwbtGiBdu3by90fK8jODgYQOOlcJ988glBQUF88803tG/fXpkpvnr1ajw9PXFzc2PIkCHUrl0bHR0dkpOTmT9/PgYGBnlmmP7999/8/PPP5OTkcOXKFaZOnYpKpVISjLq6uowZM4bBgwdTqlQpmjVrxs8//8zkyZP56quvlBm+Q4cOZdmyZTRp0oSwsDAeP37M6NGjKVeuHIGBgUBuyYjbt2/j4eFBqVKl+PPPP9m1axfDhg1T4nF2dmbLli00aNAAExMTnJyc3qi8hPqdVs+zsbHRqB+uFhoaSu3atWnTpg19+/bl4sWLTJs2DUNDw3zv05cpXbo05ubmrFmzhgoVKmBgYICLiwv6+vpaOU/58ff31yg5I8TrkGSxEEIIIYQQQogPWosWLZg/fz4TJkxg7dq11K1bl3Xr1imzfAGGDx9OmTJlmDFjBjExMejp6VGpUiX8/f2VGYFWVlb8/PPPjB49mpCQEG7fvk2pUqWoV69entmjrVq1wt7env79+5Oeno6Pjw/z589X1qtUKrZs2UK/fv3o27cvFhYWDB48mNOnT3PixIk8+7BmzRpCQ0OJjIykVKlSLFy4kGbNmmnngL2B2bNn4+TkxIIFC4iMjKR48eI4OTkpL0MzNDSkevXqxMTEcOnSJYyMjKhVqxYJCQlFLqlRmHPm6upKeHg4ixcvZsqUKZQtW5bk5OS3vds4ODiwd+9eGjZsSOvWrdm8eXOh4iuqgwcPEhsby6JFi/Icr8jISL7//nuGDh3KunXrAKhcuTK//vorU6dOZfny5URERKBSqahYsSK+vr6sXbtW40WMgMYT19bW1nzyySfKvqkFBQWhp6fHjBkz+Pbbb7G1tSU8PFxj27Jly7J//35GjBhBly5d0NXVxcfHhxkzZijJ3tq1axMdHc3333/P3bt3sbe3Jzg4mNGjRyv9zJ07lyFDhtC0aVMePXrEvn37lNINr2P69Ol5lnl5eSkvaHyeq6sr33//PaGhobRq1Ypq1aqxfPlyPDw88hy3V9HR0WHZsmWMGjUKLy8vnjx5woULF3BwcNDaeRJCG1Q5+dVrEC919+5dzMzMuHPnjlKvSLxazeAVWu1/XFsPrfZf7Yfmr270Bkzdu2m1f/9TW7Tafx/PgsvCvKkKA9ZprW8At/7afURn+fGi/U9GUbl6ldNq/4mr89bse5vcfXy12n/plEqvbvSabN21W+8+ev+GVzd6A9p+6cWly4O12n8Vp7yPN75N3c5orxZiqHNlrfUNMDX2J632L79zX+5D/p0b+PFArfX9b/Wh/tvg8ePHXLhwgQoVKuT7Iifxcg4ODvj7+zNnzpwibff06VOqVq1KgwYNWLZsmZaiE0K8iR9//BFvb28SExNp1KjR+w5HiLemsL/7ZWaxEEIIIYQQQgihBQsXLuTZs2c4OTmRnp7OvHnzSE5OZu3ate87NCHE/zdw4EC8vLywsrLi5MmTjBs3DldX13zLVgjxv0CSxUIIIYQQQgghhBYYGhoyadIkpSzCJ598wvbt26lVq9b7DexfLjs7O9+X3qsVKyapEPF/0tPTCQoKIjU1FTMzM/z8/Jg2bVqRaxYL8W8hPyGFEEIIIYQQQogiKGxN3O7du9O9e3ftBiPyqFSpEhcvXixwvVTjFM9bs2bN+w5BiH8USRYLIYQQQgghhBDiX2Pbtm08efLkfYchhBAfJEkWCyGEEEIIIYQQ4l+jevXq7zsEIYT4YEkBFiGEEEIIIYQQQgghhBCSLBZCCCGEEEIIIYQQQgghyWIhhBBCCCGEEEIIIYQQSLJYCCGEEEIIIYQQQgghBJIsFkIIIYQQQgghhBBCCIEki4UQQgghhBBCCCGEEEIgyWIhhBBCCCGEEP9CGRkZqFQqYmNj33coLxUbG4tKpSI1NfV9h6IhLS2NVq1aYWFhgUqlYvPmzURHR7Njx44i9ZOcnEx4eDhXr17VUqRv5unTp/To0YOSJUuiUqmIjo5+3yGJArzO9ZeYmIhKpeKXX35RlqlUKqZNm6Z89vDwwN/f/63FWRQvxvKiwMBAqlWrVuR+C7tdeHg4hw8fznfdgwcPiIqKwtXVleLFi2NoaIijoyP9+/fnzz//1GirUqk0vmxsbAgICMjTLjw8HJVKRZkyZXj27FmeMT/77DNUKhWBgYGF31nx1hV73wEIIYQQQgghhPjn2N+w0Xsbu9GB/e9tbKFpxowZ7Nu3jxUrVlCqVCmcnJz46quv8Pf3p1mzZoXuJzk5mYiICPz9/bGzs9NixK9nxYoVrFy5kuXLl1OpUiUcHBzed0iiANHR0UW+/vJz5MgRypcv/5ai0q4xY8bw4MEDrfUfERFB8eLFcXd311iempqKp6cnFy9eJCgoiAYNGqCvr8/JkydZvHgxW7Zs4dq1axrbBAUF0blzZ3JyckhJSSEqKoomTZpw6tQpzM3NlXZ6enqkpqZy4MABPDw8lOUXL17kyJEjFC9eXGv7KwpHksVCCCGEEEIIIcT/kNjYWMLDw0lOTi6wzX//+19cXFxo0aLFO4vr0aNHGBkZvbPxIHc/7ezs6NKlyxv39T7iB8jJyeHp06cYGBjkWefg4EB4eHiRZmq+r/14V+rVq/dOxgkPDycxMZHExMTX7qNSpUpvL6AiGDBgAOfPn+fo0aN8/PHHyvLGjRszcOBAlixZkmebcuXKaRxbR0dHatSoweHDhzUS/Pr6+nh7e7NmzRqNZPHatWv5+OOP0dXV1c5OiUKTMhRCCCGEEEIIIT54ixYtwsHBAWNjY7y8vDh79myeNrGxsbi4uGBoaEiZMmUICwsjOztbo01KSgpdu3bF2toaIyMjGjZsyPHjxzXaODg4MGjQIKZOnUqZMmUwNjamZcuWeWbapaSk4O/vj7GxMWXLlmXmzJl89dVX+c5ePXv2LJ6enhgbG+Pg4MDSpUs11qsfK9+zZw8uLi4YGRnRqFEjkpOTSUtLo3379pQoUYJKlSqxbt261zyKuVQqFRs3buTgwYPKY+UODg5cvHiRuXPnKsteVeIjMTGRxo0bA1C7dm1lO/U6lUrF9u3badu2LSVKlKBdu3ZA7mzf+vXrY2lpiYWFBR4eHhw7dkyj7/DwcIoXL86ff/5J/fr1MTY2plq1avzwww8a7bZu3UqtWrUoXrw45ubm1KpVSyll4ODgwPTp07l8+bISmzqBfuDAAdzd3TEyMsLa2pqePXuSlpam9JucnKwcgz59+mBlZUWdOnWU4zd58mTCwsIoVaoU5ubmfP311+Tk5PDjjz9So0YNihcvjpeXF5cvX9aI98mTJ4waNYry5ctjYGCAs7Mzq1ev1mijvhZ27NjBJ598goGBAdu2bXvVac2X+jgeO3aMTz/9FENDQ+bOnQvAqVOnaNmyJWZmZpiYmNC8eXPOnTunsf3SpUv5+OOPMTIywsrKivr165OUlKSsV6lUTJkyhfDwcGxsbLC2tqZHjx55Zsu+6r57neuvIK8q/fDo0SOaN29OxYoVOX/+fKHi05b8ykkcOnQIV1dXDA0NcXFxYffu3dSoUSPfPwgkJibi6uqKiYkJderU0YhZfS8GBwcrxzQxMZGLFy+yceNGBg4cqJEoVtPR0aFPnz6vjN3U1BSAzMzMPOs6derEhg0bNNatXr2azp07v7JfoX2SLBZCCCGEEEII8UGLj4+nb9++NG7cmLi4OLy8vJTEo9qMGTPo3bs3vr6+bNu2jZCQEGbPnk1YWJjSJj09nfr163PixAliYmLYuHEjJiYmeHp6cvPmTY3+4uLiiIuLY968ecybN4+jR4/SunVrZX1OTg4tW7bkxIkTLFiwgLlz57Jp0yY2bdqU7z507NgRHx8f4uLiaNy4Mb169WLXrl0aba5fv87w4cMJCwvju+++49y5c3Tp0oUOHTpQvXp1Nm7cSM2aNenatSsXL1587eN55MgRGjZsiKurK0eOHOHIkSPExcVRunRp2rZtqyxr3rz5S/txc3NTEo/Lli1Ttnte3759qVSpEnFxcYwYMQLITcR2796d9evXs3r1asqVK0fDhg05c+aMxraZmZl06dKFwMBA4uLiKFWqFG3atOH27dsAnDt3jrZt2/Lxxx8TFxfHunXraN++Penp6UDuOezQoQOlS5dWYrO1teX48eP4+PhgamrK+vXrmTx5Mtu2baNp06Z5/rgQGhpKTk4Oa9asYerUqcryOXPmcOnSJVauXMmwYcOYOnUqI0aMYOjQoYSGhrJy5UrOnDlDr169NPpr3749CxYsYPjw4cTHx+Pn50fXrl3ZuXOnRrurV68yePBghg4dyq5du6hRo8ZLz8XLPH36lM6dOyvjNGnShPPnz+Pu7k5aWhqxsbGsXr2aW7du4eXlxZMnT4DchHqvXr1o1qwZO3bsYMWKFXh5eZGRkaHR/5w5c/j7779Zvnw533zzDatXr2bcuHHK+sLcd69z/b2O+/fv06xZM86dO8fBgwepWLFikX4uaNu1a9fw8/PD1NSU77//nuDgYAYMGMCVK1fytL1+/TqDBw8mODiY77//nsePH9OqVSslQau+F4OCgpRj6ubmxoEDB8jJyaFJkyZFiu3Zs2dkZWWRmZlJcnIyX3/9NdbW1hqzh9UCAgJ48uQJCQkJAPznP//hjz/+oGPHjkU8IkIbpAyFEEIIIYQQQogP2vjx42nQoAHLli0DwNfXl8ePHysJqXv37jF27Fi+/vproqKiAPDx8UFfX59hw4YRHByMlZUV0dHRZGRkcOzYMUqVKgWAl5cXjo6OTJs2jSlTpihj3rt3j507d2JmZgZA2bJl8fLy4ocffsDX15edO3fy66+/cuDAARo0aACAp6cn9vb2GvU71bp3705oaKgS//nz54mIiMDPz09pk5aWxv79+5XZflevXiUoKIiQkBDGjBkD5M7g3bRpE5s3b2bIkCFAbhLn+ZdJqb/PysrSiKFYsdwUQb169ZQX2z3/WLmBgQE2NjaFfoy/RIkSVK1aFYBq1apRq1atPG1atGjB5MmTNZZ98803GrH6+Phw7NgxYmNjlfMHuUnOSZMmKY+4Ozk5UaFCBXbu3EnXrl357bffyMzMZM6cOcosR19fX2V7V1dXSpcujYGBgcY+TZgwgdKlSxMfH4+enh6Qe359fX3ZsWMHAQEBStsaNWqwePHiPPtlZ2fHypUrlTG3bt3KzJkzOXnyJM7OzgBcuXKFoKAgMjIyMDc3Z9++fWzdupUffvhBSdT5+Phw7do1xo4dS9OmTZX+09PT2blzJ3Xr1tUY98Vzqj6Gzy/X0dFBR+f/5g5mZmYyYcIEOnTooCz74osvsLS0ZPfu3RgaGgLg7u5OxYoVWbJkCQMHDuTYsWNYWlpqJMnzS+Da2try3XffAeDn58evv/7Khg0bmDRpEkCh7jtXV9ciX39FlZ6eTtOmTXn8+DEHDhxQYinsz4X87rOcnByNY69Sqd6ozMLMmTMpVqwY27dvV67pChUqKD9jnvfizwsTExMaN27M0aNHqV+/vnIcXywfoX4ZZdmyZTX6e3H/1D8v1EJCQggJCVE+W1paEhcXp/yMfJ76aYy1a9fSvHlz1qxZw6effkqFChWKdDyEdsjMYiGEEEIIIYQQH6zs7GyOHz9Oq1atNJa3bdtW+f7w4cPcv3+fdu3akZWVpXx5e3vz6NEj/vrrLwASEhJo3LgxlpaWShtdXV0aNWqk8Wg95NbufD4J4unpiaWlJUePHgUgKSkJc3NzjSSOuvRAfl6Mv02bNhw/flxjJqudnZ3GY+GOjo4AeHt7K8vMzc0pVaqURnmDyMhI9PT0lK9evXpx8eJFjWXqpOi7ll9y8dSpU7Rq1QobGxt0dXXR09Pj9OnTeWYW6+joaOy7g4MDRkZGpKSkAODi4oKuri6dO3dm27Zt3Llzp1AxHTx4kJYtW2ockyZNmmBubs6hQ4deGT/kJnmf5+joiJ2dnZIoVi8DlHgTEhKwtLTE09NT4zr18fHht99+07gWrKys8iSKgTzn9OLFi/Tq1UtjWWRkZJ7tXtyPhIQEWrRoQbFixZQ4LCwscHV1Ve4FNzc30tLSCAwMZPfu3Tx8+LBQx6Jq1arKPqvHKux9py2pqalKyZR9+/YpSeGixNezZ0+N4zxu3DgOHDigsexNaxAnJSXRuHFjJVEMKCVbXvTizwv1H26eP/Yvoy5TodaiRQuNffnll1801g8ZMoSkpCSSkpLYvn07n376KS1btuSPP/7It/9OnTqxZcsWHj16xNq1a+nUqVOh4hLaJzOLhRBCCCGEEEJ8sG7dukVWVpZGcgfAxsZG+T41NRXITW7lR51YTU1N5eeff843cfpikufF8dTL1HWLr127RsmSJfNtk5/84s/MzCQ1NVXZlxdnJOvr6xe4/PHjx8rnvn374u/vr3yOj49n4cKFbN26Nd9Y3qXnzxPkzthu0qQJJUuWZMaMGZQvXx5DQ0N69+6tsU8ARkZGyjFQe37fHR0diY+PJyoqilatWqGjo4Ofnx9z5syhXLlyBcaUnp6eJy51rM/XLc4vfrX8zklB508db2pqKmlpaQUm7q9du4a9vf1Lx30xudqiRYs859/Ozk6jjbGxMcWLF9dYlpqaSnR0NNHR0XnGUMft6enJypUrmTVrFr6+vhgaGtK2bVuio6M1kpf57be6lIV6rMLed9py5swZ0tPTiY6OxsLCQmNdYeMLDw9n0KBByueFCxdy/PhxFixYoCzL7yWERXHt2jU++uijPMvz+7nyquutIOrrIyUlRfmDBuTOsA4PD+f48eP0798/z3b29vYaTw94eXlhb29PZGQkGzZsyNPe19cXPT09vvnmGy5cuED79u1fGpd4dyRZLIQQQgghhBDig1WyZEmKFSuWp3bojRs3lO/ViatNmzblebQaUB59trS0xM/PT6OeqtqLSZ78apXevHkTW1tbIPfR+1u3buXbJj83b96kTJkyGvHr6elhbW2db/uisLOz00gQ/vXXX+jr6+dbFuJde3H24pEjR0hJSSE+Pp5PPvlEWX7nzh0lUVoUfn5++Pn5cffuXXbt2sXQoUPp0aMHP/74Y4HbWFpa5nuebty4kWcG54vxvwlLS0tKliypvIDvRc8nBAsa98Vzqq+vj4ODw0vPdX59WVpa0rx5cwYOHJhn3fOzWrt27UrXrl1JTU1ly5YtDB06FD09PZYsWVLgePmNVdj7Tlvc3d3x9vZm2LBhWFlZ0bVr1yLH5+DgoPHyyvj4eM6cOfNW77Oi/lx5HQ0bNkSlUpGQkICnp6eyvHLlykBuXefCMDAwoGLFipw8eTLf9Xp6erRp04YZM2bg5eVV4B9AxLsnyWIhhBBCCCGEEB8sXV1d3NzciIuLY+jQocry52eyffrppxgbG5OSkpKn3MPzvL29WbVqFc7OzpiYmLx03H379nHnzh2lFMXevXtJS0tTSgPUrl2bjIwMDhw4QMOGDYHcJMuPP/6Yb83iuLg4XF1dlc/ql9W9SX3Tt+3FGcuF3QZePZtR7dGjRxrbQW4ZkeTkZI1H6ouqRIkStG/fnqNHj7JmzZqXtq1fvz6bN29m+vTpSl3W3bt3k5GRQf369V87hlfx9vZmypQp6Ovr4+LiorVxChvLX3/9haura6GuQWtra3r16sWOHTs4depUkccqzH33OtdfUXz11Vc8evSIwMBAZZZ0UeJ7F2rXrs2CBQu4d++ekrQ/ePBgnhnvhaWnp5fnmJYvX542bdowd+5cvvjiC43SKUXx+PFjzp0799Lte/fuzc2bN+nTp89rjSG0Q5LFQgghhBBCCCE+aGFhYbRs2ZIePXrQsWNHjh8/rrxcDHIfx46MjOTrr78mJSUFDw8PdHV1OX/+PFu2bGHjxo0YGxszbNgwvvvuOxo1asSQIUMoV64ct27d4ujRo9jZ2Wkko01NTWnatCkjR44kIyODkJAQ6tSpo7xArWnTpri5udG5c2cmTpyIubk5U6ZMwdTUVOPlYmorVqzAyMgINzc31q5dy4EDB9i+fbv2D14RODs7s3fvXnbv3o2FhQUVKlTAysrqpds4Ojqiq6vL0qVLKVasGMWKFXvpTMt69epRvHhxvvzyS0aOHMmVK1cYO3asxqzrwlqwYAFHjhzBz88PW1tbLly4wKpVq5SXxxUkLCwMd3d3/P39CQoK4saNG4wcOZI6deooL9PTBh8fHwICAvDz8+Prr7/GxcWFBw8ecPLkSc6ePZvvi/S0JSIigtq1a+Pr60vfvn2xsbHh+vXr7N+/nwYNGtCpUyfGjh3L7du38fDwoFSpUvz555/s2rWLYcOGFWmswt53r3P9FVVoaCiPHj2ic+fOGBoa4u/vX6SfC6/jzz//zFOmoXjx4hovt1QbOnQo3377Lc2bNyc4OJiMjAwiIiKwtrbO9+fKqzg7O7NlyxYaNGiAiYkJTk5OmJqaMm/ePDw9Pfn0008ZNGgQDRo0wNDQkCtXrrB8+XJ0dHQwNjbW6OvSpUv8/PPPQG55oLlz53L79u18S1ao1alTh82bNxc5bqFdkiwWQgghhBBCCPFBa9GiBfPnz2fChAmsXbuWunXrsm7dOo0XgA0fPpwyZcowY8YMYmJilJdN+fv7K7NYrays+Pnnnxk9ejQhISHcvn2bUqVKUa9evTwzklu1aoW9vT39+/cnPT0dHx8f5s+fr6xXqVRs2bKFfv360bdvXywsLBg8eDCnT5/mxIkTefZhzZo1hIaGEhkZSalSpVi4cKFWE5OvIyoqigEDBtCmTRvu3bvHsmXLCAwMfOk21tbWzJ07lylTprBy5UqysrLIyckpsL2NjQ3r169nxIgRtGzZEkdHRxYsWMDkyZOLHK+Liwvbtm1j2LBh3L59m9KlS9OpU6d8ywk8r2bNmiQkJBAaGkqbNm0wMTGhRYsWTJ8+XeszvTds2MCkSZP49ttvuXjxImZmZlSrVo0ePXpoddwXVa5cmWPHjjF69GgGDhzI/fv3sbW1pWHDhsqs59q1axMdHc3333/P3bt3sbe3Jzg4mNGjRxdprMLed69z/b2OyMhIHj16RNu2bYmPj8fb27vQPxdex4oVK1ixYoXGskqVKnH27Nk8bW1tbdm5cyeDBw+mbdu2VKpUiVmzZjFo0CCNF24W1ty5cxkyZAhNmzbl0aNH7Nu3Dw8PD6ytrTl8+DCzZs1i/fr1zJw5k+zsbMqVK0fjxo05ceKE8sI8tZiYGGJiYoDcP9A5OzsTFxfH559/XuS4xPulynnZT2mRr7t372JmZsadO3coUaLE+w7ng1EzeMWrG72BcW09tNp/tR/yf8vt22Lq3k2r/fuf2qLV/vt4dtFa3xUGrNNa3wBu/bX7yMvy40X/pV0Url4Fv5zjbUhc/fL/mX5T7j6+Wu2/dIr2Xoph657/C2reluj9eV8E8TblN1vhbbp0ebBW+6/i1FOr/Xc7U0FrfYc6V9Za3wBTY3/Sav/yO/flPuTfuYEf561NKV7uQ/23wePHj7lw4QIVKlTA0NDwfYfzwXFwcMDf3585c+YUabunT59StWpVGjRowLJly7QUnRDif8nff/9NlSpVWLp0KV988cX7Dkf8gxX2d7/MLBZCCCGEEEIIIbRg4cKFPHv2DCcnJ9LT05k3bx7JycmsXbv2fYcmhPhAhYaG4uLigp2dHefPnycqKgpbW1vatGnzvkMT/xKSLBZCCCGEEEIIIbTA0NCQSZMmkZycDMAnn3zC9u3bX1qz90OSk5NDdnZ2get1dHReq46qEIXxv3r9PX36lJCQEG7cuIGRkREeHh5MnTqV4sWLv+/QxL/Ev++uEUIIIYQQQgghtCg5OblQJSi6d+/Of/7zHx4+fMjDhw85cuSI8gK8f4Ply5ejp6dX4FdkZOT7DlH8i/2vXn/Tp0/n0qVLPHnyhIyMDDZv3sxHH330vsMS/yIys1gIIYQQQgghhBBFFhAQQFJSUoHr7ezs3mE04n+NXH9CaIcki4UQQgghhBBCCFFkVlZWWFlZve8wxP8ouf6E0A4pQyGEEEIIIYQQQgghhBBCksVCCCGEEEIIIYQQQgghJFkshBBCCCGEEEIIIYQQAkkWCyGEEEIIIYQQQgghhECSxUIIIYQQQgghhBBCCCGQZLEQQgghhBBCCCGEEEIIJFkshBBCCCGEEEK8E+Hh4Rw+fLhI28TGxqJSqUhNTQUgOTkZlUrFhg0blDYODg4MGjTorcZaGGvWrEGlUvHjjz9qLM/OzqZWrVrUqVOHZ8+eKctzcnL47rvv8PT0xNLSEn19fcqUKUPbtm3ZsWOHRh8eHh6oVCrly8zMjHr16rFly5Z3sm/52bx5M99+++17G18IId6FYu87ACGEEEIIIYQQ/xz3Vq96b2Obdu763sZ+FyIiIihevDju7u6v3YetrS1HjhzB0dHxLUb2ejp16sSyZcsYOHAgf/zxBwYGBgDExMRw4sQJkpKS0NHJnaOWk5ND165dWbt2Ld27dycoKAgrKysuXbrEunXraN68Of/9739xcnJS+v/ss8+YNm0aABkZGSxZsoTWrVtz4MABPvvss3e+v5s3b+aXX35h4MCB73xsIYR4VyRZLIQQQgghhBDiXyUnJ4enT58qyct/EwMDA+rVq/dOxgoMDARyZzcX5Ntvv6VatWpMnDiR8PBwUlJSGDNmDIMHD8bV1VWj3erVq1m2bJnSr1rXrl3ZsWMHxsbGGsvNzc019tXb2xtbW1u2bNnyXpLFQgjxv0DKUAghhBBCCCGE+KAFBgZSrVo1duzYwSeffIKBgQHbtm3jyJEjeHp6YmJigpmZGZ07d+bmzZsa206aNInKlStjaGhIyZIl8fb25sKFC8D/lXxYtWoVgwYNwsLCAltbW0aMGEFWVpZGP6dOnaJly5aYmZlhYmJC8+bNOXfunLJepVIBEBwcrJRWSExMLPK+5leG4kW3b9+mdu3a1KxZUylf8ar4XlflypUJDQ1l0qRJnDlzhkGDBmFubk5kZKRGuxkzZlC7du08iWK1Zs2aUbZs2ZeOVaxYMYyMjMjMzNRY/ueff+Lr66uc57Zt23Lp0iWNNo8fP2bYsGHY2dlhaGhIjRo1iIuL02hz8uRJmjVrhpWVFcbGxjg5OTFlyhQg9xpbvnw5J0+eVM5fQfsihBAfMkkWCyGEEEIIIYT44F29epXBgwczdOhQdu3ahY2NDR4eHpiZmbFu3ToWLlxIUlISLVu2VLZZsWIFY8aMoVevXuzatYvFixdTo0YN7t69q9F3WFgYOjo6fP/99/Tv35/p06ezePFiZf358+dxd3cnLS2N2NhYVq9eza1bt/Dy8uLJkycAHDlyBICgoCCOHDnCkSNHcHNze+vH4fr163h4eGBgYMDevXuxtrYuVHxvYuTIkZQvXx5fX1+2bNlCTEwMxYsXV9ZfvnyZ8+fP06RJkyL1m5OTQ1ZWFllZWaSmpjJhwgSuXLlC69atNfpu2LAht2/fZtWqVcyfP59ff/2VRo0ace/ePaVdly5dWLBgAV9//TWbN2+matWqtGnThq1btyptAgICSE9PZ8mSJWzfvp0RI0bw4MEDAMaMGUOzZs2oWLGicv7GjBnzuodMCCH+saQMhRBCCCGEEEKID156ejo7d+6kbt26ADRq1IhatWqxadMmZVZv9erVlRnIzZo149ixY7i4uBAaGqr083wyWa1u3brMnj0bAB8fH/bt28eGDRvo378/kFuL2NLSkt27d2NoaAiAu7s7FStWZMmSJQwcOFApp1CuXDmtlZG4dOkSXl5eODg4sHnzZkxMTAodH+S+mC4nJ0fpT/3987OoVSoVurq6GuMaGBgwevRounfvjo+PD59//rnG+qtXrwLkmTmck5NDdna28llXV1c5VwA7duxAT09PY/2MGTNo0KCBsmzmzJlkZmaSkJCApaUlAK6urlStWpXY2FiCgoL4448/2LRpE/Pnz6dfv34A+Pn5kZycTEREBC1atCA1NZULFy4wa9YsAgICAGjcuLEyTqVKlShZsiQXL158Z2VAhBDifZCZxUIIIYQQQgghPnhWVlZKovjhw4f89NNPtGvXjuzsbGV2qqOjI2XLliUpKQkANzc3fvvtN4YNG8ahQ4fylDdQe3FGbNWqVUlJSVE+JyQk0KJFC4oVK6aMZWFhgaurqzKWtp07d44GDRpQtWpV4uPjlURxUeLz8vJCT09P+VqxYgUrVqzQWObl5ZVn7JycHBYuXIhKpeL3338nIyMj3xifTwQDTJ8+XaPv6dOna6yvX78+SUlJJCUlsXfvXoYOHcqwYcNYvny50ubgwYN4enoqiWKAKlWq8Mknn3Do0CGlDUC7du00+u/QoQO//fYbDx48wMrKivLlyxMaGsry5cs1zq8QQvwvkWSxEEIIIYQQQogPno2NjfJ9eno62dnZDB06VCMZqaenx6VLl7h8+TKQW4d25syZ/PDDDzRo0ICSJUsyZMgQHj16pNG3ubm5xmd9fX0eP36sfE5NTSU6OjrPWAcPHlTG0rZjx45x6dIlevbsmefFfoWNb8GCBUpyNikpCX9/f/z9/TWWLViwIM/YS5cu5aeffmLDhg08ffpUY6Y2gJ2dHUCeBGy3bt2UfvNjZmZGrVq1qFWrFo0bN2bq1Kk0b96cESNGKLOe09PTNc69mo2NDWlpaUobPT09jYSyuk1OTg4ZGRmoVCoSEhJwdnbmyy+/pGzZstSqVYsDBw7kG5sQQvxbSRkKIYQQQgghhBAfvOdnrZqbm6NSqRg1alSekggA1tbWAOjo6DBkyBCGDBnClStXWLt2LSNHjsTa2rpI9WgtLS1p3ry5Us7heaampkXfmdfQqVMnihUrRseOHYmPj9eYAVzY+JycnDTWWVlZAVCrVq0Cx01NTSUkJIQePXrQunVrbt68yZdffknPnj2pXbs2kFt+omLFiiQkJGi8+M7GxibfRO/LODs7s23bNm7evImNjQ2WlpZ5XloIcOPGDRwdHYHc/c/MzCQ9PR0LCwuNNiqVSvljgKOjI+vXryczM5PDhw8zatQoAgICuHLlikYNZiGE+DeTZLEQQgghhBBCiH8VExMTPv30U06dOsX48eMLtU2ZMmUYPnw4q1ev5tSpU0Uaz9vbm7/++gtXV9c89Xyfp6enpzEj+W2Ljo7m8ePHtGzZkh9++IHPPvusSPG9jhEjRqBSqZgyZQoAffv2ZdmyZfTv35+kpCR0dHIfaB42bBiDBg1i5cqVdOvW7bXH++uvv9DT06NEiRJAbqmKhQsXaiSCT58+zR9//EHPnj2VNgDr16+nb9++Sl/r16/H1dVVo2QH5J6nRo0aMXLkSFq0aMHVq1dxdHTMM6NcCCH+jSRZLIQQQgghhBDiX2fq1Kl4enrSoUMHOnbsiIWFBSkpKezevZsePXrg4eFBv379sLCwoF69elhYWPDTTz/x+++/5zsD92UiIiKoXbs2vr6+9O3bFxsbG65fv87+/ftp0KABnTp1AnJnxW7ZsoUGDRpgYmKCk5PTW595PG/ePB49ekSzZs3Ys2cPtWvXLnR8RbV//36WL1/O0qVLlVnIOjo6zJs3jzp16vDtt98yaNAgAAYOHMjhw4cJDAxk3759BAQEYG1tze3bt0lISADyzsLOyMjg559/BuDevXvs2LGDHTt20KdPH4yMjAAYOnQoy5Yto0mTJoSFhfH48WNGjx5NuXLlCAwMBMDFxYXWrVszbNgwHj16hJOTE6tWreLw4cNs2bIFgD/++IPhw4fToUMHKlWqxJ07d5g4cSIODg5UqlQJyD1/S5cuZc2aNXz00UdYW1vj4ODwWsdOCCH+qSRZLIQQQgghhBDiX8fd3Z1Dhw4xduxYevTowdOnT7G3t8fLy4vKlSsrbRYtWsSiRYt4+PAhFStWZObMmfTq1atIY1WuXJljx44xevRoBg4cyP3797G1taVhw4a4uLgo7ebOncuQIUNo2rQpjx49Yt++fXh4eLzN3UalUrF06VKePHmCr68viYmJuLi4FCq+onj69CkDBgygQYMGSlJWzc3NjYEDBzJ69Gjatm1L6dKlUalUrFq1iqZNm7J48WJ69uzJgwcPKFmyJPXq1SM+Pp7mzZtr9PPTTz/x6aefAmBkZETFihWZOnUqgwcPVtqULVuW/fv3M2LECLp06YKuri4+Pj7MmDFDI/m8atUqRo0axaRJk0hLS6NKlSps2LCBgIAAAEqXLk3p0qWZOHEiV65cwczMjAYNGrBq1SplNnavXr04duwYQUFB3L59my+++ILY2NjXOn5CCPFPpcpRV4UXhXb37l3MzMy4c+eO8uiLeLWawSu02v+4th5a7b/aD81f3egNmLq//qNYheF/aotW++/j2UVrfVcYsE5rfQO49e+j1f6XHzfTav+uXuW02n/i6nFa7d/dx1er/ZdOqaS1vm3dS2mtb4Do/Ru02r+fn59W+790efCrG72BKk49tdp/tzMVtNZ3qHNlrfUNMDX2J632L79zX+5D/p0b+HHRZlOKD/ffBo8fP+bChQtUqFABQ0PD9x2OEEIIIbSssL/7dd5hTEIIIYQQQgghhBBCCCH+oaQMhRBCCCGEEEII8R48e/aMZ8+eFbheV1cXlUr1DiMSQgjxv05mFgshhBBCCCGEEO9BZGQkenp6BX4tX778fYcohBDif4zMLBZCCCGEEEIIId6Dvn374u/vX+D6ChW0Vz9fCCGEyI8ki4UQQgghhBBCiPfAzs4OOzu79x2GEEIIoZAyFEIIIYQQQgghhBBCCCEkWSyEEEIIIYQQQgghhBBCksVCCCGEEEIIIYQQQgghkGSxEEIIIYQQQgghhBBCCCRZLIQQQgghhBBCCCGEEAJJFgshhBBCCCGEEEIIIYRAksVCCCGEEEIIIf4FZs6cSbly5dDV1cXc3JyoqKgi9xEdHc2OHTu0EN3bsXr1aj766CP09PSoUaPG+w5HFCAxMfG1rj8HBwcGDRqkfA4MDKRatWrK59jYWFQqFampqW8lzsLKzMykevXqNGrUiJycHI11mzdvRqVSER8fr7H80qVLfPnll1SqVAlDQ0NMTU2pWbMmY8eO5datW0q7xMREVCqV8lWsWDHKly/PgAEDuH379jvZvxdlZGQQHh7Of/7znzfuS71/v/zyS4FtXjzvhVWY7ZKTkwkPD+fq1av5rtfGefLw8EClUtGxY8c84927dw8jIyNUKhWxsbFF3mfxbhR73wEIIYQQQgghhPjnmDN823sbe9D0gNfa7u+//2b48OGEhIQQEBDAnDlziIqKYtSoUUXqJzo6Gn9/f5o1a/ZacWjT/fv36dmzJ506dSI2NpYSJUq875BEARITE5k2bVqRr78XjRkzhgcPHrylqF6fnp4e8+bNo2HDhsTGxtKjRw8g95oMCgqidevW+Pv7K+2PHj1K06ZNsbS0ZMiQIVSvXp3MzEwOHz7M/PnzOXPmDGvWrNEYY9myZVSpUoWsrCxOnjxJWFgYFy5cYNeuXe90XyE3WRwREUG1atWoWrWq1seLi4vDwsJCK30nJycTERGBv78/dnZ2Guu0eZ6KFy/Otm3bePDgASYmJhr7WqyYpCL/6eQMCSGEEEIIIYT4oJ0+fZqcnBz69OlDxYoVSUhI0Op4T548QU9PDx2dd/ewbnJyMk+ePKFbt2589tlnb9RXdnY2z549Q09P7y1FV3iPHj3CyMgoz/Lw8HASExNJTEx8477+LSpVqvROxklOTqZChQpcuHABBweHfNvUr1+fHj16EBwcTEBAANbW1owePZo7d+4we/Zspd3jx49p164d9vb2HDp0SOOPGk2aNGH48OFs25b3D1LVqlWjVq1ayliPHz9m6NCh3L9/n+LFi7/dHX6LPDw88PDwIDw8/LX7cHV1fXsBFZK2z9Nnn33G8ePH2bp1K506dVKWr1mzhs8//5xVq1Zpce/Em5IyFEIIIYQQQgghPliBgYEEBOTOSK5UqRIqlYqIiAgePHigPDLt4eHxyn4cHBy4ePEic+fOVbZTPyatftx7ypQplC9fHiMjI9LS0vjvf/9Lx44dKVu2LMbGxlStWpXp06fz7Nkzpd/k5GRUKhWrVq1i0KBBWFhYYGtry4gRI8jKylLapaSk0L59e2xsbDA0NKRChQoMHToUyE2kVq9eHQAvLy9UKpWSnEpLS6Nnz55YW1tjZGSEu7s7Bw4c0Ng3Dw8P/P39Wb58OU5OThgYGPD7778rZQ727NmDi4sLRkZGNGrUiOTkZNLS0mjfvj0lSpSgUqVKrFu3Ls8x2759O3Xr1sXIyIiSJUsyYMAAjZmw6kfXt2/fTtu2bSlRogTt2rV79UnNh/o4xsbG0qdPH6ysrKhTpw6Qm7wfNWoU5cuXx8DAAGdnZ1avXq2x/cmTJ2nWrBlWVlYYGxvj5OTElClTlPXqY5GYmIirqysmJibUqVOH48ePa/STk5PDtGnTcHR0xMDAgIoVKzJz5kxlfXh4+Gtdf/l5sQxFfpYtW4a+vj5LliwpVHxvYsqUKahUKoKDgzl+/Dhz5sxh3LhxlClTRmmzfv16Ll++zKRJk/Kd/W5qakrnzp1fOZapqSk5OTlkZ2cry549e8b48eNxcHDAwMCAKlWqsGDBgjzbHjhwAHd3d4yMjLC2tqZnz56kpaVptJk0aRKVK1fG0NCQkiVL4u3tzYULF5TEOUC7du2Uc5icnFzYw1Rk+ZWTWLBgAeXLl8fY2BgfHx9+++23Aks3zJ07l/Lly2NmZsbnn3+ulI9ITEykcePGANSuXVvZF9DueQIoVqwYbdu21ZiZfOvWLfbs2VOofsX7JTOLhRBCCCGEEEJ8sMaMGUPVqlUJCQlh06ZNlCxZkmXLlrFmzRr27t0LUKiSDXFxcTRr1oz69eszfPhwQHNm58aNG/noo4+YNWsWurq6mJiY8Pvvv+Pk5ESXLl0wNTXlxIkTjB07lvv37zN27FiN/sPCwmjZsiXff/89hw8fJjw8nMqVK9O/f38AunfvztWrV5k9ezY2NjZcunRJqXPau3dvKlWqRPfu3Zk7dy5ubm7Y29uTnZ1N06ZNOX/+PJMnT8bGxobZs2fj4+PD4cOHqVmzpjL+L7/8QnJyMpGRkVhYWFC2bFkArl+/zvDhwwkLC0NPT4/BgwfTpUsXjI2NadiwIX369GHRokV07dqVevXqUb58eQA2bNhAhw4d6NGjBxEREVy7do2RI0eSnp7O2rVrNfa9b9++dO3albi4OHR1dYt0fl8UGhpK8+bNWbNmjZKUb9++PYcOHWLs2LE4OzuzY8cOunbtioWFBU2bNgUgICAAGxsblixZgpmZGWfPniUlJUWj7+vXrzN48GBGjhyJmZkZoaGhtGrVinPnzimzsIcMGcLixYsJCwujbt26HD58mJCQEIyMjOjfvz+9e/cmJSWF1atXF+n6ex0xMTGMGDGCFStWKPVhXxXfm7CysmLKlCn07NmTxMREPvnkkzxJzsTERIoVK4anp2eR+s7OziYrK0spbzBt2jS8vb0xMzNT2gQHBzNr1ixGjx6Nu7s78fHx9O/fn8zMTCWO48eP4+Pjg4eHB+vXr+fGjRuMHDmSkydPcvjwYXR1dVmxYgVjxowhMjKSTz/9lDt37nDw4EHu3r1LlSpV2LRpE61btyYqKkpJttra2r7RsSuKrVu3KtdS27ZtOXHiBO3bty+w7d9//83cuXNJTU1l6NChBAUFsXbtWtzc3Jg7dy5ffvmlUj5CTZvnSa1Tp074+PiQnp6OhYUF69evx97enk8//bRoB0S8c5IsFkIIIYQQQgjxwapUqRKOjo5A7uPcDg4O7NmzBx0dHerVq1foflxdXTEwMMDGxibf7TIzM9m5c6dG/U0vLy+8vLyA3Bmd9evX5+HDh8yZMydPsrhu3brK4/o+Pj7s27ePDRs2KAm8Y8eOMXHiRDp06KBs0717dwDs7e2VmcVVq1ZV4tu6dSvHjh1j165d+Pr6AuDr60vlypWJiopi48aNSl9paWkkJSUpSeLnl+/fv5+PP/4YgKtXrxIUFERISAhjxowBcmclbtq0ic2bNzNkyBBycnIYMWIEHTp0YPHixUpftra2NGvWjDFjxij9AbRo0YLJkydrjPvs2TONGdjPnj0jJydHY7a1SqXKk1yuUaOGxpj79u1j69at/PDDDzRp0kQ5vteuXWPs2LE0bdqU1NRULly4wKxZs5RZ6Ook4MuOhYmJCY0bN+bo0aPUr1+fc+fOMWfOHObPn0/fvn0B8Pb25uHDh0RERNC3b1/s7e2xt7cv8vVXVBMnTiQiIoL169fTokULgELFp6Ojk2cmqPp7dSJQTVdXV5mJqhYYGMiECRM4d+4c3333XZ7zc/XqVaytrTE0NNRYnp2drbwcL7/z+uKxcnFxYcWKFcrn1NRUYmJiCA4OVmbVN2nShNTUVCIjIxkwYAC6urpMmDCB0qVLEx8fryT4y5Yti6+vLzt27CAgIIBjx47h4uJCaGio0n/Lli2V79VlIT766KM8cT2/H5B73z979kzjuOno6LxRiZrx48fj6enJokWLgNx7OjMzU7kfn5eTk8PWrVsxMDAAcmfgR0VF8ezZM0qUKKHUXH6+fARo7zw9r0GDBpQqVYpNmzbRq1cv1qxZo1GSQvxzSRkKIYQQQgghhBDiFTw8PDQSxZBb93Ps2LFUrlwZAwMD9PT0CAsL49q1a9y/f1+jrTqRqVa1alWNma1ubm5MmzaNefPmcfbs2ULFdPDgQUqUKKEkiiH3ZWStW7fm0KFDGm1dXFzyJIoB7OzsNBK76sS7t7e3sszc3JxSpUpx+fJlAM6cOcPFixdp3769MsswKyuLRo0aoaOjo8yIVmvevHmecXv27Imenp7yNW7cOA4cOKCxLL+avS/2lZCQgKWlJZ6enhqxqB/dz87OxsrKivLlyxMaGsry5cvzzCgu6FioE23q9nv27AGgTZs2GmN5e3tz/fp15fhoW1hYGBMmTCA+Pl5JFBclvv3792sc58qVKwNQuXJljeX79+/PM/aPP/7IuXPnUKlUBdaXfjHBDGBmZqb0m98s1BUrVpCUlMTRo0dZs2YNT58+xc/PT7mPjh49SmZmZp4yJh06dODWrVucOXMGyL0nWrZsqVGPu0mTJpibmyv3hJubG7/99hvDhg3j0KFDZGZm5n+g81GpUiWNY3TgwAHGjRunsaxnz56F7u9F2dnZ/PbbbxrnFTST2c9r1KiRkiiG3Gs2MzOTmzdvvnIsbZynF/vv0KEDa9as4fLly/z000+SLP5AyMxiIYQQQgghhBDiFWxsbPIsCwkJYdGiRYwdO5aaNWtibm7Oli1bGD9+PI8fP9Z44ZO5ubnGtvr6+jx+/Fj5vG7dOsLCwggLC2PgwIE4OTkRFRVF69atC4wpPT2dUqVK5RvrizVa84u/oLheFW9qaioArVq1yrfPF5Om+Y0dHh6uUcJg4cKFHD9+XKMG7fNJsIL6Sk1NJS0trcCX9V27dg17e3sSEhIICwvjyy+/5MGDB9SsWZMZM2bQsGFDpW1Bx+L5/c7JycHa2jrfsS5fvqyU6dCmDRs2UL16derXr6+xvLDx1axZk6SkJGX5tWvXaNGiBVu3btUot+Dk5KSx/ZMnTxgwYAA+Pj7Url2b8ePH07lzZ42X4tnZ2bFnzx6ePHmicf4OHjxIdnY2CxcuzFNPGsDZ2VmZ+VqnTh0cHR2pWbMmsbGxDBo0iPT0dCDv+Vd/Vl/v6enp+V5vz98TgYGB3Lt3j4ULFzJz5kzMzMz44osvmDRp0itfmLht2zaePHmifO7Xrx81a9ZUZnIDBR7/wrh16xZZWVmULFlSY3l+9zm8+potiLbO04s6depEdHQ0M2fO5OOPP6Z69epkZGS8NDbx/kmyWAghhBBCCCGEeIX8ZuGtX7+efv36ERISoizbvn37a/Vva2vL0qVLWbx4McePH2f8+PF06NCB06dPU7FixXy3sbS0zHcG4Y0bN7C0tHxl/K9L3fecOXOoW7dunvV2dnavHNvBwUEjyRgfH8+ZM2c0HpXPz4t9WVpaUrJkSXbs2JFve3WSzdHRkfXr15OZmcnhw4cZNWoUAQEBXLlyRSOp/zKWlpaoVCoOHTqkJOWe92JyVVu2bt1K69atadOmDZs3b1YS5YWNz9TUVOM4q1/eVr16dY1z8qKoqCguX77Mzp07KVOmDGvWrCEoKIht27YpbTw8PFi6dCn79u3Dz89PWa4u7RAfH1+ofXR2dgZyX0yo3jeAmzdvarxQ78aNGxrrC3NP6OjoMGTIEIYMGcKVK1dYu3YtI0eOxNraOt9SD89Tl4NRMzU1xc7O7pXXbWGVLFmSYsWKKS+pUyvMTOGi0NZ5elHNmjWpWLEis2bNYty4cW8YtXhXpAyFEEIIIYQQQoh/FX19fY3Zf0XZ7lUz8p736NEjjaRcdnZ2npe7FZWOjo4yazMrK+ulJSnq16/P3bt3SUhIUJZlZWURFxeXZ9bp21SlShXs7e05f/48tWrVyvP1YrJYm7y9vbl16xb6+vr5xvJi0lRPT49GjRoxcuRI7t69y9WrVws9lro+9e3bt/Mdy9TUFHj966+wnJyc2LNnD0ePHqVTp05KzeHCxvc6zpw5w+TJkwkNDaVy5coYGRkxe/Zs4uPj2bx5s9KuXbt2lC1bltDQUO7du/fa4/3111/A/83SrVOnDnp6eqxfv16j3ffff0+pUqWU8in169dn8+bNGjWEd+/eTUZGRr73RJkyZRg+fDguLi6cOnUKKPzsXG3Q1dXF1dWVLVu2aCx//hgXRUH7oq3zlJ+RI0cSEBBAly5dXnsc8W7JzGIhhBBCCCGEEP8qzs7OZGVlMWvWLNzd3SlRokShZn06Ozuzd+9edu/ejYWFBRUqVMDKyqrA9j4+PixatIiqVatibW3Nt99++1pJwjt37uDr60u3bt1wcnLi6dOnxMTEYG5ujpubW4HbNW/enDp16tC1a1cmTZqEjY0NMTExXLt2jVGjRhU5jsJSqVTMmDGDzp078+DBA5o3b46JiQkXL15k+/btREVFKck7bfPx8SEgIAA/Pz++/vprXFxcePDgASdPnuTs2bMsXryYP/74g+HDh9OhQwcqVarEnTt3mDhxIg4ODvnWRS6Io6MjX375Jd26dSM4OJi6deuSmZnJmTNn2Ldvn5LQe93rryiqV69OQkICnp6efPHFF6xYsaLQ8b2OAQMGUL58eUaOHKks8/f35/PPP2fIkCH4+PhgYmKCoaEh69evx8/PDzc3N4KCgqhevTrZ2dn8/fffrFu3Lt+k9V9//UVWVhbPnj3j/PnzjBs3DmNjY+Ulj9bW1gQFBTF16lQMDQ2pV68eO3bsYPXq1cTExCgvYgsLC8Pd3R1/f3+CgoK4ceMGI0eOpE6dOjRr1gzILR1hYWFBvXr1sLCw4KeffuL3339n4MCBAJQuXRpzc3PWrFlDhQoVMDAwwMXFJd/Z2oW1d+9eZQa3WoUKFahZs2aetqNHj6Zly5b06dOHdu3a8dtvv7F8+XKAIr84z9HREV1dXZYuXUqxYsUoVqwYtWrV0tp5yk/Pnj3fqI6zePckWSyEEEIIIYQQ4l8lICCAgQMHMnHiRG7evEnDhg0LfBnX86KiohgwYABt2rTh3r17LFu2jMDAwALbx8TE0L9/f4KCgjA2NiYwMJBWrVrRp0+fIsVraGhI9erViYmJ4dKlSxgZGVGrVi0SEhJeOmNPV1eXHTt2MGLECIKDg3nw4AFubm4kJCTkm4R6m9q1a4e5uTkTJkxg1apVQG5pCT8/vwLrI2vLhg0bmDRpEt9++y0XL17EzMyMatWq0aNHDyA3+Ve6dGkmTpzIlStXMDMzo0GDBqxatUpJMhbW7NmzcXJyYsGCBURGRlK8eHGcnJw0Xrz2utdfUbm5ubFr1y58fHzo168fCxcuLFR8RbVy5Ur27t3Lnj178tSRnjVrFlWrViUyMpLJkycDULduXX7//XcmTZpEdHQ0V65cQU9PD0dHR9q1a5dvbVv1uVKpVNjY2FCnTh3Wr1/PRx99pLSZOnUq5ubmLF68mPHjx+Pg4MD8+fPp16+f0qZmzZokJCQQGhpKmzZtMDExoUWLFkyfPl051+7u7ixatIhFixbx8OFDKlasyMyZM+nVqxeQm5BdtmwZo0aNwsvLiydPnnDhwoWXluh4ledL1aj16tWLxYsX51neokUL5s2bR1RUFKtWraJu3brMmzePJk2a5PvSuZextrZm7ty5TJkyhZUrV5KVlUVOTg6gvfMkPnyqHPVVIgrt7t27mJmZcefOHUqUKPG+w/lg1AxeodX+x7X10Gr/1X7I+wbft8nUvZtW+/c/teXVjd5AH0/tPVJSYcA6rfUN4Na/aP8zX1TLjxftF3pRuXqV02r/iau1W1vK3cf31Y3eQOmUws8WKSpb9/xfNPG2RO/foNX+n69Ppg2XLg/Wav9VnLQ7Q6HbmQpa6zvUubLW+gaYGvuTVvuX37kv9yH/zg38eKDW+v63+lD/bfD48WMuXLhAhQoVMDQ0fN/hCCGEeIklS5bQu3fvN05ai/9thf3dLzOLhRBCCCGEEEIIIYT4B0hLSyMiIgJPT09MTU1JSkpiwoQJtGzZUhLF4p2QZLEQQgghhBBCiH+951949SKVSlXkcgRCFIVcf6Kw9PT0OHfuHKtXryYjI4OSJUvSrVs3pcyHENomyWIhhBBCCCGEEP96enp6Ba4rX758npdPCfE2yfUnCsvU1JT4+Pj3HYb4HybJYiGEEEIIIYQQ/3pJSUkFrnvxpV1CvG1y/QkhPhSSLBZCCCGEEEII8a9Xq1at9x2C+B8m158Q4kOh874DEEIIIYQQQgghhBBCCPH+SbJYCCGEEEIIIYQQQgghhCSLhRBCCCGEEEIIIYQQQkiyWAghhBBCCCGEEEIIIQSSLBZCCCGEEEIIIYQQQgjBB5wsXrt2LW5ubhgZGWFpaUnbtm05d+5cobbNzs7G3d0dlUqFSqVi5MiRWo5WCCGEEEIIIYQQQggh/tk+yGTxkiVL6NSpE7/99hu2trZkZ2ezceNG3N3duX79+iu3j4yM5MiRI+8gUiGEEEIIIYQQ78LMmTMpV64curq6mJubExUVVeQ+oqOj2bFjhxaieztWr17NRx99hJ6eHjVq1Hjf4YgCJCYmvtb15+DgwKBBg5TPgYGBVKtWTfkcGxuLSqUiNTX1rcRZWJmZmVSvXp1GjRqRk5OjsW7z5s2oVCri4+M1ll+6dIkvv/ySSpUqYWhoiKmpKTVr1mTs2LHcunVLaZeYmKhM5FOpVBQrVozy5cszYMAAbt++/U7270UZGRmEh4fzn//8572ML8T7Vux9B1BUT58+VWYCt2nThg0bNnD16lWqVKnCzZs3iYqKYvbs2QVuf/jwYSZMmED79u35/vvv31XYQgghhBBCCPFB+GnH7+9t7M+affJa2/39998MHz6ckJAQAgICmDNnDlFRUYwaNapI/URHR+Pv70+zZs1eKw5tun//Pj179qRTp07ExsZSokSJ9x2SKEBiYiLTpk0r8vX3ojFjxvDgwYO3FNXr09PTY968eTRs2JDY2Fh69OgB5F6TQUFBtG7dGn9/f6X90aNHadq0KZaWlgwZMoTq1auTmZnJ4cOHmT9/PmfOnGHNmjUaYyxbtowqVaqQlZXFyZMnCQsL48KFC+zateud7ivkJosjIiKoVq0aVatWfefjC/G+fXDJ4qSkJOWvaG3atAHAzs6OevXqsXv37pf+ILl79y5du3bFzs6OBQsWFDpZ/OTJE548eaLRjxBCCCGEEEKIf4bTp0+Tk5NDnz59qFixIgkJCVod78mTJ+jp6aGj8+4e1k1OTubJkyd069aNzz777I36ys7O5tmzZ+jp6b2l6Arv0aNHGBkZ5VkeHh5OYmIiiYmJb9zXv0WlSpXeyTjJyclUqFCBCxcu4ODgkG+b+vXr06NHD4KDgwkICMDa2prRo0dz584djQl7jx8/pl27dtjb23Po0CGNP2o0adKE4cOHs23btjz9V6tWjVq1ailjPX78mKFDh3L//n2KFy/+dndYCPFSH1wZisuXLyvflypVSvnexsYGyH3UoSBffvklFy9eZNWqVZibmxd6zIkTJ2JmZqZ8lS1btuiBCyGEEEIIIYR46wIDAwkICAByk2sqlYqIiAgePHigPNru4eHxyn4cHBy4ePEic+fOVbaLjY1V1g0aNIgpU6ZQvnx5jIyMSEtL47///S8dO3akbNmyGBsbU7VqVaZPn86zZ8+UfpOTk1GpVKxatYpBgwZhYWGBra0tI0aMICsrS2mXkpJC+/btsbGxwdDQkAoVKjB06FAgN5FavXp1ALy8vFCpVISHhwOQlpZGz549sba2xsjICHd3dw4cOKCxbx4eHvj7+7N8+XKcnJwwMDDg999/V8oc7NmzBxcXF4yMjGjUqBHJycmkpaXRvn17SpQoQaVKlVi3bl2eY7Z9+3bq1q2LkZERJUuWZMCAARozYdUlBrZv307btm0pUaIE7dq1e/VJzYf6OMbGxtKnTx+srKyoU6cOkJu8HzVqFOXLl8fAwABnZ2dWr16tsf3Jkydp1qwZVlZWGBsb4+TkxJQpU5T16mORmJiIq6srJiYm1KlTh+PHj2v0k5OTw7Rp03B0dMTAwICKFSsyc+ZMZX14ePhrXX/5ebEMRX6WLVuGvr4+S5YsKVR8b2LKlCmoVCqCg4M5fvw4c+bMYdy4cZQpU0Zps379ei5fvsykSZPynf1uampK586dXzmWqakpOTk5ZGdnK8uePXvG+PHjcXBwwMDAgCpVqrBgwYI82x44cAB3d3eMjIywtramZ8+epKWlabSZNGkSlStXxtDQkJIlS+Lt7c2FCxeUxDlAu3btlHOYnJxc2MMkxAfvg5tZXJAX6+a8KC4ujlWrVjF69GgaNmxYpL5DQ0MZNmyY8vnu3buSMBZCCCGEEEKIf4AxY8ZQtWpVQkJC2LRpEyVLlmTZsmWsWbOGvXv3AhSqZENcXBzNmjWjfv36DB8+HNCc2blx40Y++ugjZs2aha6uLiYmJvz+++84OTnRpUsXTE1NOXHiBGPHjuX+/fuMHTtWo/+wsDBatmzJ999/z+HDhwkPD6dy5cr0798fgO7du3P16lVmz56NjY0Nly5d4pdffgGgd+/eVKpUie7duzN37lzc3Nywt7cnOzubpk2bcv78eSZPnoyNjQ2zZ8/Gx8eHw4cPU7NmTWX8X375heTkZCIjI7GwsFD+TXv9+nWGDx9OWFgYenp6DB48mC5dumBsbEzDhg3p06cPixYtomvXrtSrV4/y5csDsGHDBjp06ECPHj2IiIjg2rVrjBw5kvT0dNauXaux73379qVr167ExcWhq6tbpPP7otDQUJo3b86aNWuUpHz79u05dOgQY8eOxdnZmR07dtC1a1csLCxo2rQpAAEBAdjY2LBkyRLMzMw4e/YsKSkpGn1fv36dwYMHM3LkSMzMzAgNDaVVq1acO3dOmYU9ZMgQFi9eTFhYGHXr1uXw4cOEhIRgZGRE//796d27NykpKaxevbpI19/riImJYcSIEaxYsYKOHTsWKr43YWVlxZQpU+jZsyeJiYl88sknGjWWIfcPBMWKFcPT07NIfWdnZ5OVlaWUoZg2bRre3t6YmZkpbYKDg5k1axajR4/G3d2d+Ph4+vfvT2ZmphLH8ePH8fHxwcPDg/Xr13Pjxg1GjhzJyZMnOXz4MLq6uqxYsYIxY8YQGRnJp59+yp07dzh48CB3796lSpUqbNq0idatWxMVFUXjxo0BsLW1faNjJ8SH5INLFj+fpL1582ae78uVK5fvdr//nlt3a8aMGXn+qjZjxgxWrVqV5xeFmoGBAQYGBm8UtxBCCCGEEEKIt69SpUo4OjoC4OrqioODA3v27EFHR4d69eoVuh9XV1cMDAywsbHJd7vMzEx27tyJiYmJsszLywsvLy8gdwJT/fr1efjwIXPmzMmTLK5bt67yuL6Pjw/79u1jw4YNSgLv2LFjTJw4kQ4dOijbdO/eHQB7e3tlZnHVqlWV+LZu3cqxY8fYtWsXvr6+APj6+lK5cmWioqLYuHGj0ldaWhpJSUl5Jj6lpaWxf/9+Pv74YwCuXr1KUFAQISEhjBkzBoDatWuzadMmNm/ezJAhQ8jJyWHEiBF06NCBxYsXK33Z2trSrFkzxowZo/QH0KJFCyZPnqwx7rNnzzRmYD979oycnByN2dYqlSpPcrlGjRoaY+7bt4+tW7fyww8/0KRJE+X4Xrt2jbFjx9K0aVNSU1O5cOECs2bNUmahq5OALzsWJiYmNG7cmKNHj1K/fn3OnTvHnDlzmD9/Pn379gXA29ubhw8fEhERQd++fbG3t8fe3r7I119RTZw4kYiICNavX0+LFi0AChWfjo5Onhm76u/VCVs1XV1dVCqVxriBgYFMmDCBc+fO8d133+U5P1evXsXa2hpDQ0ON5dnZ2cokv/zO64vHysXFhRUrViifU1NTiYmJITg4WJlV36RJE1JTU4mMjGTAgAHo6uoyYcIESpcuTXx8vJLgL1u2LL6+vuzYsYOAgACOHTuGi4sLoaGhSv8tW7ZUvnd1dQXgo48+0uo5FOKf6oMrQ1G7dm2srKwAlF98V69e5eeffwbAz88PgCpVqlClShXmzJmjsf3Dhw958OCBxqMxmZmZ3L9//12EL4QQQgghhBDiA+Th4aGRKIbc+qxjx46lcuXKGBgYoKenR1hYGNeuXcvzb0x1IlOtatWqGhOW3NzcmDZtGvPmzePs2bOFiungwYOUKFFCSRRD7svIWrduzaFDhzTauri45PuErJ2dnUZiV5149/b2VpaZm5tTqlQppSzkmTNnuHjxIu3bt1dmg2ZlZdGoUSN0dHSUGdFqzZs3zzNuz5490dPTU77GjRvHgQMHNJblV7P3xb4SEhKwtLTE09NTIxYfHx9+++03srOzsbKyonz58oSGhrJ8+fICJ4q9eCzULzdTt9+zZw+Q+/6k58fy9vbm+vXrGmUztSksLIwJEyYQHx+vJIqLEt/+/fs1jnPlypUBqFy5ssby/fv35xn7xx9/5Ny5c6hUqgLrS7+YYAYwMzNT+n1+trDaihUrSEpK4ujRo6xZs4anT5/i5+en3EdHjx4lMzMzTxmTDh06cOvWLc6cOQPk3hMtW7bUqMfdpEkTzM3NlXvCzc2N3377jWHDhnHo0CEyMzPzP9BC/I/64JLF+vr6REVFAbnJ4ooVK+Ls7My9e/ewtrZm5MiRQO4LDk6fPq28DC88PJycnByNL7WQkBAyMjLe+b4IIYQQQgghhPgwqN+T87yQkBCmTp1Knz592LFjB0lJSYwePRrITSQ/78X35ujr62u0WbduHV5eXoSFhfHRRx8pj8O/THp6usa7fJ6P9cUarfnFX1Bcr4pX/e/sVq1aaSQXjY2Nyc7OzpM0zW/s8PBwkpKSlK8+ffrg5uamsSy/F6G92FdqaippaWkacejp6dG7d2+ysrK4du0aKpWKhIQEnJ2d+fLLLylbtiy1atXKU9u5oGPx/H7n5ORgbW2tMZaPjw/AO0sWb9iwgerVq1O/fn2N5YWNr2bNmhrHeevWrUDuTPXnlz9fxgRya0MPGDAAHx8fQkNDGT9+fJ5avnZ2dty6dYsnT55oLD948KBynvPj7OxMrVq1qFOnDh07duS7777jjz/+UOqGp6enA3nPv/qz+npPT0/P93p7/p4IDAxk5syZ/PDDDzRo0ICSJUsyZMgQHj16lG9sQvyv+eDKUEBuvSMTExOmTZvGqVOnMDQ0pHXr1kyaNAk7O7v3HZ4QQgghhBBCiH+Z/GZLrl+/nn79+hESEqIs2759+2v1b2try9KlS1m8eDHHjx9n/PjxdOjQgdOnT1OxYsV8t7G0tNQoz6h248YNLC0tXxn/61L3PWfOHOrWrZtn/Yv/Ls9vbAcHBxwcHJTP8fHxnDlzhlq1ar107Bf7srS0pGTJkuzYsSPf9upkuqOjI+vXryczM5PDhw8zatQoAgICuHLlCsWLF3/pmM+PpVKpOHTokJJIfp6Tk1Oh+nlTW7dupXXr1rRp04bNmzcrs2gLG5+pqanGcVYnfKtXr65xTl4UFRXF5cuX2blzJ2XKlGHNy7l5KwABAABJREFUmjUEBQVpJPU9PDxYunQp+/btU578hv8r7RAfH1+ofXR2dgZyX0yo3jfILUH6/Av1bty4obG+MPeEjo4OQ4YMYciQIVy5coW1a9cycuRIrK2tldIrQvwv+yCTxQBdunShS5cuBa5/1QvvCttGCCGEEEIIIcSHRV9fP8/MxsJu9+KM4Jd59OiRRlIuOzs7z8vdikpHR4fatWszfvx4tm7dytmzZwtMFtevX5+pU6eSkJCglLnIysoiLi4uz6zTt6lKlSrY29tz/vx5vvzyS62NUxje3t5MmTIFfX19XFxcXtleT0+PRo0aMXLkSFq0aMHVq1eV0huvoq5Pffv2baX2cX5e9/orLCcnJ/bs2UPjxo3p1KkT69atQ1dXt9DxvY4zZ84wefJkQkNDlbIVs2fPJiAggM2bN/P5558D0K5dO8LCwggNDeWzzz7D1NT0tcb766+/ALC2tgagTp066OnpsX79eiXxDPD9999TqlQp5RzWr1+fzZs3M336dIoVy0157d69m4yMjHzviTJlyjB8+HBWr17NqVOngLwzyoX4X/PBJouFEEIIIYQQQoj8ODs7k5WVxaxZs3B3d6dEiRKFmvXp7OzM3r172b17NxYWFlSoUEF5Z05+fHx8WLRoEVWrVsXa2ppvv/32tZKEd+7cwdfXl27duuHk5MTTp0+JiYnB3NwcNze3Ardr3rw5derUoWvXrkyaNAkbGxtiYmK4du0ao0aNKnIchaVSqZgxYwadO3fmwYMHNG/eHBMTEy5evMj27duJiooqdAL2Tfn4+BAQEICfnx9ff/01Li4uPHjwgJMnT3L27FkWL17MH3/8wfDhw+nQoQOVKlXizp07TJw4EQcHh3zrIhfE0dGRL7/8km7duhEcHEzdunXJzMzkzJkz7Nu3j82bNwOvf/0VRfXq1UlISMDT05MvvviCFStWFDq+1zFgwADKly+vlP4E8Pf35/PPP2fIkCH4+PhgYmKCoaEh69evx8/PDzc3N4KCgqhevTrZ2dn8/fffrFu3Lt8E8l9//UVWVhbPnj3j/PnzjBs3DmNjY+Ulj9bW1gQFBTF16lQMDQ2pV68eO3bsYPXq1cTExCgvzAsLC8Pd3R1/f3+CgoK4ceMGI0eOpE6dOjRr1gyAfv36YWFhQb169bCwsOCnn37i999/Z+DAgQCULl0ac3Nz1qxZQ4UKFTAwMMDFxSXf2dpC/BtJslgIIYQQQgghxL9KQEAAAwcOZOLEidy8eZOGDRsW+DKu50VFRTFgwADatGnDvXv3WLZsGYGBgQW2j4mJoX///gQFBWFsbExgYCCtWrUqsC5rQQwNDalevToxMTFcunQJIyMjatWqRUJCgjKzMj+6urrs2LGDESNGEBwczIMHD3BzcyMhISFPvdm3rV27dpibmzNhwgRWrVoF5JaW8PPzK7A+srZs2LCBSZMm8e2333Lx4kXMzMyoVq0aPXr0AHKTf6VLl2bixIlcuXIFMzMzGjRowKpVq5QkY2HNnj0bJycnFixYQGRkJMWLF8fJyUnjxWuve/0VlZubG7t27cLHx4d+/fqxcOHCQsVXVCtXrmTv3r3s2bMHAwMDjXWzZs2iatWqREZGMnnyZADq1q3L77//zqRJk4iOjubKlSvo6enh6OhIu3btGDRoUJ4x1OdKpVJhY2NDnTp1WL9+PR999JHSZurUqZibm7N48WLGjx+Pg4MD8+fPp1+/fkqbmjVrkpCQQGhoKG3atMHExIQWLVowffp05Vy7u7uzaNEiFi1axMOHD6lYsSIzZ86kV69eQO7s/mXLljFq1Ci8vLx48uQJFy5ceGmJDiH+TVQ5UouhyO7evYuZmRl37tyhRIkS7zucD0bN4BVa7X9cWw+t9l/th7xv8H2bTN27abV//1NbtNp/H8+Cy8K8qQoD1mmtbwC3/kX7n/miWn4879t+3yZXr3Ja7T9x9Tit9u/u4/vqRm+gdErhZ4sUla173hfKvE3R+zdotf/n68hpw6XLg7XafxWnnlrtv9uZClrrO9S5stb6Bpga+5NW+5ffuS/3If/ODfx4oNb6/rf6UP9t8PjxYy5cuECFChUwNDR83+EIIYQQQssK+7tf5x3GJIQQQgghhBBCCCGEEOIfSspQCCGEEEIIIYT418vKyipwnUqlKnI5AiGKQq4/IcSHQpLFQgghhBBCCCH+9fT09ApcV758eZKTk99dMOJ/jlx/QogPhSSLhRBCCCGEEEL86yUlJRW47sWXdgnxtsn1J4T4UEiyWAghhBBCCCHEv16tWrXedwjif5hcf0KID4W84E4IIYQQQgghhBBCCCGEJIuFEEIIIYQQQgghhBBCSLJYCCGEEEIIIYQQQgghBJIsFkIIIYQQQgghhBBCCIEki4UQQgghhBBCCCGEEEIgyWIhhBBCCCGEEEIIIYQQSLJYCCGEEEIIIcS/UEZGBiqVitjY2PcdykvFxsaiUqlITU1936FoSEtLo1WrVlhYWKBSqdi8eTPR0dHs2LGjSP0kJycTHh7O1atXtRTpm3n69Ck9evSgZMmSqFQqoqOj33dI71S/fv2wsrLi1q1bGstTUlIwNTVlxIgRGssfPHhAVFQUrq6uFC9eHENDQxwdHenfvz9//vmnRluVSqXxZWNjQ0BAQJ5279LrXMMFUalUTJs2rcD1gYGBVKtWrcj9Fna78PBwDh8+nO86bZyn8PBwVCoVZcqU4dmzZ3nG/Oyzz1CpVAQGBhZ+Z8U/UrH3HYAQQgghhBBCiH+OCV3bvrexw1ZteG9jC00zZsxg3759rFixglKlSuHk5MRXX32Fv78/zZo1K3Q/ycnJRERE4O/vj52dnRYjfj0rVqxg5cqVLF++nEqVKuHg4PC+Q3qnJk2axObNmxkxYgTLly9Xlg8aNAhLS0siIiKUZampqXh6enLx4kWCgoJo0KAB+vr6nDx5ksWLF7NlyxauXbum0X9QUBCdO3cmJyeHlJQUoqKiaNKkCadOncLc3Pxd7aYiOjq6yNfw6xozZgwPHjzQWv8REREUL14cd3d3jeXaPE96enqkpqZy4MABPDw8lOUXL17kyJEjFC9eXGv7K94dSRYLIYQQQgghhBD/Q2JjYwkPDyc5ObnANv/9739xcXGhRYsW7yyuR48eYWRk9M7Gg9z9tLOzo0uXLm/c1/uIHyAnJ4enT59iYGCQZ52DgwPh4eEFzva0sLBg2rRpdO/enR49euDh4cHmzZvZsmULW7ZswcTERGk7YMAAzp8/z9GjR/n444+V5Y0bN2bgwIEsWbIkT//lypWjXr16ymdHR0dq1KjB4cOH30nC9nWFh4eTmJhIYmLia/dRqVKltxdQEWjzPOnr6+Pt7c2aNWs0ksVr167l448/RldXVzs7Jd4pKUMhhBBCCCGEEOKDt2jRIhwcHDA2NsbLy4uzZ8/maRMbG4uLiwuGhoaUKVOGsLAwsrOzNdqkpKTQtWtXrK2tMTIyomHDhhw/flyjjYODA4MGDWLq1KmUKVMGY2NjWrZsmWe2XkpKCv7+/hgbG1O2bFlmzpzJV199le/s1bNnz+Lp6YmxsTEODg4sXbpUY7360fQ9e/bg4uKCkZERjRo1Ijk5mbS0NNq3b0+JEiWoVKkS69ate82jmEulUrFx40YOHjyoPJru4ODAxYsXmTt3rrLsVSU+EhMTady4MQC1a9dWtlOvU6lUbN++nbZt21KiRAnatWsH5M72rV+/PpaWllhYWODh4cGxY8c0+g4PD6d48eL8+eef1K9fH2NjY6pVq8YPP/yg0W7r1q3UqlWL4sWLY25uTq1atZQyBA4ODkyfPp3Lly8rsakT6AcOHMDd3R0jIyOsra3p2bMnaWlpSr/JycnKMejTpw9WVlbUqVNHOX6TJ08mLCyMUqVKYW5uztdff01OTg4//vgjNWrUoHjx4nh5eXH58mWNeJ88ecKoUaMoX748BgYGODs7s3r1ao026mthx44dfPLJJxgYGLBt27ZXndYCdevWjcaNG9O/f39u375NUFAQn3/+ucYfCi5evMjGjRsZOHCgRgJSTUdHhz59+rxyLFNTUwAyMzM1lm/atIkaNWpgaGiInZ0dw4YN4/HjxxptLl68SNu2bTEzM8PExARfX988pRJedb6Leg2/ifzKSRw6dAhXV1cMDQ1xcXFh9+7d1KhRI99kfmJiIq6urpiYmFCnTh2Nn0Pq+yg4OFjZl8TERK2fJ4BOnTqxYcMGjXWrV6+mc+fOr+xXfBgkWSyEEEIIIYQQ4oMWHx9P3759ady4MXFxcXh5eSmJR7UZM2bQu3dvfH192bZtGyEhIcyePZuwsDClTXp6OvXr1+fEiRPExMSwceNGTExM8PT05ObNmxr9xcXFERcXx7x585g3bx5Hjx6ldevWyvqcnBxatmzJiRMnWLBgAXPnzmXTpk1s2rQp333o2LEjPj4+xMXF0bhxY3r16sWuXbs02vw/9u47qoqra+Dw74L03kSwoagosYENiQVBBBVFY0XRoMb6osaKiEY09oq9RrFEMBbsGk2siajExBRfo7GgwY6ALVgo3x8s5vNSFNAr0Xc/a7HCPXPmzJ45A8R9z91z+/ZtRowYQVhYGF9//TWXL1+me/fudOnShRo1arB161bq1KlDYGAg165dK/L1jI2NpUmTJri4uBAbG0tsbCwxMTGUKlWKjh07Km2tW7d+5Tiurq4sXrwYgDVr1ij7vaxfv344OjoSExOj1MeNj4+nZ8+ebN68mY0bN1KuXDmaNGnCxYsX1fZ98eIF3bt3JygoiJiYGEqWLEmHDh24f/8+AJcvX6Zjx4589NFHxMTEsGnTJjp37kxycjKQNYddunShVKlSSmx2dnacOXMGb29vTExM2Lx5MzNmzGDXrl20bNky15sLoaGhZGZmEhUVxaxZs5T2RYsWcf36ddavX8/w4cOZNWsWI0eOZNiwYYSGhrJ+/XouXrxInz591Mbr3Lkzy5cvZ8SIEezevRtfX18CAwPZt2+fWr+bN28yZMgQhg0bxv79+6ldu/Yr5+J1li5dytWrV6lbty4pKSksWLBAbfuxY8fIzMykRYsWhRo3IyODtLQ0Xrx4QXx8PKNHj8ba2lptVerOnTvp2LEjzs7ObN++ndGjR7Ns2TICAwOVPo8ePcLDw4NffvmFZcuWsWHDBu7fv0+TJk2UhHtB5ruw9/DbdOvWLXx9fTExMeGbb75h1KhRDBw4kBs3buTqe/v2bYYMGcKoUaP45ptvePr0Ke3bt1cStNk/R4MHD1bOxdXVVaPzlK1NmzY8e/aMAwcOAPDf//6X3377ja5duxbyioh/KylDIYQQQgghhBDivTZ58mQaN27MmjVrAPDx8eHp06d8+eWXQFaiacKECYwePZqpU6cC4O3tja6uLsOHD2fUqFFYWVkRERFBSkoKp0+fpmTJkgB4eXlRpUoVZs+ezcyZM5VjPnr0iH379mFmZgZA2bJl8fLy4ttvv8XHx4d9+/bx888/c+zYMRo3bgyAp6cnZcqUybNWa8+ePQkNDVXiv3LlChMnTsTX11fpk5SUxNGjR5UVgzdv3mTw4MGEhIQwfvx4IGsF77Zt29i+fTtDhw4FshJBLz+QKvv7tLQ0tRhKlMhKEbi5uSkPtnv5o+l6enrY2tqqtb2Kqakpzs7OAFSvXp26devm6tO2bVtmzJih1vbFF1+oxert7c3p06eJjIxU5g+yHk43ffp05WPyTk5OVKhQgX379hEYGMgvv/zCixcvWLRokbJS0sfHR9nfxcWFUqVKoaenp3ZOU6ZMoVSpUuzevRsdHR0ga359fHzYu3cvbdq0UfrWrl2bVatW5Tove3t71q9frxxz586dzJs3j3PnzlGtWjUAbty4weDBg0lJScHc3JzDhw+zc+dOvv32WyXZ5+3tza1bt5gwYQItW7ZUxk9OTmbfvn00aNBA7bg55zT7Gr7crqWlhZaW+tpBJycnAgMDWb16NVOmTKFs2bJq27MfUJizPee9lX0PZQsJCSEkJER5bWlpSUxMjPJzA1mrxN3c3JQV1L6+vhgaGtK/f39+//13atSowZo1a7h27Zra9WvatCnlypUjIiKCOXPmFGi+87uH8/oZyczMVLtuKpXqjcoszJs3jxIlSrBnzx4lvgoVKii/H16W82fdyMiIZs2acerUKRo1aqTEn7N8hCbnKVv2Jymio6Np3bo1UVFRNGzYkAoVKhTqeoh/L1lZLIQQQgghhBDivZWens6ZM2do3769WnvHjv//oL4TJ07w+PFjOnXqRFpamvLVvHlzUlNT+eOPPwA4cOAAzZo1w9LSUumjra1N06ZNiYuLUxu/WbNmaokUT09PLC0tOXXqFABxcXGYm5urJYKySw/kJWf8HTp04MyZM2orWe3t7dU+Wl6lShUAmjdvrrSZm5tTsmRJtfIGkyZNQkdHR/nq06cP165dU2vLToq+a3mt7Dx//jzt27fH1tYWbW1tdHR0uHDhQq6VxVpaWmrn7uDggIGBAQkJCQDUrFkTbW1tunXrxq5du3jw4EGBYjp+/Dj+/v5q16RFixaYm5vzww8/vDZ+yEryvqxKlSrY29sric7sNkCJ98CBA1haWuLp6al2n3p7e/PLL7+o3QtWVla5EsVArjm9du0affr0UWubNGlSrv3u3r1LTEyMUs4gP9nlD7K1bdtWbeyffvpJbfvQoUOJi4sjLi6OPXv20LBhQ/z9/fntt98AePz4MWfPnlX7eQXo0qULgHK9jx8/TvXq1dWun6WlJd7e3kqfos43QO/evdXO48svv+TYsWNqbW9agzguLo5mzZopiWJAKbeSU86f9ew3XbLvldd52/OUU0BAADt27CA1NZXo6GgCAgIKFJd4P8jKYiGEEEIIIYQQ76179+6RlpamrATOZmtrq3yfmJgIZJVFyEt2YjUxMZGTJ0/mmTjNmSjKebzstuy6xbdu3cLGxibPPnnJK/4XL16QmJionEvOFcm6urr5tr9c77Vfv374+fkpr3fv3s2KFSvYuXNnnrG8Sy/PE2St2G7RogU2NjbMnTuX8uXLo6+vz2effZarhq2BgYFyDbK9fO5VqlRh9+7dTJ06lfbt26OlpYWvry+LFi2iXLly+caUnJycK67sWF+uW5xX/NnympP85i873sTERJKSkvJN3N+6dYsyZcq88rg539Ro27Ztrvm3t7fPtd+IESPQ0dEhOjqaLl26sGnTJiVh+/I+CQkJSpIbICIigvDwcM6cOcOAAQNyjVumTBm1FeVeXl6UKVOGSZMmsWXLFlJSUsjMzMx1PmZmZujp6SnX+1Vzkv1mT1HnG7JWNwcHByuvV6xYwZkzZ1i+fLnSltcDBAvj1q1bVK5cOVd7Xr8TXnev5EdT85STj48POjo6fPHFF1y9epXOnTu/Mi7xfpFksRBCCCGEEEKI95aNjQ0lSpTIVVP4zp07yvfZK/e2bduW6+PZgPLxaUtLS3x9fZXyFS/LmSjKebzsNjs7OwDs7Oy4d+9enn3ycvfuXUqXLq0Wv46ODtbW1nn2Lwx7e3u1BOEff/yBrq5unmUh3rWcKyBjY2NJSEhg9+7d1KpVS2l/8OCBkigtDF9fX3x9fXn48CH79+9n2LBh9OrVi++//z7ffSwtLfOcpzt37uRaBZoz/jdhaWmJjY2N8kC2nF5OKuZ33Jxzqquri4ODwyvn+vDhw2zYsIF169bRuXNntm3bxvDhw2nVqpWyCrZJkyaoVCoOHDiAp6ensm+lSpWArBXCBaGnp0fFihU5d+4ckJUUValUua73gwcPePbsmXK9LS0tuXDhQq7xcs5JUeYbslalv/zgyd27d3Px4sW3+jNS2N8JRaGpecpJR0eHDh06MHfuXLy8vPJ980K8n6QMhRBCCCGEEEKI95a2tjaurq7ExMSotb+8Gq5hw4YYGhqSkJBA3bp1c31ZWVkBWeUc/vvf/1KtWrVcfWrUqKE2/uHDh9U+5n7o0CGSkpKU0gD16tUjJSWFY8eOKX0eP36cb9IqZ/zZD6t7kxqpb1vOFcsF3QdevyIyW2pqqtp+kFVGJD4+vlDHzcnU1JTOnTvTtWtXzp8//8q+jRo1Yvv27Wr1ag8ePEhKSgqNGjV6ozhepXnz5ty7d09J5Of8yrmK+m14/vw5AwcOpFmzZvTo0QPIehjko0ePlDrYAOXLl6dDhw4sXrz4tdfvVZ4+fcrly5eVN0GMjY2pXbt2rtWr33zzDYByvRs1asTvv/+uljBOTk7mu+++y3NO8pvvotzDb0u9evU4dOgQjx49UtqOHz+ea7V6Qeno6OQ6F03NU14+++wz2rRpo9RGFx8OWVkshBBCCCGEEOK9FhYWhr+/P7169aJr166cOXNGebgYZK1enDRpEqNHjyYhIQEPDw+0tbW5cuUKO3bsYOvWrRgaGjJ8+HC+/vprmjZtytChQylXrhz37t3j1KlT2NvbM2zYMGVMExMTWrZsyZgxY0hJSSEkJIT69esrD9Rq2bIlrq6udOvWjWnTpmFubs7MmTMxMTHJ9XAxgHXr1mFgYICrqyvR0dEcO3aMPXv2aP7iFUK1atU4dOgQBw8exMLCggoVKiiJ9vxUqVIFbW1tVq9eTYkSJShRosQrV2u6ublhbGzMf/7zH8aMGcONGzeYMGGC2qrrglq+fDmxsbH4+vpiZ2fH1atX2bBhg/LwuPyEhYXh7u6On58fgwcP5s6dO4wZM4b69esrD9PTBG9vb9q0aYOvry+jR4+mZs2aPHnyhHPnznHp0qU8H6T3pqZPn87Vq1fZsWOH0mZvb8+XX37JiBEjCAoKonbt2gAsXboUT09PGjZsSHBwMI0bN0ZfX58bN26wdu1atLS0MDQ0VBv/+vXrnDx5EsgqGbN48WLu37+vVgohPDycdu3aERgYSGBgIBcuXGDs2LF06NBBeZOmV69ezJs3j9atWzN58mT09fWZMmUKJUqU4PPPPwcKNt9FuYdf5ffff8+V6DY2NlZ7MGW2YcOGsWTJElq3bs2oUaNISUlh4sSJWFtb5/k74XWqVavGjh07aNy4MUZGRjg5OWFiYqKxecqpfv36bN++vdBxi38/SRYLIYQQQgghhFCEbchdn/Lfrm3btixbtowpU6YQHR1NgwYN2LRpk9oDwEaMGEHp0qWZO3cuCxcuVB5Y5efnp6zYtLKy4uTJk4wbN46QkBDu379PyZIlcXNzy/UAuvbt21OmTBkGDBhAcnIy3t7eLFu2TNmuUqnYsWMH/fv3p1+/flhYWDBkyBAuXLjA2bNnc51DVFQUoaGhTJo0iZIlS7JixQqNJiaLYurUqQwcOJAOHTrw6NEj1qxZQ1BQ0Cv3sba2ZvHixcycOZP169eTlpZGZmZmvv1tbW3ZvHkzI0eOxN/fnypVqrB8+XJmzJhR6Hhr1qzJrl27GD58OPfv36dUqVIEBATkWWbkZXXq1OHAgQOEhobSoUMHjIyMaNu2LXPmzNH4Su8tW7Ywffp0lixZwrVr1zAzM6N69er06tXrrR/r0qVLTJs2jdGjR+Pk5KS2LTg4mMjISAYOHMiJEydQqVRYW1tz4sQJ5s+fz+bNm5k3bx7p6emUK1eOZs2acfbsWeVBbNkWLlzIwoULgaw3bapVq0ZMTAzt2rVT+rRt25bNmzczadIk/P39sbS0pF+/fkybNk3pY2JiwpEjRxg+fDj9+vUjPT2djz/+mGPHjimlZQoy30W5h19l3bp1rFu3Tq3N0dGRS5cu5eprZ2fHvn37GDJkCB07dsTR0ZH58+cTHBys9rDMglq8eDFDhw6lZcuWpKamcvjwYTw8PDQ2T+J/hyrzVb+lRZ4ePnyImZkZDx48wNTUtLjDeW/UGbXu9Z3ewJcdPTQ6fvVv837K7dti4t5Do+P7nd/x+k5voK9nd42NXWHgJo2NDeA6oK9Gx197pvB/+AvDxevVD2t4U0c2vvp/pt+Uu7ePRscvlfBmTy1+FTv3vB9Q87ZEHNXsP9bzWvHwNl3/e4hGx6/q1Fuj4/e4WEFjY4dWq6SxsQFmRf6o0fHlb+6rvc9/c4M+GqSxsT9U7+u/DZ4+fcrVq1epUKEC+vr6xR3Oe8fBwQE/Pz8WLVpUqP2eP3+Os7MzjRs3Zs2aNRqKTgjxvvjrr7+oWrUqq1ev5tNPPy3ucMQHrqB/+2VlsRBCCCGEEEIIoQErVqwgIyMDJycnkpOTWbp0KfHx8URHRxd3aEKIYhAaGkrNmjWxt7fnypUrTJ06FTs7Ozp06FDcoQmhkGSxEEIIIYQQQgihAfr6+kyfPl15OFutWrXYs2fPK2v2vk8yMzNJT0/Pd7uWllaRarEK8aF6/vw5ISEh3LlzBwMDAzw8PJg1axbGxsbFHZoQCkkWCyGEEEIIIYQQhZCd/H2dnj170rNnT80GU4zWrl37ylq6EyZMIDw8/N0FJMS/3Jw5c5gzZ05xhyHEK0myWAghhBBCCCGEEIXWpk0b4uLi8t1ub2//DqMRQgjxNkiyWAghhBBCCCGEEIVmZWWFlZVVcYchhBDiLZLiQUIIIYQQQgghhBBCCCEkWSyEEEIIIYQQQgghhBBCksVCCCGEEEIIIYQQQgghkGSxEEIIIYQQQgghhBBCCCRZLIQQQgghhBBCCCGEEAJJFgshhBBCCCGEEEIIIYRAksVCCCGEEEIIIcQ7ER4ezokTJwq1T2RkJCqVisTERADi4+NRqVRs2bJF6ePg4EBwcPBbjbUgoqKiUKlUfP/992rt6enp1K1bl/r165ORkaG0Z2Zm8vXXX+Pp6YmlpSW6urqULl2ajh07snfvXrUxPDw8UKlUypeZmRlubm7s2LHjnZxbXrZv386SJUveylgeHh74+fnluz3nvBdUQfeLjIxk48aNeW7TxDwdOXJE6fPnn3/mOmZYWBgqlQoHB4dCna8Q4u0rUdwBCCGEEEIIIYT49zi8dmWxHbvZp32L7djvwsSJEzE2Nsbd3b3IY9jZ2REbG0uVKlXeYmRFExAQwJo1axg0aBC//fYbenp6ACxcuJCzZ88SFxeHllbWGrXMzEwCAwOJjo6mZ8+eDB48GCsrK65fv86mTZto3bo1f/75J05OTsr4H3/8MbNnzwYgJSWFr776ik8++YRjx47x8ccfv/Pz3b59Oz/99BODBg3S+LFat25NbGws5ubmGhk/MjISY2NjunXrptau6XkyNjYmOjqa8PBwtfbo6GiMjY01cq5CiMKRZLEQQgghhBBCiA9KZmYmz58/V5KXHxI9PT3c3NzeybGCgoKArMRifpYsWUL16tWZNm0a4eHhJCQkMH78eIYMGYKLi4tav40bN7JmzRpl3GyBgYHs3bsXQ0NDtXZzc3O1c23evDl2dnbs2LGjWJLFBXXkyBGaNWtGZmZmkcewsbHBxsbmLUZVMJqeJ39/f6KiotSSxadOneLatWt07ty50CvvhRBvn5ShEEIIIYQQQgjxXgsKCqJ69ers3buXWrVqoaenx65du4iNjcXT0xMjIyPMzMzo1q0bd+/eVdt3+vTpVKpUCX19fWxsbGjevDlXr14F/r/kw4YNGwgODsbCwgI7OztGjhxJWlqa2jjnz5/H398fMzMzjIyMaN26NZcvX1a2q1QqAEaNGqV8HP/IkSOFPte8ylDkdP/+ferVq0edOnWUcgSvi6+oKlWqRGhoKNOnT+fixYsEBwdjbm7OpEmT1PrNnTuXevXq5UpAZmvVqhVly5Z95bFKlCiBgYEBL168UGv//fff8fHxUea5Y8eOXL9+Xa3P06dPGT58OPb29ujr61O7dm1iYmLU+pw7d45WrVphZWWFoaEhTk5OzJw5E8i6x9auXcu5c+eU+cvvXN6GvMpJJCQk4Ofnh6GhIWXLlmXevHl8/vnneZZu+Pvvv2nZsiVGRkZUrlyZdevWKds8PDw4evQoe/bsUc4lO3mryXkC6Ny5M5cuXeLnn39W2jZu3IiXlxclS5Z85bhCiHdDksVCCCGEEEIIId57N2/eZMiQIQwbNoz9+/dja2uLh4cHZmZmbNq0iRUrVhAXF4e/v7+yz7p16xg/fjx9+vRh//79rFq1itq1a/Pw4UO1scPCwtDS0uKbb75hwIABzJkzh1WrVinbr1y5gru7O0lJSUot2Hv37uHl5cWzZ88AiI2NBWDw4MHExsYSGxuLq6vrW78Ot2/fxsPDAz09PQ4dOoS1tXWB4nsTY8aMoXz58vj4+LBjxw4WLlyoVlLg77//5sqVK7Ro0aJQ42ZmZpKWlkZaWhqJiYlMmTKFGzdu8Mknn6iN3aRJE+7fv8+GDRtYtmwZP//8M02bNuXRo0dKv+7du7N8+XJGjx7N9u3bcXZ2pkOHDuzcuVPp06ZNG5KTk/nqq6/Ys2cPI0eO5MmTJwCMHz+eVq1aUbFiRWX+xo8fX9RLVmiZmZn4+/tz9uxZli9fzuLFi9m2bRvbtm3Ls3/37t1p0aIF27dvx8XFhaCgIM6fPw9krR52cXHh448/Vs7ls88+0+g8ZbO3t6dp06ZERUUBkJGRwTfffENAQEAhr4gQQlOkDIUQQgghhBBCiPdecnIy+/bto0GDBgA0bdqUunXrsm3bNmVVb40aNZQVyK1ateL06dPUrFmT0NBQZZyXk8nZGjRowIIFCwDw9vbm8OHDbNmyhQEDBgBZtYgtLS05ePAg+vr6ALi7u1OxYkW++uorBg0apHxMv1y5chorI3H9+nW8vLxwcHBg+/btGBkZFTg+yHow3culE7K/f3kVtUqlQltbW+24enp6jBs3jp49e+Lt7U27du3Utt+8eRMg14rUzMxM0tPTldfa2trKXAHs3bsXHR0dte1z586lcePGStu8efN48eIFBw4cwNLSEgAXFxecnZ2JjIxk8ODB/Pbbb2zbto1ly5bRv39/AHx9fYmPj2fixIm0bduWxMRErl69yvz582nTpg0AzZo1U47j6OiIjY0N165dyzV/Oc8j+/ucq89LlCh6Cmbfvn38/PPPHDt2TDl/T09PypQpk2dd4+DgYGVe3d3d2bNnD1u3bmXcuHE4OztjamqKsbGx2rmcOnUK0Mw8vSwgIIAvv/ySmTNncvjwYVJSUvjkk084e/Zs4S6KEEIjZGWxEEIIIYQQQoj3npWVlZIo/ueff/jxxx/p1KkT6enpyqrHKlWqULZsWeLi4gBwdXXll19+Yfjw4fzwww95fmweyLXS0tnZmYSEBOX1gQMHaNu2LSVKlFCOZWFhgYuLi3IsTbt8+TKNGzfG2dmZ3bt3K4niwsTn5eWFjo6O8rVu3TrWrVun1ubl5ZXr2JmZmaxYsQKVSsWvv/5KSkpKnjG+nGAEmDNnjtrYc+bMUdveqFEj4uLiiIuL49ChQwwbNozhw4ezdu1apc/x48fx9PRUEsUAVatWpVatWvzwww9KH4BOnTqpjd+lSxd++eUXnjx5gpWVFeXLlyc0NJS1a9eqze/rrF27Vu08mjdvDqDWpqOjQ3x8fIHHzCkuLg5zc3O1BKyxsXGe8wHq96yRkRHly5cv8DlpYp5e1qFDB27fvs2PP/5IVFQUrVq1wtTUtECxCSE0T1YWCyGEEEIIIYR479na2irfJycnk56ezrBhwxg2bFiuvn///TeQVYf20aNHrFixgnnz5mFmZsann37K9OnTMTAwUPrnXLmpq6vL06dPldeJiYlEREQQERGR61i6urpveGYFc/r0aZKSkliwYEGuB/sVNL7ly5erlW6YOHEiABMmTFDaTExMco2xevVqfvzxR7Zs2UKfPn0IDQ1l6dKlynZ7e3uAXMnKHj164OHhAUC9evVyjWtmZkbdunWV182aNePChQuMHDmSnj17olKpSE5Opnbt2rn2tbW1JSkpCci6H3R0dNQSytl9MjMzSUlJwcjIiAMHDhAWFsZ//vMfnjx5Qp06dZg7dy5NmjTJNf7L2rRpo5Z0P3PmDAMGDMj1RkH2dSiKW7du5fnAu/zq/L7uns2LJufpZZaWlvj4+BAZGcnWrVvVSroIIYqfJIuFEEIIIYQQQrz3Xk5ImZubo1KpGDt2bK6SCADW1tYAaGlpMXToUIYOHcqNGzeIjo5mzJgxWFtbF6oeraWlJa1bt1Y+9v+yvJKrmhAQEECJEiXo2rUru3fvVltxWtD4nJyc1LZZWVkBqCUCc0pMTCQkJIRevXrxySefcPfuXf7zn//Qu3dvJbFYtmxZKlasyIEDB9QefGdra6uW5C+IatWqsWvXLu7evYutrS2Wlpa5HloIcOfOHapUqQJknf+LFy9ITk7GwsJCrY9KpVISq1WqVGHz5s28ePGCEydOMHbsWNq0acONGzfUajDnZGVlpVwrgMePHwOvvm6FZWdnx71793K153XuRaXJecopICCAHj16YGxsTOvWrd84diHE2yNlKIQQQgghhBBCfFCMjIxo2LAh58+fp27durm+HBwccu1TunRpRowYQc2aNZUHgRVU8+bN+eOPP3Bxccl1rJcTsDo6Oq9d3fkmIiIi+PTTT/H39+fHH38sdHxFMXLkSFQqFTNnzgSgX79+1K1blwEDBpCRkaH0Gz58OKdOnWL9+vVvdLw//vgDHR0dpWxBo0aN+P7770lOTlb6XLhwgd9++41GjRopfQA2b96sNtbmzZtxcXFRK9kBWfPUtGlTxowZw8OHD5WaywVZnasp9erVIyUlhWPHjiltjx8/5vvvvy/SePmdi6bmKSd/f3/8/f0ZO3asUkdbCPHvICuLhRBCCCGEEEJ8cGbNmoWnpyddunSha9euWFhYkJCQwMGDB+nVqxceHh70798fCwsL3NzcsLCw4Mcff+TXX3/NcwXuq0ycOJF69erh4+NDv379sLW15fbt2xw9epTGjRsTEBAAZK223LFjB40bN8bIyAgnJ6e3vvJ46dKlpKam0qpVK7777jvq1atX4PgK6+jRo6xdu5bVq1crK2u1tLRYunQp9evXZ8mSJQQHBwMwaNAgTpw4QVBQEIcPH6ZNmzZYW1tz//59Dhw4AORehZ2SksLJkycBePToEXv37mXv3r307dtXKRMybNgw1qxZQ4sWLQgLC+Pp06eMGzeOcuXKERQUBEDNmjX55JNPGD58OKmpqTg5ObFhwwZOnDjBjh07APjtt98YMWIEXbp0wdHRkQcPHjBt2jQcHBxwdHQEsuZv9erVREVFUblyZaytrfN846Ggbt++zZYtW3K157XStmXLlri6utKtWzemTZuGubk5M2fOxMTEBC2twq8DrFatGmvXrmXXrl3Y2dlhb2+Pvb29xuYpJyMjI7Zt21bouIUQmifJYiGEEEIIIYQQimaf9i3uEN4Kd3d3fvjhByZMmECvXr14/vw5ZcqUwcvLi0qVKil9Vq5cycqVK/nnn3+oWLEi8+bNo0+fPoU6VqVKlTh9+jTjxo1j0KBBPH78GDs7O5o0aULNmjWVfosXL2bo0KG0bNmS1NRUDh8+rNSCfVtUKhWrV6/m2bNn+Pj4cOTIEWrWrFmg+Arj+fPnDBw4kMaNGytJ2Wyurq4MGjSIcePG0bFjR0qVKoVKpWLDhg20bNmSVatW0bt3b548eYKNjQ1ubm7s3r07V5L0xx9/pGHDhgAYGBhQsWJFZs2axZAhQ5Q+ZcuW5ejRo4wcOZLu3bujra2Nt7c3c+fOVUtqbtiwgbFjxzJ9+nSSkpKoWrUqW7ZsoU2bNgCUKlWKUqVKMW3aNG7cuIGZmRmNGzdmw4YNaGtrA9CnTx9Onz7N4MGDuX//Pp9++imRkZFFun6QVds450P34P9rar9MpVKxY8cO+vfvT79+/bCwsGDIkCFcuHCBs2fPFvrYo0eP5tKlS/Ts2ZOUlBQmTJhAeHi4xuZJCPH+UGVmZmYWdxDvm4cPH2JmZsaDBw/kiZ2FUGfUOo2O/2VHD42OX/1bzdZRMnHvodHx/c7v0Oj4fT27a2zsCgM3aWxsANcBmv0H0dozZhod38WrnEbHP7LxS42O7+7to9HxSyU4amxsO/e8HyjytkQczb3S5G3y9fXV6PjX/9bsPxCqOvXW6Pg9LlbQ2Nih1SppbGyAWZE/vr7TG5C/ua/2Pv/NDfqocKspxfv7b4OnT59y9epVKlSoIB8BF+I99fz5c5ydnWncuDFr1qwp7nCEEP9yBf3bLyuLhRBCCCGEEEIIIf7lVqxYQUZGBk5OTiQnJ7N06VLi4+OJjo4u7tCEEB+QQieLX34i5tvyxRdfvPUxhRBCCCGEEEKIf7OMjAy1h8DlpK2tjUqleocRiX8zfX19pk+fTnx8PAC1atViz5491K1bt3gDE0J8UAqdLM6uYfM2SbJYCCGEEEIIIcT/mkmTJjFx4sR8t69ZsyZXPWDxv6tnz5707NmzuMMQQnzgilSG4m2WOZZ3SYUQQgghhBBC/C/q168ffn5++W6vUEFz9fOFEEKIvBQ6WXz48GFNxCGEEEIIIYQQQvxPsbe3x97evrjDEEIIIRSFThY3bdpUE3EIIYQQQgghhBBCCCGEKEZaxR2AEEIIIYQQQgghhBBCiOInyWIhhBBCCCGEEEIIIYQQRXvAXWE8efKE7777jkuXLqFSqahYsSLNmzfH2NhY04cWQgghhBBCCCGEEEIIUUCFThZnZmZy8OBBAMqWLUu1atXy7bt27VpGjBhBcnKyWruRkRFTpkxh8ODBhT28EEIIIYQQQgghhBBCCA0odBmK06dP4+vrS8uWLfnzzz/z7bd+/Xp69epFcnIymZmZal+PHz/m888/Z+7cuW8UvBBCCCGEEEIIkZeUlBRUKhWRkZHFHcorRUZGolKpSExMLO5QFFeuXMHQ0JDx48fn2vb5559jZmbGzZs31dpjY2Pp2LEjdnZ26OrqYmVlhaenJ8uXL+f58+dKv/DwcFQqlfKlr69PtWrVmDlzJhkZGRo/t7ycPXuW8PBw/vnnnzceKzw8/JWfpI6Pj0elUrFly5ZCjVvQ/Y4cOcLUqVPz3a6Jecrus2zZslzHO3jwoLI9Pj6+UOcshCgehV5Z/N133wFQsmRJ2rVrl2ef5ORkhg4dCmStRK5UqRIBAQHY29vz008/sXbtWtLS0hg/fjxdunShdOnSRT8DIYQQQgghhBBvzfkph4rt2NXCPIvt2OL/VaxYkbCwMCZNmkRgYCBOTk4AnDlzhkWLFjFv3jzs7e2V/kuXLiU4OJgmTZowY8YMHBwcSEpKYv/+/UpuoH///kp/AwMDDh3Kus9SU1M5fPgwY8aMISMjgzFjxrzDM81y9uxZJk6cSHBwMIaGhho9lp2dHbGxsVSpUkUj4x85coTZs2czduzYXNs0OU/GxsZER0czYMAAtfaoqCiMjY15/Pjx2z5VIYSGFDpZfPr0aVQqFW3btkWlUuXZZ+3atcq7uI0aNWLfvn3KL9z+/fvTuXNnWrZsydOnT1m/fn2x/DEQQgghhBBCCCH+F0VGRhIeHv7KlZ6jRo1iw4YNDBgwgMOHD5Oenk7//v1xcXHhP//5j9Lv119/ZciQIfTs2ZPVq1er5QnatWvHiBEj+Pvvv9XG1tLSws3NTXndrFkzfv/9d7Zt2/avzw+oVCoOHz6Mh4dHkfbX09NTO/d3RdPz5O/vT1RUFDdu3FAWBD579oxt27bRrl07NmzYoMGzE0K8TYUuQ3Hx4kUAPv7443z7xMTEKN9HRETkemfO29ubTp06kZmZyeHDhwsbghBCCCGEEEIIoWblypU4ODhgaGiIl5cXly5dytUnMjKSmjVroq+vT+nSpQkLCyM9PV2tT0JCAoGBgVhbW2NgYECTJk04c+aMWh8HBweCg4OZNWsWpUuXxtDQEH9/f27dupVrLD8/PwwNDSlbtizz5s3j888/x8HBIVdsly5dwtPTE0NDQxwcHFi9erXa9qCgIKpXr853331HzZo1MTAwoGnTpsTHx5OUlETnzp0xNTXF0dGRTZs2FfEq/j9dXV2WLl3KkSNHWLt2LQsXLuTs2bMsX74cLa3/TyUsWLAAbW1t5syZk+eCssqVK+Pp+foV4yYmJrx48UKtLSkpid69eytz4e7uzrFjx3Ltu3z5cpycnNDT08PBwYHJkyerlUpISUmhb9++lC5dGn19fcqWLUvXrl2BrHuiV69eANjY2KBSqfKcn7clr3ISz58/Z8iQIVhaWmJubk7//v3ZuHFjnqUbnj59SnBwMBYWFtjZ2TFy5EjS0tKArNIREydO5MmTJ0rph+yktibnCaB27dpUqVJF7d7bu3cvmZmZtG7duiCXRgjxL1HoZHF2XaLKlSvnuf3FixfK6uPKlSvj4uKSZz9/f38A/vvf/xY2BCGEEEIIIYQQQrF792769etHs2bNiImJwcvLi06dOqn1mTt3Lp999hk+Pj7s2rWLkJAQFixYQFhYmNInOTmZRo0acfbsWRYuXMjWrVsxMjLC09OTu3fvqo0XExNDTEwMS5cuZenSpZw6dYpPPvlE2Z6ZmYm/v7+SYF28eDHbtm1j27ZteZ5D165d8fb2JiYmhmbNmtGnTx/279+v1uf27duMGDGCsLAwvv76ay5fvkz37t3p0qULNWrUYOvWrdSpU4fAwECuXbv2ppcVDw8PevbsyYgRIxg/fjzBwcG4urqq9Tly5Ah169bF0tKyUGOnpaWRlpbGo0eP2LlzJ1u3bqVjx47K9vT0dFq2bMmuXbuYMWMGmzdvxtjYGG9vb7Xk/cKFCxkwYIAyr0FBQYSHhzN69Gilz/Dhw9m9ezdTp07l22+/ZdasWejp6QHQunVrxo0bB8D+/fuJjY1VWwD3LowZM4bly5cTEhLCpk2bXlmOIywsDC0tLb755hsGDBjAnDlzWLVqFQCfffYZffr0wcDAgNjYWGJjY1myZAmguXl6WUBAAFFRUcrrqKgo2rdvj76+fqGOKYQoXoUuQ5Fd8N3IyCjP7b/++ivPnj1DpVLRuHHjfMepVKkSkPXHWAghhBBCCCGEKKrJkyfTuHFj1qxZA4CPjw9Pnz7lyy+/BODRo0dMmDCB0aNHKw//8vb2RldXl+HDhzNq1CisrKyIiIggJSWF06dPU7JkSQC8vLyoUqUKs2fPZubMmcoxHz16xL59+zAzMwOgbNmyeHl58e233+Lj48O+ffv4+eefOXbsmPJvY09PT8qUKYO5uXmuc+jZsyehoaFK/FeuXGHixIn4+voqfZKSkjh69CgfffQRkLWYa/DgwYSEhCgPo6tXrx7btm1j+/btSh3ajIwMtZW22d9nr0jNVqJE7hTB5MmTWbduHZaWlsr1fNnNmzepX79+rvaXx9bS0lJbjfzkyRN0dHTU+nfp0kUtQbpnzx5Onz7N/v378fHxUa5LpUqVmDp1Klu3biU9PZ1JkybRtWtXFixYAECLFi14/vw5c+bMITQ0FCsrK06fPk23bt349NNPlfGzVxbb2Njg6OgIQJ06dbC2ts73PLKlp6ertWtra+dbpvN1kpKSWLp0KePGjSMkJEQ5z+bNm+cqCwHQoEED5Vy9vb05fPgwW7ZsYcCAAZQpU4YyZcrkKh8BmpunlwUEBDBhwgQuX76Mra0tu3fvZvv27W/lwYFCiHen0CuLs0tK5JfkPXXqlPJ9nTp18h0n+49QXh9fEEIIIYQQQgghCiI9PZ0zZ87Qvn17tfaXVz+eOHGCx48f06lTJ2WlZFpaGs2bNyc1NZU//vgDgAMHDtCsWTMsLS2VPtra2jRt2pS4uDi18Zs1a6YkiiErEWxpaan8mzguLg5zc3O1RVTGxsZ4eXnleR454+/QoQNnzpxRK5Nhb2+vJIoB5SFpzZs3V9rMzc0pWbKkWqJx0qRJ6OjoKF99+vTh2rVram05k4LZli9fjkqlIjk5md9++y3PPjkTpT/99JPauG3btlXbbmBgQFxcHHFxcfzwww/Mnz+f/fv307dvX6XP8ePHMTU1VRLFADo6OnzyySf88MMPAPz5558kJibmWkXepUsXnj9/zunTpwFwdXUlMjKS2bNnK3NdEPHx8Xleo+bNm6u1rV27tsBj5vT777/z9OnTXNco+9PYObVo0ULttbOzMwkJCQU6libm6WWVK1emTp06REVFsX37dkxMTPK934UQ/16FXllcpkwZ/vzzT+Li4mjatGmu7UePHlW+f1XR9vv37wNZ9W6EEEIIIYQQQoiiuHfvHmlpacpK4Gy2trbK94mJiQC5Sihky06sJiYmcvLkyTwTp9mrT7PlPF52W3bd4lu3bmFjY5Nnn7zkFf+LFy9ITExUziXnimRdXd18258+faq87tevH35+fsrr3bt3s2LFCnbu3JlnLNn+/PNPZs2axaRJk9i/fz8DBw7k559/VluBbG9vnytZ6ezsrCTX+/fvn2tcLS0t6tatq7z++OOPSUtLY8SIEQwfPpzq1auTnJyc57WytbUlKSkJ+P9FbC/P9cuvs/stXLgQS0tL5syZw6hRoyhbtiyhoaEMHDjwledvb2+f602CevXqsWzZMrXFcRUqVHjlOK+Sfb/kvFfyu09eN9f50dQ85RQQEMDq1aspX748nTt3Rltb+7WxCSH+XQqdLHZzc+P8+fOsXLmSoUOHqv0RTUxMZM+ePQBYW1tTu3btfMfJfjevfPnyhQ1BCCGEEEIIIYQAspJsJUqUyFVT+M6dO8r32XVat23bRtmyZXONkZ3ss7S0xNfXN89yC9k1brPlPF52m52dHQB2dnbcu3cvzz55uXv3LqVLl1aLX0dHJ1dZhKKwt7fH3t5eef3HH3+gq6urlgjMy4ABA6hYsSKjR4/G398fV1dX5s+fz4gRI5Q+Hh4ebNy4keTkZCwsLICsTyRnj13QBWLVqlUD4Ny5c1SvXh1LS8s8r9WdO3eU+cz+b35zn73dzMyMiIgIIiIi+P3335k/fz6DBg2ievXqryyfmd81cnJyeu21K6js++XevXtqc5TffVJUmpqnnLp06cKoUaP4888/OX78+FuKXgjxLhW6DEXPnj2BrCe1tmvXjj///JMXL17w22+/8cknn5CamopKpaJbt26vHOfo0aOoVKo8f7kIIYQQQgghhBAFoa2tjaura66Hkm3ZskX5vmHDhhgaGpKQkEDdunVzfVlZWQFZ5QX++9//Uq1atVx9atSooTb+4cOHefDggfL60KFDJCUl0aBBAyBrBWpKSgrHjh1T+jx+/Jjvv/8+z/PIGX/2w+qKa2VmZGQkR48eZenSpejq6lKjRg2GDh1KeHi42grVIUOGkJaWxqhRo97oeNkLyrKT440aNeLhw4ccOHBA6ZOWlkZMTAyNGjUCspK2NjY2bN68WW2sb775Bl1d3Txr9NaoUYN58+YBcP78eeD/V2gXZIXu21a9enX09fXZsWOHWvv27duLNJ6uri7Pnj3L1a6pecqpTJkyfP7553Tr1g13d/c3OpYQongUemVx06ZN8ff3Z8eOHezfvz/X01khqw7Tq34BJScns3fvXoBXvosnhBBCCCGEEEK8TlhYGP7+/vTq1YuuXbty5swZ1q9fr2w3Nzdn0qRJjB49moSEBDw8PNDW1ubKlSvs2LGDrVu3YmhoyPDhw/n6669p2rQpQ4cOpVy5cty7d49Tp05hb2/PsGHDlDFNTExo2bIlY8aMISUlhZCQEOrXr6/U2G3ZsiWurq5069aNadOmYW5uzsyZMzExMVF7iFi2devWYWBggKurK9HR0Rw7dkz55O67dv/+fUaNGkXPnj3x8PBQ2sPDw9m0aROff/65koyvVasWCxYsIDg4mCtXrtCrVy8cHBx4/PgxP/30E7/99pta3WHIesDeyZMnAXj+/Dlnzpxh8uTJODs706RJEwBat25N/fr1CQwMZPr06dja2rJw4UJu3brF2LFjgaw3CsaPH8+QIUMoWbIkrVq14uTJk8yYMYPPP/9ceRPg448/pn379lSvXh1tbW3WrVuHrq6uko/IXi27ePFi2rVrh6GhYa43BwojPT1d7c2KbHklr62srBg4cCBTpkxBX1+f2rVrs3nzZi5evAiQ573yKtWqVSMtLY358+fj7u6OqakpTk5OGpunvMydO7dQMQsh/l0KnSwG2LBhAx06dFB7hy+boaEhGzduVPv4RE7Lli3j+fPnqFQqtSe7CiGEEEIIIYQQhdW2bVuWLVvGlClTiI6OpkGDBmzatElZ5QswYsQISpcuzdy5c1m4cCE6Ojo4Ojri5+enrCy1srLi5MmTjBs3jpCQEO7fv0/JkiVxc3PL9QC69u3bU6ZMGQYMGEBycjLe3t4sW7ZM2a5SqdixYwf9+/enX79+WFhYMGTIEC5cuMDZs2dznUNUVBShoaFMmjSJkiVLsmLFClq1aqWZC/Yao0ePJiMjg9mzZ6u1GxsbM3/+fDp06MC+ffto2bIlAAMHDqRWrVpKTeD79+9jYmJC7dq1mTp1Kr1791YbJzU1lYYNGwJQokQJypYtS2BgIBMmTFBKXWpra7N3715GjhzJqFGjePLkCa6urhw4cECtXvDgwYPR0dFh7ty5LFmyBDs7O8LDw5WEMmQli9etW8fVq1fR0tKiRo0a7Nq1S0kSu7i4EB4ezqpVq5g5cyZly5YlPj6+yNfv6dOnuR66B7B+/XplVfTLpk+fzosXL5g2bRoZGRm0b9+eMWPGEBwcrPYQxYJo06YNgwYNYtq0ady9e5cmTZpw5MgRQDPzJIT48KgyMzMzi7rz3r172bFjB9evX0dXVxdXV1f69OlDmTJlXrnfwIEDSUxMpHTp0kRERBT18MXm4cOHmJmZ8eDBA0xNTYs7nPdGnVHrNDr+lx09NDp+9W9ba3R8E/ceGh3f7/yO13d6A309u2ts7AoDN2lsbADXAXk/zfdtWXumcP+DV1guXuU0Ov6Rjblr9r1N7t4+r+/0BkolOL6+UxHZuef94JG3JeJo7hUpb5Om37C9/vcQjY5f1an36zu9gR4Xi/6wmtcJrVZJY2MDzIr8UaPjy9/cV3uf/+YGfTRIY2N/qN7Xfxs8ffqUq1evUqFCBfT19Ys7nPeOg4MDfn5+LFq0qFD7PX/+HGdnZxo3bsyaNWs0FJ34EPTo0YMffviBq1evFncoQogPREH/9hdpZXG2Vq1aFemdzqVLl77JYYUQQgghhBBCiH+9FStWkJGRgZOTE8nJySxdupT4+Hiio6OLOzTxL3L06FF+/PFH6tSpQ0ZGBrt37+brr7+Wcg5CiGLxRsliIYQQQgghhBBC5E1fX5/p06crJQ1q1arFnj17qFu3bvEGJv5VjI2N2b17NzNmzCA1NZUKFSowd+5cPv/88+IOTQjxP6hIyeJ9+/YRFhYGwMiRI+nWrVuB9924caNS92jmzJk0b968KCEIIYQQQgghhBDFoqD1bHv27EnPnj01G4x479WpU4cTJ04UdxhCCAFA4R6rCWRmZjJs2DB+/fVXbGxsCpUoBggICMDa2pqzZ88yYsSIwh5eCCGEEEIIIYQQQgghhAYUOll86NAhLl68iJaWFvPmzSv0AVUqFREREWhra/PHH39w9OjRQo8hhBBCCCGEEEIIIYQQ4u0qdLJ469atAHh7e+Ps7Fykgzo7O+Pj4wPAli2afdK7EEIIIYQQQgghhBBCiNcrdLL49OnTqFQq2rRp80YH9vPzIzMzk5MnT77ROEIIIYQQQgghhBBCCCHeXKGTxdeuXQPAycnpjQ5cpUoVoOAPBhBCCCGEEEIIIYQQQgihOYVOFj948AAAS0vLNzpw9v4PHz58o3GEEEIIIYQQQgghhBBCvLlCJ4tNTU0BSElJeaMDZ+9vYmLyRuMIIYQQQgghhBBCCCGEeHOFThbb2NgA8N///veNDnz+/HkASpYs+UbjCCGEEEIIIYQQ8+bNo1y5cmhra2Nubs7UqVMLPUZERAR79+7VQHRvx8aNG6lcuTI6OjrUrl27uMN5p06cOIGWlhZfffVVrm3t2rWjfPnyPHnyRK193759tGrVChsbG3R0dLC1taV169ZERUWRkZGh9AsKCkKlUilfRkZG1KpVK89jvStHjhwp0j2cl6CgIKpXr/7KY6lUKn766adCjVvQ/bZv386SJUvy3f625yk+Pl7ps3///lzHW7lypbJdCJFbicLuUL9+fS5cuMCuXbsYNGhQkQ+8Y8cOVCoV9erVK9L+0dHRzJw5k/Pnz2NgYICnpyczZszA0dEx331CQ0PZvn07N27c4Pnz59ja2uLl5cWECRMoX758UU9FCCGEEEIIIT4YKYf/KLZjmzfLP6H1Kn/99RcjRowgJCSENm3asGjRIqZOncrYsWMLNU5ERAR+fn60atWqSHFo0uPHj+nduzcBAQFERkYqn/r9X+Hu7k6fPn0ICQnB398fa2trICsRuWPHDnbu3ImRkZHSf+zYsUybNo327duzaNEi7OzsuHPnDtu3bycwMBBLS0t8fHyU/hUrVuTrr78G4NGjR8TExPDZZ59hZGRE165d3+3JkpWInT17dqHv4aJwdXUlNjaWatWqaWT87du389NPP+WZQ9LkPBkbGxMdHY2vr69ae1RUFMbGxjx+/FgDZyvE+6/QK4tbtmwJwIEDB/jhhx+KdNBjx45x4MABtfEK46uvviIgIIBffvkFOzs70tPT2bp1K+7u7ty+fTvf/b799luePHlC5cqVKVu2LNevX2fNmjVqv3iEEEIIIYQQQrxfLly4QGZmJn379sXd3V15oLqmPHv2TG3F47sQHx/Ps2fP6NGjBx9//DE1atQo8ljp6em8ePHiLUZXcKmpqXm2h4eH4+Hh8cp9Z8yYgZaWFiNHjgSyEuiDBw+mffv2tGnTRum3Z88epk2bxoQJE9i2bRtdunShSZMmdOrUia+//prY2Nhcn3I2MDDAzc0NNzc3vL29WbJkCbVr12bbtm1vdsIalr2KNj4+vshjmJqa4ubmppZsfxc0PU/+/v7ExMTw9OlTpe3WrVscPXqUdu3aafr0hHhvFTpZ3KFDBxwcHMjMzKRTp0789ddfhdr/4sWLdO7cGZVKhYODAx07dizU/s+fP2fMmDFKLFeuXOH8+fOYmJhw9+7dV35M48SJE1y/fp0zZ87w119/ERgYCGT9j8X9+/cLFYcQQgghhBBCiOIXFBSkJAodHR1RqVRMnDiRJ0+eKB81f10SEsDBwYFr166xePFiZb/IyEhlW3BwMDNnzqR8+fIYGBiQlJTEn3/+SdeuXSlbtiyGhoY4OzszZ84ctURydjJvw4YNBAcHY2FhgZ2dHSNHjiQtLU3pl5CQQOfOnbG1tUVfX58KFSowbNgwICuRmp0c9vLyQqVSER4eDkBSUhK9e/fG2toaAwMD3N3dOXbsmNq5eXh44Ofnx9q1a3FyckJPT49ff/1VKU/w3XffUbNmTQwMDGjatCnx8fEkJSXRuXNnTE1NcXR0ZNOmTbmu2Z49e2jQoAEGBgbY2NgwcOBAtVIQ2WUK9uzZQ8eOHTE1NaVTp06vn9R8WFpaMmvWLNauXcuRI0cYN24cKSkpLFiwQK3f3LlzsbOzY9y4cXmOU79+fVxcXF57PBMTk1xJ9WvXrtGxY0fMzMwwMjLCx8eH33//Xa1PRkYGkydPxsHBAT09PapWrcry5cvV+rxuvotyDxdVXuUkHjx4QGBgICYmJpQsWZKxY8cyZ86cPEs3JCcn061bN0xMTChfvjwzZ85UtgUFBbF27VrOnTunnEtQUBCg2XmCrMWJKpVKrbRMdHQ0lSpVok6dOq8dV4j/VYUuQ6Gjo8Ps2bPp2LEjd+/epU6dOnz55ZfKsv/8PH78mFWrVvHFF1/w+PFjVCoVc+bMoUSJwoUQFxdHYmIikJUsBrC3t8fNzY2DBw/mWY8mm76+PkuWLGHt2rUkJSVx6dIlAJydnbG0tMx3v2fPnvHs2TPl9cOHDwsVsxBCCCGEEEIIzRg/fjzOzs6EhISwbds2bGxsWLNmDVFRURw6dAigQCUbYmJiaNWqFY0aNWLEiBEAamUOt27dSuXKlZk/fz7a2toYGRnx66+/4uTkRPfu3TExMeHs2bNMmDCBx48fM2HCBLXxw8LC8Pf355tvvuHEiROEh4dTqVIlBgwYAEDPnj25efMmCxYswNbWluvXryvJu88++wxHR0d69uzJ4sWLcXV1pUyZMqSnp9OyZUuuXLnCjBkzsLW1ZcGCBXh7e3PixAm1hNhPP/1EfHw8kyZNwsLCgrJlywJw+/ZtRowYQVhYGDo6OgwZMoTu3btjaGhIkyZN6Nu3LytXriQwMBA3NzelhOOWLVvo0qULvXr1YuLEidy6dYsxY8aQnJxMdHS02rn369ePwMBAYmJi0NbWLtT85vTpp5+yZs0a5XrNnj2bMmXKKNvT0tL48ccf6dixY6HzDdnJ+8ePH7Nt2zZ+/PFH1q1bp2x/9OgRHh4eaGlpsWzZMvT19ZkyZQpNmjTht99+U67pqFGjmD9/PuPGjcPd3Z3du3czYMAAXrx4QXBwMPD6+U5ISGDjxo2Fuoffpl69enHo0CHlDZKVK1dy5syZPPsOGDCAHj16EBMTw/bt2wkJCaFmzZr4+voyfvx47t27x59//qmUj7CxsdHoPGXT09Pjk08+ISoqik8++QTIKkEREBBQqOMJ8b+m0MligE8++YSJEycyYcIEnjx5wvDhwxk/fjyNGzemTp06lCxZEiMjI548ecKdO3f4+eefOX78OE+ePCEzMxOAiRMnFmnZ/99//618//LHEWxtbQG4fv36K/e/fv06p0+fVl67uLiwe/fuVxY2nzZtGhMnTix0rEIIIYQQQgghNMvR0VEpO+Hi4oKDgwPfffcdWlpauLm5FXgcFxcX9PT0sLW1zXO/Fy9esG/fPrVFUl5eXnh5eQGQmZlJo0aN+Oeff1i0aFGuZHGDBg2UFbDe3t4cPnyYLVu2KMni06dPM23aNLp06aLs07NnTwDKlCmjrCx2dnZW4tu5cyenT59m//79SnlFHx8fKlWqxNSpU9m6dasyVlJSEnFxcUpC8+X2o0eP8tFHHwFw8+ZNBg8eTEhICOPHjwegXr16bNu2je3btzN06FAyMzMZOXIkXbp0YdWqVcpYdnZ2tGrVivHjxyvjAbRt25YZM2aoHTcjI0NtBXZGRgaZmZlqq61VKlWeyeUvv/ySJk2aULVqVQYPHqy27f79+zx79izXeWZmZpKenq681tLSQkvr/z9sfe7cOXR0dNT2GTFiBN27d1der1mzhmvXrnHu3Dmlvm/Tpk0pV64cERERzJkzh8TERBYuXMioUaOU1d8tWrQgMTGRSZMmMXDgQLS1tV8732XKlMnzHs55Htnfp6enq107bW3tIj/A7b///S8xMTGsW7eOHj16AODr60vVqlXz7N+hQwflXL28vNizZw9btmzB19cXR0dHbGxsuHbtmtq53LlzR2Pz9LKAgAD8/f15/Pgxd+7cIS4ujg0bNvyrH2QpRHErdBmKbOPHj+err77CwMCAzMxMHj9+zP79+5kyZQpDhw7ls88+Y+jQoUydOpX9+/fz+PFjMjMzMTQ0ZPXq1fl+zKCospPQrzN9+nTS0tL4888/adasGb/88gvdu3dX+2WUU2hoKA8ePFC+Xk5YCyGEEEIIIYT48Hl4eOT6NO3Tp0+ZMGEClSpVQk9PDx0dHcLCwrh161auh2e1aNFC7bWzszMJCQnKa1dXV2bPns3SpUuVT8G+zvHjxzE1NVV7Do+Ojg6ffPJJrmcM1axZM1diDrI+qftyYjc78d68eXOlzdzcnJIlSyr/Fr548SLXrl2jc+fOpKWlKV9NmzZFS0tLrZwBQOvWrXMdt3fv3ujo6ChfX375JceOHVNry+8B9suXL1fq9OZXqzdnonTr1q1qYw8ZMkRtu6OjI3FxccTFxXH06FEmT57MwoULmTRpktLn+PHjVK9eXe1BcJaWlnh7eyvX+9SpU7x48SJXuY0uXbpw7949Ll68CBRtvgGOHj2qdh6VKlUCoFKlSmrtR48eLfCYOcXFxQFZSf5sWlpaanWhX/byva1SqahWrZravf0qmpinl3l6emJiYsL27duJiorC1dVV4zXNhXjfFTlZDFkfS7h48SLDhw/H2tqazMzMfL+sra0ZMWIEFy9eVOrTFMXLf9zu3r2b6/ty5cq9dgxtbW2cnJz4/PPPgaz6PN9//32+/fX09DA1NVX7EkIIIYQQQgjxvyP706wvCwkJYdasWfTt25e9e/cSFxenLIx6+aFakJVwfZmurq5an02bNuHl5UVYWBiVK1ematWqr324WnJycq4HgGXHmpSU9Nr484vrdfFml4Zs3769WmLP0NCQ9PT0XAus8jp2eHi4kvSLi4ujb9++uLq6qrXt2rUr137ff/89X3/9NStXrqR06dK5VhZbWVmhp6eXK1np5eWljGtnZ5drXH19ferWrUvdunVp0qQJYWFh9O/fnylTpijXMjk5Oc9zefl6Jycn53nO2a+z+xVlvgHq1Kmjdo127twJZK0yf7n9TWry3rp1Cx0dHczMzNTa87rX4PX3dl40OU8v09bWpnPnzkRFRREVFUW3bt1eGZcQoohlKF5mb2/P7NmzmT17NufOnePXX3/l/v37PHr0CBMTE6ysrKhVq5baO5Vvol69elhZWXH//n22bt1KQEAAN2/e5OTJk0DWRyMA5eMRwcHBBAcH89dff3H+/Hn8/PzQ0tIiIyNDrb7xy0X4hRBCCCGEEEKIl+X1kf7NmzfTv39/QkJClLY9e/YUaXw7OztWr17NqlWrOHPmDJMnT6ZLly5cuHCBihUr5rmPpaWl2iKqbHfu3Mn1XJ6iliTI77gAixYtokGDBrm229vbv/bYDg4OODg4KK93797NxYsXqVu3br7HffbsGYMGDcLLy4s+ffpQunRpWrZsydatW5VnGpUoUYKPP/6Y77//nvT0dKWMhYWFhTJ2dkL8dapVq8bz58/566+/aNCgAZaWlly4cCFXv5evd/Z/7969S+nSpdX6vLy9KPMNWQ9ze/kaZa+srlGjhtr1fBN2dna8ePGCBw8eqCWM87rXikqT85RTQEAAjRs3BlAr+yGEyNsbrSzO6aOPPqJbt24MHjyYsWPHMnjwYLp16/bWEsWQ9cti6tSpQNbHEypWrEi1atV49OgR1tbWjBkzBoALFy5w4cIF5R3PGzdu4O/vj5mZGbVq1cLe3p6lS5cCWfWAsutMCSGEEEIIIYR4v+nq6qo9pLww+71uReTLUlNT1RJa6enpuR7uVlhaWlrUq1ePyZMnk5aW9soSBY0aNeLhw4ccOHBAaUtLSyMmJoZGjRq9URyvUrVqVcqUKcOVK1eUVZ4vf+VMFr8t06ZN49q1ayxZsgTIWizWoUMHPv/8c7WyH8OHD+fmzZtK7qCo/vjjDwCsra2BrOv9+++/qyWMk5OT+e6775TrXb9+fXR0dNi8ebPaWN988w0lS5bMVQIhv/ku6j38NmQna3fs2KG0ZWRk5LnSuyDy+7nS1Dzl1LBhQ7p168bnn3+u9jBEIUTe3nhlcXHo168fRkZGzJ49m/Pnz6Ovr88nn3zC9OnT8/2jVK5cOdq1a8eZM2e4cOECmZmZODo60rx5c8aNGyelJYQQQgghhBDiA1GtWjXS0tKYP38+7u7umJqa4uTkVKD9Dh06xMGDB7GwsKBChQpYWVnl29/b25uVK1fi7OyMtbU1S5YsKVKC78GDB/j4+NCjRw+cnJx4/vw5CxcuxNzcHFdX13z3a926NfXr1ycwMJDp06dja2vLwoULuXXrFmPHji10HAWlUqmYO3cu3bp148mTJ7Ru3RojIyOuXbvGnj17mDp16luvC3vx4kWmT59OSEiI2tgRERFUq1aN8PBwZs+eDWRdlzFjxvDFF19w9uxZunTpgp2dHQ8ePOD48ePcvn0bExMTtfFTU1OVTyynpqZy/PhxVq5cibe3t1I7uVevXsybN4/WrVszefJk9PX1mTJlCiVKlFDKXFpbWzN48GBmzZqFvr4+bm5u7N27l40bN7Jw4UK0tbULNN9FvYfz8/DhQ7Zs2ZKrvVmzZrnaPvroI9q3b8+QIUP4559/KF++PCtWrCA1NbVIK9SrVavG6tWriYqKonLlylhbW+Pg4KCxecpJpVKxfv36QsctxP+q9zJZDNC9e/d8n3YJuR94V7FiRWJiYjQdlhBCCCGEEEKIYtamTRsGDRrEtGnTuHv3Lk2aNOHIkSOv3W/q1KkMHDiQDh068OjRI9asWfPKZ+4sXLiQAQMGMHjwYAwNDQkKCqJ9+/b07du3UPHq6+tTo0YNFi5cyPXr1zEwMKBu3bocOHAg39WSkFWPde/evYwcOZJRo0bx5MkTXF1dOXDgwBvVrC2ITp06YW5uzpQpU9iwYQOQVVrC19c33/rIb2LQoEGULVuW0NBQtfYyZcowceJEQkJC+PTTT6lRowaQtQq5UaNGLF68mEGDBvHgwQMsLS2pU6cOq1evpmvXrmrjXLlyhYYNGwJZK2HLly/PqFGjlE8vQ1YJiCNHjjB8+HD69etHeno6H3/8MceOHVN7vtKsWbMwNzdn1apVTJ48GQcHB5YtW0b//v2Bgs13Ue/h/Pz999+5HroHWQ/ty8vq1asJDg5m5MiR6Ovr8+mnn1K9enUWLVpU6GP36dOH06dPM3jwYO7fv8+nn35KZGQkoJl5EkK8GVVmzqyqeK2HDx9iZmbGgwcPZEVyIdQZtU6j43/Z0UOj41f/NvcTfN8mE/ceGh3f7/yO13d6A30983/z5k1VGLhJY2MDuA4o3P/MF9baM2av7/QGXLxe/2DPN3Fk45caHd/d2+f1nd5AqYS8Vxi8DXbueT/k422JOJp79cfblF3nX1Ou/z3k9Z3eQFWn3hodv8fFChobO7RaJY2NDTAr8keNji9/c1/tff6bG/TRII2N/aF6X/9t8PTpU65evUqFChXQ19cv7nCEEO+BJk2aoK2tzeHDh4s7FCFEERT0b/97u7JYCCGEEEIIIYQQQrx9W7du5fr169SoUYN//vmHjRs3cvz4cfnEthD/AyRZLIQQQgghhBDig5eWlpbvNpVKhba29juMRoh/N2NjY9avX89ff/3F8+fPqVq1Khs2bKBdu3bFHZoQQsMkWSyEEEIIIYQQ4oOno6OT77by5csTHx//7oIR4l/Ox8cHHx/NlosTQvw7SbJYCCGEEEIIIcQHLy4uLt9tenp67zASIYQQ4t9LksVCCCGEEEIIIT54devWLe4QhBBCiH89reIOQAghhBBCCCGEEEIIIUTxk2SxEEIIIYQQQgghhBBCCEkWCyGEEEIIIYQQQgghhJBksRBCCCGEEEIIIYQQQggkWSyEEEIIIYQQQgghhBACSRYLIYQQQgghhBBCCCGEQJLFQgghhBBCCCHEOxEeHs6JEycKtU9kZCQqlYrExEQA4uPjUalUbNmyRenj4OBAcHDwW421IPKKJScPDw/8/PwKPXZB9ktJSSE8PJz//ve/eW6/f/8+Y8aMwdnZGUNDQwwNDalevTojRowgPj4+13lkf2lpaVG6dGm6devGtWvX1MYMCgpCpVLh5uaW63iZmZmULVsWlUpFeHh4oc9ZCCH+DUoUdwBCCCGEEEIIIf49ijPJ9aEn2CZOnIixsTHu7u5FHsPOzo7Y2FiqVKnyFiPTnCVLlqCtra2RsVNSUpg4cSLVq1fH2dlZbdulS5fw9PTkxYsXDBkyhHr16qFSqfj5559ZtmwZJ06cIDY2Vm2fqVOn0qxZMzIyMrh8+TJffPEFrVq14rffflM7B2NjY06dOsXVq1epUKGC0n78+HHu3LmDnp6eRs5XCCHeBUkWCyGEEEIIIYT4oGRmZvL8+fMPMmmnp6eX56pWTQgKCgKyVjcXVc4k7rvSrVs30tLSOHPmDPb29kq7l5cXQ4cOZcOGDbn2qVy5snJt3d3dMTU1pV27dly4cEHtPMqXL0+JEiWIjo4mNDRUaY+KisLHx4fjx49r8MyEEEKzpAyFEEIIIYQQQoj3WlBQENWrV2fv3r3UqlULPT09du3aRWxsLJ6enhgZGWFmZka3bt24e/eu2r7Tp0+nUqVK6OvrY2NjQ/Pmzbl69Srw/+UJNmzYQHBwMBYWFtjZ2TFy5EjS0tLUxjl//jz+/v6YmZlhZGRE69atuXz5srJdpVIBMGrUKKXcwZEjRwp9rgUp/XD//n3q1atHnTp1lPIVr4tPU/IqJxETE4OTkxP6+vq4ubnx888/Y25unufK8i1btuDk5ISxsTGenp5KzPHx8cqq3k6dOinXND4+nuPHjxMXF8e4cePUEsXZdHV16d2792tjNzExAeDFixe5tgUEBBAVFaW8TktLY8uWLXTr1u214wohxL+ZJIuFEEIIIYQQQrz3bt68yZAhQxg2bBj79+/H1tYWDw8PzMzM2LRpEytWrCAuLg5/f39ln3Xr1jF+/Hj69OnD/v37WbVqFbVr1+bhw4dqY4eFhaGlpcU333zDgAEDmDNnDqtWrVK2X7lyBXd3d5KSkoiMjGTjxo3cu3cPLy8vnj17BqCUPBg8eDCxsbHExsbi6ur61q/D7du38fDwQE9Pj0OHDmFtbV2g+N6VX375hU6dOuHs7My2bdv49NNP6dKlS55xnD17llmzZjF9+nQiIyO5dOkSgYGBQFY5jm3btgFZ5SOyr6mdnZ2ShG/RokWhYsvIyCAtLY3nz59z/vx5wsPDqVq1KtWrV8/Vt2vXrvzxxx9KveQDBw6QmppK27ZtC3VMIYT4t5EyFEIIIYQQQggh3nvJycns27ePBg0aANC0aVPq1q3Ltm3blFW9NWrUUFYgt2rVitOnT1OzZk21UgIvJ5OzNWjQgAULFgDg7e3N4cOH2bJlCwMGDACyahFbWlpy8OBB9PX1gawyBhUrVuSrr75i0KBBSnmDcuXKaayMxPXr1/Hy8sLBwYHt27djZGRU4PgA0tPTyczMVMbL/v7lVdQqleqNahBPmzaNChUqsHXrVrS0stavmZiY0KNHj1x9U1JS+OWXX7CxsQHg8ePH9OrVi4SEBMqUKYOLiwugXj4Cst44AChbtqzaeDnPr0QJ9ZRIly5d1F6XK1eOffv25Xm+5cuXp2HDhkRFRfHll18SFRVF27ZtlWsuhBDvK1lZLIQQQgghhBDivWdlZaUkiv/55x9+/PFHOnXqRHp6OmlpaaSlpVGlShXKli1LXFwcAK6urvzyyy8MHz6cH374Ic9yA5B7haqzszMJCQnK6wMHDtC2bVtKlCihHMvCwgIXFxflWJp2+fJlGjdujLOzM7t371ZLWhY0Pi8vL3R0dJSvdevWsW7dOrU2Ly+vN4ozLi4OPz8/JVEMeSfoAWrXrq0kiuH/6x+/fO1fJftNgmy1atVSO5fsEh3ZZsyYQVxcHKdPnyYmJgZ7e3t8fX25ceNGnuMHBAQQHR1NamoqO3bsICAgoEBxCSHEv5kki4UQQgghhBBCvPdsbW2V75OTk0lPT2fYsGFqyUEdHR2uX7/O33//DWTVOp43bx7ffvstjRs3xsbGhqFDh5Kamqo2trm5udprXV1dnj59qrxOTEwkIiIi17GOHz+uHEvTTp8+zfXr1+ndu3euB/sVNL7ly5cTFxenfPn5+eHn56fWtnz58jeK89atW2oJYMhaWZy94vlleV13QO3a5yW7TnHOpPKmTZuIi4tjwoQJee5XsWJF6tatS7169WjXrh07d+7kxo0bzJs3L8/+nTp14urVq3zxxRfo6Ojg6+v7yriEEOJ9IGUohBBCCCGEEEK8915eRWpubo5KpWLs2LG0a9cuV19ra2sAtLS0GDp0KEOHDuXGjRtER0czZswYrK2tGT9+fIGPbWlpSevWrZVyDi/LfkiapgUEBFCiRAm6du3K7t271VYAFzQ+JycntW1WVlYA1K1b963FaWdnx71799TaHj169NoEcGF4eHgAWSuqs0uFAHz00UcA/PHHHwUax8bGBmtra86dO5fndltbWzw9PZk7dy59+vRBR0fnzQIXQoh/AUkWCyGEEEIIIYT4oBgZGdGwYUPOnz/P5MmTC7RP6dKlGTFiBBs3buT8+fOFOl7z5s35448/cHFxeWU9Xx0dnbeaFM0pIiKCp0+f4u/vz7fffsvHH39cqPjehXr16rF7927mzJmjlKLYvn17kcbKb6Vx48aNqVevHpMnT8bf3x87O7sijX/nzh0SExOVNxfyMmTIEAwNDenbt2+RjiGEEP82kiwWQgghhBBCCPHBmTVrFp6ennTp0oWuXbtiYWFBQkICBw8epFevXnh4eNC/f38sLCxwc3PDwsKCH3/8kV9//TXPFbivMnHiROrVq4ePjw/9+vXD1taW27dvc/ToURo3bqzUsq1WrRo7duygcePGGBkZ4eTk9NZXHi9dupTU1FRatWrFd999R7169QocX1GdPHkyV5utrS2NGzfO1R4aGkq9evXo0KED/fr149q1a8yePRt9fX21OsYFUapUKczNzYmKiqJChQro6elRs2ZNdHV12bhxI56enri6ujJ06FDq1auHlpYW8fHxLFu2DD09vVwrgf/66y9OnjxJZmYmN27cYNasWahUqlcmgrNLdQghxIdCksVCCCGEEEIIIT447u7u/PDDD0yYMIFevXrx/PlzypQpg5eXF5UqVVL6rFy5kpUrV/LPP/9QsWJF5s2bR58+fQp1rEqVKnH69GnGjRvHoEGDePz4MXZ2djRp0oSaNWsq/RYvXszQoUNp2bIlqampHD58WCmZ8LaoVCpWr17Ns2fP8PHx4ciRI9SsWbNA8RXVnDlzcrV5eXnx3Xff5Wp3cXHhm2++ITQ0lPbt21O9enXWrl2Lh4cHZmZmhTqulpYWa9asYezYsXh5efHs2TOuXr2Kg4MDlSpV4ueff2bWrFmsXbuWiRMnolKpqFixIj4+PkRHR+c63tixY5Xvra2tqVWrFocOHaJJkyaFiksIId5nqszMzMziDuJ98/DhQ8zMzHjw4AGmpqbFHc57o86odRod/8uOHhodv/q3rTU6vol7D42O73d+h0bH7+vZXWNjVxi4SWNjA7gO0OxHxtaeKdz/9BaWi1c5jY5/ZOOXGh3f3dtHo+OXSnDU2Nh27iU1NjZAxNEtGh1f0w9huf73EI2OX9Wpt0bH73GxgsbGDq1WSWNjA8yK/FGj48vf3Fd7n//mBn1UuNWU4v39t8HTp0+5evUqFSpUyPPBYkK8S99//z3NmzfnyJEjNG3atLjDEUKID1JB//bLymIhhBBCCCGEEEK8M4MGDcLLywsrKyvOnTvHl19+iYuLS55lK4QQQrxbkiwWQgghhBBCCCGKQUZGBhkZGflu19bWRqVSvcOI3o3k5GQGDx5MYmIiZmZm+Pr6Mnv27ELXLBZCCPH2yW9iIYQQQgghhBCiGEyaNAkdHZ18v9auXVvcIWpEVFQUN2/e5Pnz59y7d4/169dja2tb3GEJIYRAVhYLIYQQQgghhBDFol+/fvj5+eW7vUIFzdXPF0IIIfIiyWIhhBBCCCGEEKIY2NvbY29vX9xhCCGEEAopQyGEEEIIIYQQQgghhBBCksVCCCGEEEIIIYQQQgghJFkshBBCCCGEEEIIIYQQAkkWCyGEEEIIIYQQQgghhECSxUIIIYQQQgghhBBCCCGQZLEQQgghhBBCCCGEEEIIJFkshBBCCCGEEOIDlJKSgkqlIjIysrhDeaXIyEhUKhWJiYnFHYqapKQk2rdvj4WFBSqViu3btxMREcHevXsLNU58fDzh4eHcvHlTQ5G+mefPn9OrVy9sbGxQqVREREQUd0giH0W5/44cOYJKpeKnn35S2lQqFbNnz1Zee3h44Ofn99biFOJ9V6K4AxBCCCGEEEII8e9x8uTJYju2m5tbsR1bqJs7dy6HDx9m3bp1lCxZEicnJz7//HP8/Pxo1apVgceJj49n4sSJ+Pn5YW9vr8GIi2bdunWsX7+etWvX4ujoiIODQ3GHJPIRERFR6PsvL7GxsZQvX/4tRSXEh0dWFgshhBBCCCGEEP9DIiMjX5sU/fPPP6lZsyZt27bFzc0NCwsLjceVmpqq8WPk9Oeff2Jvb0/37t1xc3OjVKlSRR6rOOIHyMzM5NmzZ3luc3BwKPTq+uI6j3fFzc0NOzu74g5DiH8tSRYLIYQQQgghhHjvrVy5EgcHBwwNDfHy8uLSpUu5+kRGRlKzZk309fUpXbo0YWFhpKenq/VJSEggMDAQa2trDAwMaNKkCWfOnFHr4+DgQHBwMLNmzaJ06dIYGhri7+/PrVu3co3l5+eHoaEhZcuWZd68eXz++ed5JmovXbqEp6cnhoaGODg4sHr1arXtQUFBVK9ene+++46aNWtiYGBA06ZNiY+PJykpic6dO2NqaoqjoyObNm0q4lXMolKp2Lp1K8ePH0elUqFSqXBwcODatWssXrxYaXtdEvLIkSM0a9YMgHr16in7ZW9TqVTs2bOHjh07YmpqSqdOnYCs1b6NGjXC0tISCwsLPDw8OH36tNrY4eHhGBsb8/vvv9OoUSMMDQ2pXr063377rVq/nTt3UrduXYyNjTE3N6du3bpKKQMHBwfmzJnD33//rcQWHx8PwLFjx3B3d8fAwABra2t69+5NUlKSMm58fLxyDfr27YuVlRX169dXrt+MGTMICwujZMmSmJubM3r0aDIzM/n++++pXbs2xsbGeHl58ffff6vF++zZM8aOHUv58uXR09OjWrVqbNy4Ua1P9r2wd+9eatWqhZ6eHrt27XrdtOYp+zqePn2ahg0boq+vz+LFiwE4f/48/v7+mJmZYWRkROvWrbl8+bLa/qtXr+ajjz7CwMAAKysrGjVqRFxcnLJdpVIxc+ZMwsPDsbW1xdraml69evHkyRO1cV73c1eU+y8/OctQ5JSamkrr1q2pWLEiV65cKVB8QnxIJFkshBBCCCGEEOK9tnv3bvr160ezZs2IiYnBy8tLSTxmmzt3Lp999hk+Pj7s2rWLkJAQFixYQFhYmNInOTmZRo0acfbsWRYuXMjWrVsxMjLC09OTu3fvqo0XExNDTEwMS5cuZenSpZw6dYpPPvlE2Z6ZmYm/vz9nz55l+fLlLF68mG3btrFt27Y8z6Fr1654e3sTExNDs2bN6NOnD/v371frc/v2bUaMGEFYWBhff/01ly9fpnv37nTp0oUaNWqwdetW6tSpQ2BgINeuXSvy9YyNjaVJkya4uLgQGxtLbGwsMTExlCpVio4dOyptrVu3fuU4rq6uSuJxzZo1yn4v69evH46OjsTExDBy5EggKxHbs2dPNm/ezMaNGylXrhxNmjTh4sWLavu+ePGC7t27ExQURExMDCVLlqRDhw7cv38fgMuXL9OxY0c++ugjYmJi2LRpE507dyY5ORnImsMuXbpQqlQpJTY7OzvOnDmDt7c3JiYmbN68mRkzZrBr1y5atmyZ682F0NBQMjMziYqKYtasWUr7okWLuH79OuvXr2f48OHMmjWLkSNHMmzYMEJDQ1m/fj0XL16kT58+auN17tyZ5cuXM2LECHbv3o2vry+BgYHs27dPrd/NmzcZMmQIw4YNY//+/dSuXfuVc/Eqz58/p1u3bspxWrRowZUrV3B3dycpKYnIyEg2btzIvXv38PLyUlYxHzt2jD59+tCqVSv27t3LunXr8PLyIiUlRW38RYsW8ddff7F27Vq++OILNm7cyJdffqlsL8jPXVHuv6J4/PgxrVq14vLlyxw/fpyKFSsW6veCEB8CqVkshBBCCCGEEOK9NnnyZBo3bsyaNWsA8PHx4enTp0pC6tGjR0yYMIHRo0czdepUALy9vdHV1WX48OGMGjUKKysrIiIiSElJ4fTp05QsWRIALy8vqlSpwuzZs5k5c6ZyzEePHrFv3z7MzMwAKFu2LF5eXnz77bf4+Piwb98+fv75Z44dO0bjxo0B8PT0pEyZMpibm+c6h549exIaGqrEf+XKFSZOnIivr6/SJykpiaNHj/LRRx8BWQnDwYMHExISwvjx44GsFbzbtm1j+/btDB06FICMjAwyMjKUcbK/T0tLU4uhRImsFEF22QmVSqVWR1pPTw9bW9sC15Y2NTXF2dkZgOrVq1O3bt1cfdq2bcuMGTPU2r744gu1WL29vTl9+jSRkZHK/EFWknP69OlKDVsnJycqVKjAvn37CAwM5JdffuHFixcsWrQIExMTIOvaZnNxcaFUqVLo6empndOUKVMoVaoUu3fvRkdHB8iaXx8fH/bu3UubNm2UvrVr12bVqlW5zsve3p7169crx9y5cyfz5s3j3LlzVKtWDYAbN24wePBgUlJSMDc35/Dhw+zcuZNvv/2WFi1aAFn36a1bt5gwYQItW7ZUxk9OTmbfvn00aNBA7bg55zT7Gr7crqWlhZbW/68dfPHiBVOmTKFLly5K26effoqlpSUHDx5EX18fAHd3dypWrMhXX33FoEGDOH36NJaWlmpJ8rwSuHZ2dnz99dcA+Pr68vPPP7NlyxamT58OUKCfOxcXl0Lff4WVnJxMy5Ytefr0KceOHVNiKczvBSE+BLKyWAghhBBCCCHEeys9PZ0zZ87Qvn17tfaOHTsq3584cYLHjx/TqVMn0tLSlK/mzZuTmprKH3/8AcCBAwdo1qwZlpaWSh9tbW2aNm2q9tF6gGbNmimJYshKBFtaWnLq1CkA4uLiMDc3VxLFgFJ6IC854+/QoQNnzpxRW8lqb2+vJIoBqlSpAkDz5s2VNnNzc0qWLKlW3mDSpEno6OgoX3369OHatWtqbdlJ0Xctr+Ti+fPnad++Pba2tmhra6Ojo8OFCxdyrSzW0tJSO3cHBwcMDAxISEgAoGbNmmhra9OtWzd27drFgwcPChTT8ePH8ff3V7smLVq0wNzcnB9++OG18UNWkvdlVapUwd7eXkkUZ7cBSrwHDhzA0tIST09PtfvU29ubX375Re1esLKyypUoBnLN6bVr1+jTp49a26RJk3Ltl/M8Dhw4QNu2bSlRooQSh4WFBS4uLsrPgqurK0lJSQQFBXHw4EH++eefAl0LZ2dn5Zyzj1XQnztNSUxMVEqmHD58WEkK/1viE+JdkpXFQgghhBBCCCHeW/fu3SMtLU0tuQNga2urfJ+YmAhkJbfykp1YTUxM5OTJk3kmTh0dHdVe5zxedlt23eJbt25hY2OTZ5+85BX/ixcvSExMVM4l54pkXV3dfNufPn2qvO7Xrx9+fn7K6927d7NixQp27tyZZyzv0svzBFkrtlu0aIGNjQ1z586lfPny6Ovr89lnn6mdE4CBgYFyDbK9fO5VqlRh9+7dTJ06lfbt26OlpYWvry+LFi2iXLly+caUnJycK67sWF+uW5xX/NnympP85i873sTERJKSkvJN3N+6dYsyZcq88rg5k5dt27bNNf/29vZqfQwNDTE2NlZrS0xMJCIigoiIiFzHyI7b09OT9evXM3/+fHx8fNDX16djx45ERERgaWmp9M/rvF9+IF9hfu405eLFiyQnJxMREZHrYY7/hviEeJckWSyEEEIIIYQQ4r1lY2NDiRIlctUOvXPnjvJ9duJq27ZtlC1bNtcYFSpUUPr5+vqq1VPNpqenp/Y6r1qld+/exc7ODsj66P29e/fy7JOXu3fvUrp0abX4dXR0sLa2zrN/Ydjb26slCP/44w90dXXzLAvxrmU/8C5bbGwsCQkJ7N69m1q1aintDx48UBKlheHr64uvry8PHz5k//79DBs2jF69evH999/nu4+lpWWe83Tnzh21JGhe8b8JS0tLbGxslAfw5fTyGwr5HTfnnOrq6uLg4PDKuc5rLEtLS1q3bs2gQYNybcsu6QEQGBhIYGAgiYmJ7Nixg2HDhqGjo8NXX32V7/HyOlZBf+40xd3dnebNmzN8+HCsrKwIDAz8V8UnxLskyWIhhBBCCCGEEO8tbW1tXF1diYmJYdiwYUr7li1blO8bNmyIoaEhCQkJuco9vKx58+Zs2LCBatWqYWRk9MrjHj58mAcPHiilKA4dOkRSUpJSGqBevXqkpKRw7NgxmjRpAmQ9POv777/Ps2ZxTEwMLi4uyuvsh9Vpa2u//iK8IzlXLBd0H6DA+6WmpqrtB1llROLj49VKcBSWqakpnTt35tSpU0RFRb2yb6NGjdi+fTtz5sxR6jgfPHiQlJQUGjVqVOQYXqd58+bMnDkTXV1datasqbHjFDSWP/74AxcXlwLdg9bW1vTp04e9e/dy/vz5Qh+rID93Rbn/CuPzzz8nNTWVoKAgZZV0YeIT4kMhyWIhhBBCCCGEEO+1sLAw/P396dWrF127duXMmTPKw8Ug62PwkyZNYvTo0SQkJODh4YG2tjZXrlxhx44dbN26FUNDQ4YPH87XX39N06ZNGTp0KOXKlePevXucOnUKe3t7tWS0iYkJLVu2ZMyYMaSkpBASEkL9+vWVB6i1bNkSV1dXunXrxrRp0zA3N2fmzJmYmJioPVws27p16zAwMMDV1ZXo6GiOHTvGnj17NH/xCqFatWocOnSIgwcPYmFhQYUKFbCysnrlPlWqVEFbW5vVq1dTokQJSpQo8cpVrm5ubhgbG/Of//yHMWPGcOPGDSZMmKC26rqgli9fTmxsLL6+vtjZ2XH16lU2bNigPDwuP2FhYbi7u+Pn58fgwYO5c+cOY8aMoX79+srD9DTB29ubNm3a4Ovry+jRo6lZsyZPnjzh3LlzXLp0Kc8H6WnKxIkTqVevHj4+PvTr1w9bW1tu377N0aNHady4MQEBAUyYMIH79+/j4eFByZIl+f3339m/fz/Dhw8v1LEK+nNXlPuvsEJDQ0lNTaVbt27o6+vj5+dXqN8LQnwIJFkshBBCCCGEEELh5uZW3CEUWtu2bVm2bBlTpkwhOjqaBg0asGnTJrUHgI0YMYLSpUszd+5cFi5ciI6ODo6Ojvj5+SmrWK2srDh58iTjxo0jJCSE+/fvU7JkSdzc3HKtSG7fvj1lypRhwIABJCcn4+3tzbJly5TtKpWKHTt20L9/f/r164eFhQVDhgzhwoULnD17Ntc5REVFERoayqRJkyhZsiQrVqzQaGKyKKZOncrAgQPp0KEDjx49Ys2aNQQFBb1yH2traxYvXszMmTNZv349aWlpZGZm5tvf1taWzZs3M3LkSPz9/alSpQrLly9nxowZhY63Zs2a7Nq1i+HDh3P//n1KlSpFQEBAnuUEXlanTh0OHDhAaGgoHTp0wMjIiLZt2zJnzhyNr/TesmUL06dPZ8mSJVy7dg0zMzOqV69Or169NHrcnCpVqsTp06cZN24cgwYN4vHjx9jZ2dGkSRNl1XO9evWIiIjgm2++4eHDh5QpU4ZRo0Yxbty4Qh2roD93Rbn/imLSpEmkpqbSsWNHdu/eTfPmzQv8e0GID4Eq81W/pUWeHj58iJmZGQ8ePMDU1LS4w3lv1Bm1TqPjf9nRQ6PjV/8276fcvi0m7j00Or7f+R0aHb+vZ3eNjV1h4CaNjQ3gOqCvRsdfe8bs9Z3egItX/g/neBuObHz1/0y/KXdvH42OXypBcw+dsHPP+wE1b0vE0S2v7/QGfH19NTr+9b+HaHT8qk69NTp+j4sVNDZ2aLVKGhsbYFbkjxodX/7mvtr7/Dc36KPctSnFq72v/zZ4+vQpV69epUKFCujr6xd3OO8dBwcH/Pz8WLRoUaH2e/78Oc7OzjRu3Jg1a9ZoKDohhBAit4L+7ZeVxUIIIYQQQgghhAasWLGCjIwMnJycSE5OZunSpcTHxxMdHV3coQkhhBB5kmSxEEIIIYQQQgihAfr6+kyfPp34+HgAatWqxZ49e15Zs/d9kpmZSXp6er7btbS08qzPLMTbIPefEJohPzVCCCGEEEIIIUQhxMfHF6gERc+ePfnvf//LP//8wz///ENsbKzyALwPwdq1a9HR0cn3a9KkScUdoviAyf0nhGbIymIhhBBCCCGEEEIUWps2bYiLi8t3u729/TuMRvyvkftPCM2QZLEQQgghhBBCCCEKzcrKCisrq+IOQ/yPkvtPCM2QMhRCCCGEEEIIIYQQQgghJFkshBBCCCGEEEIIIYQQQpLFQgghhBBCCCGEEEIIIZBksRBCCCGEEEIIIYQQQggkWSyEEEIIIYQQQgghhBACSRYLIYQQQgghhBBCCCGEQJLFQgghhBBCCCE+APPmzaNcuXJoa2tjbm7O1KlTCz1GREQEe/fu1UB0b8fGjRupXLkyOjo61K5du7jDeedUKhWzZ8/Od3tQUBDVq1cv9LgF3S88PJwTJ07kue3JkydMnToVFxcXjI2N0dfXp0qVKgwYMIDff/9dra9KpVL7srW1pU2bNrn6hYeHo1KpKF26NBkZGbmO+fHHH6NSqQgKCir4yQohxGuUKO4AhBBCCCGEEEL8e3yzuX6xHbtzp9NF2u+vv/5ixIgRhISE0KZNGxYtWsTUqVMZO3ZsocaJiIjAz8+PVq1aFSkOTXr8+DG9e/cmICCAyMhITE1Nizukf53x48fz5MkTjY0/ceJEjI2NcXd3V2tPTEzE09OTa9euMXjwYBo3boyuri7nzp1j1apV7Nixg1u3bqntM3jwYLp160ZmZiYJCQlMnTqVFi1acP78eczNzZV+Ojo6JCYmcuzYMTw8PJT2a9euERsbi7GxscbOVwjxv0mSxUIIIYQQQggh3msXLlwgMzOTvn37UrFiRQ4cOKDR4z179gwdHR20tN7dh3Xj4+N59uwZPXr04OOPP36jsdLT08nIyEBHR+ctRVdwqampGBgY5GoPDw/nyJEjHDlypMhjOzo6vkFkRTdw4ECuXLnCqVOn+Oijj5T2Zs2aMWjQIL766qtc+5QrVw43NzfldZUqVahduzYnTpxQe7NCV1eX5s2bExUVpZYsjo6O5qOPPkJbW1szJyWE+J8lZSiEEEIIIYQQQry3goKCaNOmDZCVLFSpVEycOJEnT54oH/N/OcmWHwcHB65du8bixYuV/SIjI5VtwcHBzJw5k/Lly2NgYEBSUhJ//vknXbt2pWzZshgaGuLs7MycOXPUSgbEx8ejUqnYsGEDwcHBWFhYYGdnx8iRI0lLS1P6JSQk0LlzZ2xtbdHX16dChQoMGzYMyEqk1qhRAwAvLy9UKhXh4eEAJCUl0bt3b6ytrTEwMMDd3Z1jx46pnZuHhwd+fn6sXbsWJycn9PT0+PXXX5XyC9999x01a9bEwMCApk2bEh8fT1JSEp07d8bU1BRHR0c2bdqU65rt2bOHBg0aYGBggI2NDQMHDlRb2XvkyBFUKhV79uyhY8eOmJqa0qlTp9dPahHlVU7ihx9+wMXFBX19fWrWrMnBgwepXbt2nqUbjhw5gouLC0ZGRtSvX58zZ84o21QqFQCjRo1S7o8jR45w7do1tm7dyqBBg9QSxdm0tLTo27fva2M3MTEB4MWLF7m2BQQEsGXLFrVtGzdupFu3bq8dVwghCktWFgshhBBCCCGEeG+NHz8eZ2dnQkJC2LZtGzY2NqxZs4aoqCgOHToEUKCSDTExMbRq1YpGjRoxYsQIQH2l6tatW6lcuTLz589HW1sbIyMjfv31V5ycnOjevTsmJiacPXuWCRMm8PjxYyZMmKA2flhYGP7+/nzzzTecOHGC8PBwKlWqxIABAwDo2bMnN2/eZMGCBdja2nL9+nV++uknAD777DMcHR3p2bMnixcvxtXVlTJlypCenk7Lli25cuUKM2bMwNbWlgULFuDt7c2JEyeoU6eOcvyffvqJ+Ph4Jk2ahIWFBWXLlgXg9u3bjBgxgrCwMHR0dBgyZAjdu3fH0NCQJk2a0LdvX1auXElgYCBubm6UL18egC1bttClSxd69erFxIkTuXXrFmPGjCE5OZno6Gi1c+/Xrx+BgYHExMS805Wwt27dwtfXF1dXV7755hsePHjAwIEDefDgQa6az7dv32bIkCGMGTMGMzMzQkNDad++PZcvX0ZHR4fY2FgaNmyolI8AcHZ2ZseOHWRmZtKiRYtCxZaRkUFaWhqZmZncuHGD0aNHY21tnecbG23atKFPnz4cOHCA1q1b89///pfffvuN7du355nEF0KINyHJYiGEEEIIIYQQ7y1HR0eqVKkCgIuLCw4ODnz33XdoaWmpfcz/dVxcXNDT08PW1jbP/V68eMG+ffswMjJS2ry8vPDy8gIgMzOTRo0a8c8//7Bo0aJcyeIGDRqwYMECALy9vTl8+DBbtmxRksWnT59m2rRpdOnSRdmnZ8+eAJQpU0ZZWezs7KzEt3PnTk6fPs3+/fvx8fEBwMfHh0qVKjF16lS2bt2qjJWUlERcXJySJH65/ejRo8qq2Js3bzJ48GBCQkIYP348APXq1WPbtm1s376doUOHkpmZyciRI+nSpQurVq1SxrKzs6NVq1aMHz9ebZVt27ZtmTFjhtpxMzIy1FZgZ2RkkJmZqbbaWqVSvVFyed68eZQoUYI9e/YoK3crVKhA48aNc/XNeR2MjIxo1qwZp06dolGjRso1z1k+4ubNmwC5rmvO8ytRQj39EhISQkhIiPLa0tKSmJgYzMzMcsVmaGiIv78/0dHRtG7dmqioKBo2bEiFChUKdT2EEKIgpAyFEEIIIYQQQgjxGh4eHmqJYoCnT58yYcIEKlWqhJ6eHjo6OoSFhXHr1i0eP36s1jfnylNnZ2cSEhKU166ursyePZulS5dy6dKlAsV0/PhxTE1NlUQxZD0Q7ZNPPuGHH35Q61uzZs1cCU0Ae3t7tcRuduK9efPmSpu5uTklS5bk77//BuDixYtcu3aNzp07k5aWpnw1bdoULS0tZUV0ttatW+c6bu/evdHR0VG+vvzyS44dO6bW9qY1iOPi4mjWrJmSKAZo1KgRlpaWr70Ozs7OAGpz9CrZZSqytW3bVu1ccl6ToUOHEhcXR1xcHHv27KFhw4b4+/vz22+/5Tl+QEAAO3bsIDU1lejoaAICAgoUlxBCFJYki4UQQgghhBBCiNewtbXN1RYSEsKsWbPo27cve/fuJS4ujnHjxgFZieSXmZubq73W1dVV67Np0ya8vLwICwujcuXKVK1alW3btr0ypuTkZEqWLJlnrElJSa+NP7+4XhdvYmIiAO3bt1dLiBoaGpKenq4klV917PDwcCVZGhcXR9++fXF1dVVr27VrV/4nXwC3bt3CxsYmV3te1yy/65BzHnOyt7cHcieVIyIiiIuLY9myZXnuV6ZMGerWrUvdunVp1aoVW7dupUSJEkyaNCnP/j4+Pujo6PDFF19w9epVOnfu/Mq4hBCiqKQMhRBCCCGEEEII8Ro5V44CbN68mf79+6uVE9izZ0+Rxrezs2P16tWsWrWKM2fOMHnyZLp06cKFCxeoWLFinvtYWlpy9+7dXO137tzJtXo2r/iLKnvsRYsW0aBBg1zbsxOorzq2g4MDDg4Oyuvdu3dz8eJF6tat+9bitLOz4969e7na87pmRdWkSRNUKhUHDhzA09NTaa9UqRJArhXm+dHT06NixYqcO3cuz+06Ojp06NCBuXPn4uXllW/yXwgh3pSsLBZCCCGEEEII8UHR1dXl2bNnRdrvdStJX5aamqqsQAVIT0/P9XC3wtLS0qJevXpMnjyZtLS0V5akaNSoEQ8fPuTAgQNKW1paGjExMTRq1OiN4niVqlWrUqZMGa5cuaKsjn35K2eyuLjUq1ePQ4cO8ejRI6Xt+PHjuVZdF5SOjk6u+6N8+fJ06NCBxYsXc/78+SLH+vTpUy5fvoy1tXW+fT777DPatGnD0KFDi3wcIYR4HVlZLIQQQgghhBDig1KtWjXS0tKYP38+7u7umJqa4uTkVKD9Dh06xMGDB7GwsKBChQpYWVnl29/b25uVK1fi7OyMtbU1S5YsKVKS+sGDB/j4+NCjRw+cnJx4/vw5CxcuxNzcHFdX13z3a926NfXr1ycwMJDp06dja2vLwoULuXXrFmPHji10HAWlUqmYO3cu3bp148mTJ7Ru3RojIyOuXbvGnj17mDp1qlL7+G37/fff2bJli1qbsbExvr6+ufoOGzaMJUuW0Lp1a0aNGkVKSgoTJ07E2toaLa3Cr52rVq0aO3bsoHHjxhgZGeHk5ISJiQlLly7F09OThg0bEhwcTOPGjdHX1+fGjRusXbsWLS0tDA0N1ca6fv06J0+eBODevXssXryY+/fvKw88zEv9+vXZvn17oeMWQojCkGSxEEIIIYQQQghF506nizuEN9amTRsGDRrEtGnTuHv3Lk2aNOHIkSOv3W/q1KkMHDiQDh068OjRI9asWUNQUFC+/RcuXMiAAQMYPHgwhoaGBAUF0b59e/r27VuoePX19alRowYLFy7k+vXrGBgYULduXQ4cOPDKlaba2trs3buXkSNHMmrUKJ48eYKrqysHDhygTp06hYqhsDp16oS5uTlTpkxhw4YNQFZpCV9fX42WSFi3bh3r1q1Ta3N0dMxzBbadnR379u1jyJAhdOzYEUdHR+bPn09wcDBmZmaFPvbixYsZOnQoLVu2JDU1lcOHD+Ph4YG1tTUnTpxg/vz5bN68mXnz5pGenk65cuVo1qwZZ8+eVR6Yl23hwoUsXLgQyKqXXK1aNWJiYmjXrl2h4xJCiLdJlZmZmVncQbxvHj58iJmZGQ8ePMDU1LS4w3lv1Bm17vWd3sCXHT00On71b3M/wfdtMnHvodHx/c7v0Oj4fT27a2zsCgM3aWxsANcBhfuf+cJae6bw/yNaGC5e5TQ6/pGNX2p0fHdvn9d3egOlEt7sKdqvYuee++Eob1PE0S2v7/QG8lqB8zZd/3uIRsev6tRbo+P3uFhBY2OHVquksbEBZkX+qNHx5W/uq73Pf3ODPhqksbE/VO/rvw2ePn3K1atXqVChAvr6+sUdjhDvzF9//UXVqlVZvXo1n376aXGHI4QQ70xB//bLymIhhBBCCCGEEEJ8kEJDQ6lZsyb29vZcuXKFqVOnYmdnR4cOHYo7NCGE+FeSZLEQQgghhBBCiA9eWlpavttUKhXa2trvMBrxrjx//pyQkBDu3LmDgYEBHh4ezJo1C2Nj4+IOTQgh/pUkWSyEEEIIIYQQ4oOno6OT77by5csTHx//7oIR78ycOXOYM2dOcYchhBDvDUkWCyGEEEIIIYT44MXFxeW7TU9P7x1GIoQQQvx7SbJYCCGEEEIIIcQHr27dusUdghBCCPGvp1XcAQghhBBCCCGEEEIIIYQofpIsFkIIIYQQQgghhBBCCCHJYiGEEEIIIYQQQgghhBCSLBZCCCGEEEIIIYQQQgiBJIuFEEIIIYQQQgghhBBCIMliIYQQQgghhBAfgHnz5lGuXDm0tbUxNzdn6tSphR4jIiKCvXv3aiC6t2Pjxo1UrlwZHR0dateuXdzhiHwcOXKkSPefg4MDwcHByuugoCCqV6+uvI6MjESlUpGYmPhW4hRCiLyUKO4AhBBCCCGEEEL8e/z227JiO3bNmgOKtN9ff/3FiBEjCAkJoU2bNixatIipU6cyduzYQo0TERGBn58frVq1KlIcmvT48WN69+5NQEAAkZGRmJqaFndIIh9Hjhxh9uzZhb7/cho/fjxPnjx5S1EJIUTBvLcri6Ojo3F1dcXAwABLS0s6duzI5cuXX7nPmDFjaNiwISVLlkRfX5+KFSsyePBg7t69+46iFkIIIYQQQgjxtl24cIHMzEz69u2Lu7s7VapU0ejxnj17RkZGhkaPkVN8fDzPnj2jR48efPzxx9SoUaPIY6Wnp/PixYu3GF3Bpaam5tkeHh6Oh4fHWxnrQ+Ho6EjNmjWLOwwhxP+Y9zJZ/NVXXxEQEMAvv/yCnZ0d6enpbN26FXd3d27fvp3vfjNmzCAuLg5bW1usrKy4evUqixYtwsvL653/oRdCCCGEEEII8eaCgoJo06YNkJVcU6lUTJw4kSdPnqBSqVCpVAVKQjo4OHDt2jUWL16s7BcZGalsCw4OZubMmZQvXx4DAwOSkpL4888/6dq1K2XLlsXQ0BBnZ2fmzJmj9u/L+Ph4VCoVGzZsIDg4GAsLC+zs7Bg5ciRpaWlKv4SEBDp37oytrS36+vpUqFCBYcOGAVmJ1OzksJeXFyqVivDwcACSkpLo3bs31tbWGBgY4O7uzrFjx9TOzcPDAz8/P9auXYuTkxN6enr8+uuvSpmD7777jpo1a2JgYEDTpk2Jj48nKSmJzp07Y2pqiqOjI5s2bcp1zfbs2UODBg0wMDDAxsaGgQMHqq2EPXLkCCqVij179tCxY0dMTU3p1KnT6yc1D9nXMTIykr59+2JlZUX9+vWBrOT92LFjKV++PHp6elSrVo2NGzeq7X/u3DlatWqFlZUVhoaGODk5MXPmTGV79rU4cuQILi4uGBkZUb9+fc6cOaM2TmZmJrNnz6ZKlSro6elRsWJF5s2bp2wPDw8v0v2Xl5xlKPKyZs0adHV1+eqrrwoUnxBCvM57V4bi+fPnjBkzBoAOHTqwZcsWbt68SdWqVbl79y5Tp05lwYIFee4bFhbG0KFDsbGxIT09nS5durB161b++OMPfv31V1xcXN7lqQghhBBCCCGEeEPjx4/H2dmZkJAQtm3bho2NDWvWrCEqKopDhw4BFKhkQ0xMDK1ataJRo0aMGDECyEo+Z9u6dSuVK1dm/vz5aGtrY2RkxK+//oqTkxPdu3fHxMSEs2fPMmHCBB4/fsyECRPUxg8LC8Pf359vvvmGEydOEB4eTqVKlRgwIKv0Rs+ePbl58yYLFizA1taW69ev89NPPwHw2Wef4ejoSM+ePVm8eDGurq6UKVOG9PR0WrZsyZUrV5gxYwa2trYsWLAAb29vTpw4QZ06dZTj//TTT8THxzNp0iQsLCwoW7YsALdv32bEiBGEhYWho6PDkCFD6N69O4aGhjRp0oS+ffuycuVKAgMDcXNzo3z58gBs2bKFLl260KtXLyZOnMitW7cYM2YMycnJREdHq517v379CAwMJCYmBm1t7ULNb06hoaG0bt2aqKgoJSnfuXNnfvjhByZMmEC1atXYu3cvgYGBWFhY0LJlSwDatGmDra0tX331FWZmZly6dImEhAS1sW/fvs2QIUMYM2YMZmZmhIaG0r59ey5fvoyOjg4AQ4cOZdWqVYSFhdGgQQNOnDhBSEgIBgYGDBgwgM8++4yEhAQ2btxYqPuvKBYuXMjIkSNZt24dXbt2LVB8QgjxOu9dsjguLk4p5t6hQwcA7O3tcXNz4+DBg+zfvz/ffSdPnqx8r62tjbu7O1u3bgVAT08v3/2ePXvGs2fPlNcPHz58o3MQQgghhBBCCPF2ODo6KmUnXFxccHBw4LvvvkNLSws3N7cCj+Pi4oKenh62trZ57vfixQv27duHkZGR0ubl5YWXlxeQtaKzUaNG/PN/7N15WFXl2sfx7wYZFUFQEJwgS9QcEYc8qAgiqKQ5a5IHM6dySE3R0MR5TE00hwZJLfU44DyQOVYOHMoyj1lqkKSpCJiWpiDvH1ys1y04oJJhv8917euwn/Wse91rre0hbh7u9ccfzJ07N1exuH79+sbCpqCgIHbt2sXq1auNAt6hQ4eYPHkynTt3Nvbp3r07AGXLljVWFletWtXIb8OGDRw6dIht27YRHBwMQHBwME8//TSTJk0yft6F7BXI8fHxRpH41vE9e/bw7LPPAnDmzBkGDBhAREQEo0ePBqBu3bqsXbuWdevWMWjQILKysnjjjTfo3Lkz77//vhHL3d2dli1bMnr0aCMeQOvWrZk6darZcW/evGm2AvvmzZtkZWWZrbY2mUy5isu1atUyO+auXbvYsGED27dvp3nz5sb1PXv2LGPGjKFFixakpKTw008/8c477xir0Js2bcrtbr8WRYsWpWnTphw8eBA/Pz9OnjzJ3LlzWbBgAb179wagWbNm/PHHH4wdO5bevXtTtmxZypYtm+/PX35NnjyZsWPHsmrVKlq3bg1wX/lZWBTKPzAXkb9Qoft/idOnTxtfu7q6Gl+7ubkB8PPPP99XnN9//50lS5YA8K9//YuqVavece7kyZNxdHQ0Xrd/cxUREREREZEnm7+/v1mhGODatWuMGTOGp59+GhsbG6ysrIiMjOTs2bNcuXLFbG5OITNH1apVzVa2+vj4MGPGDObPn8+JEyfuK6d9+/ZRvHhxo1AMYGVlRbt27fj888/N5taoUSPPn2U9PDzMCrs5hfdmzZoZY05OTri6uho/j//www8kJSXRqVMnMjIyjFeTJk2wsLAwVkTnaNWqVa7jvvzyy1hZWRmv8ePHs3fvXrOxW1d23ylWXFwczs7OBAQEmOUSFBTE119/TWZmJi4uLlSoUIGRI0fy0Ucf5VpRfKdrkVMnyJm/Y8cOIHvh2q3HatasGb/++qtZvaIgRUZGMnHiRDZt2mQUiv9O+YlI4VboisV3kpWVdd9zL1y4QGBgIN988w2VK1dm1apVd50/cuRILl26ZLz0f7AiIiIiIiL/LDkLlG4VERHB9OnT6dWrF1u2bCE+Pp5Ro0YB2YXkWzk5OZm9t7a2NpuzcuVKAgMDiYyM5JlnnqFy5cqsXbv2rjmlpaWZLaK6NdfU1NR75n+nvO6Vb85f+7Zt29asuGtvb09mZmaun5nzOnZUVBTx8fHGq1evXvj4+JiNbdy4Mc9zu1VKSgqpqalmeVhZWfHKK6+QkZHB2bNnMZlMxMXFUaVKFV577TXKlSuHr69vrt7Od7oWt553VlYWJUuWNDtWUFAQwF9WK1i9ejXVq1fHz8/PbPzvkp+IFG6Frg3Frb8JPX/+fK6vy5cvf9f9jx8/TsuWLTl16hQNGjRg48aNlCxZ8q772NjY3LVNhYiIiIiIiDzZTCZTrrFVq1bRp08fIiIijLHNmzc/UHx3d3c+/PBD3n//fRISEpgwYQKdO3fm+PHjPPXUU3nu4+zsbPZzcY5z587h7Ox8z/wfVE7suXPnUr9+/VzbPTw87nlsT09PPD09jfebNm3ihx9+wNfX967Hvj2Ws7MzpUqVYsuWLXnOzymmV6pUiVWrVnHjxg2+/PJL3nzzTZ5//nl++eUXihUrdtdj3nosk8nE559/bhSSb+Xt7X1fcR7Whg0baNeuHe3bt2fdunVGP+W/S34iUrgVumJx3bp1cXFx4eLFi6xZs4auXbty5swZDhw4AEBISAgAlStXBqB///70798fgL1799K2bVtSU1Pp0KEDS5cuxdbW9vGciIiIiIiIiBQIa2trs+fO5Ge/21cE383Vq1fNinKZmZm5Hu6WXxYWFtStW5cJEyawYcMGTpw4ccdisZ+fH9OnTycuLs5oc5GRkUFsbGyuVaePUuXKlSlbtiynTp3itddeK7Dj3I9mzZoxbdo0rK2tqVGjxj3nW1lZ0aRJE0aMGEHr1q05c+aM0XrjXnL6U1+8eNHofZyXB/383S9vb2927NhB06ZN6dq1KytXrsTS0vK+8xMRuZtCVyy2trZm0qRJ9OnThzVr1vDUU09x8eJFLl++TMmSJRkxYgSQvYIY/v/PYyC7yf3169cxmUz8/PPP+Pv7G9tGjx6dZx8lERERERERKVyqVKlCRkYG77zzDg0bNqR48eL3taqySpUq7Ny5k08//ZQSJUrg5eWFi4vLHecHBQXx3nvvUbVqVUqWLMm77777QEXCS5cuERwczEsvvYS3tzfXr18nOjoaJycnfHx87rhfq1atqFevHmFhYUyZMgU3Nzeio6M5e/Ysb775Zr7zuF8mk4mZM2fy4osv8vvvv9OqVSuKFi1KUlISmzdvZtKkSfddgH1YQUFBPP/884SEhDB8+HBq1KjB77//ztGjRzlx4gTvv/8+3377LUOHDqVz585UrFiRS5cuMXnyZDw9PfPsi3wnlSpV4rXXXuOll15i2LBh1K9fnxs3bvDDDz+wa9cu1q1bBzz45y8/qlevTlxcHAEBAfz73/9myZIl952fiMjdFLpiMUDv3r0pWrQoM2bM4NixY9ja2tKuXTumTJmS689dbnX9+nUgu7/xoUOHzLZduHChQHMWERERERGRv8bzzz/Pq6++yuTJkzl//jyNGzdm9+7d99xv0qRJ9OvXj/bt23P58mUWL15MeHj4HedHR0fTt29fBgwYgL29PeHh4bRt25ZevXrlK19bW1uqV69OdHQ0P//8M3Z2dvj6+hIXF3fXtomWlpZs2bKFN954g2HDhvH777/j4+NDXFwcderUyVcO+dWxY0ecnJyYOHEiy5YtA7JbS4SEhNyxP3JBWb16NVOmTOHdd98lKSkJR0dHqlWrRo8ePQAoXbo0pUuXZvLkyfzyyy84OjrSqFEjli1bhqWlZb6ONWfOHLy9vVm4cCHjxo2jWLFieHt707FjR2POg37+8svHx4dt27YRFBREnz59WLRo0X3lJyJyN6as/DwZTgD47bffcHR05NKlSxQvXvxxp1No1Bm2pEDjj+/gX6Dxq20v2JXnDg1fKtD4ocfWF2j8XgHdCiy2V7+VBRYbwKdv/v5jPr8+SnAs0Pi1A+/eq/1h7f5kfIHGbxgUfO9JD6F08v2vFskv94a5HyjzKM3es7pA4+e0biooP58eWKDxK3u/XKDxX/rBq8Bij6zydIHFBpge80WBxtf33LsrzN9zw599tcBiP6kK688G165d46effsLLy0ut+URERP4B7vd7v8VfmJOIiIiIiIiIiIiI/E0VyjYUIiIiIiIiIvmRkZFxx20mkynf7QhE8kOfPxEpLFQsFhERERERkSeelZXVHbdVqFCBxMTEvy4Z+cfR509ECgsVi0VEREREROSJFx8ff8dtNjY2f2Em8k+kz5+IFBYqFouIiIiIiMgTz9fX93GnIP9g+vyJSGGhB9yJiIiIiIiIiIiIiIrFIiIiIiIiIiIiIqJisYiIiIiIiIiIiIigYrGIiIiIiIiIiIiIoGKxiIiIiIiIiIiIiKBisYiIiIiIiIiIiIigYrGIiIiIiIg8AWbNmkX58uWxtLTEycmJSZMm5TvG7Nmz2bJlSwFk92h88sknPPPMM1hZWVGrVq3Hnc5f6ssvv8TCwoIPPvgg17YXXniBChUq8Pvvv5uNb926lZYtW1KqVCmsrKxwc3OjVatWLF++nJs3bxrzwsPDMZlMxqto0aLUrFkzz2P9VXbv3v1An2ERkYdV5HEnICIiIiIiIn8fNVdvf2zH/qZD8APt9+OPPzJ06FAiIiJ4/vnnmTt3LpMmTeLNN9/MV5zZs2cTGhpKy5YtHyiPgnTlyhVefvllunbtSkxMDMWLF3/cKf2lGjZsSM+ePYmIiKBNmzaULFkSgHXr1rF+/Xo2bNhA0aJFjflvvvkmkydPpm3btsydOxd3d3fOnTvHunXrCAsLw9nZmeDg//+8PfXUU3z88ccAXL58mdjYWF555RWKFi1Kly5d/tqTJbtYPGPGjHx/hkVEHpaKxSIiIiIiIlKoHT9+nKysLHr16sVTTz1FXFxcgR7vzz//xMrKCguLv+6PdRMTE/nzzz956aWX+Ne//vVQsTIzM7l58yZWVlaPKLv7d/XqVezs7HKNR0VFsXv3bnbv3n3HfadOncr69et54403iImJ4cqVKwwYMIC2bdvy/PPPG/M2b97M5MmTGTNmDFFRUWYxOnbsyKBBg3Kdu52dHQ0aNDDeBwUFsX//ftauXftYisUiIo+L2lCIiIiIiIhIoRUeHm4UCitWrIjJZGLs2LH8/vvvRlsBf3//e8bx9PQkKSmJefPmGfvFxMQY2/r378+0adOoUKECdnZ2pKam8v3339OlSxfKlSuHvb09VatW5e233zZrcZCYmIjJZGLZsmX079+fEiVK4O7uzhtvvEFGRoYxLzk5mU6dOuHm5oatrS1eXl4MHjwYyC6kVq9eHYDAwEBMJpNRBE1NTeXll1+mZMmS2NnZ0bBhQ/bu3Wt2bv7+/oSGhvLRRx/h7e2NjY0N33zzDeHh4VSrVo0dO3ZQo0YN7OzsaNKkCYmJiaSmptKpUyeKFy9OxYoVWblyZa5rtnnzZurXr4+dnR2lSpWiX79+Zq0gdu/ejclkYvPmzXTo0IHixYvTsWPHe9/UO3B2dmb69Ol89NFH7N69m1GjRpGens6cOXPM5s2cORN3d3dGjRqVZ5x69epRu3btex7PwcGBGzdumI0lJSXRoUMHHB0dKVq0KMHBwRw5csRszs2bN5kwYQKenp7Y2NhQuXJlFi5caDbnXvf7QT7DIiKPglYWi4iIiIiISKE1evRoqlatSkREBGvXrqVUqVIsXryY5cuXs3PnToD7atkQGxtLy5Yt8fPzY+jQoUB28TnHmjVreOaZZ3jnnXewtLSkaNGifPPNN3h7e9OtWzccHBw4fPgwY8aM4cqVK4wZM8YsfmRkJG3atOE///kPX375JVFRUTz99NP07dsXgO7du3PmzBnmzJmDm5sbP//8M//9738BeOWVV6hYsSLdu3dn3rx5+Pj4ULZsWTIzM2nRogWnTp1i6tSpuLm5MWfOHIKCgvjyyy+pU6eOcfz//ve/JCYmMm7cOEqUKEG5cuUA+PXXXxk6dCiRkZFYWVkxcOBAunXrhr29PY0bN6ZXr1689957hIWF0aBBAypUqADA6tWr6dy5Mz169GDs2LGcPXuWESNGkJaWxooVK8zOvXfv3oSFhREbG4ulpWW+7u/t/v3vf7N48WLjes2YMYOyZcsa2zMyMvjiiy/o0KEDRYrkr+SRU7y/cuUKa9eu5YsvvmDJkiXG9suXL+Pv74+FhQULFizA1taWiRMn0rhxY7799lvjmg4bNox33nmHUaNG0bBhQzZt2kTfvn25ceMG/fv3B+59v5OTk/nkk0/y9RkWEXkUVCwWERERERGRQqtixYpUqlQJgNq1a+Pp6cmOHTuwsLAwaytwL7Vr18bGxgY3N7c897tx4wZbt24164sbGBhIYGAgAFlZWfj5+fHHH38wd+7cXMXi+vXrGytgg4KC2LVrF6tXrzaKxYcOHWLy5Ml07tzZ2Kd79+4AlC1b1lhZXLVqVSO/DRs2cOjQIbZt22b03w0ODubpp59m0qRJrFmzxoiVmppKfHy8UdC8dXzPnj08++yzAJw5c4YBAwYQERHB6NGjAahbty5r165l3bp1DBo0iKysLN544w06d+7M+++/b8Ryd3enZcuWjB492ogH0Lp1a6ZOnWp23Js3b5qtwL558yZZWVlmq61NJlOexeXx48fTuHFjKleuzIABA8y2Xbx4kT///DPXeWZlZZGZmWm8t7CwMGsjcvTo0VytKYYOHUq3bt2M94sXLyYpKYmjR49SpUoVAJo0aUL58uWZPXs2b7/9NikpKURHRzNs2DBj9Xfz5s1JSUlh3Lhx9OvXD0tLy3ve77Jly+b7Mywi8iioDYWIiIiIiIjIPfj7+5sVigGuXbvGmDFjePrpp7GxscHKyorIyEjOnj3LlStXzOY2b97c7H3VqlVJTk423vv4+DBjxgzmz5/PiRMn7iunffv2Ubx4cbMHtVlZWdGuXTs+//xzs7k1atTIVUAF8PDwMCvs5hTemzVrZow5OTnh6urK6dOnAfjhhx9ISkqiU6dOZGRkGK8mTZpgYWFhrJDN0apVq1zHffnll7GysjJe48ePZ+/evWZjt67svtXChQsxmUwkJiaSmJiY5xyTyWT2fs2aNWaxBw4caLa9YsWKxMfHEx8fz549e5gwYQLR0dGMGzfOmLNv3z6qVatmFIohuzVGUFCQcb0PHjzIjRs3crXb6Ny5MxcuXOCHH34AHux+i4j8FVQsFhEREREREbkHNze3XGMRERFMnz6dXr16sWXLFuLj440+udeuXTOb6+TkZPbe2trabM7KlSsJDAwkMjKSZ555hsqVK7N27dq75pSWloarq2ueuaampt4z/zvlda98U1JSAGjbtq1ZAdbe3p7MzEyjqHy3Y0dFRRnF2fj4eHr16oWPj4/Z2MaNG3Pt99lnn/Hxxx/z3nvvUaZMmVwri11cXLCxsTErxEP2KvCcuO7u7rni2tra4uvri6+vL40bNyYyMpI+ffowceJE41qmpaXleS63Xu+0tLQ8zznnfc68B7nfIiJ/BbWhEBEREREREbmH21eqAqxatYo+ffoQERFhjG3evPmB4ru7u/Phhx/y/vvvk5CQwIQJE+jcuTPHjx/nqaeeynMfZ2dnzp8/n2v83LlzODs73zP/B5UTe+7cudSvXz/Xdg8Pj3se29PTE09PT+P9pk2b+OGHH/D19b3jcf/8809effVVAgMD6dmzJ2XKlKFFixasWbOG9u3bA1CkSBH+9a9/8dlnn5GZmWm0sShRooQRO6cgfi9VqlTh+vXr/Pjjj9SvXx9nZ2eOHz+ea96t1zvnf8+fP0+ZMmXM5ty6/UHut4jIX0Eri0VEREREROSJYm1tzZ9//vlA+92+Ivhurl69alZ4zMzMzPVwt/yysLCgbt26TJgwgYyMjLu2KPDz8+O3334jLi7OGMvIyCA2NhY/P7+HyuNuKleuTNmyZTl16pSxGvfW1+3F4kdl8uTJJCUl8e677wIQEhJC+/btef31183afgwZMoQzZ84wadKkhzred999B0DJkiWB7Ot95MgRs4JxWloaO3bsMK53vXr1sLKyYtWqVWax/vOf/+Dq6mq0+chxp/v9oJ9hEZGHpZXFIiIiIiIi8kSpUqUKGRkZvPPOOzRs2JDixYvj7e19X/vt3LmTTz/9lBIlSuDl5YWLi8sd5wcFBfHee+9RtWpVSpYsybvvvvtABb5Lly4RHBzMSy+9hLe3N9evXyc6OhonJyd8fHzuuF+rVq2oV68eYWFhTJkyBTc3N6Kjozl79ixvvvlmvvO4XyaTiZkzZ/Liiy/y+++/06pVK4oWLUpSUhKbN29m0qRJuYqiD+uHH35gypQpREREmMWePXs2VapUISoqihkzZgDZ12XEiBG89dZbHD58mM6dO+Pu7s6lS5fYt28fv/76Kw4ODmbxr169yoEDB4yv9+3bx3vvvUdQUJDRO7lHjx7MmjWLVq1aMWHCBGxtbZk4cSJFihTh9ddfB7ILywMGDGD69OnY2trSoEEDtmzZwieffEJ0dDSWlpb3db8f9DMsIvKwVCwWERERERGRJ8rzzz/Pq6++yuTJkzl//jyNGzdm9+7d99xv0qRJ9OvXj/bt23P58mUWL15MeHj4HedHR0fTt29fBgwYgL29PeHh4bRt25ZevXrlK19bW1uqV69OdHQ0P//8M3Z2dvj6+hIXF2esas2LpaUlW7Zs4Y033mDYsGH8/vvv+Pj4EBcXR506dfKVQ3517NgRJycnJk6cyLJly4Ds1hIhISF37I/8MF599VXKlSvHyJEjzcbLli3L2LFjiYiI4N///jfVq1cHslch+/n5MW/ePF599VUuXbqEs7MzderU4cMPP6RLly5mcU6dOsVzzz0HZK/qrVChAsOGDWPEiBHGHAcHB3bv3s2QIUPo3bs3mZmZ/Otf/2Lv3r1mDw+cPn06Tk5OvP/++0yYMAFPT08WLFhAnz59gPu73w/6GRYReVimrKysrMedRGHz22+/4ejoyKVLlyhevPjjTqfQqDNsSYHGH9/Bv0DjV9ue+wm+j5JDw5cKNH7osfUFGr9XQLcCi+3Vb2WBxQbw6Zu//5jPr48SHAs0fu3A8gUaf/cn4ws0fsOg4HtPegilk/N+ivaj4N4w9wNlHqXZe1YXaPyQkJACjf/z6YH3nvQQKnu/XKDxX/rBq8Bij6zydIHFBpge80WBxtf33LsrzN9zw599tcBiP6kK688G165d46effsLLywtbW9vHnY6IiIgUsPv93q+exSIiIiIiIiIiIiKiNhQiIiIiIiLy5MvIyLjjNpPJhKWl5V+YjYiIyN+TisUiIiIiIiLyxLOysrrjtgoVKpCYmPjXJSMiIvI3pWKxiIiIiIiIPPHi4+PvuM3GxuYvzEREROTvS8ViEREREREReeL5+vo+7hRERET+9vSAOxERERERERERERFRsVhEREREREREREREVCwWEREREREREREREVQsFhERERERERERERFULBYRERERERERERERVCwWEREREREREREREVQsFhERERERkSdQeno6JpOJmJiYx53KXcXExGAymUhJSXncqZhJTU2lbdu2lChRApPJxLp165g9ezZbtmzJV5zExESioqI4c+ZMAWX6cK5fv06PHj0oVaoUJpOJ2bNnP+6U/lJ9+vTBxcWFCxcumI0nJyfj4ODAG2+8YTb++++/M2nSJGrXrk2xYsWwtbWlUqVK9O3blyNHjpjNNZlMZi83Nzeef/75XPP+Sg/yGRb5pynyuBMQERERERGRv48VR08+tmN3ebbiYzu2mJs5cya7du1iyZIluLq64u3tzeuvv05oaCgtW7a87ziJiYmMHTuW0NBQPDw8CjDjB7NkyRKWLl3KRx99RMWKFfH09HzcKf2lpkyZwrp163jjjTf46KOPjPH+/fvj7OzM2LFjjbGUlBQCAgJISkpiwIABNGrUCGtra44ePcr777/P+vXrOXv2rFn8AQMG8OKLL5KVlUVycjKTJk2iefPmHDt2DCcnp7/qNA2zZ8/O92dY5J9GxWIRERERERGRf5CYmBiioqJITEy845zvv/+eGjVq0Lp1678sr6tXr2JnZ/eXHQ+yz9PDw4Nu3bo9dKzHkT9AVlYW169fx8bGJtc2T09PoqKiCA8Pz3PfEiVKMGPGDLp3706PHj3w9/dn3bp1rF+/nvXr11O0aFFjbr9+/Th16hQHDx7k2WefNcabNm3Kq6++ygcffJArfvny5WnQoIHxvlKlStSqVYsvv/xSBVuRvym1oRAREREREZFC77333sPT0xN7e3sCAwM5ceJErjkxMTHUqFEDW1tbypQpQ2RkJJmZmWZzkpOTCQsLo2TJktjZ2dG4cWMSEhLM5nh6etK/f3+mT59OmTJlsLe3p02bNrlWVSYnJxMaGoq9vT3lypVj1qxZvP7663muXj1x4gQBAQHY29vj6enJhx9+aLY9PDycatWqsWPHDmrUqIGdnR1NmjQhMTGR1NRUOnXqRPHixalYsSIrV658wKuYzWQysWbNGvbt22e0EPD09CQpKYl58+YZY/dq8bF7926aNm0KQN26dY39craZTCY2b95Mhw4dKF68OB07dgSyV/v6+fnh7OxMiRIl8Pf359ChQ2axo6KiKFasGEeOHMHPzw97e3uqVavG9u3bzeZt2LABX19fihUrhpOTE76+vkYbAk9PT95++21Onz5t5JZTQN+7dy8NGzbEzs6OkiVL8vLLL5OammrETUxMNK5Br169cHFxoV69esb1mzp1KpGRkbi6uuLk5MTw4cPJysris88+o1atWhQrVozAwEBOnz5tlu+ff/7Jm2++SYUKFbCxsaFKlSp88sknZnNyPgtbtmyhZs2a2NjYsHHjxnvd1jt66aWXaNq0KX379uXixYsMGDCAF154wewXBUlJSaxZs4ZXX33VrFCcw8LCgl69et3zWA4ODgDcuHHDbHzt2rXUqlULW1tbPDw8GDJkCNeuXTObk5SURIcOHXB0dKRo0aIEBwfnamlxr/ud38+wyD+RVhaLiIiIiIhIobZp0yZ69+5NeHg4Xbp0ISEhwSg85pg5cybDhw9n8ODBvP322xw7dswoFk+ZMgWAtLQ0/Pz8KFasGNHR0Tg6OhIdHU1AQAA//vgjrq6uRrzY2FgqVKjA/PnzSUtLIyIignbt2rF//34ge7VnmzZtOHfuHAsXLsTR0ZHp06eTlJSEhUXudVtdunShT58+REREsGLFCnr27ImHhwchISHGnF9//ZWhQ4cSGRmJlZUVAwcOpFu3btjb29O4cWN69erFe++9R1hYGA0aNKBChQoPdD33799PREQEly9f5t133wXAxsaGli1b4ufnx9ChQwGoWPHubUN8fHyYN28er732GosXL6Zy5cq55vTu3ZuwsDBiY2OxtLQEsgux3bt3p2LFily/fp3ly5fTuHFjvv32WypVqmTse+PGDbp168bAgQMZPXo0U6dOpX379iQlJeHi4sLJkyfp0KEDXbt2ZfLkydy8eZNvvvmGtLQ0IPseTp06lT179hAbGwuAu7s7CQkJBAUF4e/vz6pVqzh37hwjRozg6NGjfPnll0aeACNHjqRVq1YsX76cmzdvGuNz587F39+fpUuXcvDgQcaMGUNmZiaffvopkZGRWFtbM3DgQHr27ElcXJyxX6dOnfj8888ZM2YM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5nqYWNu2bWndujV9+/alT58+1K1b12x1sMlkYv369dSsWZPevXvTp08fWrVqRbNmzcwejJdj+fLlbN++nRdeeIGdO3eyaNGiAi1MPohJkyZRtmxZ2rdvT926ddm4ceM99ylZsiTz5s1jz549NGrUiLp16951vpubG6tWreL8+fO0adOG2bNns3DhQqPdQX7UqFGDlJQUhgwZQvPmzRkzZgxdu3bl3Xffvet+derUIS4ujt9++4327dszbNgwWrVqxdatWwt8pffq1avp27cv7777Li1atKBnz57ExcXRpEmTR36sEydOMHnyZIYPH463t7fZtv79+1O9enX69etHVlYWkH0vv/zyS4YNG8amTZto164dwcHBREVF4enpyeHDh6latapZnOjoaJ577jmee+45unfvzm+//UZsbCzdunUz5rRu3ZpVq1Zx5MgR2rRpw5QpU+jduzfLli0z5jg4OLB7927j31O3bt0oUaIEe/fuNVrL3M/9fpDPsMg/jSkr51+93LfffvsNR0dHLl26RPHixR93OoVGnWFLCjT++A7+BRq/2va8n3L7qDg0fKlA44ceW3/vSQ+hV0C3e096QF79Vt570kPw6durQON/lJD7h4FHqXZgwT6sYfcnuXv2PUoNg4ILNH7p5Ir3nvSA3Bvm/YCaR2X2ntX3nvQQQkJCCjT+z6cHFmj8yt4vF2j8l37wKrDYI6vk/wfe/Jge80WBxtf33LsrzN9zw599tcBiP6kK688G165d46effsLLywtbW9vHnU6h4+npSWhoKHPnzs3XftevX6dq1ao0atSIxYsXF1B2IiIiud3v9361oRAREREREREpAIsWLeLmzZt4e3uTlpbG/PnzSUxMZMWKFY87NRERkTypWCwiIiIiIiJSAGxtbZkyZYrxcLaaNWuyefPmu/bsLUyysrLIzMy843YLC4s8+zOLiMjfl4rFIiIiIiIiIvmQU/y9l+7du9O9e/eCTeYx+uijj+jRo8cdt48ZM4aoqKi/LiEREXloKhaLiIiIiIiISL49//zzxMfH33G7h4fHX5iNiIg8CioWi4iIiIiIiEi+ubi44OLi8rjTEBGRR0jNg0RERERERERERERExWIRERERERERERERUbFYRERERERERERERFCxWERERERERERERERQsVhEREREREREREREULFYRERERERERERE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8+cpU6aMWf5WVlaPpLWCh4cHHh4exvvvvvsOa2trfH1977rfrauKIfv6mEwmPv/881yFXshuJQHZ5/7hhx/y/vvvk5CQwIQJE+jcuTPHjx/nqaeeuq+c7/eeFbQlS5YwdOhQgoOD+eyzzyhevPjfKj8RkUet0BWL69ati4uLCxcvXmTNmjV07dqVM2fOcODAAQCjn1PlypUB6N+/P/37939s+YqIiIiIiEjBsbS0xMfHh9jYWAYPHmyMr1692vj6ueeew97enuTk5FztHm7VrFkzli1bRpUqVShatOhdj7tr1y4uXbpktKLYuXMnqamp1K9fH8j+2TU9PZ29e/fSuHFjAK5cucJnn32WZ8/i2NhYateubbzPeVidpaXlvS/CXySnhcbFixd5/vnn7znfwsKCunXrMmHCBDZs2MCJEyfuu1h8v/csp2h960rqR8nNzY3PPvuMxo0b06JFC+Li4ihatOh95yciUtgUumKxtbU1kyZNok+fPqxZs4annnqKixcvcvnyZUqWLMmIESMAOH78OPD/fxoCMGfOHObMmcPVq1eNsZdffhl7e3vat2/P1KlT/9qTERERERERkYcWGRlJmzZt6NGjB126dCEhIYGlS5ca252cnBg3bhzDhw8nOTkZf39/LC0tOXXqFOvXr2fNmjXY29szZMgQPv74Y5o0acKgQYMoX748Fy5c4ODBg3h4eJgVox0cHGjRogUjRowgPT2diIgI6tWrR3BwMJDd79fHx4cXX3yRyZMn4+TkxLRp03BwcMDCIvfjg5YsWYKdnR0+Pj6sWLGCvXv3snnz5oK/ePlQqVIlXnvtNV566SWGDRtG/fr1uXHjBj/88AO7du1i3bp1XLp0ieDgYF566SW8vb25fv060dHRODk53bFlQ17u955VqVIFgHnz5vHCCy9gb29P9erVH+l5lylTxigYt27dms2bN993fiIihU2hKxZDdr+lokWLMmPGDI4dO4atrS3t2rVjypQpZn9ac7vU1FROnjxpNpbTT+rWP1ESERERERGRwqN169YsWLCAiRMnsmLFCurXr8/KlSuNVb4AQ4cOpUyZMsycOZPo6GisrKyoWLEioaGhxupUFxcXDhw4wKhRo4iIiODixYu4urrSoEGDXKtH27ZtS9myZenbty9paWkEBQWxYMECY7vJZGL9+vX06dOH3r17U6JECQYOHMjx48c5fPhwrnNYvnw5I0eOZNy4cbi6urJo0SJatmxZMBfsIcyZMwdvb28WLlzIuHHjKFasGN7e3nTs2BEAW1tbqlevTnR0ND///DN2dnb4+voSFxeX75Ya93PPateuTVRUFO+//z7Tpk2jXLlyJCYmPurTxtPTk507d9K4cWPatWvHunXr7is/EZHCxpRVkE+Ge0L99ttvODo6cunSJaNfkdxbnWFLCjT++A7+BRq/2vZW9570EBwavlSg8UOPrS/Q+L0CuhVYbK9+KwssNoBP314FGv+jBMd7T3oItQMffa/2W+3+JHfPvkepYVBwgcYvnVzx3pMekHvDvB9Q86jM3rP63pMeQk7rpoLy8+mBBRq/svfLBRr/pR8KrtfgyCpPF1hsgOkxXxRofH3PvbvC/D03/NlXCyz2k6qw/mxw7do1fvrpJ7y8vLC1tX3c6RQ6np6ehIaGMnfu3Hztd/36dapWrUqjRo1YvHhxAWUnIiKS2/1+7y+UK4tFRERERERE/u4WLVrEzZs38fb2Ji0tjfnz55OYmMiKFSsed2oiIiJ5UrFYREREREREpADY2toyZcoUoy1CzZo12bx5M76+vo83sSdcZmYmd/sj6iJFVAoREbkT/T+kiIiIiIiISD7cb0/c7t27071794JNRnKpWLEiSUlJd9yubpwiInemYrGIiIiIiIiIPDE2btzIn3/++bjTEBEplFQsFhEREREREZEnRvXq1R93CiIihZbF405ARERERERERERERB4/FYtFRERERERERERERMViEREREREREREREVGxWERERERERERERERQsVhEREREREREREREULFYREREREREnkDp6emYTCZiYmIedyp3FRMTg8lkIiUl5XGnYsbT05P+/fvfcXtUVBTFihXLd9z73W/27Nls2bIlz203btxg3rx5PPfcczg6OmJjY4OXlxfdu3fniy++MJvr6emJyWQyXi4uLgQEBLBv3z6zeTn3wdbWlkuXLuU6Zrdu3TCZTPj7+9//yYqIFEIqFouIiIiIiIhIvrzyyivs2rWrwOLfqVh87do1goODGTp0KPXq1ePjjz8mLi6OyMhIEhMT8fPz488//zTbp0OHDuzfv5/9+/ezePFiAEJCQjh58mSu+FZWVsTGxpqN/fHHH6xfv/6BiuMiIoVNkcedgIiIiIiIiPx9/Dyu+mM7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K1e+a7G8a9eujB49mqeffpo6deo8bOoiIoWG/o5CRERERERECi1LS0t8fHyIjY01G1+9erXx9XPPPYe9vT3Jycn4+vrmerm4uADZ7Rz+97//UaVKlVxzqlevbhZ/165dXLp0yXi/c+dOUlNTqV+/PpDdOzg9PZ29e/cac65cucJnn32W53ncnn/Ow+osLS0f4Kr89erWrcu3337LTz/9ZIwlJibyzTffPFC8vFYa29nZ0a9fP1avXs3u3bsfONesrCz+97//3bUQ/+KLL/L8888zYsSIBz6OiEhhpJXFIiIiIiIiUqhFRkbSpk0bevToQZcuXUhISGDp0qXGdicnJ8aNG8fw4cNJTk7G398fS0tLTp06xfr161mzZg329vYMGTKEjz/+mCZNmjBo0CDKly/PhQsXOHjwIB4eHgwePNiI6eDgQIsWLRgxYgTp6elERERQr149goODAWjRogU+Pj68+OKLTJ48GScnJ6ZNm4aDg0Oe/W+XLFmCnZ0dPj4+rFixgr1797J58+aCv3h3cfLkSbOiO2T3G27Xrl2uuT169GDixImEhoYyduxYAKKioihduvQD9futUqUKO3fu5NNPP6VEiRJ4eXnh4uLC+PHjSUhIoEWLFvTp04egoCAcHBw4f/68kWuxYsXMYp07d44DBw4AkJaWxieffMJ3333HxIkT73h8T09P1q1bl++8RUQKOxWLRUREREREpFBr3bo1CxYsYOLEiaxYsYL69euzcuVKY5UvwNChQylTpgwzZ84kOjoaKysrKlasSGhoqNE/18XFhQMHDjBq1CgiIiK4ePEirq6uNGjQINcD6Nq2bUvZsmXp27cvaWlpBAUFsWDBAmO7yWRi/fr19OnTh969e1OiRAkGDhzI8ePH82zXsHz5ckaOHMm4ceNwdXVl0aJFtGzZsmAu2H3atm0b27ZtMxuztLQkIyMj11w7Ozvi4uLo27cv3bp1o0yZMowePZolS5aYPQjwfk2aNIl+/frRvn17Ll++zOLFiwkPD8fW1pbt27ezcOFCli1bxgcffMD169dxd3enUaNGfP755/zrX/8yi7V69WqjkOzg4MDTTz/NBx98QI8ePfKdl4jIk86UlZWV9biTKGx+++03HB0duXTpEsWLF3/c6RQadYYtKdD44zv4F2j8attbFWh8h4YvFWj80GPrCzR+r4BuBRbbq9/K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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10, 8))\n", + "palette = sns.color_palette(\"tab20\", n_colors=len(df['model'].unique())) # 더 많은 색상 지원\n", + "sns.barplot(x='region', y='CSI', hue='model', ci=None, data=df.loc[(df['region']=='incheon'),:], palette=palette)\n", + "plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', fontsize=11)\n", + "plt.title('Soft Voting Ensemble: Model Performance Comparison in Incheon', fontsize=15, fontweight='bold') # 제목 볼드 및 크기 조정\n", + "plt.ylabel('CSI', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "plt.xlabel('') # y축 라벨 변경 및 스타일 조정\n", + "# x축(도시명) 글씨 크기 조정\n", + "plt.xticks(fontsize=15, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.yticks(fontsize=10, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "table = df.loc[(df['region']=='daegu'),:'Accuracy']\n", + "table['CSI'] = table['CSI'].round(3)\n", + "table['MCC'] = table['MCC'].round(3)\n", + "table['Accuracy'] = table['Accuracy'].round(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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HDx4EJ988gn8/f1Rt25dmJmZ4a+//sL+/fvFevhA8Q2WmSgmIiIiqhwmi4ne0MOHD7Fp0ya1yzQ0NBAXF1fhm6kRERERUcXl5uZi7969ZS7v0KEDli9f/h4jIiIiIvpnYLKY6A189NFHEAQBp06dwr1795CTkwO5XA6FQgFvb28MGjQITZs2re4wiYiIiP5xPvjgA8TGxuLYsWNIT09HZmYmtLW1YWtrCw8PD/Tp0wehoaHVHSYRERFRjcSaxURERERERERERESE939rbSIiIiIiIiIiIiL622GymIiIiIiIiIiIiIhYs/hNFBUV4e7duzAyMoJMJqvucIiIiIiIqJoIgoCnT5/Czs4OGhoci0NEREQ1G5PFb+Du3buoXbt2dYdBRERERER/E7dv34aDg0N1h0FERET0VpgsfgNGRkYAit8QGhsbV3M0RERERERUXZ48eYLatWuLnxGIiIiIajImi9+AsvSEsbExk8VERERERMTydERERPSPwKJaRERERERERERERMRkMRERERERERERERExWUxEREREREREREREYLKYiIiIiIiIiIiIiMAb3BEREREREf2rFRYWoqCgoLrDICIioiqira0NTU3NCrVlspiIiIiIiOhfSBAE/PXXX8jJyanuUIiIiKiKmZqaolatWpDJZOW2Y7KYiIiIiIjoX0iZKLa2toZcLn/th0ciIiKqeQRBwIsXL/DgwQMAgK2tbbntmSwmIiIiIiL6lyksLBQTxRYWFtUdDhEREVUhfX19AMCDBw9gbW1dbkkK3uCOiIiIiIjoX0ZZo1gul1dzJERERPQ+KF/zX3efAiaLiYiIiIiI/qVYeoKIiOjfoaKv+UwWExERERERERERERGTxURERERERPTPk5OTA5lMhqSkpOoOpVxJSUmQyWTIzMys7lAksrKy0KVLF5iZmUEmk2H79u1ITEzE3r17K9VPWloaEhIScPfu3SqK9O3k5+ejf//+sLKygkwmQ2JiYnWHRERUrXiDOyIiIiIiIhK1HLem2radOqdvtW2bpObPn48jR45gzZo1sLa2Rv369TFq1CiEhoaiQ4cOFe4nLS0NkyZNQmhoKOzs7Kow4jezZs0arF27Ft999x2cnZ2hUCiqOyQiomrFZDERERERERHRv0hSUhISEhKQlpZWZpurV6/Czc0NYWFh7y2u3Nxc6Ovrv7ft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zonI05fnisV37941mo63atWKuLg4Tp48Sfny5Tl79izR0dHMnDkzy2NHjhzJgAEDKFq0KCkpKYSFhbFy5Up+//139uzZg6+v77M8FREREREREXlGEhMTH7rP1tb2GWYi/4v0+RORvCLPFYsTExM5f/48kF4sBihWrBg1atTgm2++4euvv37osRMmTDB+tra2JiAggJUrVwKP/j/nO3fucOfOHeP91atXn+gcRERERERE5Nny9/d/3inI/zB9/kQkr8hzfReOHTtm/PzSS///FHo3NzcAjh49mq04N27cYPHixQDUrFkTHx+fh46dOHEijo6OxqtEiRK5SV1ERERERERERETkLyvPFYsfJi0tLdtjz507R1BQEHv27KF8+fKsWLHikeOHDx/OlStXjNf9BWsRERERERERERGRF0Gea0Nx/6res2fPZvq5ZMmSjzx+//79NG7cmEOHDlGjRg2+/PJLXF1dH3mMra2tegiJiIiIiIiIiIjICy3PrSyuWrUqRYoUATD6DZ88eZLvv/8egIYNGwJQvnx5ypcvz6xZs4xjt27dSkBAAIcOHaJ169Zs3rz5sYViERERERERERERkf8Fea5YnD9/fqKjo4H0YnHp0qWpUKEC165dw9XVlWHDhgHpK4j3799vPAwPIDg4mIsXL2IymTh69CiBgYHUqFGDGjVqsH79+udyPiIiIiIiIiIiIiJ/BXmuDQVAr169cHBwYMqUKezbtw87OztatmzJpEmTKFas2EOPu3v3LpDe33jXrl1m+86dO2fRnEVERERERERERET+yvLcyuIMHTt25Oeff+b27dtcvnyZlStXUrZsWWN/WloaaWlpREVFZdqW1Ss8PPzZn4SIiIiIiIg8FdOmTaNkyZJYW1vj5ORkfCM1J6ZPn86GDRsskN3TsXTpUsqWLYuNjQ2vv/76807nmdqxYwdWVlZ8+umnmfa99dZbeHh4cOPGDbPtX331FY0bN6Zo0aLY2Njg5uZGaGgosbGxpKamGuPCw8MxmUzGy8HBgddeey3LuZ6VhISEXH2GRUSeVJ5cWSwiIiIiIiKW8Vrcv5/b3Htah+TquD/++INBgwYxdOhQmjZtyqxZs4iOjmbEiBE5ijN9+nSaNGlC48aNc5WHJV2/fp3u3bvTvn17Fi5cSOHChZ93Ss9UQEAAPXr0YOjQoTRv3tx4/tCaNWtYu3YtX3zxBQ4ODsb4ESNGMHHiRFq0aMGsWbNwd3fnzJkzrFmzhk6dOuHi4kJIyP9/3kqXLs2//vUvAK5du8bq1at5++23cXBwoF27ds/2ZEkvFk+ZMiXHn2ERkSelYrGIiIiIiIjkafv37yctLY2ePXtSunRp4uPjLTrfnTt3sLGxwcrq2X1ZNykpiTt37tC5c2dq1qz5RLFSUlJITU3FxsbmKWWXfbdu3cLe3j7T9qioKBISEkhISHjose+99x5r165l8ODBLFy4kOvXrxMZGUmLFi1o2rSpMW79+vVMnDiRMWPGmH3bGKBNmzYMGDAg07nb29tTo0YN431wcDA7d+5k1apVz6VYLCLyvOTZNhQiIiIiIiIi4eHhRqGwTJkymEwmxo4dy40bN4y2AoGBgY+N4+npyZEjR5g9e7Zx3MKFC419/fr14/3338fDwwN7e3suXrzIf//7X9q1a0eJEiUoUKAAPj4+TJ061azFQVJSEiaTiSVLltCvXz+cnZ1xd3dn8ODBJCcnG+OOHz9O27ZtcXNzw87OjlKlSjFw4EAgvZBaqVIlAIKCgjCZTEYR9OLFi3Tv3h1XV1fs7e0JCAhg69atZucWGBhIkyZNWLRoEd7e3tja2rJnzx7Cw8OpWLEiGzdupHLlytjb21O3bl2SkpK4ePEibdu2pXDhwpQpU4bly5dnumbr16+nevXq2NvbU7RoUfr27WvWCiIhIQGTycT69etp3bo1hQsXpk2bNo+/qQ/h4uLC5MmTWbRoEQkJCYwaNYrLly8zc+ZMs3EffPAB7u7ujBo1Kss41apVw9fX97HzFSpUiHv37pltO3LkCK1bt8bR0REHBwdCQkL47bffzMakpqYyYcIEPD09sbW1pXz58nz88cdmYx53v3PzGRYReRq0slhERERERETyrNGjR+Pj48PQoUNZtWoVRYsWZcGCBcTGxrJp0yaAbLVsWL16NY0bN6ZWrVoMGjQISC8+Z8h4Ts6MGTOwtrbGwcGBPXv24O3tTceOHSlUqBC//PILY8aM4fr164wZM8Ys/siRI2nevDmff/45O3bsICoqCi8vL/r06QNAly5dOHnyJDNnzsTNzY2jR4/y448/AvD2229TpkwZunTpwuzZs/Hz86N48eKkpKTQqFEjDh06xHvvvYebmxszZ84kODiYHTt2UKVKFWP+H3/8kaSkJMaNG4ezszMlSpQA4PTp0wwaNIiRI0diY2ND//796dixIwUKFKBOnTr07NmTuXPn0qlTJ2rUqIGHhwcAcXFxhIWF0a1bN8aOHcupU6cYNmwYly5dYtmyZWbn3qtXLzp16sTq1auxtrbO0f19UNeuXVmwYIFxvaZMmULx4sWN/cnJyWzfvp3WrVuTL1/OSh4Zxfvr16+zatUqtm/fzuLFi439165dIzAwECsrKz766CPs7Ox49913qVOnDr/++qtxTYcMGcKMGTMYNWoUAQEBrFu3jj59+nDv3j369esHPP5+Hz9+nKVLl+boMywi8jSoWCwiIiIiIiJ5VpkyZShXrhwAvr6+eHp6snHjRqysrMzaCjyOr68vtra2uLm5ZXncvXv3+Oqrr8z64gYFBREUFASkP1C9Vq1a3Lx5k1mzZmUqFlevXt1YARscHMzmzZuJi4szisW7du1i4sSJhIWFGcd06dIFgOLFixsri318fIz8vvjiC3bt2sXXX39t9N8NCQnBy8uL6OhoVq5cacS6ePEiiYmJRkHz/u1btmzh1VdfBeDkyZNERkYydOhQRo8eDUDVqlVZtWoVa9asYcCAAaSlpTF48GDCwsKYN2+eEcvd3Z3GjRszevRoIx5As2bNeO+998zmTU1NNVuBnZqaSlpamtlqa5PJlGVxefz48dSpU4fy5csTGRlptu/ChQvcuXMn03mmpaWRkpJivLeysjJrI7J3795MrSkGDRpEx44djfcLFizgyJEj7N27lwoVKgBQt25dSpYsyfTp05k6dSrnz58nJiaGIUOGGKu/GzRowPnz5xk3bhx9+/bF2tr6sfe7ePHiOf4Mi4g8DWpDISIiIiIiIvIYgYGBZoVigNu3bzNmzBi8vLywtbXFxsaGkSNHcurUKa5fv242tkGDBmbvfXx8OH78uPHez8+PKVOm8OGHH/Lnn39mK6dt27ZRuHBhswe12djY0LJlS7777juzsZUrV85UQAUoVqyYWWE3o/Bev359Y5uTkxMvvfQSx44dA+DAgQMcOXKEtm3bkpycbLzq1q2LlZWVsUI2Q2hoaKZ5u3fvjo2NjfEaP348W7duNdt2/8ru+3388ceYTCaSkpJISkrKcozJZDJ7v3LlSrPY/fv3N9tfpkwZEhMTSUxMZMuWLUyYMIGYmBjGjRtnjNm2bRsVK1Y0CsWQ3hojODjYuN4//PAD9+7dy9RuIywsjHPnznHgwAEgd/dbRORZULFYRERERERE5DHc3NwybRs6dCiTJ0+mZ8+ebNiwgcTERKNP7u3bt83GOjk5mb3Pnz+/2Zjly5cTFBTEyJEjKVu2LOXLl2fVqlWPzOnSpUu89NJLWeZ68eLFx+b/sLwel+/58+cBaNGihVkBtkCBAqSkpBhF5UfNHRUVZRRnExMT6dmzJ35+fmbbvvzyy0zHffvtt/zrX/9i7ty5vPLKK5lWFhcpUgRbW1uzQjykrwLPiOvu7p4prp2dHf7+/vj7+1OnTh1GjhxJ7969effdd41reenSpSzP5f7rfenSpSzPOeN9xrjc3G8RkWdBbShEREREREREHuPBlaoAK1asoHfv3gwdOtTYtn79+lzFd3d3Z/78+cybN4/du3czYcIEwsLC2L9/P6VLl87yGBcXF86ePZtp+5kzZ3BxcXls/rmVEXvWrFlUr1490/5ixYo9dm5PT088PT2N9+vWrePAgQP4+/s/dN47d+4QERFBUFAQPXr04JVXXqFRo0asXLmSVq1aAZAvXz5q1qzJt99+S0pKitHGwtnZ2YidURB/nAoVKnD37l3++OMPqlevjouLC/v378807v7rnfG/Z8+e5ZVXXjEbc//+3NxvEZFnQSuLRURERERE5IWSP39+7ty5k6vjHlwR/Ci3bt0yKzympKRkerhbTllZWVG1alUmTJhAcnLyI1sU1KpVi6tXrxIfH29sS05OZvXq1dSqVeuJ8niU8uXLU7x4cQ4dOmSsxr3/9WCx+GmZOHEiR44cYc6cOQA0bNiQVq1a8fe//92s7cc777zDyZMniY6OfqL5fv/9dwBcXV2B9Ov922+/mRWML126xMaNG43rXa1aNWxsbFixYoVZrM8//5yXXnrJaPOR4WH3O7efYRGRJ6WVxSIiIiIiIvJCqVChAsnJycyYMYOAgAAKFy6Mt7d3to7btGkT33zzDc7OzpQqVYoiRYo8dHxwcDBz587Fx8cHV1dX5syZk6sC35UrVwgJCaFz5854e3tz9+5dYmJicHJyws/P76HHhYaGUq1aNTp16sSkSZNwc3MjJiaGU6dOMWLEiBznkV0mk4kPPviADh06cOPGDUJDQ3FwcODIkSOsX7+e6OjoTEXRJ3XgwAEmTZrE0KFDzWJPnz6dChUqEBUVxZQpU4D06zJs2DD++c9/8ssvvxAWFoa7uztXrlxh27ZtnD59mkKFCpnFv3XrFt9//73x87Zt25g7dy7BwcFG7+Ru3boxbdo0QkNDmTBhAnZ2drz77rvky5ePv//970B6YTkyMpLJkydjZ2dHjRo12LBhA0uXLiUmJgZra+ts3e/cfoZFRJ6UisUiIiIiIiLyQmnatCkRERFMnDiRs2fPUqdOHRISEh57XHR0NH379qVVq1Zcu3aNBQsWEB4e/tDxMTEx9OnTh8jISAoUKEB4eDgtWrSgZ8+eOcrXzs6OSpUqERMTw9GjR7G3t8ff35/4+HhjVWtWrK2t2bBhA4MHD2bIkCHcuHEDPz8/4uPjqVKlSo5yyKk2bdrg5OTEu+++y5IlS4D01hINGzZ8aH/kJxEREUGJEiUYPny42fbixYszduxYhg4dSteuXalUqRKQvgq5Vq1azJ49m4iICK5cuYKLiwtVqlRh/vz5tGvXzizOoUOHeOONN4D0Vb0eHh4MGTKEYcOGGWMKFSpEQkIC77zzDr169SIlJYWaNWuydetWs4cHTp48GScnJ+bNm8eECRPw9PTko48+onfv3kD27nduP8MiIk/KlJaWlva8k8hrrl69iqOjI1euXKFw4cLPO508o8qQxRaNP751oEXjV/x35if4Pk2FAjpbNH6TfWstGr9nvY4Wi12q73KLxQbw65Oz/5jPqUW7HS0a3zeopEXjJywdb9H4AcEhjx/0BF4+nvVTtJ8G94DMD5R5mqZvibNo/IYNG1o0/tFj/R8/6AmU9+5u0fidD5SyWOzhFbwsFhtg8sLtFo2v37mPlpd/54a/GmGx2C+qvPp3g9u3b3P48GFKlSqFnZ3d805HRERELCy7v/vVs1hERERERERERERE1IZCREREREREXnzJyckP3WcymbC2tn6G2YiIiPw1qVgsIiIiIiIiLzwbG5uH7vPw8CApKenZJSMiIvIXpWKxiIiIiIiIvPASExMfus/W1vYZZiIiIvLXpWKxiIiIiIiIvPD8/f2fdwoiIiJ/eXrAnYiIiIiIiIiIiIioWCwiIiIiIiIiIiIiKhaLiIiIiIiIiIiICCoWi4iIiIiIiIiIiAgqFouIiIiIiIiIiIgIKhaLiIiIiIiIiIiICCoWi4iIiIiIyAtg2rRplCxZEmtra5ycnIiOjs5xjOnTp7NhwwYLZPd0LF26lLJly2JjY8Prr7/+vNN55kwmE1OmTHno/vDwcCpWrJjjuNk9Lioqih07dmS578aNG0RHR+Pr60vBggWxs7OjXLly9OnTh99++81srMlkMnu5ubnRtGnTTOOioqIwmUy88sorpKamZpqzZs2amEwmwsPDs3+yIiKPke95JyAiIiIiIiJ/Hcv2Hnxuc7d7tUyujvvjjz8YNGgQQ4cOpWnTpsyaNYvo6GhGjBiRozjTp0+nSZMmNG7cOFd5WNL169fp3r077du3Z+HChRQuXPh5p/SXM3r0aG7cuGGx+GPHjqVgwYIEBASYbT9//jz16tXjyJEjREZGUrt2bfLnz8/evXuZN28ea9eu5dSpU2bHREZG0qFDB9LS0jh+/DjR0dE0aNCAffv24eTkZIyzsbHh/PnzbN26lcDAQGP7kSNH2LlzJwULFrTY+YrI/yYVi0VERERERCRP279/P2lpafTs2ZPSpUsTHx9v0fnu3LmDjY0NVlbP7su6SUlJ3Llzh86dO1OzZs0nipWSkkJqaio2NjZPKbvsu3XrFvb29pm2R0VFkZCQQEJCQq5jlymTu39seFJ9+/bl0KFD/PDDD7z66qvG9jfffJOIiAg+/fTTTMeULFmSGjVqGO/LlSvH66+/zo4dO8z+sSJ//vzUr1+f2NhYs2LxsmXLePXVV7G2trbMSYnI/yy1oRAREREREZE8Kzw8nKZNmwLpxUKTycTYsWO5ceOG8TX/+4tsD+Pp6cmRI0eYPXu2cdzChQuNff369eP999/Hw8MDe3t7Ll68yH//+1/atWtHiRIlKFCgAD4+PkydOtWsZUBSUhImk4klS5bQr18/nJ2dcXd3Z/DgwSQnJxvjjh8/Ttu2bXFzc8POzo5SpUoxcOBAIL2QWqlSJQCCgoIwmUxERUUBcPHiRbp3746rqyv29vYEBASwdetWs3MLDAykSZMmLFq0CG9vb2xtbdmzZ4/RfmHjxo1UrlwZe3t76tatS1JSEhcvXqRt27YULlyYMmXKsHz58kzXbP369VSvXh17e3uKFi1K3759zVb2JiQkYDKZWL9+Pa1bt6Zw4cK0adPm8Tc1l7JqJ/Hdd9/h6+uLnZ0dlStX5ptvvuH111/PsnVDQkICvr6+ODg4UK1aNXbv3m3sM5lMAAwZMsT4fCQkJHDkyBFWrlxJRESEWaE4g5WVFT179nxs7oUKFQLg3r17mfa1b9+euLg4s31Lly6lQ4cOj40rIpJTWlksIiIiIiIiedbo0aPx8fFh6NChrFq1iqJFi7JgwQJiY2PZtGkTQLZaNqxevZrGjRtTq1YtBg0aBJivVF25ciVly5ZlxowZWFtb4+DgwJ49e/D29qZjx44UKlSIX375hTFjxnD9+nXGjBljFn/kyJE0b96czz//nB07dhAVFYWXlxd9+vQBoEuXLpw8eZKZM2fi5ubG0aNH+fHHHwF4++23KVOmDF26dGH27Nn4+flRvHhxUlJSaNSoEYcOHeK9997Dzc2NmTNnEhwczI4dO6hSpYox/48//khSUhLjxo3D2dmZEiVKAHD69GkGDRrEyJEjsbGxoX///nTs2JECBQpQp04devbsydy5c+nUqRM1atTAw8MDgLi4OMLCwujWrRtjx47l1KlTDBs2jEuXLrFs2TKzc+/VqxedOnVi9erVz3Ql7KlTp2jYsCF+fn58/vnnXLlyhb59+3LlypVMPZ9Pnz5N//79GTZsGI6OjgwfPpwWLVpw8OBBbGxs2LlzJ2+88YbRPgLAx8eHtWvXkpaWRoMGDXKUW2pqKsnJyaSlpXHixAn+8Y9/4OrqmuU/bDRt2pQePXoQHx9PaGgo//nPf/j1119Zs2ZNlkV8EZEnoWKxiIiIiIiI5FllypShXLlyAPj6+uLp6cnGjRuxsrIy+5r/4/j6+mJra4ubm1uWx927d4+vvvoKBwcHY1tQUBBBQUEApKWlUatWLW7evMmsWbMyFYurV6/OzJkzAQgODmbz5s3ExcUZxeJdu3YxceJEwsLCjGO6dOkCQPHixY2VxT4+PkZ+X3zxBbt27eLrr78mJCQEgJCQELy8vIiOjmblypVGrIsXL5KYmGgUie/fvmXLFmNV7MmTJ4mMjGTo0KGMHj0agKpVq7Jq1SrWrFnDgAEDSEtLY/DgwYSFhTFv3jwjlru7O40bN2b06NFmq2ybNWvGe++9ZzZvamqq2Qrs1NRU0tLSzFZbm0ymJyouT5s2jXz58rF+/Xpj5W6pUqWoXbt2prEPXgcHBwfefPNNfvjhB2rVqmVc8wfbR5w8eRIg03V98Pzy5TMvvwwdOpShQ4ca711cXFi9ejWOjo6ZcitQoADNmzdn2bJlhIaGEhsbyxtvvEGpUqVydD1ERLJDbShEREREREREHiMwMNCsUAxw+/ZtxowZg5eXF7a2ttjY2DBy5EhOnTrF9evXzcY+uPLUx8eH48ePG+/9/PyYMmUKH374IX/++We2ctq2bRuFCxc2CsWQ/kC0li1b8t1335mNrVy5cqaCJkCxYsXMCrsZhff69esb25ycnHjppZc4duwYAAcOHODIkSO0bduW5ORk41W3bl2srKyMFdEZQkNDM83bvXt3bGxsjNf48ePZunWr2bYn7UGcmJjIm2++aRSKAWrVqoWLi8tjr4OPjw+A2T16lIw2FRmaNWtmdi4PXpMBAwaQmJhIYmIi69ev54033qB58+b8+uuvWcZv3749a9eu5datWyxbtoz27dtnKy8RkZxSsVhERERERETkMdzc3DJtGzp0KJMnT6Znz55s2LCBxMRERo0aBaQXku/n5ORk9j5//vxmY5YvX05QUBAjR46kbNmylC9fnlWrVj0yp0uXLvHSSy9lmevFixcfm//D8npcvufPnwegRYsWZgXRAgUKkJKSYhSVHzV3VFSUUSxNTEykZ8+e+Pn5mW378ssvH37y2XDq1CmKFi2aaXtW1+xh1+HB+/igYsWKAZmLytOnTycxMZGPPvooy+OKFy+Ov78//v7+NG7cmJUrV5IvXz7GjRuX5fiQkBBsbGz45z//yeHDh2nbtu0j8xIRyS21oRARERERERF5jAdXjgKsWLGC3r17m7UTWL9+fa7iu7u7M3/+fObNm8fu3buZMGECYWFh7N+/n9KlS2d5jIuLC2fPns20/cyZM5lWz2aVf25lxJ41axbVq1fPtD+jgPqouT09PfH09DTer1u3jgMHDuDv7//U8nR3d+fcuXOZtmd1zXKrTp06mEwm4uPjqVevnrHdy8sLINMK84extbWldOnS7N27N8v9NjY2tGrVig8++ICgoKCHFv9FRJ6UVhaLiIiIiIjICyV//vzcuXMnV8c9biXp/W7dumWsQAVISUnJ9HC3nLKysqJq1apMmDCB5OTkR7akqFWrFlevXiU+Pt7YlpyczOrVq6lVq9YT5fEo5cuXp3jx4hw6dMhYHXv/68Fi8fNStWpVNm3axLVr14xt27Zty7TqOrtsbGwyfT48PDxo1aoVs2fPZt++fbnO9fbt2xw8eBBXV9eHjnn77bdp2rQpAwYMyPU8IiKPo5XFIiIiIiIi8kKpUKECycnJzJgxg4CAAAoXLoy3t3e2jtu0aRPffPMNzs7OlCpViiJFijx0fHBwMHPnzsXHxwdXV1fmzJmTqyL1lStXCAkJoXPnznh7e3P37l1iYmJwcnLCz8/voceFhoZSrVo1OnXqxKRJk3BzcyMmJoZTp04xYsSIHOeRXSaTiQ8++IAOHTpw48YNQkNDcXBw4MiRI6xfv57o6Gij9/HT9ttvvxEXF2e2rWDBgjRs2DDT2IEDBzJnzhxCQ0MZMmQIly9fZuzYsbi6umJllfO1cxUqVGDt2rXUrl0bBwcHvL29KVSoEB9++CH16tXjjTfeoF+/ftSuXRs7OztOnDjBokWLsLKyokCBAmaxjh49yvfffw/AuXPnmD17NhcuXDAeeJiVatWqsWbNmhznLSKSEyoWi4iIiIiIiKHdq0/2ULG/gqZNmxIREcHEiRM5e/YsderUISEh4bHHRUdH07dvX1q1asW1a9dYsGAB4eHhDx0fExNDnz59iIyMpECBAoSHh9OiRQt69uyZo3zt7OyoVKkSMTExHD16FHt7e/z9/YmPj3/kSlNra2s2bNjA4MGDGTJkCDdu3MDPz4/4+HiqVKmSoxxyqk2bNjg5OfHuu++yZMkSIL21RMOGDS3aImHx4sUsXrzYbFuZMmWyXIHt7u7OV199Rf/+/WndujVlypRhxowZ9OvXD0dHxxzPPXv2bAYMGECjRo24desWmzdvJjAwEFdXV3bs2MGMGTNYsWIF06ZNIyUlhZIlS/Lmm2/yyy+/GA/MyxATE0NMTAyQ3i+5QoUKrF69mrfeeivHeYmIPE2mtLS0tOedRF5z9epVHB0duXLlCoULF37e6eQZVYYsfvygJzC+daBF41f8d+Yn+D5NhQI6WzR+k31rLRq/Z72OFotdqu9yi8UG8OuTs/+Yz6lFu3P+H6I54RtU0qLxE5aOt2j8gOCQxw96Ai8ft9xfeN0DMj8c5WmaviXu8YOeQFYrcJ6mo8f6WzR+ee/uFo3f+UApi8UeXsHLYrEBJi/cbtH4+p37aHn5d274qxEWi/2iyqt/N7h9+zaHDx+mVKlS2NnZPe90RJ6ZP/74g/LlyzN//ny6du36vNMREXlmsvu7XyuLRUREREREROSFNHz4cCpXrkyxYsU4dOgQ0dHRuLu706pVq+edmojIX5KKxSIiIiIiIvLCS05Ofug+k8mEtbX1M8xGnpW7d+8ydOhQzpw5g729PYGBgUyePJmCBQs+79RERP6SVCwWERERERGRF56Njc1D93l4eJCUlPTskpFnZurUqUydOvV5pyEikmeoWCwiIiIiIiIvvMTExIfus7W1fYaZiIiI/HWpWCwiIiIiIiIvPH9//+edgoiIyF+e1fNOQERERERERERERESePxWLRURERERERERERETFYhERERERERERERFRsVhEREREREREREREULFYRERERERERERERFCxWERERERERERERERQsVhEREREREReANOmTaNkyZJYW1vj5OREdHR0jmNMnz6dDRs2WCC7p2Pp0qWULVsWGxsbXn/99eedjjxEQkJCrj5/np6e9OvXz3gfHh5OxYoVjfcLFy7EZDJx/vz5p5Jndt27d49KlSpRt25d0tLSzPatWbMGk8nEunXrzLYfPXqUv/3tb5QpUwY7OzsKFSpElSpVGDNmDOfOnTPGJSQkYDKZjFe+fPnw8PCgb9++XLhw4Zmc34MuX75MVFQU//nPf544Vsb5/fjjjw8d8+B9z67sHJeUlERUVBQnT57Mcr8l7lNgYCAmk4l27dplmu/atWvY29tjMplYuHBhjs9Zno18zzsBERERERER+euoMmTxc5t79+QuuTrujz/+YNCgQQwdOpSmTZsya9YsoqOjGTFiRI7iTJ8+nSZNmtC4ceNc5WFJ169fp3v37rRv356FCxdSuHDh552SPERCQgJTpkzJ8efvQaNHj+bGjRtPKavcs7Gx4cMPP6ROnTosXLiQbt26AemfycjISFq2bEmTJk2M8T/88AONGjXCxcWFAQMGUKlSJe7du8eOHTv46KOPOHDgALGxsWZzLFiwgPLly5OcnMzevXsZOXIkhw8f5uuvv36m5wrpxeKxY8dSsWJFfHx8LD7f6tWrcXZ2tkjspKQkxo4dS5MmTShWrJjZPkvep4IFC/Lll19y48YNHBwczM41Xz6VIv/qdIdEREREREQkT9u/fz9paWn07NmT0qVLEx8fb9H57ty5g42NDVZWz+7LuklJSdy5c4fOnTtTs2bNJ4qVkpJCamoqNjY2Tym77Lt16xb29vaZtkdFRZGQkEBCQsITx3pRlClT5pnMk5SURKlSpTh8+DCenp5ZjqlVqxbdunVjyJAhNG3aFFdXV0aNGsWVK1eYOXOmMe727du0adOG4sWL891335n9o0aDBg0YNGgQX375Zab4FStW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BQsWNPYfO3aMQ4cO0aBBgxzFTUtLIzk5meTkZM6fP8+7777LiRMnaNmypVnsOnXqcOHCBZYsWcJHH33ETz/9RN26dbl27ZoxrmPHjnz88cf84x//YM2aNfj4+NCqVSu++OILY0zTpk25dOkSn376KevXr2fw4MHcuHEDgNGjR9O4cWNKly5t3L/Ro0fn9pKJiPxlqQ2FiIiIiIiI5HmXLl3iq6++onr16gDUrVsXf39/Vq1aZazqrVSpkrECuXHjxuzatYvKlSszfPhwI879xeQM1atXZ+bMmQAEBwezefNm4uLi6NOnD5Dei9jFxYVvvvkGOzs7AAICAihdujSffvopERERRjuFkiVLWqyNxNGjRwkKCsLT05M1a9bg4OCQ7fwg/cF0aWlpRryMn+9fRW0ymbC2tjab19bWllGjRtGlSxeCg4N56623zPafPHkSINPK4bS0NFJSUoz31tbWxr0C2LBhAzY2Nmb7P/jgA2rXrm1smzZtGvfu3SM+Ph4XFxcAfH198fHxYeHChURGRvLrr7+yatUqPvroI3r37g1Aw4YNSUpKYuzYsTRr1ozz589z+PBhZsyYQdOmTQF48803jXnKlClD0aJFOXLkyDNrAyIi8jxoZbGIiIiIiIjkeUWKFDEKxTdv3mT79u20adOGlJQUY3VquXLlKFGiBImJiQD4+fnx888/88477/Ddd99lam+Q4cEVsT4+Phw/ftx4Hx8fT7NmzciXL58xl7OzM76+vsZclnbw4EFq166Nj48P69atMwrFOckvKCgIGxsb47V48WIWL15sti0oKCjT3GlpaXzyySeYTCb27NnD5cuXs8zx/kIwwNSpU81iT5061Wx/rVq1SExMJDExkU2bNjFw4EDeeecdFi1aZIzZtm0b9erVMwrFAOXLl+e1117ju+++M8YAtGnTxix+WFgYP//8Mzdu3KBIkSJ4eHgwfPhwFi1aZHZ/RUT+l6hYLCIiIiIiInmem5ub8fOlS5dISUlh4MCBZsVIGxsbjh49yrFjx4D0PrTTpk3j3//+N7Vr16Zo0aIMGDCAW7dumcV2cnIye58/f35u375tvD9//jzTp0/PNNe2bduMuSxt165dHD16lO7du2d6sF928/v444+N4mxiYiJNmjShSZMmZts+/vjjTHPPnz+f7du3ExcXx927d81WagMUK1YMIFMBtnPn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/d6dtra22NraPvW4IiIiIiIi8r+rV69eNGnS5KH7S5WyXP98ERGRrOS5YnHVqlUpUqQIFy5cYOXKlbRv356TJ0/y/fffA///sJ7y5csD0K9fP/r16/fc8hURERERERHJSrFixShWrNjzTkNERMSQ59pQ5M+fn+joaABWrlxJ6dKlqVChAteuXcPV1ZVhw4YBsH//fvbv3288DA9g5syZeHl50bHj/z9Bunv37nh5eTF06NBneyIiIiIiIiIiIiIifyF5rlgM6V/VWbJkCa+//jonT57EZDLRsmVLduzY8ch/lb148SIHDx7k5MmTxrZTp05x8OBBzpw58yxSFxEREREREREREflLynNtKDJ07NjRbIXwg7J64F1UVBRRUVEWzEpEREREREREREQkb8qTK4tFRERERERERERE5OlSsVhEREREREREREREVCwWERERERERERERERWLRURERERERJ6JqKgoduzYkaNjFi5ciMlk4vz58wAkJSVhMpmIi4szxnh6etKvX7+nmmt2ZJXLgwIDA2nSpEmOY2fnuMuXLxMVFcV//vOfLPdfuHCBYcOG4ePjQ4ECBShQoAAVK1Zk0KBBJCUlZTqPjJeVlRWvvPIKHTp04MiRI2Yxw8PDMZlM1KhRI9N8aWlplChRApPJpOcliUielWcfcCciIiIiIiJP39FxlZ7b3CX/+dtzm/tZGDt2LAULFiQgICDXMdzd3dm5cyflypV7iplZzpw5c7C2trZI7MuXLzN27FgqVqyIj4+P2b4///yTevXqce/ePfr370/VqlUxmUz89NNPfPTRR+zYsYOdO3eaHRMdHc2bb75JamoqBw8e5J///CeNGzfm119/NTuHggUL8sMPP3D48GFKlSplbN+2bRtnzpzB1tbWIucrIvIsqFgsIiIiIiIiL5S0tDTu3r37QhbtbG1ts1zVagnh4eFA+urm3HqwiPusdOjQgeTkZHbv3k2xYsWM7UFBQQwYMIAlS5ZkOqZs2bLGtQ0ICKBw4cK89dZb7N+/3+w8PDw8yJcvH8uWLWP48OHG9tjYWEJCQti2bZsFz0xExLLUhkJERERERETytPDwcCpWrMiGDRt47bXXsLW15csvv2Tnzp3Uq1cPBwcHHB0d6dChA2fPnjU7dtKkSXh5eWFnZ0fRokWpX78+hw8fBv6/PcGSJUvo168fzs7OuLu7M3jwYJKTk83i7Nu3j+bNm+Po6IiDgwOhoaEcPHjQ2G8ymQAYMmSI0e4gISEhx+eandYPFy5coGrVqlSpUsVoX/G4/Cwlq3YSq1evxtvbGzs7O2rUqMFPP/2Ek5NTlq0b4uLi8Pb2pmDBgtSrV8/IOSkpyVjV26ZNG+OaJiUlsW3bNhITExk1apRZoThD/vz56d69+2NzL1SoEAD37t3LtK99+/bExsYa75OTk4mLi6NDhw6PjSsi8lemYrGIiIiIiIjkeSdPnqR///4MHDiQr7/+Gjc3NwIDA3F0dGT58uV88sknJCYm0rx5c+OYxYsXM3r0aHr06MHXX3/NvHnzeP3117l69apZ7JEjR2JlZcXnn39Onz59mDp1KvPmzTP2Hzp0iICAAC5evMjChQtZunQp586dIygoiDt37gAYLQ8iIyPZuXMnO3fuxM/P76lfh9OnTxMYGIitrS2bNm3C1dU1W/k9Kz///DNt2rTBx8eHVatW0bVrV8LCwrLM45dffmHy5MlMmjSJhQsX8ueff9KpUycgvR3HqlWrgPT2ERnX1N3d3SjCN2jQIEe5paamkpyczN27d9m3bx9RUVGUL1+eihUrZhrbrl07fv/9d6Nfcnx8PLdu3aJZs2Y5mlNE5K9GbShEREREREQkz7t06RJfffUV1atXB6Bu3br4+/uzatUqY1VvpUqVjBXIjRs3ZteuXVSuXNmslcD9xeQM1atXZ+bMmQAEBwezefNm4uLi6NOnD5Dei9jFxYVvvvkGOzs7IL2NQenSpfn000+JiIgw2huULFnSYm0kjh49SlBQEJ6enqxZswYHB4ds5weQkpJCWlqaES/j5/tXUZtMpifqQTxx4kRKlSrFypUrsbJKX79WqFAhOnfunGns5cuX+fnnnylatCgA169fp1u3bhw/fpzixYvj6+sLmLePgPR/OAAoUaKEWbwHzy9fPvOSSFhYmNn7kiVL8tVXX2V5vh4eHrzxxhvExsYyfvx4YmNjadasmXHNRUTyKq0sFhERERERkTyvSJEiRqH45s2bbN++nTZt2pCSkkJycjLJycmUK1eOEiVKkJiYCICfnx8///wz77zzDt99912W7QYg8wpVHx8fjh8/bryPj4+nWbNm5MuXz5jL2dkZX19fYy5LO3jwILVr18bHx4d169aZFS2zm19QUBA2NjbGa/HixSxevNhsW1BQ0BPlmZiYSJMmTYxCMWRdoAd4/fXXjUIx/H//4/uv/aNk/CNBhtdee83sXDJadGR47733SExMZNeuXaxevZpixYrRsGFDTpw4kWX89u3bs2zZMm7dusXatWtp3759tvISEfkrU7FYRERERERE8jw3Nzfj50uXLpGSksLAgQPNioM2NjYcPXqUY8eOAem9jqdNm8a///1vateuTdGiRRkwYAC3bt0yi+3k5GT2Pn/+/Ny+fdt4f/78eaZPn55prm3bthlzWdquXbs4evQo3bt3z/Rgv+zm9/HHH5OYmGi8mjRpQpMmTcy2ffzxx0+U56lTp8wKwJC+sjhjxfP9srrugNm1z0pGn+IHi8rLly8nMTGRMWPGZHlc6dKl8ff3p2rVqrz11lt88cUXnDhxgmnTpmU5vk2bNhw+fJh//vOf2NjY0LBhw0fmJSKSF6gNhYiIiIiIiOR5968idXJywmQyMWLECN56661MY11dXQGwsrJiwIABDBgwgBMnTrBs2TKGDRuGq6sro0ePzvbcLi4uhIaGGu0c7pfxkDRLa9++Pfny5aNdu3asW7fObAVwdvPz9vY221ekSBEA/P39n1qe7u7unDt3zmzbtWvXHlsAzonAwEAgfUV1RqsQgFdffRWA33//PVtxihYtiqurK3v37s1yv5ubG/Xq1eODDz6gR48e2NjYPFniIiJ/ASoWi4iIiIiIyAvFwcGBN954g3379jFhwoRsHfPKK68waNAgli5dyr59+3I0X/369fn999/x9fV9ZD9fGxubp1oUfdD06dO5ffs2zZs359///jc1a9bMUX7PQtWqVVm3bh1Tp041WlGsWbMmV7EettK4du3aVK1alQkTJtC8eXPc3d1zFf/MmTOcP3/e+MeFrPTv358CBQrQs2fPXM0hIvJXo2KxiIiIiIiIvHAmT55MvXr1CAsLo127djg7O3P8+HG++eYbunXrRmBgIL1798bZ2ZkaNWrg7OzM9u3b2bNnT5YrcB9l7NixVK1alZCQEHr16oWbmxunT59my5Yt1K5d2+hlW6FCBdauXUvt2rVxcHDA29v7qa88/vDDD7l16xaNGzdm48aNVK1aNdv55db333+faZubmxu1a9fOtH348OFUrVqVVq1a0atXL44cOcKUKVOws7Mz62OcHS+//DJOTk7ExsZSqlQpbG1tqVy5Mvnz52fp0qXUq1cPPz8/BgwYQNWqVbGysiIpKYmPPvoIW1vbTCuB//jjD77//nvS0tI4ceIEkydPxmQyPbIQnNGqQ0TkRaFisYiIiIiIiLxwAgIC+O677xgzZgzdunXj7t27FC9enKCgILy8vIwxc+fOZe7cudy8eZPSpUszbdo0evTokaO5vLy82LVrF6NGjSIiIoLr16/j7u5OnTp1qFy5sjFu9uzZDBgwgEaNGnHr1i02b95stEx4WkwmE/Pnz+fOnTuEhISQkJBA5cqVs5Vfbk2dOjXTtqCgIDZu3Jhpu6+vL59//jnDhw+nRYsWVKxYkUWLFhEYGIijo2OO5rWysmLBggWMGDGCoKAg7ty5w+HDh/H09MTLy4uffvqJyZMns2jRIsaOHYvJZKJ06dKEhISwbNmyTPONGDHC+NnV1ZXXXnuNTZs2UadOnRzlJSKSl5nS0tLSnncSec3Vq1dxdHTkypUrFC5c+Hmnk2dUGbLYovHHtw60aPyK/w61aPxCAZ0tGr/JvrUWjd+zXkeLxS7Vd7nFYgP49bHsV8YW7c7Zf/TmlG9QSYvGT1g63qLxA4JDLBr/5eNlLBbbPeAli8UGmL4lzqLxLf0QlqPH+ls0fnnv7haN3/lAKYvFHl7By2KxASYv3G7R+Pqd+2h5+Xdu+Ks5W00peffvBrdv3+bw4cOUKlUqyweLiTxL3377LfXr1ychIYG6des+73RERF5I2f3dr5XFIiIiIiIiIvLMREREEBQURJEiRdi7dy/jx4/H19c3y7YVIiLybKlYLCIiIiIiIvIcpKamkpqa+tD91tbWmEymZ5jRs3Hp0iUiIyM5f/48jo6ONGzYkClTpuS4Z7GIiDx9+n9iERERERERkedg3Lhx2NjYPPS1aNGi552iRcTGxnLy5Enu3r3LuXPn+Oyzz3Bzc3veaYmICFpZLCIiIiIiIvJc9OrViyZNmjx0f6lSluufLyIikhUVi0VERERERESeg2LFilGsWLHnnYaIiIhBbShERERERERERERERMViEREREREREREREVGxWERERERERERERERQsVhEREREREREREREULFYRERERERERERERFCxWERERERERERERERQsVhEREREREReANOmTaNkyZJYW1vj5OREdHR0jmNMnz6dDRs2WCC7p2Pp0qWULVsWGxsbXn/99eedzjO1Y8cOrKys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l19ueXl5MXz4cCZNmsSBAwfo168fTk5OjBs3zmzcBx98QNWqVTMVIDM0btyYEiVKPHKufPnyYW9vz71798y2//bbb4SEhBj3uXXr1hw9etRszO3bt3nnnXcoVqwYdnZ2vP7666xevdpszN69e2ncuDFFihShQIECeHt78/777wPpn7FFixaxd+9e4/497FyehqzaSRw/fpwmTZpQoEABSpQowbRp0/j73/+eZeuGY8eO0ahRIxwcHChbtiyLFy829gUGBrJlyxbWr19vnEtG8daS9wmgbdu2/Pnnn/z000/GtqVLlxIUFMRLL730yLgi8myoWCwiIiIiIiJ53smTJ+nfvz8DBw7k66+/xs3NjcDAQBwdHVm+fDmffPIJiYmJNG/e3Dhm8eLFjB49mh49evD1118zb948Xn/9da5evWoWe+TIkVhZWfH555/Tp08fpk6dyrx584z9hw4dIiAggIsXLxq9YM+dO0dQUBB37twBYOfOnQBERkayc+dOdu7ciZ+f31O/DqdPnyYwMBBbW1s2bdqEq6trtvJ7EsOGDcPDw4OQkBDWrl1LTEyMWUuBY8eOcejQIRo0aJCjuGlpaSQnJ5OcnMz58+d59913OXHiBC1btjSLXadOHS5cuMCSJUv46KOP+Omnn6hbty7Xrl0zxnXs2JGPP/6Yf/zjH6xZswYfHx9atWrFF198YYxp2rQply5d4tNPP2X9+vUMHjyYGzduADB69GgaN25M6dKljfs3evTo3F6yHEtLS6N58+b88ssvfPzxx8yePZtVq1axatWqLMd37NiRBg0asGbNGnx9fQkPD2ffvn1A+uphX19fatasaZzL22+/bdH7lKFYsWLUrVuX2NhYAFJTU/n8889p3759Dq+IiFiK2lCIiIiIiIhInnfp0iW++uorqlevDkDdunXx9/dn1apVxqreSpUqGSuQGzduzBkChSMAACKWSURBVK5du6hcuTLDhw834txfTM5QvXp1Zs6cCUBwcDCbN28mLi6OPn36AOm9iF1cXPjmm2+ws7MDICAggNKlS/Ppp58SERFhfE2/ZMmSFmsjcfToUYKCgvD09GTNmjU4ODhkOz9IfzDd/a0TMn6+fxW1yWTC2trabF5bW1tGjRpFly5dCA4O5q233jLbf/LkSYBMK1LT0tJISUkx3ltbWxv3CmDDhg3Y2NiY7f/ggw+oXbu2sW3atGncu3eP+Ph4XFxcAPD19cXHx4eFCxcSGRnJr7/+yqpVq/joo4/o3bs3AA0bNiQpKYmxY8fSrFkzzp8/z+HDh5kxYwZNmzYF4M033zTmKVOmDEWLFuXIkSOZ7t+D55Hx84Orz/Ply30J5quvvuKnn35i69atxvnXq1eP4sWLZ9nXuF+/fsZ9DQgIYP369axcuZJRo0bh4+ND4cKFKViwoNm5/PDDD4Bl7tP92rdvz/jx43n//ffZvHkzly9fpmXLlvzyyy85uygiYhFaWSwiIiIiIiJ5XpEiRYxC8c2bN9m+fTtt2rQhJSXFWPVYrlw5SpQoQWJiIgB+fn78/PPPvPPOO3z33XdZfm0eyLTS0sfHh+PHjxvv4+PjadasGfny5TPmcnZ2xtfX15jL0g4ePEjt2rXx8fFh3bp1RqE4J/kFBQVhY2NjvBYvXszixYvNtgUFBWWaOy0tjU8++QSTycSePXu4fPlyljneX2AEmDp1qlnsqVOnmu2vVasWiYmJJCYmsmnTJgYOHMg777zDokWLjDHbtm2jXr16RqEYoHz58rz22mt89913xhiANm3amMUPCwvj559/5saNGxQpUgQPDw+GDx/OokWLzO7v4yxatMjsPOrXrw9gts3GxoakpKRsx3xQYmIiTk5OZgXYggULZnk/wPwz6+DggIeHR7bPyRL36X6tWrXi9OnTbN++ndjYWBo3bkzhwoWzlZuIWJ5WFouIiIiIiEie5+bmZvx86dIlUlJSGDhwIAMHDsw09tixY0B6H9pr167xySefMG3aNBwdHenatSuTJk3C3t7eGP/gys38+fNz+/Zt4/358+eZPn0606dPzzRX/vz5n/DMsmfXrl1cvHiRmTNnZnqwX3bz+/jjj81aN4wdOxaAMWPGGNsKFSqUKcb8+fPZvn07cXFx9OjRg+HDh/Phhx8a+4sVKwaQqVjZuXNnAgMDAahatWqmuI6Ojvj7+xvv33zzTfbv38/gwYPp0qULJpOJS5cu8frrr2c61s3NjYsXLwLpnwcbGxuzgnLGmLS0NC5fvoyDgwPx8fGMHDmSv/3tb9y4cYMqVarwwQcfUKdOnUzx79e0aVOzovvu3bvp06dPpn8oyLgOuXHq1KksH3j3sD6/j/vMZsWS9+l+Li4uhISEsHDhQlauXGnW0kVEnj8Vi0VERERERCTPu78g5eTkhMlkYsSIEZlaIgC4uroCYGVlxYABAxgwYAAnTpxg2bJlDBs2DFdX1xz1o3VxcSE0NNT42v/9siquWkL79u3Jly8f7dq1Y926dWYrTrObn7e3t9m+IkWKAJgVAh90/vx5hg4dSrdu3WjZsiVnz57lb3/7G927dzcKiyVKlKB06dLEx8ebPfjOzc3NrMifHRUqVODLL7/k7NmzuLm54eLikumhhQBnzpyhXLlyQPr537t3j0uXLuHs7Gw2xmQyGYXVcuXKsWLFCu7du8eOHTsYMWIETZs25cSJE2Y9mB9UpEgR41oBXL9+HXj0dcspd3d3zp07l2l7VueeW5a8Tw9q3749nTt3pmDBgoSGhj5x7iLy9KgNhYiIiIiIiLxQHBwceOONN9i3bx/+/v6ZXp6enpmOeeWVVxg0aBCVK1c2HgSWXfXr1+f333/H19c301z3F2BtbGweu7rzSUyfPp2uXbvSvHlztm/fnuP8cmPw4MGYTCbef/99AHr16oW/vz99+vQhNTXVGPfOO+/www8/8Nlnnz3RfL///js2NjZG24JatWrx7bffcunSJWPM/v37+fXXX6lVq5YxBmDFihVmsVasWIGvr69Zyw5Iv09169Zl2LBhXL161ei5nJ3VuZZStWpVLl++zNatW41t169f59tvv81VvIedi6Xu04OaN29O8+bNGTFihNFHW0T+GrSyWERERERERF44kydPpl69eoSFhdGuXTucnZ05fvw433zzDd26dSMwMJDevXvj7OxMjRo1cHZ2Zvv27ezZsyfLFbiPMnbsWKpWrUpISAi9evXCzc2N06dPs2XLFmrXrk379u2B9NWWa9eupXbt2jg4OODt7f3UVx5/+OGH3Lp1i8aNG7Nx40aqVq2a7fxyasuWLSxatIj58+cbK2utrKz48MMPqVatGnPmzKFfv34AREREsGPHDsLDw9m8eTNNmzbF1dWVCxcuEB8fD2RehX358mW+//57AK5du8aGDRvYsGEDPXv2NNqEDBw4kAULFtCgQQNGjhzJ7du3GTVqFCVLliQ8PByAypUr07JlS9555x1u3bqFt7c3S5YsYceOHaxduxaAX3/9lUGDBhEWFkaZMmW4cuUKEydOxNPTkzJlygDp92/+/PnExsZStmxZXF1ds/yHh+w6ffo0cXFxmbZntdK2UaNG+Pn50aFDByZOnIiT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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10, 8))\n", + "palette = sns.color_palette(\"tab20\", n_colors=len(df['model'].unique())) # 더 많은 색상 지원\n", + "sns.barplot(x='region', y='CSI', hue='model', ci=None, data=df.loc[(df['region']=='daegu'),:], palette=palette)\n", + "plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', fontsize=11)\n", + "plt.title('Soft Voting Ensemble: Model Performance Comparison in Daegu', fontsize=15, fontweight='bold') # 제목 볼드 및 크기 조정\n", + "plt.ylabel('CSI', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "plt.xlabel('') # y축 라벨 변경 및 스타일 조정\n", + "# x축(도시명) 글씨 크기 조정\n", + "plt.xticks(fontsize=15, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.yticks(fontsize=10, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
regionmodeldata_sampleCSIMCCAccuracy
254daejeondeepgbm+ft_transformerbest0.6800.7890.958
255daejeondeepgbm+resnet_likebest0.6660.7800.955
257daejeondeepgbm+LightGBMbest0.6620.7760.955
264daejeondeepgbm+ft_transformer+resnet_likebest0.6610.7740.955
256daejeondeepgbm+XGBoostbest0.6570.7730.954
266daejeondeepgbm+ft_transformer+LightGBMbest0.6560.7700.955
265daejeondeepgbm+ft_transformer+XGBoostbest0.6500.7650.954
274daejeondeepgbm+ft_transformer+resnet_like+XGBoostbest0.6460.7630.953
267daejeondeepgbm+resnet_like+XGBoostbest0.6460.7640.953
268daejeondeepgbm+resnet_like+LightGBMbest0.6440.7620.953
275daejeondeepgbm+ft_transformer+resnet_like+LightGBMbest0.6430.7600.953
276daejeondeepgbm+ft_transformer+XGBoost+LightGBMbest0.6270.7470.950
279daejeondeepgbm+ft_transformer+resnet_like+XGBoost+Lig...best0.6250.7450.950
277daejeondeepgbm+resnet_like+XGBoost+LightGBMbest0.6180.7410.948
269daejeondeepgbm+XGBoost+LightGBMbest0.6100.7360.947
270daejeonft_transformer+resnet_like+XGBoostbest0.5930.7170.945
258daejeonft_transformer+resnet_likebest0.5870.7120.945
271daejeonft_transformer+resnet_like+LightGBMbest0.5870.7120.945
259daejeonft_transformer+XGBoostbest0.5820.7080.943
260daejeonft_transformer+LightGBMbest0.5810.7070.944
278daejeonft_transformer+resnet_like+XGBoost+LightGBMbest0.5780.7050.943
272daejeonft_transformer+XGBoost+LightGBMbest0.5700.6980.941
261daejeonresnet_like+XGBoostbest0.5620.6930.939
273daejeonresnet_like+XGBoost+LightGBMbest0.5570.6880.938
262daejeonresnet_like+LightGBMbest0.5550.6860.939
263daejeonXGBoost+LightGBMbest0.5290.6630.933
\n", + "
" + ], + "text/plain": [ + " region model data_sample \\\n", + "254 daejeon deepgbm+ft_transformer best \n", + "255 daejeon deepgbm+resnet_like best \n", + "257 daejeon deepgbm+LightGBM best \n", + "264 daejeon deepgbm+ft_transformer+resnet_like best \n", + "256 daejeon deepgbm+XGBoost best \n", + "266 daejeon deepgbm+ft_transformer+LightGBM best \n", + "265 daejeon deepgbm+ft_transformer+XGBoost best \n", + "274 daejeon deepgbm+ft_transformer+resnet_like+XGBoost best \n", + "267 daejeon deepgbm+resnet_like+XGBoost best \n", + "268 daejeon deepgbm+resnet_like+LightGBM best \n", + "275 daejeon deepgbm+ft_transformer+resnet_like+LightGBM best \n", + "276 daejeon deepgbm+ft_transformer+XGBoost+LightGBM best \n", + "279 daejeon deepgbm+ft_transformer+resnet_like+XGBoost+Lig... best \n", + "277 daejeon deepgbm+resnet_like+XGBoost+LightGBM best \n", + "269 daejeon deepgbm+XGBoost+LightGBM best \n", + "270 daejeon ft_transformer+resnet_like+XGBoost best \n", + "258 daejeon ft_transformer+resnet_like best \n", + "271 daejeon ft_transformer+resnet_like+LightGBM best \n", + "259 daejeon ft_transformer+XGBoost best \n", + "260 daejeon ft_transformer+LightGBM best \n", + "278 daejeon ft_transformer+resnet_like+XGBoost+LightGBM best \n", + "272 daejeon ft_transformer+XGBoost+LightGBM best \n", + "261 daejeon resnet_like+XGBoost best \n", + "273 daejeon resnet_like+XGBoost+LightGBM best \n", + "262 daejeon resnet_like+LightGBM best \n", + "263 daejeon XGBoost+LightGBM best \n", + "\n", + " CSI MCC Accuracy \n", + "254 0.680 0.789 0.958 \n", + "255 0.666 0.780 0.955 \n", + "257 0.662 0.776 0.955 \n", + "264 0.661 0.774 0.955 \n", + "256 0.657 0.773 0.954 \n", + "266 0.656 0.770 0.955 \n", + "265 0.650 0.765 0.954 \n", + "274 0.646 0.763 0.953 \n", + "267 0.646 0.764 0.953 \n", + "268 0.644 0.762 0.953 \n", + "275 0.643 0.760 0.953 \n", + "276 0.627 0.747 0.950 \n", + "279 0.625 0.745 0.950 \n", + "277 0.618 0.741 0.948 \n", + "269 0.610 0.736 0.947 \n", + "270 0.593 0.717 0.945 \n", + "258 0.587 0.712 0.945 \n", + "271 0.587 0.712 0.945 \n", + "259 0.582 0.708 0.943 \n", + "260 0.581 0.707 0.944 \n", + "278 0.578 0.705 0.943 \n", + "272 0.570 0.698 0.941 \n", + "261 0.562 0.693 0.939 \n", + "273 0.557 0.688 0.938 \n", + "262 0.555 0.686 0.939 \n", + "263 0.529 0.663 0.933 " + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table= df.loc[(df['region']=='daejeon'),:'Accuracy']\n", + "table['CSI'] = table['CSI'].round(3)\n", + "table['MCC'] = table['MCC'].round(3)\n", + "table['Accuracy'] = table['Accuracy'].round(3)\n", + "table" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
regionmodeldata_sampleCSIMCCAccuracy
280gwangjudeepgbm+ft_transformerbest0.6800.7670.954
281gwangjudeepgbm+resnet_likebest0.6660.7710.954
283gwangjudeepgbm+LightGBMbest0.6620.7730.954
290gwangjudeepgbm+ft_transformer+resnet_likebest0.6610.7740.955
282gwangjudeepgbm+XGBoostbest0.6570.7720.954
292gwangjudeepgbm+ft_transformer+LightGBMbest0.6560.7700.955
291gwangjudeepgbm+ft_transformer+XGBoostbest0.6500.7650.954
300gwangjudeepgbm+ft_transformer+resnet_like+XGBoostbest0.6460.7630.953
293gwangjudeepgbm+resnet_like+XGBoostbest0.6460.7640.953
294gwangjudeepgbm+resnet_like+LightGBMbest0.6440.7620.953
301gwangjudeepgbm+ft_transformer+resnet_like+LightGBMbest0.6430.7600.953
302gwangjudeepgbm+ft_transformer+XGBoost+LightGBMbest0.6270.7470.950
305gwangjudeepgbm+ft_transformer+resnet_like+XGBoost+Lig...best0.6250.7450.950
303gwangjudeepgbm+resnet_like+XGBoost+LightGBMbest0.6180.7410.948
295gwangjudeepgbm+XGBoost+LightGBMbest0.6100.7360.947
296gwangjuft_transformer+resnet_like+XGBoostbest0.5930.7170.945
284gwangjuft_transformer+resnet_likebest0.5870.7630.953
297gwangjuft_transformer+resnet_like+LightGBMbest0.5870.7120.945
285gwangjuft_transformer+XGBoostbest0.5820.7550.952
286gwangjuft_transformer+LightGBMbest0.5810.7490.951
304gwangjuft_transformer+resnet_like+XGBoost+LightGBMbest0.5780.7050.943
298gwangjuft_transformer+XGBoost+LightGBMbest0.5700.6980.941
287gwangjuresnet_like+XGBoostbest0.5620.7430.949
299gwangjuresnet_like+XGBoost+LightGBMbest0.5570.6880.938
288gwangjuresnet_like+LightGBMbest0.5550.7370.948
289gwangjuXGBoost+LightGBMbest0.5290.7300.947
\n", + "
" + ], + "text/plain": [ + " region model data_sample \\\n", + "280 gwangju deepgbm+ft_transformer best \n", + "281 gwangju deepgbm+resnet_like best \n", + "283 gwangju deepgbm+LightGBM best \n", + "290 gwangju deepgbm+ft_transformer+resnet_like best \n", + "282 gwangju deepgbm+XGBoost best \n", + "292 gwangju deepgbm+ft_transformer+LightGBM best \n", + "291 gwangju deepgbm+ft_transformer+XGBoost best \n", + "300 gwangju deepgbm+ft_transformer+resnet_like+XGBoost best \n", + "293 gwangju deepgbm+resnet_like+XGBoost best \n", + "294 gwangju deepgbm+resnet_like+LightGBM best \n", + "301 gwangju deepgbm+ft_transformer+resnet_like+LightGBM best \n", + "302 gwangju deepgbm+ft_transformer+XGBoost+LightGBM best \n", + "305 gwangju deepgbm+ft_transformer+resnet_like+XGBoost+Lig... best \n", + "303 gwangju deepgbm+resnet_like+XGBoost+LightGBM best \n", + "295 gwangju deepgbm+XGBoost+LightGBM best \n", + "296 gwangju ft_transformer+resnet_like+XGBoost best \n", + "284 gwangju ft_transformer+resnet_like best \n", + "297 gwangju ft_transformer+resnet_like+LightGBM best \n", + "285 gwangju ft_transformer+XGBoost best \n", + "286 gwangju ft_transformer+LightGBM best \n", + "304 gwangju ft_transformer+resnet_like+XGBoost+LightGBM best \n", + "298 gwangju ft_transformer+XGBoost+LightGBM best \n", + "287 gwangju resnet_like+XGBoost best \n", + "299 gwangju resnet_like+XGBoost+LightGBM best \n", + "288 gwangju resnet_like+LightGBM best \n", + "289 gwangju XGBoost+LightGBM best \n", + "\n", + " CSI MCC Accuracy \n", + "280 0.680 0.767 0.954 \n", + "281 0.666 0.771 0.954 \n", + "283 0.662 0.773 0.954 \n", + "290 0.661 0.774 0.955 \n", + "282 0.657 0.772 0.954 \n", + "292 0.656 0.770 0.955 \n", + "291 0.650 0.765 0.954 \n", + "300 0.646 0.763 0.953 \n", + "293 0.646 0.764 0.953 \n", + "294 0.644 0.762 0.953 \n", + "301 0.643 0.760 0.953 \n", + "302 0.627 0.747 0.950 \n", + "305 0.625 0.745 0.950 \n", + "303 0.618 0.741 0.948 \n", + "295 0.610 0.736 0.947 \n", + "296 0.593 0.717 0.945 \n", + "284 0.587 0.763 0.953 \n", + "297 0.587 0.712 0.945 \n", + "285 0.582 0.755 0.952 \n", + "286 0.581 0.749 0.951 \n", + "304 0.578 0.705 0.943 \n", + "298 0.570 0.698 0.941 \n", + "287 0.562 0.743 0.949 \n", + "299 0.557 0.688 0.938 \n", + "288 0.555 0.737 0.948 \n", + "289 0.529 0.730 0.947 " + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table= df.loc[(df['region']=='gwangju'),:'Accuracy']\n", + "table['CSI'] = table['CSI'].round(3)\n", + "table['MCC'] = table['MCC'].round(3)\n", + "table['Accuracy'] = table['Accuracy'].round(3)\n", + "table" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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iW2vb/QWYmNjNdo/EdG/QWX9bPDy5Uvcvn0bTk5O0NfXr+hwKh2FQoGwsDAsXry4XOvl5OSgbt268PX1xdq1azUUHRERkaqyvvdXupHFyrvUAtLi7so7gf79999q1/vzzz/Fby+3b98uHphz586hVatW+OmnnyTfOhf16tUryZ06nz59+tb7QURERERERP9sK1euREFBAWrXro2MjAwsW7YMSUlJ2Lx5c0WHRkREpJZqoaRK6nUDpPPy8sS/W7Rogb/++gs3b96Eubk58vPzsWzZshLXnT59OkxMTMSHurvnEhERERERERWlr6+PhQsXok2bNoiKisKzZ8+wd+/eUmv2ViaCICAvL6/ER0FBQUWHSP9gvP6INKPSJYuLJmofPXqk8nf16up/jl20GL6npydkMhlMTEzg4uICAEhKSipxm2PHjsWTJ0/ER9HRzURERERERPTvkpSUVKYSFD169MDvv/+OFy9e4MWLFzhz5ox4A7x/gu+++w46OjolPiZNmlTRIdI/GK8/Is2odGUovLy8YGFhgbS0NMTHx6Nr1664f/8+zp49CwAIDQ0FANSpUwcAMGjQIAwaNAg1atTARx99hD///BOJiYkQBAFZWVlifeOPPvqoxG3q6elBT09Pw3tGREREREREVHm0bdsWFy5cKHG5nZ3de4yG/m14/RFpRqVLFuvq6mLatGno378/4uPjUbNmTaSlpSErKwuWlpYYM2YMAODGjRsAgNTUVHHdGTNmIDIyEocPH0atWrWQlZWF9PR0VK1aFSNGjKiQ/SEiIiIiIiKqjCwsLGBhYVHRYdC/FK8/Is2odGUoAKBfv374/vvv0bBhQ9y/fx8ymQwdOnTA6dOnS/3mqEOHDtixYwe8vLxw//59aGlp4dNPP8XPP/8MV1fX97gHRERERERERERERB+WSjeyWKl79+7o3r17ictLuuFdu3bt0K5dO02FRURERERERERERFQpVdpkMREREb0dZb1/TfH29tZo/0RERERERPRuVcoyFERERERERERERET0bjFZTERERERERERERERMFhMREREREdE/T2ZmJmQyGeLi4io6lFLFxcVBJpMhNTW1okMR3bp1C3K5HOPHj1dZNmzYMJiYmOD+/fuS+WfOnEFkZCRsbW2hq6sLCwsLBAYGYsWKFcjJyRHbxcbGQiaTiQ99fX24urpi1qxZ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4uTkxDvvvMOyZcuA1NYSjRo1yrQ/8pPo168fJUqUYOTIkWbbixcvzvjx4xk+fDhvvvkmlStXBlJXIdepU4e5c+fSr18/rl69iouLC1WrVmXhwoW0b9/eLM7hw4epVasWkLoStlSpUgwbNowRI0YYYwoVKkRcXByDBw+mV69eJCUlUbt2bbZv32728MCpU6fi5OTEggULmDRpEh4eHnz44Yf07t0byNr9zulnODPHjx9P99A9SH1oX0YWLlxI//79GTp0KHZ2drz55ptUqlSJOXPmZHvuHj16sGfPHsLDw7l48SJvvvkmixcvBixzn0TkyZhSUlJScjuJvObatWs4Ojpy9epVChcunNvp5BlVhy21aPyJbQIsGr/Sv9M/wfdpKuTfxaLxm/6x/vGDnkDPBp0sFrt035UWiw3g2yd7/zGfXUv2Oj5+0BPwCSxp0fhxyydaNL5/UPDjBz2BF09kvMLgaXD3z/ghH0/LzG3pV388TY0aNbJo/GPHBzx+0BOo4GXZB5R0OVjaYrFHVvS0WGyAqYt3WjS+fuc+Wl7+nRv2cj+LxX5e5dW/G9y5c4cjR45QunRp7OzscjsdEckD6tWrh7W1NVu3bs3tVEQkB7L6u18ri0VERERERERExLB69WqOHTtG5cqVuXXrFsuXL2fHjh2sXbs2t1MTEQtTsVhERERERESee4mJiZnuM5lMWFtbP8NsRP7eChYsyKeffsqff/7JvXv3qFChAsuWLeONN97I7dRExMKscjuBnFqxYgW+vr7Y29vj4uJCmzZtOHTo0COPWbNmDYGBgTg6OmIymTCZTHz99dfPKGMRERERERHJLTY2Npm+Mnswlsj/quDgYH766SeuX7/O3bt32bdvH506Wa4Nkoj8feTJlcWffPIJb731FgClS5fm4sWLrF69mh07drBv3z5efPHFDI/bvn07O3fupHjx4ly7du1ZpiwiIiIiIiK5KD4+PtN9tra2zzATERGRv688Vyy+d++e8ZTL1q1bExMTw6lTp6hQoQLnzp0jMjKS2bNnZ3jsyJEjee+999i1axevvfbas0xbREREREREcpGfn19upyAiIvK3l+faUMTHx3PhwgUgtVgMUKxYMWrWrAnwyLYSbm5u5M+fP9tz3r17l2vXrpm9RERERERERERERJ4nea5YfPz4cePnF154wfjZzc0NgGPHjj31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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10, 8))\n", + "palette = sns.color_palette(\"tab20\", n_colors=len(df['model'].unique())) # 더 많은 색상 지원\n", + "sns.barplot(x='region', y='CSI', hue='model', ci=None, data=df.loc[(df['region']=='daejeon'),:], palette=palette)\n", + "plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', fontsize=11)\n", + "plt.title('Soft Voting Ensemble: Model Performance Comparison in Daejeon', fontsize=15, fontweight='bold') # 제목 볼드 및 크기 조정\n", + "plt.ylabel('CSI', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "plt.xlabel('') # y축 라벨 변경 및 스타일 조정\n", + "# x축(도시명) 글씨 크기 조정\n", + "plt.xticks(fontsize=15, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.yticks(fontsize=10, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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RERERERERP86TBYTEREREREREREREZPFRERERERERERERMRkMRERERERERERERGByWIiIiIiIiIiIiIiAqBT0QEQERFVVlmHLmi0f/NAd432T0RERERERFQURxYTEREREREREREREZPFRERERERE9O+TlZUFmUyGxMTEig6lVImJiZDJZEhPT6/oUCQyMjLQrl07WFhYQCaTYcuWLZg9ezZ27dpVrn5SU1ORkJCAO3fuaCjSN5Obm4sePXrAxsYGMpkMs2fPruiQqASvc/0dPnwYMpkMv/zyizhPJpNh+vTp4nRAQADCw8PfWpxElR3LUBAREREREZEo88epFbZti+axFbZtkpo5cyYOHTqElStXwtbWFjVr1sSQIUMQHh6OVq1albmf1NRUjBs3DuHh4XBwcNBgxK9n5cqVWLVqFb7//nu4uLhAoVBUdEhUgtmzZ5f7+lPnxIkTqF69+luKiujfhyOLiYiIiIiIiP5DEhMTX5kUvXz5Mjw8PNC2bVt4e3vDwsJC43Hl5ORofBvFXb58GQ4ODujWrRu8vb1RpUqV1+6rIuIHAEEQ8OLFC7XLFApFuUfXV9R+vCve3t6wt7ev6DCI3ltMFhMREREREVGlt3TpUigUCsjlcgQHB+Pq1asqbRITE+Hh4QEDAwM4OjoiPj4e+fn5kjZpaWmIjo6GtbU1DA0N4efnh5SUFEkbhUKBAQMGYNq0aXB0dIRcLkdERATu3r2r0ld4eDjkcjmcnJwwa9YsDBkyRG2i9urVqwgKCoJcLodCocDy5csly7t37w53d3f8+OOP8PDwgKGhIfz9/ZGamoqMjAx07NgRpqamcHFxwYYNG17zKBaSyWRISkrCsWPHIJPJIJPJoFAocPPmTcyfP1+c96ok5OHDhxEYGAgA8PLyEtdTLpPJZNi5cyeioqJgamqKDh06ACgc7evj4wNLS0tYWFggICAAp0+flvSdkJAAY2Nj/P777/Dx8YFcLoe7uzv27t0rabdt2zZ4enrC2NgY5ubm8PT0FEsZKBQKzJgxA7du3RJjS01NBQAcPXoUzZo1g6GhIaytrfHZZ58hIyND7Dc1NVU8Br1794aVlRUaN24sHr8pU6YgPj4etra2MDc3R2xsLARBwIEDB1C/fn0YGxsjODgYt27dksT74sULfPXVV6hevTr09fXh5uaGtWvXStoor4Vdu3ahXr160NfXx/bt2191WtVSHsfTp0+jadOmMDAwwPz58wEAly5dQkREBMzMzGBkZITWrVvj2rVrkvWXL1+OOnXqwNDQEFZWVvDx8cGZM2fE5TKZDFOnTkVCQgLs7OxgbW2NHj164OnTp5J+XvW4e53rryTFy1AUl5OTg9atW+ODDz7A9evXyxQf0b8Jy1AQERG9pxISEip1/0RERO/Kjh070KdPH3Tv3h2dO3dGSkqKmHhUmjlzJmJjYzF06FDMmDEDly5dEpPFkydPBgBkZmbCx8cHxsbGmDt3LszMzDB37lwEBQXhr7/+gq2trdhfcnIyqlevjoULFyIzMxNxcXFo3749Tpw4AaBwtGdERATu3buHxYsXw8zMDNOmTcPNmzehpaU6bqtz587o27cv4uLisH79evTs2RMODg4ICwsT2/zzzz8YPnw44uPjoauri0GDBqFbt26Qy+Xw8/ND7969sXTpUkRHR8Pb2/u1f2p/4sQJxMXFITs7GwsWLAAA6Ovro1WrVvDx8cHw4cMBAC4uLqX207BhQ8yfPx/9+/fHihUrUKtWLZU2ffr0QXR0NJKTk6GtrQ2gMBEbExMDFxcX5ObmYt26dfDz88Nvv/0GV1dXcd2XL1+iW7duGDRoEMaMGYMpU6YgMjISN2/ehJWVFa5du4aoqCh06dIF3377LQoKCnD+/HlkZmYCKDyHU6ZMwZEjR5CcnAwAsLe3R0pKCkJCQhAQEICNGzfi3r17GDlyJC5evIjjx4+LcQLAqFGj0Lp1a6xbtw4FBQXi/Hnz5iEgIACrVq3CqVOnMHbsWOTn52P//v2Ij4+Hnp4eBg0ahJ49e2Lfvn3ieh07dsRPP/2EsWPHws3NDbt27UJ0dDQsLCzQsmVLsd2dO3cwaNAgjB49GtWqVUO1atXKdnLVyM3NRdeuXTF06FBMmjQJVlZWuH79Opo1awZ3d3ckJiZCS0sL33zzDYKDg3HlyhXo6+vj6NGj6NmzJ7788ku0atUKz549w+nTp5GVlSXpf968efD19cX333+PP//8EyNGjICdnV25HnfJycnlvv5ex5MnT9CmTRvcvXsXx44dg6OjY7meF4j+DZgsJiIiIiIiokpt4sSJ8PX1xYoVKwAAoaGheP78OSZMmAAAyM7OxtixYxEbG4tJkyYBAEJCQqCnp4dhw4ZhxIgRsLKywuzZs5GVlYXTp0+LCaDg4GC4urpi+vTpmDr1/+o5Z2dnY/fu3TAzMwMAODk5ITg4GHv37kVoaCh2796Ns2fP4ujRo/D19QUABAUFoWrVqjA3N1fZh5iYGIwaNUqM//r16xg3bpwkWZyRkYEjR46gTp06AAoThgMHDkRcXBzGjBkDoHAE7+bNm7FlyxYMHjwYAFBQUCBJZCr/zsvLk8Sgo1OYIlCWnZDJZPD29haX6+vrw87OTjKvNKampqhduzYAwN3dHZ6enipt2rZtiylTpkjmff3115JYQ0JCcPr0aSQmJornDyhMck6ePFmsYVuzZk04Oztj9+7diI6Oxq+//oqXL19i3rx5MDExAVB4bJUaNGiAKlWqQF9fX7JP33zzDapUqYIdO3ZAV1cXQOH5DQ0Nxa5du9CmTRuxbf369fHdd9+p7JeDgwNWrVolbnPbtm2YNWsWLl68CDc3NwDA7du3MXDgQGRlZcHc3ByHDh3Ctm3bsHfvXrRo0QJA4XV69+5djB07VpIszszMxO7du9GkSRPJdoufU+UxLDpfS0tL8oXFy5cv8c0336BTp07ivE8//RSWlpbYv38/DAwMAADNmjXDBx98gGXLluGLL77A6dOnYWlpiWnTponrtW7dWmX79vb2WLNmDQAgLCwMZ8+exaZNm8RkcVkedw0aNCj39VdemZmZaNmyJZ4/f46jR4+KsZTneYHo34BlKIiIiIiIiKjSys/PR0pKCtq1ayeZHxUVJf59/PhxPHnyBB06dEBeXp74r3nz5sjJycGFCxcAAPv27UNgYCAsLS3FNtra2vD395f8tB4AAgMDxUQxUJgItrS0xKlTpwAAZ86cgbm5uZgoBiCWHlCnePyRkZFISUmRlMlwcHAQE8UAxFG2zZs3F+eZm5vD1tZWUt5g/Pjx0NXVFf/17NkTN2/elMxTJkXfNXXJxUuXLqFdu3aws7ODtrY2dHV1ceXKFfz555+SdlpaWpJ9VygUMDQ0RFpaGgDAw8MD2tra6Nq1K7Zv345Hjx6VKaZjx44hIiJCckxatGgBc3Nz/PTTT6+MHyhM8hbl6uoKBwcHMVGsnAdAjHffvn2wtLREUFCQ5DoNCQnBr7/+KrkWrKysVBLFAFTO6c2bN9GzZ0/JvPHjx6usV3w/9u3bh7Zt20JHR0eMw8LCAg0aNBAfCw0bNkRGRga6d++O/fv349mzZ2U6FrVr1xb3Wbmtsj7uNCU9PV0smXLo0CHJaOH3IT6id4kji4mIiIiIiKjSevDgAfLy8lR+Cm5nZyf+nZ6eDqAwuaWOMrGanp6OkydPqk2cFv/Ju7qfntva2op1i+/evQsbGxu1bdRRF//Lly+Rnp4u7kvxEcl6enolzn/+/Lk43adPH4SHh4vTO3bswJIlS7Bt2za1sbxLRc8TUDhiu0WLFrCxscHMmTNRvXp1GBgYoFevXpJ9AgBDQ0PxGCgV3XdXV1fs2LEDkyZNQrt27aClpYWwsDDMmzev1LINmZmZKnEpYy1at1hd/ErqzklJ508Zb3p6OjIyMkpM3N+9exdVq1YtdbvFk5dt27ZVOf8ODg6SNnK5HMbGxpJ56enpmD17NmbPnq2yDWXcQUFBWLVqFf73v/8hNDQUBgYGiIqKwuzZs2FpaSm2V7ffRW/IV57Hnab8+eefyMzMxOzZs1Vu5vg+xEf0LjFZTERERERERJWWjY0NdHR0cP/+fcn8e/fuiX8rE1ebN2+Gk5OTSh/Ozs5iu7CwMLF8RVH6+vqS6eLbU86zt7cHUPjT+wcPHqhto879+/fh6OgoiV9XVxfW1tZq25eHg4ODJEF44cIF6OnpqS0L8a4pb3indOLECaSlpWHHjh2oV6+eOP/Ro0diorQ8wsLCEBYWhsePH2PPnj0YOnQoevTogQMHDpS4jqWlpdrzdO/ePUkSVF38b8LS0hI2NjbiDfiKK/qFQknbLX5O9fT0oFAoSj3X6vqytLRE69at8cUXX6gsU5b0AIDo6GhER0cjPT0dW7duxdChQ6Grq4tly5aVuD112yrr405TmjVrhubNm2PYsGGwsrJCdHT0exUf0btUaZPF69evx9SpU3Hp0iUYGhoiKCgIU6ZMeeW3Ojdu3MC4ceOwd+9ePHz4EBYWFvD09MTatWslPyEiIiIiIiKi95+2tjYaNmyI5ORkDB06VJy/adMm8e+mTZtCLpcjLS1NpdxDUc2bN8fq1avh5uYGIyOjUrd76NAhPHr0SPwcefDgQWRkZIilAby8vJCVlYWjR4/Cz88PQOHNsw4cOKC2ZnFycjIaNGggTiclJaFRo0aSm6lVtOIjlsu6DoAyr5eTkyNZDygsI5KamiopwVFepqam6NixI06dOoV169aV2tbHxwdbtmzBjBkzxDrO+/fvR1ZWFnx8fF47hldp3rw5pk6dCj09PXh4eGhsO2WN5cKFC2jQoEGZrkFra2v07NkTu3btwqVLl8q9rbI87l7n+iuPIUOGICcnB927dxdHSZcnPqJ/i0qZLF62bBl69eoFoPAb4IcPHyIpKQnHjh3D+fPnUaVKFbXr/fnnn2jWrBkePnwIuVwONzc35ObmYv/+/cjOzmaymIiIiIiIqBKKj49HREQEevTogc6dOyMlJUW8uRhQ+DP48ePHIzY2FmlpaQgICIC2tjauX7+OrVu3IikpCXK5HMOGDcOaNWvg7++PwYMHo1q1anjw4AFOnToFBwcHSTLaxMQELVu2xMiRI5GVlYW4uDg0btxYvIFay5Yt0bBhQ3Tt2hXffvstzM3NMXXqVJiYmEhuLqa0cuVKGBoaomHDhli/fj2OHj2KnTt3av7glYObmxsOHjyI/fv3w8LCAs7OzrCysip1HVdXV2hra2P58uXQ0dGBjo5OqaNcvb29YWxsjP79+2PkyJG4ffs2xo4dKxl1XVaLFy/GiRMnEBYWBnt7e9y4cQOrV68Wbx5Xkvj4eDRr1gzh4eEYOHAg7t27h5EjR6Jx48bizfQ0ISQkBG3atEFYWBhiY2Ph4eGBp0+f4uLFi7h69araG+lpyrhx4+Dl5YXQ0FD06dMHdnZ2+Oeff3DkyBH4+vqiS5cuGDt2LB4+fIiAgADY2tri999/x549ezBs2LBybausj7vXuf7Ka9SoUcjJyUHXrl1hYGCA8PDwcj0vEP0bVLpkcW5uLkaOHAmgsOD/pk2bcOfOHdSqVQv379/HpEmTMGfOHLXrDho0CA8fPkRgYCA2b94sfpubk5NTYcX8iYiIiIiI3icWzWMrOoRya9u2LRYtWoRvvvkG69evR5MmTbBhwwbJDcCGDx8OR0dHzJw5E3PnzoWuri5cXFwQHh4ujmK1srLCyZMnMXr0aMTFxeHhw4ewtbWFt7e3yojkdu3aoWrVqujXrx8yMzMREhKCRYsWictlMhm2bt2Kvn37ok+fPrCwsMCgQYNw5coVnDt3TmUf1q1bh1GjRmH8+PGwtbXFkiVLNJqYfB2TJk3C559/jsjISGRnZ2PFihXo3r17qetYW1tj/vz5mDp1KlatWoW8vDwIglBiezs7O2zcuBFffvklIiIi4OrqisWLF2PKlCnljtfDwwPbt2/HsGHD8PDhQ1SpUgVdunRRW06gqEaNGmHfvn0YNWoUIiMjYWRkhLZt22LGjBkaH+m9adMmTJ48GQsWLMDNmzdhZmYGd3d39OjRQ6PbLa5GjRo4ffo0Ro8ejS+++AJPnjyBvb09/Pz8xFHPXl5emD17Nn744Qc8fvwYVatWxYgRIzB69Ohybausj7vXuf5ex/jx45GTk4OoqCjs2LEDzZs3L/PzAtG/gUwo7Vn6PfTzzz+LP/tYu3YtunTpAqDwzqT79+/Hhx9+qHKHVKCwQL2VlRUEQUD79u1x/vx53Lt3D3Xq1MGECRNU7s5ZmsePH8PMzAyPHj2Cqanp29mx/4BGI1ZqtP8JUQEa7d99r/q73L4tJs0+0Wj/4Ze2arT/3kHdNNa38+cbNNY3ADTs11uj/X+fotlfLTQILvnmHG/D4bWlv5l+U81CQjXaf5U0zd10wr6Z+hvUvC2zj2x6daM3kJCQoNH+iYj+CyrrZ4Pnz5/jxo0bcHZ2hoGBQUWHU+koFAqEh4dj3rx55VovNzcXtWvXhq+vL1asWKGh6IiIiFSV9bW/0o0sVt6lFpAWd1feCfTvv/9Wu95ff/0lfnu5efNm8cCcOnUKLVu2xM8//yz51rmoFy9eSO7U+fjx4zfeDyIiIiIiIvp3W7JkCQoKClCzZk1kZmZi4cKFSE1Nxfr16ys6NCIiIrVUCyVVUq8aIJ2Xlyf+3bx5c1y7dg1Xr16FpaUl8vPzsXDhwhLX/fbbb2FmZib+U3f3XCIiIiIiIqKiDAwMMGfOHLRu3RrR0dF48uQJdu7cWWrN3spEEATk5eWV+K+goKCiQ6R/MV5/RJpR6ZLFRRO19+/fV/m7WjX1P8cuWgzf09MTMpkMZmZmcHV1BQCkpqaWuM1Ro0bh0aNH4r+io5uJiIiIiIjovyU1NbVMJShiYmLwxx9/4NmzZ3j27BlOnDgh3gDv3+D777+Hrq5uif/Gjx9f0SHSvxivPyLNqHRlKLy8vGBlZYWHDx8iKSkJXbp0wZ07d3Dy5EkAQFhYGACgVq1aAIABAwZgwIABqF69Oj788EP89ddfSElJgSAIyM7OFusbf/jhhyVuU19fH/r6+hreMyIiIiIiIqLKo02bNjhz5kyJyx0cHN5hNPRfw+uPSDMqXbJYT08PkyZNQt++fZGUlIQPPvgADx8+RHZ2NqytrTFy5EgAwJUrVwAA6enp4rqTJ09GVFQU9u/fjxo1aiA7OxsZGRkwMjLCsGHDKmR/iIiIiIiIiCojKysrWFlZVXQY9B/F649IMypdGQoA6NOnD1avXo369evjzp07kMlkaN++PY4fP17qN0ft27fHli1b4OXlhTt37kBLSwsff/wxfvnlF7i5ub3DPSAiIiIiIiIiIiJ6v1S6kcVK3bp1Q7du3UpcXtIN79q2bYu2bdtqKiwiIiIiIiIiIiKiSqnSJouJiIjozSjr/WuKt7e3RvsnIiIiIiKit6tSlqEgIiIiIiIiIiIioreLyWIiIiIiIiIiIiIiYrKYiIiIiIiI/n2ysrIgk8mQmJhY0aGUKjExETKZDOnp6RUdiuj69euQy+UYM2aMyrIhQ4bAzMwMd+7ckcw/ceIEoqKiYG9vDz09PVhZWSEoKAiLFy9Gbm6u2C4hIQEymUz8Z2BgADc3N0ydOhUFBQUa3zd1zp07h4SEBDx79qxCtk9E9D5hzWIiIiLSiB82NtZo/x07nNZo/0RE/1Ufzf2owrb988CfK2zb9H8++OADxMfHY/z48YiOjkbNmjUBACkpKZg3bx5mzZoFBwcHsf3ChQsxYMAA+Pn5YcqUKVAoFMjIyMCePXswePBgAEDfvn3F9oaGhjh48CAAICcnB4cOHcLIkSNRUFCAkSNHvsM9LXTu3DmMGzcOAwYMgFwuf+fbJyJ6nzBZTERERJXSb78t0mj/Hh79NNo/ERFRRUlMTERCQgJSU1NLbDNixAisXr0a/fr1w6FDh5Cfn4++ffuiQYMG6N+/v9ju/PnzGDRoEGJiYrB8+XLIZDJx2ccff4zhw4fj1q1bkr61tLQkN8INDAzE77//js2bN1dIspiIiP4Py1AQERERERFRpbd06VIoFArI5XIEBwfj6tWrKm0SExPh4eEBAwMDODo6Ij4+Hvn5+ZI2aWlpiI6OhrW1NQwNDeHn54eUlBRJG4VCgQEDBmDatGlwdHSEXC5HREQE7t69q9JXeHg45HI5nJycMGvWLAwZMgQKhUIltqtXryIoKAhyuRwKhQLLly+XLO/evTvc3d3x448/wsPDA4aGhvD390dqaioyMjLQsWNHmJqawsXFBRs2bHjNo/h/9PT0sHDhQhw+fBjff/895s6di3PnzmHx4sXQ0vq/VMKcOXOgra2NGTNmSBLFSh9++CGCgoJeuT0TExO8fPlSMi8jIwOfffaZeC6aNWuGo0ePqqy7ePFi1KxZE/r6+lAoFJg4caKkpEVWVhZ69+4NR0dHGBgYwMnJCZ07dwZQeE306NEDAGBjYwOZTKb2/BAR/VcwWUxERERERESV2o4dO9CnTx8EBgYiOTkZwcHB6NChg6TNzJkz0atXL4SGhmL79u2Ii4vDnDlzEB8fL7bJzMyEj48Pzp07h7lz5yIpKQlGRkYICgrC/fv3Jf0lJycjOTkZCxcuxMKFC3Hq1Cm0b99eXC4IAiIiIsQE6/z587F582Zs3rxZ7T507twZISEhSE5ORmBgIHr27Ik9e/ZI2vzzzz8YPnw44uPjsWbNGly7dg3dunVDp06dULduXSQlJaFRo0aIjo7GzZs33/SwIiAgADExMRg+fDjGjBmDAQMGoGHDhpI2hw8fhqenJywtLcvVd15eHvLy8pCdnY1t27YhKSkJUVFR4vL8/Hy0bNkS27dvx5QpU7Bx40YYGxsjJCREkryfO3cu+vXrJ57X7t27IyEhAbGxsWKbYcOGYceOHZg0aRL27t2LadOmQV9fHwDQunVrjB49GgCwZ88enDhxAsnJyeU+VkRE/xYsQ0FERERERESV2sSJE+Hr64sVK1YAAEJDQ/H8+XNMmDABAJCdnY2xY8ciNjYWkyZNAgCEhIRAT08Pw4YNw4gRI2BlZYXZs2cjKysLp0+fhq2tLQAgODgYrq6umD59OqZOnSpuMzs7G7t374aZmRkAwMnJCcHBwdi7dy9CQ0Oxe/dunD17FkePHoWvry8AICgoCFWrVoW5ubnKPsTExGDUqFFi/NevX8e4ceMQFhYmtsnIyMCRI0dQp04dAMCdO3cwcOBAxMXFiTej8/LywubNm7FlyxaxXnBBQYFkpK3y77y8PEkMOjqqKYKJEydi5cqVsLS0FI9nUXfu3EHjxqr3KSjat5aWlmQ08tOnT6Grqytp36lTJ0kJip07d+L06dPYs2cPQkNDxeNSo0YNTJo0CUlJScjPz8f48ePRuXNnzJkzBwDQokUL5ObmYsaMGRg1ahSsrKxw+vRpdO3aFZ9++qnYv3JksY2NDVxcXAAAjRo1grW1tcq+EBH9lzBZTERERKRGvU17Ndb3+ahQjfVNRPRfk5+fj5SUFEkiFwCioqLE5Obx48fx5MkTdOjQQZLEbN68OXJycnDhwgX4+/tj3759CAwMhKWlpdhOW1sb/v7+OHPmjKT/wMBAMVEMFCaCLS0tcerUKYSGhuLMmTMwNzcXE8UAYGxsjODgYJWyFgDQrl07yXRkZCS+/PJL5OfnQ1tbGwDg4OAgJooBwNXVVdwPJXNzc9ja2krqBI8fPx7jxo1T2WbxhK0gCCptFi9eDJlMhszMTPz222/46CPVGyAWLz/xyy+/wMvLS5xu3bo1duzYIU4bGhqK5SRevHiBlJQUfP311+jdu7dYfuPYsWMwNTUVE8XKeNu3b4+1a9cCAC5fvoz09HSVUeSdOnXCt99+i9OnT6Nly5Zo2LAhEhMTYW9vj7CwMLi7u6vsAxERFWKymIiIiOgdW3/xmkb771zHRaP9ExG9Tx48eIC8vDxxJLCSnZ2d+Hd6ejoAqJRQUFImVtPT03Hy5EmVJCoAcfSpUvHtKecp6xbfvXsXNjY2atuooy7+ly9fIj09XdyX4iOS9fT0Spz//PlzcbpPnz4IDw8Xp3fs2IElS5Zg27ZtamNRunz5MqZNm4bx48djz549+Pzzz3H27FnJCGQHBwekpaVJ1qtdu7aYXO/bt69Kv1paWvD09BSnP/roI+Tl5WH48OEYNmwY3N3dkZmZqfZY2dnZISMjA0Bh2RDlvOJtAIjt5s6dC0tLS8yYMQMjRoyAk5MTRo0ahc8//7zU/Sci+i9ispiIiIiIiIgqLRsbG+jo6KjUFL537574t7Ke7ubNm+Hk5KTSh7Ozs9guLCxMbbkFZY1bpeLbU86zt7cHANjb2+PBgwdq26hz//59ODo6SuLX1dV9K2URHBwc4ODgIE5fuHABenp6koStOv369cMHH3yA2NhYREREoGHDhvjf//6H4cOHi20CAgKwdu1aZGZmwsLCAgAgl8vFvk1MTMoUo5ubGwDg4sWLcHd3h6Wlpdpjde/ePfF8Kv8v6dwrl5uZmWH27NmYPXs2fv/9d/zvf//DF198AXd3d8nIbyIi4g3uiIiIiIiIqBLT1tZGw4YNVW5KtmnTJvHvpk2bQi6XIy0tDZ6enir/rKysABSWc/jjjz/g5uam0qZu3bqS/g8dOoRHjx6J0wcPHkRGRgaaNGkCoLB2cFZWllhuAQCePHmCAwcOqN2P4vErb1anLEHxriUmJuLIkSNYuHAh9PT0ULduXQwePBgJCQmSkcSDBg1CXl4eRowY8Ubbu3DhAgCIyXEfHx88fvwY+/btE9vk5eUhOTkZPj4+AICaNWvCxsYGGzdulPT1ww8/QE9PT20t5bp162LWrFkAgEuXLgH4vxHaRUdjExH9V3FkMREREdG/TKMRKzXaf8q0GI32T0RUXvHx8YiIiECPHj3QuXNnpKSkYNWqVeJyc3NzjB8/HrGxsUhLS0NAQAC0tbVx/fp1bN26FUlJSZDL5Rg2bBjWrFkDf39/DB48GNWqVcODBw9w6tQpODg4YOjQoWKfJiYmaNmyJUaOHImsrCzExcWhcePGYo1dZa3crl274ttvv4W5uTmmTp0KExMTyc3elFauXAlDQ0M0bNgQ69evx9GjR7Fz507NHzw1Hj58iBEjRiAmJgYBAQHi/ISEBGzYsAFDhgwRk/H16tXDnDlzMGDAAFy/fh09evSAQqHAkydP8Msvv+C3336T1B0GCm+wd/LkSQBAbm4uUlJSMHHiRNSuXRt+fn4ACuscN27cGNHR0Zg8eTLs7Owwd+5c3L17F1999RWAwi8KxowZg0GDBsHW1hatWrXCyZMnMWXKFAwZMkT8EuCjjz5Cu3bt4O7uDm1tbaxcuRJ6enriqGLlqOb58+fj448/hlwuV/lygIjov4LJYiIiIiIiIqrU2rZti0WLFuGbb77B+vXr0aRJE2zYsEEc5QsAw4cPh6OjI2bOnIm5c+dCV1cXLi4uCA8PF0eWWllZ4eTJkxg9ejTi4uLw8OFD2NrawtvbW+UGdO3atUPVqlXRr18/ZGZmIiQkBIsWLRKXy2QybN26FX379kWfPn1gYWGBQYMG4cqVKzh37pzKPqxbtw6jRo3C+PHjYWtriyVLlqBVq1aaOWCvEBsbi4KCAkyfPl0y39jYGP/73/8QGRmJ3bt3o2XLlgCAzz//HPXq1RNrAj98+BAmJiaoX78+Jk2ahM8++0zST05ODpo2bQoA0NHRgZOTE6KjozF27FixXrS2tjZ27dqFL7/8EiNGjMDTp0/RsGFD7Nu3D40aNRL7GjhwIHR1dTFz5kwsWLAA9vb2SEhIEBPKQGGyeOXKlbhx4wa0tLRQt25dbN++XUwSN2jQAAkJCfjuu+8wdepUODk5ITU19a0fVyKiykAmqLvdKZXq8ePHMDMzw6NHj2BqalrR4VQamh7lNCEqQKP9u+9trdH+TZp9otH+wy9t1Wj/vYO6aaxv5883aKxvAGjYr7dG+/8+xezVjd5Ag+BqGu3/8FrVmn1vU7OQ0Fc3egNV0jR3oy/7ZupvUPO2zD6y6dWN3kBYWJhG+//71iCN9l+r5mevbvQGPvnTWWN9j3KrobG+AWBa4s8a7Z8ji4n+T2X9bPD8+XPcuHEDzs7OMDAwqOhwKh2FQoHw8HDMmzevXOvl5uaidu3a8PX1xYoVKzQUHRERkaqyvvZzZDERERERERGRBixZsgQFBQWoWbMmMjMzsXDhQqSmpmL9+vUVHRoREZFaTBYTERERERERaYCBgQEmT54sljSoV68edu7cCU9Pz4oNjIiIqARMFhMRERERERGVQ1nr2cbExCAmhqV7iIio8lC9BSsRERERERERERER/edwZDERERERlcuuU39rtP9WTTR7404iIiIiIlKPI4uJiIiIiIiIiIiIiMliIiIiIiIiIiIiImKymIiIiIiIiIiIiIjAZDERERERERERERERgcliIiIiIiIiIiIiIgKTxURERET0nvl7fF2N/iOi/4asrCzIZDIkJiZWdCilSkxMhEwmQ3p6ekWHIpGRkYF27drBwsICMpkMW7ZswezZs7Fr165y9ZOamoqEhATcuXNHQ5G+mdzcXPTo0QM2NjaQyWSYPXt2RYf0TpXl+pPJZJg+fXq5+y7LeufOnUNCQgKePXumdvkff/yBTz/9FNWqVYO+vj7MzMzQrFkzTJ8+HdnZ2Sr7ofynp6cHFxcXjBo1SqVvhUIBmUyGkSNHqmzvr7/+Evs4fPhwufeZ6N9Ap6IDICIiIiIiovdH4sUFFbbt7nW+qLBtk9TMmTNx6NAhrFy5Era2tqhZsyaGDBmC8PBwtGrVqsz9pKamYty4cQgPD4eDg4MGI349K1euxKpVq/D999/DxcUFCoWiokN675w4cQLVq1fXSN/nzp3DuHHjMGDAAMjlcsmybdu2oVOnTnBzc8OYMWPg6uqKp0+f4uDBg5gwYQIePnyIb7/9VrLOnj17YGZmhtzcXJw5cwajR49GZmYmFi1aJGlnbGyMDRs2YPLkyZL569atg7GxMZ48eaKR/SWqDDiymIiIiIiIiOg/JDEx8ZVJ0cuXL8PDwwNt27aFt7c3LCwsNB5XTk6OxrdR3OXLl+Hg4IBu3brB29sbVapUee2+KiJ+ABAEAS9evFC7TKFQvPHoem9vb9jb279RH+X1zz//IDo6Gr6+vjh16hR69+4Nf39/tGrVCtOnT8eVK1fg7e2tsl6jRo3g7e0NPz8/DB8+HP369cPmzZtV2rVu3RppaWk4ceKEZP66devw8ccfa2q3iCoFJouJiIiIiIio0lu6dCkUCgXkcjmCg4Nx9epVlTaJiYnw8PCAgYEBHB0dER8fj/z8fEmbtLQ0REdHw9raGoaGhvDz80NKSoqkjUKhwIABAzBt2jQ4OjpCLpcjIiICd+/eVekrPDwccrkcTk5OmDVrFoYMGaI2UXv16lUEBQVBLpdDoVBg+fLlkuXdu3eHu7s7fvzxR3h4eMDQ0BD+/v5ITU1FRkYGOnbsCFNTU7i4uGDDhg2veRQLyWQyJCUl4dixY+JP8hUKBW7evIn58+eL816VhDx8+DACAwMBAF5eXuJ6ymUymQw7d+5EVFQUTE1N0aFDBwCFo319fHxgaWkJCwsLBAQE4PTp05K+ExISYGxsjN9//x0+Pj6Qy+Vwd3fH3r17Je22bdsGT09PGBsbw9zcHJ6enmIpDYVCgRkzZuDWrVtibKmpqQCAo0ePolmzZjA0NIS1tTU+++wzZGRkiP2mpqaKx6B3796wsrJC48aNxeM3ZcoUxMfHw9bWFubm5oiNjYUgCDhw4ADq168PY2NjBAcH49atW5J4X7x4ga+++grVq1eHvr4+3NzcsHbtWkkb5bWwa9cu1KtXD/r6+ti+ffurTutrK15OQhAEjB8/HlWqVIGxsTE6dOiAH3/8UW3phoKCAiQkJMDOzg7W1tbo0aMHnj59CqDw8dijRw8AEMuAKB8bS5cuRXZ2NmbNmgVdXV2VmKpUqYKIiIhXxm5iYoKXL1+qzLe2tkbz5s2xbt06cd6vv/6KP//8E507d35lv0T/ZkwWExERERERUaW2Y8cO9OnTB4GBgUhOTkZwcLCYeFSaOXMmevXqhdDQUGzfvh1xcXGYM2cO4uPjxTaZmZnw8fHBuXPnMHfuXCQlJcHIyAhBQUG4f/++pL/k5GQkJydj4cKFWLhwIU6dOoX27duLywVBQEREBM6dO4fFixdj/vz52Lx5s9pRjgDQuXNnhISEIDk5GYGBgejZsyf27NkjafPPP/9g+PDhiI+Px5o1a3Dt2jV069YNnTp1Qt26dZGUlIRGjRohOjoaN2/efO3jeeLECfj5+aFBgwY4ceIETpw4geTkZFSpUgVRUVHivNatW5faT8OGDTF//nwAwIoVK8T1iurTpw9cXFyQnJyML7/8EkBhIjYmJgYbN27E2rVrUa1aNfj5+eHPP/+UrPvy5Ut069YN3bt3R3JyMmxtbREZGYmHDx8CAK5du4aoqCjUqVMHycnJ2LBhAzp27IjMzEwAheewU6dOqFKlihibvb09UlJSEBISAhMTE2zcuBFTpkzB9u3b0bJlS5UvF0aNGgVBELBu3TpMmzZNnD9v3jz8/fffWLVqFYYNG4Zp06bhyy+/xNChQzFq1CisWrUKf/75J3r27Cnpr2PHjli8eDGGDx+OHTt2ICwsDNHR0di9e7ek3Z07dzBo0CAMHToUe/bsQf369Us9F2/T3LlzkZCQgO7du2Pz5s1wcXFBr1691LadN28e/vrrL3z//ff4+uuvsXbtWkyYMAFA4eje0aNHAygsH6G8zoDCLxMcHR1Rp06dcsWWn5+PvLw8PHv2DEeOHMHSpUsRFRWltm2XLl2wceNGFBQUACgcVezr6wtHR8dybZPo34Y1i4mIiIjoPyXzx6ka7d+ieaxG+yciVRMnToSvry9WrFgBAAgNDcXz58/FpFR2djbGjh2L2NhYTJo0CQAQEhICPT09DBs2DCNGjICVlRVmz56NrKwsnD59Gra2tgCA4OBguLq6Yvr06Zg69f+eP7Kzs7F7926YmZkBAJycnBAcHIy9e/ciNDQUu3fvxtmzZ3H06FH4+voCAIKCglC1alWYm5ur7ENMTAxGjRolxn/9+nWMGzcOYWFhYpuMjAwcOXJETKDduXMHAwcORFxcHMaMGQOgcATv5s2bsWXLFgwePBhA4ehOZUJMOQ0AeXl5khh0dApTBMqyEzKZTPJTf319fdjZ2an9+b86pqamqF27NgDA3d0dnp6eKm3atm2LKVOmSOZ9/fXXklhDQkJw+vRpJCYmiucPKLw53eTJk8UayjVr1oSzszN2796N6Oho/Prrr3j58iXmzZsHExMTAIXHVqlBgwaoUqUK9PX1Jfv0zTffoEqVKtixY4c4qtXJyQmhoaHYtWsX2rRpI7atX78+vvvuO5X9cnBwwKpVq8Rtbtu2DbNmzcLFixfh5uYGALh9+zYGDhyIrKwsmJub49ChQ9i2bRv27t2LFi1aACi8Tu/evYuxY8eiZcuWYv+ZmZnYvXs3mjRpItlu8XOqPIZF52tpaUFL6/XGDubn52Py5Mno0aOHWO+3RYsWSE9Px7Jly1Ta29vbY82aNQCAsLAwnD17Fps2bcLkyZNhY2MDFxcXAIXlI6ytrcX17ty5AycnJ5X+iu6HTCaDtra2ZHnxMiIBAQGYNWuW2n35+OOP0bdvXxw6dAhBQUFYv369mLwm+i9jspiIiIiI6C36aO5HGu3/54E/a7R/osomPz8fKSkpkkQuAERFRYnJ4uPHj+PJkyfo0KGDJNnUvHlz5OTk4MKFC/D398e+ffsQGBgIS0tLsZ22tjb8/f1x5swZSf+BgYFiohgoTARbWlri1KlTCA0NxZkzZ2Bubi4migGIpQeKl7UAgHbt2kmmIyMj8eWXXyI/P19MiDk4OEhGWrq6uor7oWRubg5bW1tJeYPx48dj3LhxKtss/vN+QRBU2miautHJly5dwldffYXjx49LRnQXH1mspaUl2XeFQgFDQ0OkpaUBADw8PKCtrY2uXbuiT58++H/s3XlYVeX2wPHvARkFRUCQQQW9QU6oOKReRAYRVJRMciTDyDFxDNGwRHIeySGHSnHIoUQccM4Ju+IQ5c3Mq1cNkjSVyaFUQPn9wXP2z82goB6J7vo8D0/nvPvd7157OJDrvHttT09P1TkrzdGjR+nbt6/q+HTq1AkLCwu+/fZbVbK4tNnVfn5+qvcuLi78/vvvSqJY2waF5UosLCzYt28flpaW+Pj4qK5TPz8/hg4dqroWrKysiiWKofg5BQgLC1PNYJ48eTLR0dFPOgSlSk9P59q1a3Tv3l3VHhQUVGKyuOhxaNiwIRs3bizTtrQlS7QyMjKoWbOm8r5Ro0b89NNPqj7ffPMN1atXJz8/n59//pmPPvqIHj16sHfv3mIJ8mrVqtG1a1c2bNiAkZERv//+O8HBwfz6669lik+IvytJFgshhBBCCCGEqLRu3rxJfn6+MhNYy9bWVnmdkZEBFJZFKIk2sZqRkcHx48dLTLhpZ0BqFd2etk1bt/jatWuqxNaT1iup3dbWlry8PDIyMpR9KToj2dDQsNT2+/fvK+8HDx5MYGCg8j4xMZEVK1awffv2EmN5mR4/T1A4Y7tTp07UrFmT+fPnU7duXYyNjXn33XdV+wRgYmKiHAOtx/fdxcWFxMREpk+fTo8ePdDT0yMgIIDFixdTp06dUmPKzs4uFpc21sfrFpcUv1ZJ56S086eNNyMjg6ysrBKvPyi8phwdHZ+43aJfanTv3r3Y+be3ty9x3bLQXt9Fr+3SruuS9rm0h/E9zt7env/+97/FxtLu35QpU/jll1+Krde0aVNlhnKbNm2wsLCgZ8+e7Nq1S3UMtPr27cugQYOAwhnglpaWkiwW//MkWSyEEEIIIYQQotKqWbMmVapUKVZT+Pr168prS0tLALZs2VLire3Ozs5Kv4CAAGVG8uOMjIxU74tuT9tmZ2cHFN5+f/PmzRL7lOTGjRuqWqnXr1/HwMBAdWv+s7K3t1clCH/66ScMDQ1LLAvxshWdPZqcnEx6ejqJiYk0bdpUab9165aSKC2PgIAAAgICuH37Nnv27GHMmDEMHDiQAwcOlLqOpaVliefp+vXryrVUWvzPw9LSkpo1ayoP4Cvq8YRsadstek4NDQ1xcnJ6Yedae30XvbZLu66flZeXFwcPHuTcuXPKbOwqVaoo+2FlZVVisrgo7bpnz54tMVnctWtX8vPzWbVqlVI2RIj/dfKAOyGEEEIIIYQQlZa+vj7u7u7Kg7G0Nm/erLxu27YtpqampKen07Jly2I/VlZWQGE5h59//pkGDRoU69OkSRPV+IcOHeLWrVvK+4MHD5KVlaWUBmjVqhU5OTkkJSUpfe7evVtqkrJo/NqH1RWtyVqRis5YLus6QJnXu3fvnmo9KCwjkpqaWq7tFlWtWjV69epFnz59OHfu3BP7enh4sHXrVlUpiP3795OTk4OHh8dzxfEkHTt25ObNm0oiv+hP0VnUFcHR0ZFatWqxbds2VfvWrVufabzSro9BgwZhbm7O2LFjycvLe6axAaVMRWlfuhgbG/PBBx8QFBREUFDQM29HiL8TmVkshBBCCCGEEKJSi4qKIigoiIEDB9KnTx9SUlJUswQtLCyIiYlh/PjxpKen4+Xlhb6+PpcvX2bbtm3Ex8djamrK2LFj+fLLL+nQoQOjRo2iTp063Lx5kxMnTmBvb8+YMWOUMc3NzencuTMTJkwgJyeHyMhIWrdurTxArXPnzri7u9OvXz9mzJiBhYUFs2fPxtzcvMSHi61ZswYTExPc3d3ZuHEjSUlJ7Ny5U/cHrxwaNGjAwYMH2b9/PzVq1MDZ2VlJtJfGxcUFfX19Vq5cSZUqVVSzQ0vSpk0bzMzMeO+995gwYQK//fYbkydPVs26Lqvly5eTnJxMQEAAdnZ2/PLLL6xbt055eFxpoqKiaNeuHYGBgYSHh3P9+nUmTJhA69atlYfp6YKfnx/dunUjICCA8ePH4+bmxh9//MHZs2e5ePFiiQ/Se1F27NihPARQq3Hjxrz66quqNn19fSZOnMjo0aOxtbXF29ubQ4cO8c033wCU+8F52pm/S5Ys4fXXX8fU1JQmTZpQq1Yt1q5dS+/evWnTpg1Dhw7F1dWV+/fvc+bMGQ4cOFDiTPOUlBSlZvG5c+eYPHkytra2xWqCP27ChAnlilmIvztJFgshhBBCCCGEqNS6d+/OsmXLmDZtGhs3buS1115j06ZNqgeAjRs3DgcHB+bPn8+iRYswMDCgfv36BAYGKrMbraysOH78OJMmTSIyMpLMzExsbGxo06ZNsWRTjx49cHR0ZOjQoWRnZ+Pn58eyZcuU5RqNhm3btjFkyBAGDx5MjRo1GDlyJOfPn+f06dPF9mHDhg1MnDiRmJgYbGxsWLFihU4Tk89i+vTpDBs2jJ49e3Lnzh1WrVpFaGjoE9extrZmyZIlzJ49m7Vr15Kfn//EB+nZ2try9ddf8/777xMUFISLiwvLly9n1qxZ5Y7Xzc2NHTt2MHbsWDIzM6lVqxZ9+/YtsczI41q0aMG+ffuYOHEiPXv2pGrVqnTv3p158+bpfKb35s2bmTlzJp9++ilpaWlUr16dxo0bM3DgQJ1u95133inW9vHHHzNp0qRi7eHh4WRnZ/Ppp5+ycOFCOnbsyJw5c+jdu3eZHiD4uObNmxMdHc3nn3/O7NmzqV27tjKLPCgoiJSUFGbNmkVMTAzXr1/HxMSERo0aMXLkSIYOHVpsvICAAKAwae3g4ICPjw8ff/xxsfIhQojSaQoq4nGnldzt27epXr06t27dolq1ahUdTqXRImKNTsf/ONhLp+M33lvyU25fFPN2b+l0/MBz257e6TkM8umvs7Gdh23S2dgA7kMH6XT81Snl+x+m8mruW/rDOV6Ew+uf/D/Tz6udn79Ox6+VXv/pnZ6RXbuSH+TxosQe2fz0Ts9B+z/TuvLrlZE6Hf9V1+L/qHmR3rrgrLOxJzb4h87GBpgT9y+dji9/c59M139z/xWu2/Mryqey/tvg/v37/PLLLzg7O2NsbFzR4VQ6Tk5OBAYGsnjx4nKtl5ubS8OGDWnfvj2rVq3SUXRCvHwffvgh8+bNIzMzExMTk4oORwhRgrL+7ZeZxUIIIYQQQgghhA6sWLGCR48e4erqSnZ2NkuXLiU1NZWNGzdWdGhCPLNz586xbt062rVrh6GhIYcPH2bu3LkMGzZMEsVC/A1IslgIIYQQQgghhNABY2NjZs6cqdxW37RpU3bu3PnEmr2VSUFBAQ8fPix1uZ6eXrlr2Iq/PlNTU5KTk1m6dCl37tzBwcGBiIgIoqOjKzo0IcQLIMliIYQQQgghhBCiHLTJ36cZMGAAAwYM0G0wFWj16tVPrKU7efJkSSD+DdWtW5eDBw9WdBhCCB2RZLEQQgghhBBCCCHKrVu3bpw6darU5fb29i8xGiGEEC+CJIuFEEIIIYQQQghRblZWVlhZWVV0GEIIIV4gKR4khBBCCCGEEEIIIYQQQpLFQgghhBBCCCGEEEIIISRZLIQQQgghhBBCCCGEEAJJFgshhBBCCCGEEEIIIYRAksVCCCGEEEIIIYQQQgghkGSxEEIIIYQQQgghhBBCCCRZLIQQQgghhBDibygnJweNRkNcXFxFh/JEcXFxaDQaMjIyKjoUlaysLHr06EGNGjXQaDRs3bqV2NhYdu3aVa5xUlNTiY6O5urVqzqK9Pnk5uYycOBAatasiUajITY2tqJDeqmGDBmClZUVN2/eVLWnp6djbm7O+++/r2r/448/mD59Os2bN8fMzAxjY2NcXFwYOnQoZ86cUfXVaDSqH1tbW7p161as38v0LNewEP9rqlR0AEIIIYQQQggh/jqOeHaosG13SDpSYdsWavPnz+fQoUOsWbMGGxsbXF1dGT16NIGBgXTp0qXM46SmpjJlyhQCAwOxt7fXYcTPZs2aNaxdu5bVq1dTv359nJycKjqkl2rmzJls3bqV999/n9WrVyvtI0aMwNLSkilTpihtGRkZ+Pj4kJaWRnh4OO3bt8fQ0JCzZ8/y+eefs23bNq5du6YaPzw8nH79+lFQUEB6ejrTp0+nU6dOnDt3DgsLi5e1m4rY2NhyX8NC/K+RZLEQQgghhBBCCPE/JC4ujujoaFJTU0vt85///Ac3Nze6d+/+0uK6d+8eJiYmL217ULif9vb29O/f/7nHqoj4AQoKCsjNzcXIyKjYMicnJ6KjowkNDS1x3Ro1ajB37lwGDBjAwIED8fLyYuvWrWzbto1t27ZRtWpVpe+wYcO4fPkyJ06coFGjRkq7t7c3w4cP54svvig2fp06dWjTpo3y3sXFhWbNmnHs2DFJ2ArxFyVlKIQQQgghhBBCVHqfffYZTk5OmJqa4uvry8WLF4v1iYuLw83NDWNjYxwcHIiKiuLhw4eqPunp6YSEhGBtbY2JiQmenp6kpKSo+jg5OTFixAjmzJmDg4MDpqamBAUFFZtVmZ6eTmBgIKamptSuXZsFCxYwevToEmevXrx4ER8fH0xNTXFycmLlypWq5aGhoTRu3JhvvvkGNzc3TExM6NChA6mpqWRlZdGrVy+qVatG/fr12bRp0zMexUIajYb4+HiOHj2qlBBwcnIiLS2NJUuWKG1PK/Fx+PBhvL29AWjVqpWynnaZRqNh586dBAcHU61aNd58802gcLavh4cHlpaW1KhRAy8vL06ePKkaOzo6GjMzM86cOYOHhwempqY0btyYvXv3qvpt376dli1bYmZmhoWFBS1btlTKEDg5OTFv3jyuXLmixKZNoCclJdGuXTtMTEywtrbmnXfeISsrSxk3NTVVOQaDBg3CysqK1q1bK8dv1qxZREVFYWNjg4WFBePHj6egoIADBw7QrFkzzMzM8PX15cqVK6p4Hzx4wAcffEDdunUxMjKiQYMGrF+/XtVHey3s2rWLpk2bYmRkxI4dO552Wkv11ltv4e3tzdChQ8nMzCQ8PJzXX39d9UVBWloa8fHxDB8+XJUo1tLT02PQoEFP3Za5uTkAeXl5qvYtW7bQrFkzjI2Nsbe3Z+zYsdy/f1/VJy0tjeDgYKpXr07VqlXx9/cvVtLiaee7vNewEP+LZGaxEEIIIYQQQohKLTExkcGDBxMaGkqfPn1ISUlREo9a8+fPZ/z48YwZM4Z58+Zx7tw5JVk8c+ZMALKzs/Hw8MDMzIxFixZRvXp1Fi1ahI+PD//973+xsbFRxktISKBu3bosXbqU7OxsIiMjeeONN0hOTgYKZ3sGBQVx/fp1li9fTvXq1ZkzZw5paWno6RWft9WnTx+GDBlCZGQkGzduJCwsDHt7ewICApQ+v//+O+PGjSMqKgoDAwNGjhxJ//79MTU1xdPTk0GDBvHZZ58REhJCmzZtqFu37jMdz+TkZCIjI7lz5w6ffvopAEZGRnTp0gUPDw/GjRsHQP369Z84jru7O0uWLOG9995j1apVvPrqq8X6DB48mJCQEBISEtDX1wcKE7EDBgygfv365ObmsmHDBjw9Pfnxxx9xcXFR1s3Ly6N///6MHDmSDz/8kFmzZtGzZ0/S0tKwsrLi0qVLBAcH07dvX2bMmMGjR4/497//TXZ2NlB4DmfNmsWRI0dISEgAwM7OjpSUFPz8/PDy8uLrr7/m+vXrTJgwgbNnz3Ls2DElToCJEyfStWtXNmzYwKNHj5T2xYsX4+Xlxdq1azlx4gSTJ0/m4cOH7N+/n6ioKAwNDRk5ciRhYWHs27dPWa9Xr158++23TJ48mQYNGrBr1y5CQkKoUaMGnTt3VvpdvXqVkSNHMmnSJOrUqUOdOnXKdnJLsXTpUtzc3GjZsiU5OTksXLhQtTwpKYmCggI6depUrnEfPXpEfn4+BQUF/Pbbb4wfPx5ra2u8vLyUPtu3byc4OJg+ffowc+ZM/vOf//DBBx/w66+/snnzZgDu3LmDl5cXenp6LFu2DGNjY6ZNm6ZcF7Vr1y7T+S7vNSzE/yJJFgshhBBCCFGJxJ39VGdjhzYarrOxhdClqVOn0r59e1atWgWAv78/9+/f5+OPPwYKE02TJ09m/PjxTJ8+HQA/Pz8MDQ0ZO3YsERERWFlZERsbS05ODidPnlQSw76+vri4uDB37lxmz56tbPPOnTvs3r2b6tWrA1C7dm18fX3Zu3cv/v7+7N69m++//56kpCTat28PgI+PD46OjiXWah0wYAATJ05U4r98+TJTpkxRJYuzsrI4cuSIMrPz6tWrhIeHExkZyYcffggUzuDdsmULW7duZdSoUUBhwu7xRKb2dX5+viqGKlUKUwRt2rRRHmz3eAkBIyMjbG1tVW1PUq1aNRo2bAhA48aNadmyZbE+3bt3Z9asWaq2jz76SBWrn58fJ0+eJC4uTjl/UPhwupkzZyrlDFxdXXF2dmb37t2EhITwww8/kJeXx+LFi5UZrf7+/sr6zZs3p1atWhgZGan2adq0adSqVYvExEQMDAyAwvPr7+/Prl276Natm9K3WbNmfP7558X2y97enrVr1yrb3L59OwsWLODs2bM0aNAAgN9++43w8HBycnKwsLDg0KFDbN++nb179ypJWT8/P65du8bkyZNVyeLs7Gx2797Na6+9ptpu0XOqPYaPt+vp6RX7wsLV1ZWQkBBWrlzJtGnTqF27tmq59gGFRduLXlvaa0grMjKSyMhI5b2lpSUJCQnK5wYKZ4m3adNGmUEdEBCAqakpQ4YM4cyZMzRp0oRVq1aRlpamOn4dOnSgTp06xMbGMm/evDKd7/Jew0L8L5IyFEIIIYQQQgghKq2HDx+SkpJCjx49VO3BwcHK62PHjnH37l3efPNN8vPzlZ+OHTty7949fvrpJwD27duHt7c3lpaWSh99fX06dOjAqVOnVON7e3urEl4+Pj5YWlpy4sQJAE6dOoWFhYWSKAaU0gMlKRp/z549SUlJUZXJsLe3V5UA0M6y7dixo9JmYWGBjY2NqrxBTEwMBgYGyk9YWBhpaWmqNm1S9GXr2rVrsbZz587Ro0cPbG1t0dfXx8DAgPPnz3PhwgVVPz09PdW+Ozk5YWJiQnp6OgBubm7o6+vTr18/duzYwa1bt8oU09GjRwkKClIdk06dOmFhYcG333771PihMMn7OBcXF+zt7ZVEp7YNUOLdt28flpaW+Pj4qK5TPz8/fvjhB9W1YGVlVSxRDBQ7p2lpaYSFhanaYmJiiq1348YNEhIS0Gg0HD58uNRjoy0jotW9e3fV2N99951q+ahRozh16hSnTp1i586dtG3blqCgIH788UcA7t69y+nTp1WfV4DevXsDKMf76NGjNG7cWHX8LC0t8fPzU/o86/kWQqjJzGIhhBBCCCGEEJXWzZs3yc/PV5WIALC1tVVeZ2RkAIVlEUqiTaxmZGRw/PjxEhOnRW9XL7o9bZu2bvG1a9eoWbNmiX1KUlL8eXl5ZGRkKPtSdEayoaFhqe2P13sdPHgwgYGByvvExERWrFjB9u3bS4zlZXr8PEHhjO1OnTpRs2ZN5s+fT926dTE2Nubdd98tVsPWxMREOQZaj++7i4sLiYmJTJ8+nR49eqCnp0dAQACLFy9+YtmG7OzsYnFpY328bnFJ8WuVdE5KO3/aeDMyMsjKyio1cX/t2jUcHR2fuN2iX2p079692Pm3t7cvtt64ceMwMDBg48aN9O7dm02bNikJ28fXSU9PV5UCiY2NJTo6mpSUFIYOHVpsXEdHR9WMcl9fXxwdHYmJiWHz5s3k5ORQUFBQbH+qV6+OkZGRcryfdE60X/Y86/kWQqhJslgIIYQQQgghRKVVs2ZNqlSpwo0bN1Tt169fV15bWloChQ/RKnobPYCzs7PSLyAgQClf8TgjIyPV+6Lb07bZ2dkBhbVvb968WWKfkty4cQMHBwdV/AYGBlhbW5fYvzzs7e1VCcKffvoJQ0PDEstCvGxFZ6omJyeTnp5OYmIiTZs2Vdpv3bqlJErLIyAggICAAG7fvs2ePXsYM2YMAwcO5MCBA6WuY2lpWeJ5un79unItlRb/87C0tKRmzZrKA9mKevwLhdK2W/ScGhoa4uTk9MRzfejQIdatW8eaNWvo1asXW7ZsYezYsXTp0kUp5+Dp6YlGo2Hfvn34+Pgo6/7jH/8ACmcIl4WRkRH16tXj7NmzQGFSXaPRFDvet27d4sGDB8rxtrS05Pz588XGK3pOnuV8CyHUpAyFEEIIIYQQQohKS19fH3d3d+UBZVraB2MBtG3bFlNTU9LT02nZsmWxHysrK6CwnMPPP/9MgwYNivVp0qSJavxDhw6pbnM/ePAgWVlZSmmAVq1akZOTQ1JSktLn7t27pSatisYfHx9PixYtVA9Tq2hFZyyXdR2gzOvdu3dPtR4UlhFJTU0t13aLqlatGr169aJPnz6cO3fuiX09PDzYunWrqs7v/v37ycnJwcPD47nieJKOHTty8+ZNJZFf9KfoLOoXITc3l2HDhuHt7c1bb70FFD4M8s6dO0odbIC6devSs2dPlixZ8tTj9yT379/n0qVLypcgZmZmNGvWTPV5Bfjqq68AlOPt4eHBmTNnVAnj7OxsvvnmmxLPSWnn+1muYSH+18jMYiGEEEIIIYQQlVpUVBRBQUEMHDiQPn36kJKSojxcDApnL8bExDB+/HjS09Px8vJCX1+fy5cvs23bNuLj4zE1NWXs2LF8+eWXdOjQgVGjRlGnTh1u3rzJiRMnsLe3Z8yYMcqY5ubmdO7cmQkTJpCTk0NkZCStW7dWHqjVuXNn3N3d6devHzNmzMDCwoLZs2djbm5e7OFiAGvWrMHExAR3d3c2btxIUlISO3fu1P3BK4cGDRpw8OBB9u/fT40aNXB2dlYS7aVxcXFBX1+flStXUqVKFapUqfLEWa5t2rTBzMyM9957jwkTJvDbb78xefJk1azrslq+fDnJyckEBARgZ2fHL7/8wrp165SHx5UmKiqKdu3aERgYSHh4ONevX2fChAm0bt1aeZieLvj5+dGtWzcCAgIYP348bm5u/PHHH5w9e5aLFy+W+CC95zVz5kx++eUXtm3bprTZ29vz8ccfM27cOEJDQ2nWrBkAS5cuxcfHh7Zt2zJixAjat2+PsbExv/32G6tXr0ZPTw9TU1PV+L/++ivHjx8HCkvGLFmyhMzMTFXJiujoaF5//XVCQkIICQnh/PnzfPDBB/Ts2VP5kmbgwIEsWLCArl27MnXqVIyNjZk2bRpVqlRh9OjRQNnO97Ncw0L8r5GZxUIIIYQQQgghKrXu3buzbNkyDhw4wOuvv86+ffvYtGmTqs+4ceNYtWoVhw4domfPnrz55pusWLGCVq1aKTM2raysOH78OM2aNSMyMpJOnToxZswYUlNTiz1MrEePHnTv3p2hQ4cyZMgQWrVqpZodrNFo2LZtG02bNmXw4MEMGTKErl270rFjR9WD8bQ2bNjA3r17ef311zl48CArVqzQaWLyWUyfPh1HR0d69uxJq1at2LFjx1PXsba2ZsmSJRw5coT27dvTqlWrJ/a3tbXl66+/5saNGwQFBREbG8vy5cuVcgfl4ebmRkZGBmPHjqVTp05MnjyZvn378umnnz5xvRYtWrBv3z5u375Nz549iYiIoGvXruzevVvnM703b97M0KFD+fTTT+ncuTNhYWHs27ePDh06vPBtXbx4kRkzZjB+/HhcXV1Vy0aMGEGTJk0YNmwYBQUFQOG5PHbsGBERESQmJvLGG2/g7+9PdHQ0Tk5OnD59moYNG6rGWbRoEW3btqVt27YMGDCA27dvk5CQQP/+/ZU+3bt35+uvv+bMmTMEBQUxc+ZMBg8ezLp165Q+5ubmHD58WPk89e/fnxo1apCUlKSUlinL+X6Wa1iI/zWaAu2nXpTZ7du3qV69Ordu3aJatWoVHU6l0SJijU7H/zjYS6fjN95b8lNuXxTzdm/pdPzAc9ue3uk5DPLp//ROz8h52Kand3oO7kMH6XT81SnF/zHwIjX31e3DGg6vL16z70Vq5+ev0/Frpdd/eqdnZNeu5AfUvCixRzY/vdNzCAgI0On4v14ZqdPxX3V9R6fjv3XBWWdjT2xQ/n/wlsecuH/pdHz5m/tklflvbmij4Tob+++qsv7b4P79+/zyyy84OztjbGxc0eFUOk5OTgQGBrJ48eJyrZebm0vDhg1p3749q1at0lF0QgghRHFl/dsvZSiEEEIIIYQQQggdWLFiBY8ePcLV1ZXs7GyWLl1KamoqGzdurOjQhBBCiBJJslgIIYQQQgghhNABY2NjZs6cqTycrWnTpuzcufOJNXsrk4KCAh4+fFjqcj09vRLrMwshhPjrkmSxEEIIIYQQQghRDtrk79MMGDCAAQMG6DaYCrR69WoGDhxY6vLJkycTHR398gISQgjx3CRZLIQQQgghhBBCiHLr1q0bp06dKnW5vb39S4xGCCHEiyDJYiGEEEIIIYQQQpSblZUVVlZWFR2GEEKIF0iKBwkhhBBCCCGEEEIIIYSQZLEQQgghhBBCCCGEEEIISRYLIYQQQgghhBBCCCGEQJLFQgghhBBCCCGEEEIIIZBksRBCCCGEEEIIIYQQQggkWSyEEEIIIYQQQgghhBACSRYLIYQQQgghhPgbysnJQaPREBcXV9GhPFFcXBwajYaMjIyKDkUlKyuLHj16UKNGDTQaDVu3biU2NpZdu3aVa5zU1FSio6O5evWqjiJ9Prm5uQwcOJCaNWui0WiIjY2t6JBEKZ7l+jt8+DAajYbvvvtOadNoNMydO1d57+XlRWBg4AuLs6yOHTuGnp4eX3zxRbFlr7/+OnXr1uWPP/5Qte/evZsuXbpQs2ZNDAwMsLW1pWvXrmzYsIFHjx4p/UJDQ9FoNMpP1apVadq0aYnbelkOHz7M9OnTK2z7ouyqVHQAz2rjxo3Mnj2bc+fOYWJigo+PD7NmzaJ+/fqlrhMaGsrq1auLtTs4OJCenq7LcIUQQgghhBCiUrizfl2Fbdu8X0iFbVuozZ8/n0OHDrFmzRpsbGxwdXVl9OjRBAYG0qVLlzKPk5qaypQpUwgMDMTe3l6HET+bNWvWsHbtWlavXk39+vVxcnKq6JBEKWJjY8t9/ZUkOTmZunXrvqConl27du0ICwsjMjKSoKAgrK2tAdi6dSvbtm1j+/btVK1aVen/wQcfMGPGDHr06MHixYuxs7Pj+vXrbN26lZCQECwtLfH391f616tXjy+//BKAO3fukJCQwLvvvkvVqlXp06fPy91ZCpPFc+fO5YMPPnjp2xblUymTxV988QXvvvsuAM7OzmRmZhIfH8/Ro0f597//Ta1atZ64voODA46Ojsp7GxsbncYrhBBCCCGEEEL8VcTFxREdHU1qamqpff7zn//g5uZG9+7dX1pc9+7dw8TE5KVtDwr3097env79+z/3WBURP0BBQQG5ubkYGRkVW+bk5ER0dDShoaFlHq+i9uNladOmzUvZTnR0NIcPH+bw4cOl9pk1axbbtm3j/fffJy4ujrt37xIeHk6PHj3o1q2b0m/nzp3MmDGDyZMnEx0drRrjzTffZNSoURgYGKjaTUxMVPvq5+dHcnIyW7ZsqZBksag8Kl0ZitzcXCZMmABAz549uXz5MufOncPc3JwbN26UaUr7u+++y/Hjx5Wf7du36zpsIYQQQgghhBA69Nlnn+Hk5ISpqSm+vr5cvHixWJ+4uDjc3NwwNjbGwcGBqKgoHj58qOqTnp5OSEgI1tbWmJiY4OnpSUpKiqqPk5MTI0aMYM6cOTg4OGBqakpQUBDXrl0rNlZgYCCmpqbUrl2bBQsWMHr06BJnr168eBEfHx9MTU1xcnJi5cqVquWhoaE0btyYb775Bjc3N0xMTOjQoQOpqalkZWXRq1cvqlWrRv369dm0adMzHsVCGo1GmZClvY3dycmJtLQ0lixZorQ9rcTH4cOH8fb2BqBVq1bKetplGo2GnTt3EhwcTLVq1XjzzTeBwtm+Hh4eWFpaUqNGDby8vDh58qRq7OjoaMzMzDhz5gweHh6YmprSuHFj9u7dq+q3fft2WrZsiZmZGRYWFrRs2VIpZeDk5MS8efO4cuWKEps2gZ6UlES7du0wMTHB2tqad955h6ysLGXc1NRU5RgMGjQIKysrWrdurRy/WbNmERUVhY2NDRYWFowfP56CggIOHDhAs2bNMDMzw9fXlytXrqjiffDgAR988AF169bFyMiIBg0asH79elUf7bWwa9cumjZtipGRETt27HjaaS2R9jiePHmStm3bYmxszJIlSwA4d+4cQUFBVK9enapVq9K1a1cuXbqkWn/lypU0atQIExMTrKys8PDw4NSpU8pyjUbD7NmziY6OxtbWFmtrawYOHFisvMLTPnfPcv2VpmgZiqLu3btH165dqVevHpcvXy5TfM/K0tKSOXPmsHr1ag4fPsykSZPIyclh4cKFqn7z58/Hzs6OSZMmlThO69atad68+VO3Z25uTl5enqotLS2N4OBg5Tz7+/tz5swZVZ9Hjx4xdepUnJycMDIy4tVXX2X58uWqPunp6fTq1QtbW1uMjY1xdnZmzJgxQOF1NmXKFP744w/l/Hl5eT01XlExKt3M4lOnTim1nHr27AmAvb09bdq0Yf/+/ezZs+epY8TGxjJjxgxsbGz45z//ybRp055YvkIIIYQQQgghxF9XYmIigwcPJjQ0lD59+pCSkqIkHrXmz5/P+PHjGTNmDPPmzePcuXNKsnjmzJkAZGdn4+HhgZmZGYsWLaJ69eosWrQIHx8f/vvf/6ruSk1ISKBu3bosXbqU7OxsIiMjeeONN0hOTgYKZ3sGBQVx/fp1li9fTvXq1ZkzZw5paWno6RWft9WnTx+GDBlCZGQkGzduJCwsDHt7ewICApQ+v//+O+PGjSMqKgoDAwNGjhxJ//79MTU1xdPTk0GDBvHZZ58REhJCmzZtnvlW++TkZCIjI7lz5w6ffvopAEZGRnTp0gUPDw/GjRsH8NR/R7u7u7NkyRLee+89Vq1axauvvlqsz+DBgwkJCSEhIQF9fX2gMBE7YMAA6tevT25uLhs2bMDT05Mff/wRFxcXZd28vDz69+/PyJEj+fDDD5k1axY9e/YkLS0NKysrLl26RHBwMH379mXGjBk8evSIf//732RnZwOF53DWrFkcOXKEhIQEAOzs7EhJScHPzw8vLy++/vprrl+/zoQJEzh79izHjh1T4gSYOHFiiTVjFy9ejJeXF2vXruXEiRNMnjyZhw8fsn//fqKiojA0NGTkyJGEhYWxb98+Zb1evXrx7bffMnnyZBo0aMCuXbsICQmhRo0adO7cWel39epVRo4cyaRJk6hTpw516tQp28ktQW5uLv369WPMmDFMnz4dKysrLl++TLt27WjcuDFxcXHo6ekxbdo0fH19OX/+PEZGRiQlJREWFsb7779Ply5d+PPPPzl58iQ5OTmq8RcvXkz79u1ZvXo1Fy5cICIiAltb23J97hISEsp9/T2Lu3fv0q1bN65du8bRo0dxcHAo1++FZ/H222+zatUqBgwYwNWrV5k7d67qbvj8/Hz+9a9/ERwcTJUq5Uvj5efnK/u1ZcsW/vWvf7FmzRpl+Z07d/Dy8kJPT49ly5ZhbGzMtGnTlM9b7dq1AYiIiOCTTz5h0qRJtGvXjsTERIYOHUpeXh4jRowAUOJfuHAhtra2/Prrr0qt6HfffZf09HTWr1/PwYMHAahWrdqzHzShU5UuWfz4t26PfyBtbW0B+PXXX5+4vqGhIXZ2duTm5nL58mU2bdrEvn37OHPmDA4ODiWu8+DBAx48eKC8v3379vPsghBCCCGEEEKIF2jq1Km0b9+eVatWAeDv78/9+/f5+OOPgcKEyOTJkxk/frxyN6qfnx+GhoaMHTuWiIgIrKysiI2NJScnh5MnTyr/3vT19cXFxYW5c+cye/ZsZZt37txh9+7dVK9eHYDatWvj6+vL3r178ff3Z/fu3Xz//fckJSXRvn17AHx8fHB0dMTCwqLYPgwYMICJEycq8V++fJkpU6aoksVZWVkcOXKERo0aAYUJw/DwcCIjI/nwww+Bwhm8W7ZsYevWrYwaNQoonBX4eCJT+1qbSNLSJqLatGmjPNju8dvYjYyMsLW1LfNt/NWqVaNhw4YANG7cmJYtWxbr0717d2bNmqVq++ijj1Sx+vn5cfLkSeLi4lR3E+fm5jJz5kylhq2rqyvOzs7s3r2bkJAQfvjhB/Ly8li8eDHm5uYAqpquzZs3p1atWhgZGan2adq0adSqVYvExETl1v7atWvj7+/Prl27VOUBmjVrxueff15sv+zt7Vm7dq2yze3bt7NgwQLOnj1LgwYNAPjtt98IDw8nJycHCwsLDh06xPbt29m7dy+dOnUCCq/Ta9euMXnyZFWyODs7m927d/Paa6+ptlv0nGqP4ePtenp6qi8s8vLymDZtGr1791ba3n77bSwtLdm/fz/GxsZAYY3devXq8cUXXzB8+HBOnjypzIzV6tq1a7Ht29nZKbVzAwIC+P7779m8ebOSLC7L56558+blvv7KKzs7m86dO3P//n2SkpKUWMr6e6Gkz1lBQYHq2Gs0GtWXDVoff/wxnp6evPrqq4SHh6uWZWZm8uDBAyVxq1VQUKC6M6LoeT179myx0hTjxo1TlVxZtWoVaWlpquuyQ4cO1KlTh9jYWObNm0dGRgaLFi0iIiJCKYHRqVMnMjIyiImJYdiwYejr63Py5ElmzJihuo4GDBgAgKOjI46Ojujp6b20MiDi2VW6MhSlKSgoeGqf999/n8zMTM6dO8elS5dYtmwZUPgLQfs/FSWZMWMG1atXV36KfkCFEEIIIYQQQlSMhw8fkpKSQo8ePVTtwcHByutjx45x9+5d3nzzTfLz85Wfjh07cu/ePX766ScA9u3bh7e3N5aWlkoffX19OnTooLq1HsDb21tJFENhItjS0pITJ04AhXfFWlhYKIliQCk9UJKi8ffs2ZOUlBRVMsje3l5JFAPKLNuOHTsqbRYWFtjY2KgmWsXExGBgYKD8hIWFkZaWpmormlR6WUpKLp47d44ePXpga2uLvr4+BgYGnD9/ngsXLqj66enpqfbdyckJExMT5QH2bm5u6Ovr069fP3bs2MGtW7fKFNPRo0cJCgpSHZNOnTphYWHBt99++9T4oTDJ+zgXFxfs7e2VhJy2DVDi3bdvH5aWlvj4+KiuUz8/P3744QfVtWBlZVUsUQwUO6dpaWmEhYWp2mJiYoqtV3Q/9u3bR/fu3alSpYoSR40aNWjevLnyWXB3dycrK4vQ0FD279/Pn3/+WaZj0bBhQ2Wftdsq6+dOVzIyMpSSKYcOHVJNTixrfO+8847qOH/88cckJSWp2kqbDb18+XKlDEpptcS1JVy04uPjVWOPHDlStbx+/fqcOnWKU6dOceTIEaZOncqiRYtU5//o0aM0btxYdV1aWlri5+enXOsnTpwgLy+v2N0avXv35ubNm8rn0t3dnblz57J06dISywCJyqPSzSx+PFF748aNYq+fdOtF48aNVe/79+/P0KFDgSfPSJ44cSJjx45V3t++fVsSxkIIIYQQQgjxF3Dz5k3y8/OL3QquvfsUUEoZuru7lziGNrGakZHB8ePHS0ycFk3ylHTruY2NjVK3+Nq1a9SsWbPEPiUpKf68vDwyMjKUfSk6I9nQ0LDU9vv37yvvBw8eTGBgoPI+MTGRFStW/CWe3/P4eYLCGdudOnWiZs2azJ8/n7p162JsbMy7776r2icofICX9hhoPb7vLi4uJCYmMn36dHr06IGenh4BAQEsXrz4ibmD7OzsYnFpY328bnFJ8WuVdE5KO3/aeDMyMsjKyio1cX/t2jWlPEFp2y2aXO3evXux829vb6/qY2pqipmZmaotIyOD2NhYYmNji21DG7ePjw9r167lk08+wd/fH2NjY4KDg4mNjcXS0lLpX9J+P373dnk+d7py4cIFsrOziY2NpUaNGqplZY0vOjpaKckAsGLFClJSUlS1fUt6COGBAwf48ssv+fzzz5kxYwbh4eFKXW0o/GLAyMhIlWCHwtnN2vNd0oMojY2NVbP5PT09uX79OtOmTWPEiBFYWlo+8VrXfommLdtStJ/2vfYzsWnTJqKiooiKimL48OG4uroyffp03njjjWLji7+2SpcsbtWqFVZWVmRmZhIfH0/fvn25evUqx48fB1Bu0dHWQhoxYoTyYZ08eTIjRoxQ/mBv3LhRGbekBwxoGRkZlfiBFkIIIYQQQghRsWrWrEmVKlVUk4kArl+/rrzWJq62bNlS4sQfZ2dnpV9AQIBSvuJxRf9NWHR72jY7Ozug8Nb7mzdvltinJDdu3FCVRrx+/ToGBgZYW1uX2L887O3tVQnCn376CUNDwxLLQrxsRWdLJicnk56eTmJiIk2bNlXab926parjWlYBAQEEBARw+/Zt9uzZw5gxYxg4cCAHDhwodR1LS8sSz9P169dVSdCS4n8elpaW1KxZU5UofNzjXyiUtt2i59TQ0BAnJ6cnnuuSxrK0tKRr164MHz682DJtSQ+AkJAQQkJCyMjIYNu2bYwZMwYDAwO++OKLUrdX0rbK+rnTlXbt2tGxY0fGjh2LlZUVISEh5Y7PyclJlVtKTEzkwoULTzz2Dx48YPjw4fj6+hIWFoaDgwOdO3cmPj5eeU5XlSpV+Oc//8mBAwd4+PChUsaiRo0aythFvzQpTYMGDcjNzeW///0vr732GpaWlpw/f75Yv8evde1/S/od9fhyOzs7Vq5cyeeff05KSgpTp06ld+/enD9/nnr16pUpPvHXUOmSxYaGhkyfPp0hQ4YQHx9PvXr1yMzM5M6dO1hbWzNhwgQA5WLXfoMMhbfeTJ06lXr16lFQUKA8xbNWrVq8++67L39nhBBCCCGEEEI8F319fdzd3UlISGDMmDFK++bNm5XXbdu2xdTUlPT09GLlHh7XsWNH1q1bR4MGDahateoTt3vo0CFu3bqllKI4ePAgWVlZSmmAVq1akZOTQ1JSEp6enkDhQ6YOHDhQYs3ihIQEmjdvrryPj4+nRYsWJdY3rShFZyyXdR2gzOvdu3dPtR4UlhFJTU1VleAor2rVqtGrVy9OnDjBhg0bntjXw8ODrVu3Mm/ePKWO8/79+8nJycHDw+OZY3iajh07Mnv2bAwNDXFzc9PZdsoay08//UTz5s3LdA1aW1sTFhbGrl27OHfuXLm3VZbP3bNcf+UxevRo7t27R2hoqDJLujzxPYsZM2aQlpbGjh07gMIvN3r27Mno0aPx9/dXZnyPHTuWwMBApk+frtQnfxba2cLaL6E8PDzYvHkz58+fx9XVFSicSfzNN98wePBgAFq3bo2BgQFff/216nfUV199hY2Njeqhk1BYHqZVq1ZMnTqV7du3c/HiRerVq1dsRrn466p0yWIovIWmatWqzJ07l3PnzmFsbMwbb7zBzJkzi91O8bhp06axe/duLly4wO3bt/nHP/5Bx44dmTRp0nM/vVIIIYQQQgghRMWIiooiKCiIgQMH0qdPH1JSUpSHi0HhbfAxMTGMHz+e9PR0vLy80NfX5/Lly2zbto34+HhMTU0ZO3YsX375JR06dGDUqFHUqVOHmzdvcuLECezt7VXJaHNzczp37syECRPIyckhMjKS1q1bKw9Q69y5M+7u7vTr148ZM2ZgYWHB7NmzMTc3Vz2ESmvNmjWYmJjg7u7Oxo0bSUpKYufOnbo/eOXQoEEDDh48yP79+6lRowbOzs5YWVk9cR0XFxf09fVZuXIlVapUoUqVKk+cadmmTRvMzMx47733mDBhAr/99huTJ08u9YH0T7J8+XKSk5MJCAjAzs6OX375hXXr1ikPjytNVFQU7dq1IzAwkPDwcK5fv86ECRNo3bq18jA9XfDz86Nbt24EBAQwfvx43Nzc+OOPPzh79iwXL14s8UF6ujJlyhRatWqFv78/gwcPxtbWlt9//50jR47Qvn17+vbty+TJk8nMzMTLywsbGxvOnDnDnj17VGU8y6Ksn7tnuf7Ka+LEidy7d49+/fphbGxMYGBguX4vlMeFCxeYOXMmkZGRqoRrbGwsDRo0IDo6mrlz5wKFNaUnTJjARx99xOnTp+nduzd2dnbcunWLo0eP8vvvv6tmfEPhFy/au/Dv3bvH0aNH+eyzz/Dz81PKZwwcOJAFCxbQtWtXpk6dirGxMdOmTaNKlSqMHj0aKEwsh4eHM2fOHIyNjWnTpg27du1i/fr1LFq0CH19fW7duoW/vz9vvfUWrq6u5ObmsmjRIiwsLJTyPw0aNCA/P59PPvmEdu3aUa1aNSVBLf5aKmWyGArrDT/+BMeiSnrg3QcffMAHH3ygy7CEEEIIIYQQQrxk3bt3Z9myZUybNo2NGzfy2muvsWnTJtUDwMaNG4eDgwPz589n0aJFysOmAgMDlVmsVlZWHD9+nEmTJhEZGUlmZiY2Nja0adOm2IzkHj164OjoyNChQ8nOzsbPz095iDoU3tq/bds2hgwZwuDBg6lRowYjR47k/PnznD59utg+bNiwgYkTJxITE4ONjQ0rVqzQaWLyWUyfPp1hw4bRs2dP7ty5w6pVqwgNDX3iOtbW1ixZsoTZs2ezdu1a8vPzn/iAeltbW77++mvef/99goKCcHFxYfny5cyaNavc8bq5ubFjxw7Gjh1LZmYmtWrVom/fviWWE3hcixYt2LdvHxMnTqRnz55UrVqV7t27M2/ePJ3P9N68eTMzZ87k008/JS0tjerVq9O4cWMGDhyo0+0W9Y9//IOTJ08yadIkhg8fzt27d7Gzs8PT01OZ9dyqVStiY2P56quvuH37No6OjkRERDBp0qRybausn7tnuf6eRUxMDPfu3SM4OJjExEQ6duxY5t8L5TF8+HBq167NxIkTVe2Ojo5MmTKFyMhI3n77bZo0aQIUzkL28PBgyZIlDB8+nFu3bmFpaUmLFi1YuXIlffr0UY1z+fJl2rZtCxTOyq5bty4RERHKHflQ+KXX4cOHGTt2LIMHD+bhw4f885//JCkpSVWyZ86cOVhYWPD5558zdepUnJycWLZsGUOGDAEK6yM3adKERYsW8euvv2JiYkLLli3Zt2+fMou5W7duDB8+nBkzZnDjxg08PT05fPjwMx8/oTuagif9lhYlun37NtWrV+fWrVtUq1atosOpNFpErNHp+B8He+l0/MZ7S37K7Yti3u4tnY4feG6bTscf5FP6lzfPy3nYJp2NDeA+dJBOx1+dUv3pnZ5Dc9/SH87xIhxe/+T/mX5e7fz8dTp+rXTdPRTDrp1u70qJPbL56Z2eg7bOv678emXk0zs9h1dd39Hp+G9dcNbZ2BMb/ENnYwPMifuXTseXv7lPVpn/5oY2Kl6bUjxZZf23wf379/nll19wdnbG2Ni4osOpdJycnAgMDGTx4sXlWi83N5eGDRvSvn17Vq1apaPohBBCiOLK+re/0s4sFkIIIYQQQggh/spWrFjBo0ePcHV1JTs7m6VLl5Kamqp62LoQQgjxVyLJYiGEEEIIIYQQQgeMjY2ZOXMmqampADRt2pSdO3c+sWZvZVJQUMDDhw9LXa6np1difWYhXgS5/oTQDfnUCCGEEEIIIYQQ5ZCamlqmEhQDBgzg559/5s8//+TPP/8kOTlZeQDe38Hq1asxMDAo9ScmJqaiQxR/Y3L9CaEbMrNYCCGEEEIIIYQQ5datWzdOnTpV6nJ7e/uXGI34XyPXnxC6IcliIYQQQgghhBBClJuVlRVWVlYVHYb4HyXXnxC6IWUohBBCCCGEEEIIIYQQQkiyWAghhBBCCCGEEEIIIYQki4UQQgghhBBCCCGEEEIgyWIhhBBCCCGEEEIIIYQQSLJYCCGEEEIIIYQQQgghBJIsFkIIIYQQQgghhBBCCIEki4UQQgghhBBC/A3l5OSg0WiIi4ur6FCeKC4uDo1GQ0ZGRkWHUimdPn2a6Oho/vzzz3Kt5+XlRWBgoPI+OjoaMzMz5f3hw4fRaDR89913LyzWsgoICOCVV17hwYMHqvaUlBSqVKnC4sWLVe2ZmZlMmDCBhg0bYmpqiqmpKY0bN2bcuHGkpqYq/VJTU9FoNMqPnp4eDg4O9OvXj7S0tJexayWKjo7m2LFjFbZ9IYRalYoOQAghhBBCCCHEX8ficTsqbNsj5nWrsG2Lyun06dNMmTKFESNGYGpq+szjvPvuu3Tt2vUFRvbslixZQuPGjZk+fTpTpkwB4OHDhwwZMgR3d3eGDx+u9L148SI+Pj7k5eUxcuRIWrVqhUaj4fvvv2fZsmUcO3aM5ORk1fjTp0/H29ubR48ecenSJT766CO6dOnCjz/+iL6+/kvdV4ApU6ZgZmZGu3btXvq2hRDFSbJYCCGEEEIIIYT4HxIXF0d0dLRq1unT3Lt3DxMTE90FVcEcHR1xdHR8KdvSaDQcOnQILy+vEpfXr1+fDz74gKlTp9KvXz9cXV1ZtGgRp0+f5tSpU+jp/f9N4v369SM/P5+UlBTs7e2Vdl9fX0aNGsW6deuKjf/KK6/Qpk0bANq1a0e1atV4/fXXOX/+PA0bNnyxOyuEqHSkDIUQQgghhBBCiErvs88+w8nJCVNTU3x9fbl48WKxPnFxcbi5uWFsbIyDgwNRUVE8fPhQ1Sc9PZ2QkBCsra0xMTHB09OTlJQUVR8nJydGjBjBnDlzcHBwwNTUlKCgIK5du1ZsrMDAQExNTalduzYLFixg9OjRODk5FYtNO0PU1NQUJycnVq5cqVoeGhpK48aN+eabb3Bzc8PExIQOHTqQmppKVlYWvXr1olq1atSvX59NmzY941H8fxqNhpkzZxIZGUmtWrWwsbEBoKCggLlz5+Li4oKRkRH16tVjwYIFxfa7V69e2NraYmxsjLOzM2PGjFGWa0s+nDlzBg8PD6Vswt69e4vF8aRzFhcXx8CBAwGoWbMmGo2mxGNbFkXLUJRkz549mJqaMnny5DLF9zwiIyNxdnZm2LBhXLlyhQ8//JDw8HCaN2+u9Dl69CinTp1i0qRJqkSxlqGhIe+8885Tt2Vubg5AXl6eqn358uW4urpiZGSEk5MTU6dO5dGjR6o+Z86cwd/fn6pVq1K9enWCg4P59ddfVX1WrlxJo0aNMDExwcrKCg8PD06dOgUUXmcAERERSnmMw4cPP/0ACSF0RpLFQgghhBBCCCEqtcTERAYPHoy3tzcJCQn4+vry5ptvqvrMnz+fd999F39/f3bs2EFkZCQLFy4kKipK6ZOdnY2HhwenT59m0aJFxMfHU7VqVXx8fLhx44ZqvISEBBISEli6dClLly7lxIkTvPHGG8rygoICgoKCOH36NMuXL2fJkiVs2bKFLVu2lLgPffr0wc/Pj4SEBLy9vQkLC2PPnj2qPr///jvjxo0jKiqKL7/8kkuXLtG/f3969+5NkyZNiI+Pp0WLFoSEhLyQGrSffPIJFy5c4IsvvlBmqI4aNYqPPvqIt99+m507dxIaGkpkZCTLli1T1hswYAA//vgjCxcuZM+ePUyZMqVYAjUvL4/+/fsTGhpKQkICNjY29OzZk8zMTKXP085Z165dmTRpElCYyE1OTiYhIeG597skW7Zs4fXXXycmJkYpDVGWa+pZGRoasnTpUg4dOoSnpycWFhbExMSo+miTqp06dSrX2I8ePSI/P5/c3FzOnTtHdHQ0r776Ko0bN1b6LFq0iKFDhyr7FhoaSnR0NOPHj1f6XLlyBU9PTzIzM1m3bh3Lli3j+++/p0OHDty5cweApKQkwsLC6NKlC7t27WLNmjX4+vqSk5MDoJTICA8PJzk5meTkZNzd3ct7uIQQL5CUoRBCCCGEEEIIUalNnTqV9u3bs2rVKgD8/f25f/8+H3/8MQB37txh8uTJjB8/nunTpwPg5+eHoaEhY8eOJSIiAisrK2JjY8nJyeHkyZPKTFpfX19cXFyYO3cus2fPVrZ5584ddu/eTfXq1QGoXbs2vr6+7N27F39/f3bv3s33339PUlIS7du3B8DHxwdHR0csLCyK7cOAAQOYOHGiEv/ly5eZMmUKAQEBSp+srCyOHDlCo0aNALh69Srh4eFERkby4YcfAtCqVSu2bNnC1q1bGTVqFFCYHHx8Rqj2dX5+viqGKlXUKQJLS0u2bNmizP68dOkSixcvZtmyZQwePBiAjh078ueffzJlyhQGDx6Mnp4eJ0+eZMaMGfTu3Vu1f4/Lzc1l5syZdOnSBQBXV1ecnZ3ZvXs3ISEhZTpnNWvWpH79+gC0aNECa2vrYsf1RVi7di1hYWEsXLiQoUOHAmW/pqD4cYbCGsSPt+vr6yvHWcvb2xsfHx8OHjzIl19+qcwA1rp69SpQeO0VHbugoEB5X/S8Pn5eAOrUqcPu3buVesUPHz4kJiaGPn36sHDhQqAwIZ2bm8u8efOYOHEiVlZWLFiwgLy8PPbt24elpSUAzZs3p2HDhsTFxREeHs7JkyextLRkzpw5yvYerw2tLYdRp04d5bUQomLJzGIhhBBCCCGEEJXWw4cPSUlJoUePHqr24OBg5fWxY8e4e/cub775Jvn5+cpPx44duXfvHj/99BMA+/btw9vbG0tLS6WPvr4+HTp0UG6b1/L29lYSxVCYCLa0tOTEiRMAnDp1CgsLCyVRDGBmZoavr2+J+1E0/p49e5KSkqKakWtvb68kigFcXFyAwoStloWFBTY2Nly5ckVpi4mJwcDAQPkJCwsjLS1N1WZgYFAsps6dO6sSmN98840SW9Hj+PvvvyvbdHd3Z+7cuSxdurTEciAAenp6qridnJwwMTEhPT0dKPs507UVK1YQFhbGF198oSSKyxNfampqice5Y8eOqrbVq1cX2/bPP//M0aNHn1qaoWiSuWnTpqqxMzIyVMtnzZrFqVOnOHnyJAkJCdjb2xMQEMBvv/0GwH/+8x8yMjKKzc7v3bs3ubm5nDx5Eigsg6G97rVeffVVmjZtyrfffgsUXgtZWVmEhoayf/9+/vzzzycebyFExZOZxUIIIYQQQgghKq2bN2+Sn5+vzATWsrW1VV5rk2Wl3d6uTXJmZGRw/PjxEhOn2hmsWkW3p23T1i2+du0aNWvWLLFPSUqKPy8vj4yMDGVfis5INjQ0LLX9/v37yvvBgwcTGBiovE9MTGTFihVs3769xFgej+FxGRkZFBQUlDqD98qVK9StW5dNmzYRFRVFVFQUw4cPx9XVlenTp6vKdJiYmCjxlxR3Wc+ZrsXHx1OnTh3VbFgoe3z29vbFvmho1aoVy5Yto0WLFkqbs7Ozqk9BQQHDhg3jlVde4b333mPEiBG88847qtm32jrF6enp1KtXT2nftGkT9+7dIzExUSmZ8bh69erRsmVLJZZ//vOf1KpViwULFjB37lyys7OB4udf+z4rKwsoLNvSrFmzYuPb2toqfXx8fFi7di2ffPIJ/v7+GBsbExwcTGxsrCrJLIT465BksRBCCCGEEEKISqtmzZpUqVKlWE3h69evK6+1SaktW7YUu2Uf/j9RZ2lpSUBAgFK+4nFGRkaq90W3p22zs7MDwM7Ojps3b5bYpyQ3btzAwcFBFb+BgcELKa1gb2+vegDaTz/9hKGhoZIwLE3RGauWlpZoNBq+/fbbYoleKCwlAYX7vnLlSj7//HNSUlKYOnUqvXv35vz586qk5pOU9Zzp2po1axg3bhz+/v4cOHCAatWqlSu+0o6zq6vrE49/XFwcR48e5fDhw7Rv355169YxbNgwvvvuO6VchJeXF1A4I/7xWc/a2edlnX1ds2ZNrK2tOXv2rGrfSvtMaZdbWlqWeD1fv35dmfUOEBISQkhICBkZGWzbto0xY8ZgYGDAF198Uab4hBAvlySLhRBCCCGEEEJUWvr6+ri7u5OQkMCYMWOU9s2bNyuv27Zti6mpKenp6cXKPTyuY8eOrFu3jgYNGlC1atUnbvfQoUPcunVLKUVx8OBBsrKyeO2114DCGZs5OTkkJSXh6ekJwN27dzlw4ECJNYsTEhJo3ry58l77sDptYvCvQFtCIzMzk27duj21v56eHq1atWLq1Kls376dixcvljlZXNZzpk1aPz6T+kWytbXlwIEDeHp60rlzZ/bt20fVqlXLHN+zyMzMJCIigrffflu5dpYuXUqLFi1YtGgRo0ePBqB9+/bK8Q0KClK+qCiv69evk5GRoXwx4erqSs2aNfn6669V+/bVV19haGhI69atAfDw8GDFihVkZ2dTo0YNAM6fP8+PP/7IO++8U2w71tbWhIWFsWvXLs6dO6e0GxgY6Oz8CSHKT5LFQgghhBBCCCEqtaioKIKCghg4cCB9+vQhJSWFtWvXKsstLCyIiYlh/PjxpKen4+Xlhb6+PpcvX2bbtm3Ex8djamrK2LFj+fLLL+nQoQOjRo2iTp063Lx5kxMnTmBvb69KRpubm9O5c2cmTJhATk4OkZGRtG7dGn9/f6Cw3q+7uzv9+vVjxowZWFhYMHv2bMzNzdHTK/74oDVr1mBiYoK7uzsbN24kKSmJnTt36v7glYOLiwvvvfceb731FhEREbz22mvk5eVx4cIFDh06xNatW7l16xb+/v689dZbuLq6kpuby6JFi7CwsCi1ZENJynrOGjRoAMCSJUt4/fXXMTU1pUmTJi90vx0cHJSEcffu3dm5c2eZ43sWERERAKqHwjVt2pTw8HA++ugjevXqpcwUX79+PT4+Pri7uzNq1ChatWqFnp4eqampLFu2DCMjo2JlVf773/9y/PhxCgoK+O2335gzZw4ajYZBgwYBhV/AfPjhh4wcORIbGxu6dOnC8ePHmTVrFqNHj1Ye3DdmzBhWrVpFp06diIqK4v79+0yaNIk6deoQGhoKwOTJk8nMzMTLywsbGxvOnDnDnj17GDt2rBJPgwYN2LZtG+3bt6dq1aq4uroWe5ifEOLlkWSxEEIIIYQQQgjFiHlPnzH6V9O9e3eWLVvGtGnT2LhxI6+99hqbNm1SZvkCjBs3DgcHB+bPn8+iRYswMDCgfv36BAYGKrNTraysOH78OJMmTSIyMpLMzExsbGxo06ZNsdmjPXr0wNHRkaFDh5KdnY2fnx/Lli1Tlms0GrZt28aQIUMYPHgwNWrUYOTIkZw/f57Tp08X24cNGzYwceJEYmJisLGxYcWKFXTp0kU3B+w5LFy4EFdXV5YvX05MTAxmZma4uroqD0MzNjamSZMmLFq0iF9//RUTExNatmzJvn37yl1SoyznrHnz5kRHR/P5558ze/ZsateuTWpq6ovebZycnDh48CCenp688cYbbN26tUzxldfRo0eJi4vjs88+K3a8YmJi+OqrrxgzZgybNm0C4B//+Afff/89c+bMYfXq1UyZMgWNRkO9evXw9/dn48aNqgcxAnzwwQfKa2tra5o2barsm1Z4eDgGBgbMnz+fTz/9FDs7O6Kjo1Xr1q5dmyNHjvD+++/Tv39/9PX18fPzY/78+Uqyt1WrVsTGxvLVV19x+/ZtHB0diYiIYNKkSco4S5YsYdSoUXTu3Jl79+5x6NAhpcSGEOLl0xQUFBRUdBCVze3bt6levTq3bt1S6hWJp2sRsUan438c7KXT8Rvv7fr0Ts/BvN1bOh0/8Nw2nY4/yKe/zsZ2HrZJZ2MDuA8dpNPxV6dUf3qn59Dct45Oxz+8vnjNvhepnZ+/TsevlV7/6Z2ekV27kh9Q86LEHtn89E7PISAgQKfj/3plpE7Hf9W1+O2NL9JbF3RXC3Fig3/obGyAOXH/0un48jf3ySrz39zQRsN1NvbfVWX9t8H9+/f55ZdfcHZ2xtjYuKLDqXScnJwIDAxk8eLF5VovNzeXhg0b0r59e1atWqWj6IQQQojiyvq3X2YWCyGEEEIIIYQQOrBixQoePXqEq6sr2dnZLF26lNTUVDZu3FjRoQkhhBAlkmSxEEIIIYQQQgihA8bGxsycOVMpi9C0aVN27txJy5YtKzawv7mHDx/ypJuoq1SRVIgQQpRGfkMKIYQQQgghhBDlUNaauAMGDGDAgAG6DUYUU79+fdLS0kpdLtU4hRCidJIsFkIIIYQQQgghxN/Gjh07ePDgQUWHIYQQlZIki4UQQgghhBBCCPG30aRJk4oOQQghKi29ig5ACCGEEEIIIYQQQgghRMWTZLEQQgghhBBCCCGEEEIISRYLIYQQQgghhBBCCCGEkGSxEEIIIYQQQgghhBBCCCRZLIQQQgghhBBCCCGEEAJJFgshhBBCCCGE+BvKyclBo9EQFxdX0aE8UVxcHBqNhoyMjIoOpVI6ffo00dHR/Pnnn+Vaz8vLi8DAQOV9dHQ0ZmZmyvvDhw+j0Wj47rvvXlisZVU0lqJSU1PRaDRs3ry5XOOWdb3Dhw8zffr0UpcnJycTHByMnZ0dhoaGWFlZ4ePjw/Lly8nNzVXth0ajUX6MjY1p0KABs2fP5tGjR6oxtX2WLVtWbHv79+9XlqemppZrn4UQ5SfJYiGEEEIIIYQQQlRKp0+fZsqUKeVOFhf17rvvcujQoRcUlW7Z2dmRnJyMj4+PTsZ/UrJ46dKleHh4kJmZyaxZs/jmm2/44osvcHFxYdSoUaxatUrV38TEhOTkZJKTk9m9ezdvvvkmEyZMYPbs2cXGNjMzY+PGjcXaN2zY8MTkuRDixapS0QEIIYQQQgghhPjr+Neuf1fYtv/ZpWmFbft/SVxcHNHR0eWapXnv3j1MTEx0F1QFc3R0xNHR8aVsS6PRcOjQIby8vJ5pfSMjI9q0afNigyqDf//734wcOZIBAwawcuVKNBqNsuz1119n3LhxXLlyRbWOnp6eKlZvb2/OnDnDli1bmDBhgqpvUFAQGzZs4LfffsPBwQGABw8esGXLFl5//XXWrVunw70TQmjJzGIhhBBCCCGEEJXeZ599hpOTE6ampvj6+nLx4sVifeLi4nBzc8PY2BgHBweioqJ4+PChqk96ejohISFYW1tjYmKCp6cnKSkpqj5OTk6MGDGCOXPm4ODggKmpKUFBQVy7dq3YWIGBgZiamlK7dm0WLFjA6NGjcXJyKhbbxYsX8fHxwdTUFCcnJ1auXKlaHhoaSuPGjfnmm29wc3PDxMSEDh06kJqaSlZWFr169aJatWrUr1+fTZs2PeNR/H8ajYaZM2cSGRlJrVq1sLGxAaCgoIC5c+fi4uKCkZER9erVY8GCBcX2u1evXtja2mJsbIyzszNjxoxRlmvLLJw5cwYPDw9MTU1p3Lgxe/fuLRbHk85ZXFwcAwcOBKBmzZpoNJoSj21ZPK30A8CePXswNTVl8uTJZYpPV0oqJ5Gbm8vIkSOxtLTEwsKCIUOGsH79+hJLN9y/f58RI0ZQo0YN7OzseP/998nPzwcKj8OUKVP4448/lNIP2qT2woUL0dfXZ968eapEsdYrr7xSptnO5ubm5OXlFWtv1qwZLi4uqut3165dFBQU0LVr17IcGiHECyDJYiGEEEIIIYQQlVpiYiKDBw/G29ubhIQEfH19efPNN1V95s+fz7vvvou/vz87duwgMjKShQsXEhUVpfTJzs7Gw8OD06dPs2jRIuLj46latSo+Pj7cuHFDNV5CQgIJCQksXbqUpUuXcuLECd544w1leUFBAUFBQZw+fZrly5ezZMkStmzZwpYtW0rchz59+uDn50dCQgLe3t6EhYWxZ88eVZ/ff/+dcePGERUVxZdffsmlS5fo378/vXv3pkmTJsTHx9OiRQtCQkJIS0t73sPKJ598woULF/jiiy+UWZ2jRo3io48+4u2332bnzp2EhoYSGRmpqjU7YMAAfvzxRxYuXMiePXuYMmVKsQRqXl4e/fv3JzQ0lISEBGxsbOjZsyeZmZlKn6eds65duzJp0iSgMJGbnJxMQkLCc+93SbSzW2NiYpgyZUqZ4nuZJkyYwPLly4mMjGTTpk08evSo2MxdraioKPT09Pjqq68YOnQo8+bN4/PPPwcKy3GEhYWpykd8+umnQGF5ipYtW2JpaVmu2PLz88nPz+fOnTts376d+Ph4goODS+zbt29fNmzYoLzfsGEDPXr0wNjYuFzbFEI8OylDIYQQQgghhBCiUps6dSrt27dX6qX6+/tz//59Pv74YwDu3LnD5MmTGT9+vFKL1c/PD0NDQ8aOHUtERARWVlbExsaSk5PDyZMnlZm0vr6+uLi4MHfuXFWd1Tt37rB7926qV68OQO3atfH19WXv3r34+/uze/duvv/+e5KSkmjfvj0APj4+ODo6YmFhUWwfBgwYwMSJE5X4L1++zJQpUwgICFD6ZGVlceTIERo1agTA1atXCQ8PJzIykg8//BCAVq1asWXLFrZu3cqoUaMAePTokeqBYtrX2tmkWlWqqFMElpaWbNmyRZlFeunSJRYvXsyyZcsYPHgwAB07duTPP/9kypQpDB48GD09PU6ePMmMGTPo3bu3av8el5uby8yZM+nSpQsArq6uODs7s3v3bkJCQsp0zmrWrEn9+vUBaNGiBdbW1sWO64uwdu1awsLCWLhwIUOHDgXKfk1B8eMM8PDhQ1W7vr5+ibN1yyIrK4ulS5cyadIkIiMjgcJrqGPHjsXKQgC89tprLFy4UIn50KFDbN68maFDhyrlOIqWj4DC661169bFxnt8P/T09NDT+/95iX/88QcGBgaq/r179y41kd23b18mT57MpUuXsLW1JTExka1btz53TWohRNnJzGIhhBBCCCGEEJXWw4cPSUlJoUePHqr2x2cuHjt2jLt37/Lmm28qsxzz8/Pp2LEj9+7d46effgJg3759eHt7Y2lpqfTR19enQ4cOnDp1SjW+t7e3kiiGwkSwpaUlJ06cAODUqVNYWFgoiWIofICXr69viftRNP6ePXuSkpKimpFrb2+vJIoBXFxcgMKErZaFhQU2NjaqJGFMTAwGBgbKT1hYGGlpaaq2ogk9gM6dO6sSmN98840SW9Hj+PvvvyvbdHd3Z+7cuSxdurTEciBQmFR8PG4nJydMTExIT08Hyn7OdG3FihWEhYXxxRdfKIni8sSXmppa4nHu2LGjqm316tXPHOOZM2e4f/8+3bt3V7UHBQWV2L9Tp06q9w0bNlSO+9MUTWh/9913qv0oGoOJiQmnTp3i1KlTfPvtt3zyySfs2bOHQYMGlTj+K6+8QosWLdiwYQNbt27F3Ny81M+MEEI3ZGaxEEIIIYQQQohK6+bNm+Tn5yszgbVsbW2V1xkZGUBhErMk2iRnRkYGx48fLzFxqp3BqlV0e9o2bd3ia9euUbNmzRL7lKSk+PPy8sjIyFD2peiMZENDw1Lb79+/r7wfPHgwgYGByvvExERWrFjB9u3bS4zl8Rgel5GRQUFBQakzeK9cuULdunXZtGkTUVFRREVFMXz4cFxdXZk+fbqqTIeJiYkSf0lxl/Wc6Vp8fDx16tQpVjO3rPHZ29sX+6KhVatWLFu2jBYtWihtzs7Ozxyj9porer2Vdq097Xopjb29fbGkcsOGDZX9GzJkSLF19PT0aNmypfL+n//8J/n5+YwbN46xY8fSuHHjYuv07duXlStXUrduXXr16oW+vv5TYxNCvDiSLBZCCCGEEEIIUWnVrFmTKlWqFKspfP36deW1tsbqli1bqF27drExtIk6S0tLAgIClPIVjzMyMlK9L7o9bZudnR0AdnZ23Lx5s8Q+Jblx4wYODg6q+A0MDF5IaQV7e3vs7e2V9z/99BOGhoaqJF5Jis4itbS0RKPR8O233xZL9EJhKQko3PeVK1fy+eefk5KSwtSpU+nduzfnz5+nXr16ZYq5rOdM19asWcO4cePw9/fnwIEDVKtWrVzxlXacXV1dn3r8y0p7zd28eVN1nku71p6Vl5cX69evJzs7mxo1agBgamqq7Ie5uXmZxmnQoAEAZ8+eLTFZ3Lt3byIiIvjPf/7D0aNHX1D0QoiykmSxEEIIIYQQQohKS19fH3d3dxISEhgzZozSvnnzZuV127ZtMTU1JT09vVi5h8d17NiRdevW0aBBA6pWrfrE7R46dIhbt24ppSgOHjxIVlYWr732GlA4ezQnJ4ekpCQ8PT0BuHv3LgcOHCixZnFCQgLNmzdX3msfVvdXmlWpLQeQmZlJt27dntpfT0+PVq1aMXXqVLZv387FixfLnCwu6znTJq3LMjP2Wdja2nLgwAE8PT3p3Lkz+/bto2rVqmWO72Vo3LgxxsbGbNu2jaZNmyrtW7dufabxDA0NefDgQbH2kSNHsmbNGiIiIpQH4j0LbYmO0r4IcXR0ZPTo0dy8eZN27do983aEEM9GksVCCCGEEEIIISq1qKgogoKCGDhwIH369CElJYW1a9cqyy0sLIiJiWH8+PGkp6fj5eWFvr4+ly9fZtu2bcTHx2NqasrYsWP58ssv6dChA6NGjaJOnTrcvHmTEydOYG9vr0pGm5ub07lzZyZMmEBOTg6RkZG0bt0af39/oLDer7u7O/369WPGjBlYWFgwe/ZszM3NVQ8A01qzZg0mJia4u7uzceNGkpKS2Llzp+4PXjm4uLjw3nvv8dZbbxEREcFrr71GXl4eFy5c4NChQ2zdupVbt27h7+/PW2+9haurK7m5uSxatAgLC4tSSzaUpKznTDtLdcmSJbz++uuYmprSpEmTF7rfDg4OSsK4e/fu7Ny5s8zxPauHDx+qvvDQKukBc1ZWVgwbNoxp06ZhbGxMs2bN+Prrr7lw4QJAidfbkzRo0ID8/Hw++eQT2rVrR7Vq1XB1daVp06YsXLiQESNGcPnyZQYOHIiTkxN3797lu+++48cff1Suf61Hjx5x/PhxoPChhtqZ5g0bNlS+RCnJ/PnzyxWzEOLFkWSxEEIIIYQQQohKrXv37ixbtoxp06axceNGXnvtNTZt2qTM8gUYN24cDg4OzJ8/n0WLFmFgYED9+vUJDAxUZqdaWVlx/PhxJk2aRGRkJJmZmdjY2NCmTZtis0d79OiBo6MjQ4cOJTs7Gz8/P5YtW6Ys12g0bNu2jSFDhjB48GBq1KjByJEjOX/+PKdPny62Dxs2bGDixInExMRgY2PDihUr6NKli24O2HNYuHAhrq6uLF++nJiYGMzMzHB1deXNN98EwNjYmCZNmrBo0SJ+/fVXTExMaNmyJfv27St3SY2ynLPmzZsTHR3N559/zuzZs6lduzapqakverdxcnLi4MGDeHp68sYbb7B169Yyxfes7t+/rxzTx61duxYPD49i7TNnziQvL48ZM2bw6NEjevTowYQJExgxYoTqQYxl0a1bN4YPH86MGTO4ceMGnp6eHD58GIBhw4bRtGlT5s2bR0REBJmZmZibm9OsWTOmT5/OO++8oxrr3r17tG3bFoAqVapQu3ZtQkJCmDx5com1wYUQFU9TUFBQUNFBVDa3b9+mevXq3Lp1S6lXJJ6uRcQanY7/cbCXTsdvvLfr0zs9B/N2b+l0/MBz23Q6/iCf/job23nYJp2NDeA+tOQn8b4oq1PK9z9n5dXct45Oxz+8vnjNvhepnZ//0zs9h1rp9Z/e6RnZtSv5oSEvSuyR4rNJXqSAgACdjv/rlZE6Hf9V13ee3uk5vHVBd7UQJzb4h87GBpgT9y+dji9/c5+sMv/NDW00XGdj/11V1n8b3L9/n19++QVnZ2eMjY0rOpxKx8nJicDAQBYvXlyu9XJzc2nYsCHt27dn1apVOopOiEJvvfUW3377Lb/88ktFhyKE+Aso699+mVkshBBCCCGEEELowIoVK3j06BGurq5kZ2ezdOlSUlNT2bhxY0WHJv5mjhw5wr/+9S9atGjBo0ePSExM5Msvv5RyDkKIcpNksRBCCCGEEEIIoQPGxsbMnDlTKYvQtGlTdu7cScuWLSs2sL+5hw8f8qSbqKtU+fulQszMzEhMTGTWrFncu3cPZ2dn5s+fz+jRoys6NCFEJfP3+w0phBBCCCGEEELoUFlr4g4YMIABAwboNhhRTP369UlLSyt1+d+xGmeLFi04duxYRYchhPgbkGSxEEIIIYQQQggh/jZ27NjBgwcPKjoMIYSolCRZLIQQQgghhBBCiL+NJk2aVHQIQghRaelVdABCCCGEEEIIIYQQQgghKp4ki4UQQgghhBBCCCGEEEJIslgIIYQQQgghhBBCCCGEJIuFEEIIIYQQQgghhBBCIMliIYQQQgghhBBCCCGEEEiyWAghhBBCCCGEEEIIIQSSLBZCCCGEEEII8TeUk5ODRqMhLi6uokN5ori4ODQaDRkZGRUdikpWVhY9evSgRo0aaDQatm7dSmxsLLt27SrXOKmpqURHR3P16lUdRfp8cnNzGThwIDVr1kSj0RAbG1vRIYlSPMv1d/jwYTQaDd99953SptFomDt3rvLey8uLwMDAFxZneRSNpajQ0FAaN25c7nHLul50dDTHjh0rcdkff/zB9OnTad68OWZmZhgbG+Pi4sLQoUM5c+aMqq9Go1H92Nra0q1bt2L9oqOj0Wg0ODg48OjRo2Lb/Oc//4lGoyE0NLTsOyteuCoVHYAQQgghhBBCiL+OaSHBFbbtqHWbK2zbQm3+/PkcOnSINWvWYGNjg6urK6NHjyYwMJAuXbqUeZzU1FSmTJlCYGAg9vb2Ooz42axZs4a1a9eyevVq6tevj5OTU0WHJEoRGxtb7uuvJMnJydStW/cFRaVbH374IX/88YfOxp8yZQpmZma0a9dO1Z6RkYGPjw9paWmEh4fTvn17DA0NOXv2LJ9//jnbtm3j2rVrqnXCw8Pp168fBQUFpKenM336dDp16sS5c+ewsLBQ+hkYGJCRkUFSUhJeXl5Ke1paGsnJyZiZmelsf0XZSLJYCCGEEEIIIYT4HxIXF0d0dDSpqaml9vnPf/6Dm5sb3bt3f2lx3bt3DxMTk5e2PSjcT3t7e/r37//cY1VE/AAFBQXk5uZiZGRUbJmTkxPR0dHlmqlZUfvxsrRp0+albCc6OprDhw9z+PDhZx6jfv36Ly6gchg2bBiXL1/mxIkTNGrUSGn39vZm+PDhfPHFF8XWqVOnjurYuri40KxZM44dO6ZK8BsaGtKxY0c2bNigShZv3LiRRo0aoa+vr5udEmUmZSiEEEIIIYQQQlR6n332GU5OTpiamuLr68vFixeL9YmLi8PNzQ1jY2McHByIiori4cOHqj7p6emEhIRgbW2NiYkJnp6epKSkqPo4OTkxYsQI5syZg4ODA6ampgQFBRWbaZeenk5gYCCmpqbUrl2bBQsWMHr06BJnr168eBEfHx9MTU1xcnJi5cqVquXa28q/+eYb3NzcMDExoUOHDqSmppKVlUWvXr2oVq0a9evXZ9OmTc94FAtpNBri4+M5evSoclu5k5MTaWlpLFmyRGl7WomPw4cP4+3tDUCrVq2U9bTLNBoNO3fuJDg4mGrVqvHmm28ChbN9PTw8sLS0pEaNGnh5eXHy5EnV2NHR0ZiZmXHmzBk8PDwwNTWlcePG7N27V9Vv+/bttGzZEjMzMywsLGjZsqVSysDJyYl58+Zx5coVJTZtAj0pKYl27dphYmKCtbU177zzDllZWcq4qampyjEYNGgQVlZWtG7dWjl+s2bNIioqChsbGywsLBg/fjwFBQUcOHCAZs2aYWZmhq+vL1euXFHF++DBAz744APq1q2LkZERDRo0YP369ao+2mth165dNG3aFCMjI3bs2PG001oi7XE8efIkbdu2xdjYmCVLlgBw7tw5goKCqF69OlWrVqVr165cunRJtf7KlStp1KgRJiYmWFlZ4eHhwalTp5TlGo2G2bNnEx0dja2tLdbW1gwcOLDYbNmnfe6e5forzdNKP9y7d4+uXbtSr149Ll++XKb4dKWkchLffvstzZs3x9jYGDc3N/bv30+zZs1K/ELg8OHDNG/enKpVq9K6dWtVzNrPYkREhHJMDx8+TFpaGvHx8QwfPlyVKNbS09Nj0KBBT43d3NwcgLy8vGLL+vbty+bNm1XL1q9fT79+/Z46rtA9SRYLIYQQQgghhKjUEhMTGTx4MN7e3iQkJODr66skHrXmz5/Pu+++i7+/Pzt27CAyMpKFCxcSFRWl9MnOzsbDw4PTp0+zaNEi4uPjqVq1Kj4+Pty4cUM1XkJCAgkJCSxdupSlS5dy4sQJ3njjDWV5QUEBQUFBnD59muXLl7NkyRK2bNnCli1bStyHPn364OfnR0JCAt7e3oSFhbFnzx5Vn99//51x48YRFRXFl19+yaVLl+jfvz+9e/emSZMmxMfH06JFC0JCQkhLS3vm45mcnIynpyfNmzcnOTmZ5ORkEhISqFWrFsHBwUpb165dnziOu7u7knhctWqVst7jBg8eTP369UlISOD9998HChOxAwYM4Ouvv2b9+vXUqVMHT09PLly4oFo3Ly+P/v37ExoaSkJCAjY2NvTs2ZPMzEwALl26RHBwMI0aNSIhIYFNmzbRq1cvsrOzgcJz2Lt3b2rVqqXEZmdnR0pKCn5+fpibm/P1118za9YsduzYQefOnYt9uTBx4kQKCgrYsGEDc+bMUdoXL17Mr7/+ytq1axk7dixz5szh/fffZ8yYMUycOJG1a9dy4cIFwsLCVOP16tWL5cuXM27cOBITEwkICCAkJITdu3er+l29epWRI0cyZswY9uzZQ7NmzZ54Lp4kNzeXfv36Kdvp1KkTly9fpl27dmRlZREXF8f69eu5efMmvr6+PHjwAChMqIeFhdGlSxd27drFmjVr8PX1JScnRzX+4sWL+e9//8vq1av56KOPWL9+PR9//LGyvCyfu2e5/p7F3bt36dKlC5cuXeLo0aPUq1evXL8XdO3atWsEBARgbm7OV199RUREBMOGDeO3334r1vf3339n5MiRRERE8NVXX3H//n169OihJGi1n8Xw8HDlmLq7u5OUlERBQQGdOnUqV2yPHj0iPz+fvLw8UlNTGT9+PNbW1qrZw1rdunXjwYMH7Nu3D4Cff/6ZH3/8kT59+pTziAhdkDIUQgghhBBCCCEqtalTp9K+fXtWrVoFgL+/P/fv31cSUnfu3GHy5MmMHz+e6dOnA+Dn54ehoSFjx44lIiICKysrYmNjycnJ4eTJk9jY2ADg6+uLi4sLc+fOZfbs2co279y5w+7du6levToAtWvXxtfXl7179+Lv78/u3bv5/vvvSUpKon379gD4+Pjg6Oioqt+pNWDAACZOnKjEf/nyZaZMmUJAQIDSJysriyNHjiiz/a5evUp4eDiRkZF8+OGHQOEM3i1btrB161ZGjRoFFCZxHn+YlPZ1fn6+KoYqVQpTBG3atFEebPf4beVGRkbY2tqW+Tb+atWq0bBhQwAaN25My5Yti/Xp3r07s2bNUrV99NFHqlj9/Pw4efIkcXFxyvmDwiTnzJkzlVvcXV1dcXZ2Zvfu3YSEhPDDDz+Ql5fH4sWLlVmO/v7+yvrNmzenVq1aGBkZqfZp2rRp1KpVi8TERAwMDIDC8+vv78+uXbvo1q2b0rdZs2Z8/vnnxfbL3t6etWvXKtvcvn07CxYs4OzZszRo0ACA3377jfDwcHJycrCwsODQoUNs376dvXv3Kok6Pz8/rl27xuTJk+ncubMyfnZ2Nrt37+a1115TbbfoOdUew8fb9fT00NP7/7mDeXl5TJs2jd69eyttb7/9NpaWluzfvx9jY2MA2rVrR7169fjiiy8YPnw4J0+exNLSUpUkLymBa2dnx5dffglAQEAA33//PZs3b2bmzJkAZfrcNW/evNzXX3llZ2fTuXNn7t+/T1JSkhJLWX8vlPQ5KygoUB17jUbzXGUWFixYQJUqVdi5c6dyTTs7Oyu/Yx5X9PdF1apV8fb25sSJE3h4eCjHsWj5CO3DKGvXrq0ar+j+aX9faEVGRhIZGam8t7S0JCEhQfkd+Tjt3RgbN26ka9eubNiwgbZt2+Ls7Fyu4yF0Q2YWCyGEEEIIIYSotB4+fEhKSgo9evRQtQcH//+D+o4dO8bdu3d58803yc/PV346duzIvXv3+OmnnwDYt28f3t7eWFpaKn309fXp0KGD6tZ6KKzd+XgSxMfHB0tLS06cOAHAqVOnsLCwUCVxtKUHSlI0/p49e5KSkqKayWpvb6+6LdzFxQWAjh07Km0WFhbY2NioyhvExMRgYGCg/ISFhZGWlqZq0yZFX7aSkovnzp2jR48e2Nraoq+vj4GBAefPny82s1hPT0+1705OTpiYmJCeng6Am5sb+vr69OvXjx07dnDr1q0yxXT06FGCgoJUx6RTp05YWFjw7bffPjV+KEzyPs7FxQV7e3slUaxtA5R49+3bh6WlJT4+Pqrr1M/Pjx9++EF1LVhZWRVLFAPFzmlaWhphYWGqtpiYmGLrFd2Pffv20b17d6pUqaLEUaNGDZo3b658Ftzd3cnKyiI0NJT9+/fz559/lulYNGzYUNln7bbK+rnTlYyMDKVkyqFDh5SkcHnie+edd1TH+eOPPyYpKUnV9rw1iE+dOoW3t7eSKAaUki1FFf19of3i5vFj/yTaMhVa3bt3V+3Ld999p1o+atQoTp06xalTp9i5cydt27YlKCiIH3/8scTx+/bty7Zt27h37x4bN26kb9++ZYpL6J7MLBZCCCGEEEIIUWndvHmT/Px8VXIHwNbWVnmdkZEBFCa3SqJNrGZkZHD8+PESE6dFkzxFt6dt09YtvnbtGjVr1iyxT0lKij8vL4+MjAxlX4rOSDY0NCy1/f79+8r7wYMHExgYqLxPTExkxYoVbN++vcRYXqbHzxMUztju1KkTNWvWZP78+dStWxdjY2Peffdd1T4BmJiYKMdA6/F9d3FxITExkenTp9OjRw/09PQICAhg8eLF1KlTp9SYsrOzi8WljfXxusUlxa9V0jkp7fxp483IyCArK6vUxP21a9dwdHR84naLJle7d+9e7Pzb29ur+piammJmZqZqy8jIIDY2ltjY2GLb0Mbt4+PD2rVr+eSTT/D398fY2Jjg4GBiY2NVycuS9ltbykK7rbJ+7nTlwoULZGdnExsbS40aNVTLyhpfdHQ0I0aMUN6vWLGClJQUli9frrSV9BDC8rh27RqvvPJKsfaSfq887Xorjfb6SE9PV77QgMIZ1tHR0aSkpDB06NBi6zk6OqruHvD19cXR0ZGYmBg2b95crL+/vz8GBgZ89NFH/PLLL/Tq1euJcYmXR5LFQgghhBBCCCEqrZo1a1KlSpVitUOvX7+uvNYmrrZs2VLs1mpAufXZ0tKSgIAAVT1VraJJnpJqld64cQM7Ozug8Nb7mzdvltinJDdu3MDBwUEVv4GBAdbW1iX2Lw97e3tVgvCnn37C0NCwxLIQL1vR2YvJycmkp6eTmJhI06ZNlfZbt24pidLyCAgIICAggNu3b7Nnzx7GjBnDwIEDOXDgQKnrWFpalnierl+/XmwGZ9H4n4elpSU1a9ZUHsBX1OMJwdK2W/ScGhoa4uTk9MRzXdJYlpaWdO3aleHDhxdb9vis1pCQEEJCQsjIyGDbtm2MGTMGAwMDvvjii1K3V9K2yvq505V27drRsWNHxo4di5WVFSEhIeWOz8nJSfXwysTERC5cuPBCP2fl/b3yLDw9PdFoNOzbtw8fHx+l/R//+AdQWNe5LIyMjKhXrx5nz54tcbmBgQE9e/Zk/vz5+Pr6lvoFiHj5JFkshBBCCCGEEKLS0tfXx93dnYSEBMaMGaO0Pz6TrW3btpiampKenl6s3MPjOnbsyLp162jQoAFVq1Z94nYPHTrErVu3lFIUBw8eJCsrSykN0KpVK3JyckhKSsLT0xMoTLIcOHCgxJrFCQkJNG/eXHmvfVjd89Q3fdGKzlgu6zrw9NmMWvfu3VOtB4VlRFJTU1W31JdXtWrV6NWrFydOnGDDhg1P7Ovh4cHWrVuZN2+eUpd1//795OTk4OHh8cwxPE3Hjh2ZPXs2hoaGuLm56Ww7ZY3lp59+onnz5mW6Bq2trQkLC2PXrl2cO3eu3Nsqy+fuWa6/8hg9ejT37t0jNDRUmSVdnvhehlatWrF8+XLu3LmjJO2PHj1abMZ7WRkYGBQ7pnXr1qVnz54sWbKEt99+W1U6pTzu37/PpUuXnrj+u+++y40bNxg0aNAzbUPohiSLhRBCCCGEEEJUalFRUQQFBTFw4ED69OlDSkqK8nAxKLwdOyYmhvHjx5Oeno6Xlxf6+vpcvnyZbdu2ER8fj6mpKWPHjuXLL7+kQ4cOjBo1ijp16nDz5k1OnDiBvb29Khltbm5O586dmTBhAjk5OURGRtK6dWvlAWqdO3fG3d2dfv36MWPGDCwsLJg9ezbm5uaqh4tprVmzBhMTE9zd3dm4cSNJSUns3LlT9wevHBo0aMDBgwfZv38/NWrUwNnZGSsrqyeu4+Ligr6+PitXrqRKlSpUqVLliTMt27Rpg5mZGe+99x4TJkzgt99+Y/LkyapZ12W1fPlykpOTCQgIwM7Ojl9++YV169YpD48rTVRUFO3atSMwMJDw8HCuX7/OhAkTaN26tfIwPV3w8/OjW7duBAQEMH78eNzc3Pjjjz84e/YsFy9eLPFBeroyZcoUWrVqhb+/P4MHD8bW1pbff/+dI0eO0L59e/r27cvkyZPJzMzEy8sLGxsbzpw5w549exg7dmy5tlXWz92zXH/lNXHiRO7du0e/fv0wNjYmMDCwXL8XnsWZM2eKlWkwMzNTPdxSa8yYMXz66ad07dqViIgIcnJymDJlCtbW1iX+XnmaBg0asG3bNtq3b0/VqlVxdXXF3NycpUuX4uPjQ9u2bRkxYgTt27fH2NiY3377jdWrV6Onp4epqalqrF9//ZXjx48DheWBlixZQmZmZoklK7Rat27N1q1byx230C1JFgshhBBCCCGEqNS6d+/OsmXLmDZtGhs3buS1115j06ZNqgeAjRs3DgcHB+bPn8+iRYuUh00FBgYqs1itrKw4fvw4kyZNIjIykszMTGxsbGjTpk2xGck9evTA0dGRoUOHkp2djZ+fH8uWLVOWazQatm3bxpAhQxg8eDA1atRg5MiRnD9/ntOnTxfbhw0bNjBx4kRiYmKwsbFhxYoVOk1MPovp06czbNgwevbsyZ07d1i1ahWhoaFPXMfa2polS5Ywe/Zs1q5dS35+PgUFBaX2t7W15euvv+b9998nKCgIFxcXli9fzqxZs8odr5ubGzt27GDs2LFkZmZSq1Yt+vbtW2I5gce1aNGCffv2MXHiRHr27EnVqlXp3r078+bN0/lM782bNzNz5kw+/fRT0tLSqF69Oo0bN2bgwIE63W5R//jHPzh58iSTJk1i+PDh3L17Fzs7Ozw9PZVZz61atSI2NpavvvqK27dv4+joSEREBJMmTSrXtsr6uXuW6+9ZxMTEcO/ePYKDg0lMTKRjx45l/r3wLNasWcOaNWtUbfXr1+fixYvF+trZ2bF7925GjhxJcHAw9evX55NPPmHEiBGqB26W1ZIlSxg1ahSdO3fm3r17HDp0CC8vL6ytrTl27BiffPIJX3/9NQsWLODhw4fUqVMHb29vTp8+rTwwT2vRokUsWrQIKPyCrkGDBiQkJPD666+XOy5RsTQFT/otLUp0+/Ztqlevzq1bt6hWrVpFh1NptIhY8/ROz+HjYC+djt94b8lPuX1RzNu9pdPxA89t0+n4g3z662xs52GbdDY2gPtQ3d7ysjql/H+0y6O5b+kP53gRDq9/8v9MP692fv46Hb9Wuu4eimHXruQH1LwosUeKPwjiRSpptsKL9OuVkTod/1XXd3Q6/lsXnHU29sQG/9DZ2ABz4v6l0/Hlb+6TVea/uaGNitemFE9WWf9tcP/+fX755RecnZ0xNjau6HAqHScnJwIDA1m8eHG51svNzaVhw4a0b9+eVatW6Sg6IcT/kv/+97+8+uqrrFy5krfffruiwxF/YWX92y8zi4UQQgghhBBCCB1YsWIFjx49wtXVlezsbJYuXUpqaiobN26s6NCEEJXUxIkTcXNzw97ensuXLzN9+nTs7Ozo2bNnRYcm/iYkWSyEEEIIIYQQQuiAsbExM2fOJDU1FYCmTZuyc+fOJ9bsrUwKCgp4+PBhqcv19PSeqY6qEGXxv3r95ebmEhkZyfXr1zExMcHLy4s5c+ZgZmZW0aGJv4m/36dGCCGEEEIIIYTQodTU1DKVoBgwYAA///wzf/75J3/++SfJycnKA/D+DlavXo2BgUGpPzExMRUdovgb+1+9/ubNm8evv/7KgwcPyMnJYevWrbzyyisVHZb4G5GZxUIIIYQQQgghhCi3bt26cerUqVKX29vbv8RoxP8auf6E0I1KmyzeuHEjs2fP5ty5c5iYmODj48OsWbOoX//pDzJ6+PAh7du3Jzk5GYDIyEhmzpyp65CFEEIIIYQQQoi/DSsrK6ysrCo6DPE/Sq4/IXSjUpah+OKLL+jbty8//PADdnZ2PHz4kPj4eNq1a8fvv//+1PVjYmKURLEQQgghhBBCCCGEEEKISpgszs3NZcKECQD07NmTy5cvc+7cOczNzblx4wbTp09/4vrHjh1j2rRp9OrV62WEK4QQQgghhBBCCCGEEJVCpUsWnzp1ioyMDKAwWQyFdWjatGkDwJ49e0pd9/bt24SEhGBvb8/y5cvLvM0HDx5w+/Zt1Y8QQgghhBBCCCGEEEL8nVS6ZPGVK1eU1zY2NsprW1tbAH799ddS133vvfdIS0tj3bp1WFhYlHmbM2bMoHr16spP7dq1yx+4EEIIIYQQQgghhBBC/IVVumRxaQoKCp64PCEhgXXr1vHBBx/g6elZrrEnTpzIrVu3lJ/HE9ZCCCGEEEIIIYQQQgjxd1DpksWPz+q9ceNGsdd16tQpcb1///vfAMyfPx8zMzPMzMyUZfPnz8fR0bHUbRoZGVGtWjXVjxBCCCGEEEIIIYQQQvydVLpkcatWrbCysgIgPj4egKtXr3L8+HEAAgICAHj11Vd59dVXWbx4sWr9P//8kz/++IM//vhDacvLy+Pu3bsvI3whhBBCCCGEEC9BTk4OGo2GuLi4ig7lieLi4tBoNMqzef4qsrKy6NGjBzVq1ECj0bB161ZiY2PZtWtXucZJTU0lOjqaq1ev6ijS55Obm8vAgQOpWbMmGo2G2NjYig7ppRoyZAhWVlbcvHlT1Z6eno65uTnvv/++qv2PP/5g+vTpNG/eHDMzM4yNjXFxcWHo0KGcOXNG1Vej0ah+bG1t6datW7F+L9OzXMOl0Wg0zJ07t9TloaGhNG7cuNzjlnW96Ohojh07VuIyXZyn6OhoNBoNDg4OPHr0qNg2//nPf6LRaAgNDS37zoq/pCoVHUB5GRoaMn36dIYMGUJ8fDz16tUjMzOTO3fuYG1tzYQJEwA4f/48gPIHNzo6mujoaNVYGo0GgMjISGbOnPnydkIIIYQQQggh/qIOrf6swrbt/fagCtu2UJs/fz6HDh1izZo12NjY4OrqyujRowkMDKRLly5lHic1NZUpU6YQGBiIvb29DiN+NmvWrGHt2rWsXr2a+vXr4+TkVNEhvVQzZ85k69atvP/++6xevVppHzFiBJaWlkyZMkVpy8jIwMfHh7S0NMLDw2nfvj2GhoacPXuWzz//nG3btnHt2jXV+OHh4fTr14+CggLS09OZPn06nTp1DXVuOwABAABJREFU4ty5c+V6ltSLEhsbW+5r+Fl9+OGHqomKL9qUKVMwMzOjXbt2qnZdnicDAwMyMjJISkrCy8tLaU9LSyM5OVl1F7+ovCpdshhg8ODBVK1alblz53Lu3DmMjY154403mDlz5l/yj48QQgghhBBCCPFXERcXR3R0NKmpqaX2+c9//oObmxvdu3d/aXHdu3cPExOTl7Y9KNxPe3t7+vfv/9xjVUT8UPgMp9zcXIyMjIotc3JyIjo6utTZnjVq1GDu3LkMGDCAgQMH4uXlxdatW9m2bRvbtm2jatWqSt9hw4Zx+fJlTpw4QaNGjZR2b29vhg8fzhdffFFs/Dp16tCmTRvlvYuLC82aNePYsWMvJWH7rKKjozl8+DCHDx9+5jHq16//4gIqB12eJ0NDQzp27MiGDRtUyeKNGzfSqFEj9PX1dbNT4qWqdGUotPr3788PP/zA/fv3ycnJIT4+nldeeUVZXlBQQEFBQbHZxI/T9pFZxUIIIYQQQghRuX322Wc4OTlhamqKr68vFy9eLNYnLi4ONzc3jI2NcXBwICoqiocPH6r6pKenExISgrW1NSYmJnh6epKSkqLq4+TkxIgRI5gzZw4ODg6YmpoSFBRUbLZeeno6gYGBmJqaUrt2bRYsWMDo0aNLnL168eJFfHx8MDU1xcnJiZUrV6qWa29N/+abb3Bzc8PExIQOHTqQmppKVlYWvXr1olq1atSvX59NmzY941EspNFoiI+P5+jRo8qt6U5OTqSlpbFkyRKl7WklPg4fPoy3tzdQWFJSu552mUajYefOnQQHB1OtWjXefPNNoHC2r4eHB5aWltSoUQMvLy9OnjypGjs6OhozMzPOnDmDh4cHpqamNG7cmL1796r6bd++nZYtW2JmZoaFhQUtW7ZUyhA4OTkxb948rly5osSmTaAnJSXRrl07TExMsLa25p133iErK0sZNzU1VTkGgwYNwsrKitatWyvHb9asWURFRWFjY4OFhQXjx4+noKCAAwcO0KxZM8zMzPD19eXKlSuqeB88eMAHH3xA3bp1MTIyokGDBqxfv17VR3st7Nq1i6ZNm2JkZMSOHTuedlpL9dZbb+Ht7c3QoUPJzMwkPDyc119/XfVFQVpaGvHx8QwfPlyVgNTS09Nj0KCn3xlgbm4OFJYDfdyWLVto1qwZxsbG2NvbM3bsWO7fv6/qk5aWRnBwMNWrV6dq1ar4+/sXK5XwtPNd3mv4eZRUTuLbb7+lefPmGBsb4+bmxv79+2nWrFmJyfzDhw/TvHlzqlatSuvWrVW/h7Sfo4iICGVfDh8+rPPzBNC3b182b96sWrZ+/Xr69ev31HFF5VBpk8VCCCGEEEIIIQRAYmIigwcPxtvbm4SEBHx9fZXEo9b8+fN599138ff3Z8eOHURGRrJw4UKioqKUPtnZ2Xh4eHD69GkWLVpEfHw8VatWxcfHR/WAdYCEhAQSEhJYunQpS5cu5cSJE7zxxhvK8oKCAoKCgjh9+jTLly9nyZIlbNmyhS1btpS4D3369MHPz4+EhAS8vb0JCwtjz549qj6///4748aNIyoqii+//JJLly7Rv39/evfuTZMmTYiPj6dFixaEhISQlpb2zMczOTkZT09PmjdvTnJyMsnJySQkJFCrVi2Cg4OVtq5duz5xHHd3d5YsWQLAqlWrlPUeN3jwYOrXr09CQoJSHzc1NZUBAwbw9ddfs379eurUqYOnpycXLlxQrZuXl0f//v0JDQ0lISEBGxsbevbsSWZmJgCXLl0iODiYRo0akZCQwKZNm+jVqxfZ2dlA4Tns3bs3tWrVUmKzs7MjJSUFPz8/zM3N+frrr5k1axY7duygc+fOxb5cmDhxIgUFBWzYsIE5c+Yo7YsXL+bXX39l7dq1jB07ljlz5vD+++8zZswYJk6cyNq1a7lw4QJhYWGq8Xr16sXy5csZN24ciYmJBAQEEBISwu7du1X9rl69ysiRIxkzZgx79uyhWbNmTzwXT7N06VJ++eUXWrZsSU5ODgsXLlQtT0pKoqCggE6dOpVr3EePHpGfn09eXh6pqamMHz8ea2tr1azU7du3ExwcTMOGDdm6dSvjx49n2bJlhISEKH3u3LmDl5cXP/zwA8uWLWPdunVkZmbi6empJNzLcr7Lew2/SNeuXSMgIABzc3O++uorIiIiGDZsGL/99luxvr///jsjR44kIiKCr776ivv379OjRw8lQav9HIWHhyv74u7urtPzpNWtWzcePHjAvn37APj555/58ccf6dOnTzmPiPirqpRlKIQQQgghhBBCCK2pU6fSvn17Vq1aBYC/vz/379/n448/BgoTTZMnT2b8+PFMnz4dAD8/PwwNDRk7diwRERFYWVkRGxtLTk4OJ0+exMbGBgBfX19cXFyYO3cus2fPVrZ5584ddu/eTfXq1QGoXbs2vr6+7N27F39/f3bv3s33339PUlIS7du3B8DHxwdHR8cSa7UOGDCAiRMnKvFfvnyZKVOmKA9xh8KHzh05ckSZMXj16lXCw8OJjIzkww8/BApn8G7ZsoWtW7cyatQooDAR9PgDqbSv8/PzVTFUqVKYImjTpo3yYLvHb003MjLC1tZW1fYk1apVo2HDhgA0btyYli1bFuvTvXt3Zs2apWr76KOPVLH6+flx8uRJ4uLilPMHhQ+nmzlzpnKbvKurK87OzuzevZuQkBB++OEH8vLyWLx4sTJT0t/fX1m/efPm1KpVCyMjI9U+TZs2jVq1apGYmIiBgQFQeH79/f3ZtWsX3bp1U/o2a9aMzz//vNh+2dvbs3btWmWb27dvZ8GCBZw9e5YGDRoA8NtvvxEeHk5OTg4WFhYcOnSI7du3s3fvXiXZ5+fnx7Vr15g8eTKdO3dWxs/Ozmb37t289tprqu0WPafaY/h4u56eHnp66rmDrq6uhISEsHLlSqZNm0bt2rVVy7UPKCzaXvTa0l5DWpGRkURGRirvLS0tSUhIUD43UDhLvE2bNsoM6oCAAExNTRkyZAhnzpyhSZMmrFq1irS0NNXx69ChA3Xq1CE2NpZ58+aV6XyXdg2X9BkpKChQHTeNRvNcZRYWLFhAlSpV2LlzpxKfs7Oz8vvhcUU/61WrVsXb25sTJ07g4eGhxF+0fIQuz5OW9k6KjRs30rVrVzZs2EDbtm1xdnYu1/EQf10ys1gIIYQQQgghRKX18OFDUlJS6NGjh6o9ODhYeX3s2DHu3r3Lm2++SX5+vvLTsWNH7t27x08//QTAvn378Pb2xtLSUumjr69Phw4dOHXqlGp8b29vVSLFx8cHS0tLTpw4AcCpU6ewsLBQJYK0pQdKUjT+nj17kpKSoprJam9vr7q13MXFBYCOHTsqbRYWFtjY2KjKG8TExGBgYKD8hIWFkZaWpmrTJkVftpJmdp47d44ePXpga2uLvr4+BgYGnD9/vtjMYj09PdW+Ozk5YWJiQnp6OgBubm7o6+vTr18/duzYwa1bt8oU09GjRwkKClIdk06dOmFhYcG333771PihMMn7OBcXF+zt7ZVEp7YNUOLdt28flpaW+Pj4qK5TPz8/fvjhB9W1YGVlVSxRDBQ7p2lpaYSFhanaYmJiiq1348YNEhISlHIGpdGWP9Dq3r27auzvvvtOtXzUqFGcOnWKU6dOsXPnTtq2bUtQUND/sXfvcT3e/+PHH+/SWUnHlShCaoQcZyHSCmHOp1jOhzmHJFZCzseY44iZmEOxHNaMHObU2uzgY8whZsykHOdQ6fdHv/f19e5dVLxntuf9duu23tf1ul6v53W9rmqe79f7efHjjz8CcP/+fU6dOqXx8wrQtWtXAOV6Hz58mOrVq2tcPysrK/z8/JQ2JZ1vgL59+2qcx9SpUzl06JDGtpetQZySkkKzZs2URDGglFvJL//PuvpNF/W98iKvep7y6969Ozt27ODhw4ds2rSJ7t27Fyku8WaQlcVCCCGEEEIIId5YN2/eJDs7W1kJrGZvb698n56eDuSVRSiIOrGanp7O8ePHC0yc5k8U5R9PvU1dt/j69evY2toW2KYgBcWflZVFenq6ci75VyQbGhoWuv3Zeq8DBw4kMDBQeZ2YmMjKlSvZuXNngbH8nZ6dJ8hbsf3ee+9ha2vL/PnzcXZ2xtjYmP79+2vVsDUxMVGugdqz5161alUSExOJjo6mffv26OnpERAQwJIlS6hQoUKhMWVmZmrFpY712brFBcWvVtCcFDZ/6njT09PJyMgoNHF//fp1nJycnjtu/jc12rZtqzX/jo6OWseFhIRgYGDApk2b6Nq1K5s3b1YSts8ec/XqVSXJDbBw4UIiIyNJTU1l8ODBWv06OTlprCj39fXFycmJqKgotm7dyu3bt8nNzdU6nzJlymBkZKRc7+fNifrNnpLON+Stbh42bJjyeuXKlaSmprJixQplW0EPECyO69evazxrS62g3wkvulcKo6t5ys/f3x8DAwM++ugjLl26RJcuXZ4bl3izSLJYCCGEEEIIIcQby9bWllKlSmnVFL5x44byvXrl3vbt27U+ng0oH5+2srIiICBAKV/xrPyJovzjqbc5ODgA4ODgwM2bNwtsU5A///yTcuXKacRvYGCAjY1Nge2Lw9HRUSNB+PPPP2NoaFhgWYi/W/4VkMeOHePq1askJiZSs2ZNZfudO3eURGlxBAQEEBAQwN27d9m7dy+jR4+mT58+fP3114UeY2VlVeA83bhxQ2sVaP74X4aVlRW2trbKA9nyezapWNi4+efU0NAQFxeX5871gQMH2LBhA+vXr6dLly5s376dMWPG0KpVK2UVbJMmTVCpVCQlJdG8eXPl2MqVKwN5K4SLwsjIiEqVKnH69GkgLymqUqm0rvedO3d4/Pixcr2trKw4e/asVn/556Qk8w15q9KfffBkYmIi586de6U/I8X9nVASupqn/AwMDOjYsSPz58/H19e30DcvxJtJylAIIYQQQgghhHhj6evr4+XlRXx8vMb2Z1fDvfPOO5iamnL16lXq1q2r9WVtbQ3klXP43//+h7u7u1abGjVqaPR/4MABjY+579+/n4yMDKU0QL169bh9+zaHDh1S2ty/f7/QpFX++NUPq3uZGqmvWv4Vy0U9Bl68IlLt4cOHGsdBXhmRtLS0Yo2bn4WFBV26dKFbt26cOXPmuW29vb1JSEjQqFf71Vdfcfv2bby9vV8qjudp0aIFN2/eVBL5+b/yr6J+FZ48ecKQIUNo1qwZvXr1AvIeBnnv3j2lDjaAs7MzHTt2ZOnSpS+8fs/z6NEjLly4oLwJUrp0aWrVqqW1evXzzz8HUK63t7c3P/30k0bCODMzk3379hU4J4XNd0nu4VelXr167N+/n3v37inbDh8+rLVavagMDAy0zkVX81SQ/v3706ZNG6U2uvj3kJXFQgghhBBCCCHeaOHh4bRr144+ffrQrVs3UlNTlYeLQd7qxaioKMaPH8/Vq1fx8fFBX1+fixcvsmPHDrZt24apqSljxozhs88+o2nTpowcOZIKFSpw8+ZNTpw4gaOjI6NHj1b6NDc3p2XLlkyYMIHbt28TGhpK/fr1lQdqtWzZEi8vL3r06MGMGTOwtLRk9uzZmJubaz1cDGD9+vWYmJjg5eXFpk2bOHToELt27dL9xSsGd3d39u/fz1dffUXZsmWpWLGikmgvTNWqVdHX12fNmjWUKlWKUqVKPXe1ZsOGDSldujQffvghEyZM4PfffyciIkJj1XVRrVixgmPHjhEQEICDgwOXLl1iw4YNysPjChMeHk6jRo0IDAxk+PDh3LhxgwkTJlC/fn3lYXq64OfnR5s2bQgICGD8+PF4enry4MEDTp8+zfnz5wt8kN7LmjlzJpcuXWLHjh3KNkdHR6ZOnUpISAjBwcHUqlULgGXLltG8eXPeeecdhg0bRuPGjTE2Nub3339n3bp16OnpYWpqqtH/lStXOH78OJBXMmbp0qXcunVLoxRCZGQk77//PkFBQQQFBXH27FkmTpxIx44dlTdp+vTpw4IFC2jdujXTpk3D2NiY6dOnU6pUKUaNGgUUbb5Lcg8/z08//aSV6C5durTGgynVRo8ezccff0zr1q0ZN24ct2/fZsqUKdjY2BT4O+FF3N3d2bFjB40bN8bMzAw3NzfMzc11Nk/51a9fn4SEhGLHLf75JFkshBBCCCGEEOKN1rZtW5YvX8706dPZtGkTDRo0YPPmzRoPAAsJCaFcuXLMnz+fmJgY5YFVgYGByopNa2trjh8/zqRJkwgNDeXWrVvY2dnRsGFDrQfQtW/fHicnJwYPHkxmZiZ+fn4sX75c2a9SqdixYweDBg1i4MCBlC1blhEjRnD27FlOnTqldQ5xcXGEhYURFRWFnZ0dK1eu1GlisiSio6MZMmQIHTt25N69e6xdu5bg4ODnHmNjY8PSpUuZPXs2n376KdnZ2eTm5hba3t7eni1btjB27FjatWtH1apVWbFiBbNmzSp2vJ6ennzxxReMGTOGW7du8dZbb9G9e/cCy4w8q06dOiQlJREWFkbHjh0xMzOjbdu2zJs3T+crvbdu3crMmTP5+OOPuXz5MmXKlKF69er06dPnlY91/vx5ZsyYwfjx43Fzc9PYN2zYMGJjYxkyZAhHjx5FpVJhY2PD0aNHWbRoEVu2bGHBggXk5ORQoUIFmjVrxqlTp5QHsanFxMQQExMD5L1p4+7uTnx8PO+//77Spm3btmzZsoWoqCjatWuHlZUVAwcOZMaMGUobc3NzkpOTGTNmDAMHDiQnJ4d3332XQ4cOKaVlijLfJbmHn2f9+vWsX79eY5urqyvnz5/Xauvg4MCePXsYMWIEnTp1wtXVlUWLFjFs2DCNh2UW1dKlSxk5ciQtW7bk4cOHHDhwAB8fH53Nk/jvUOU+77e0KNDdu3cpU6YMd+7cwcLC4nWH88aoM279ixu9hKmdfHTaf/UvC37K7ati3qiXTvsPPLPjxY1ewoDmPXXWd8Uhm3XWN4DX4AE67X9davH/8BdHbd/nP6zhZSVvfP7/TL+sRn7+Ou3/rasv99Ti53FoVPADal6VhQe1HybxKhW04uFVuvLbCJ32X82tr07773Wuos76DnOvrLO+AebEfqPT/uVv7vO9yX9zg98eqrO+/63e1H8bPHr0iEuXLlGxYkWMjY1fdzhvHBcXFwIDA1myZEmxjnvy5AkeHh40btyYtWvX6ig6IcSb4tdff6VatWqsWbOGDz744HWHI/7livq3X1YWCyGEEEIIIYQQOrBy5UqePn2Km5sbmZmZLFu2jLS0NDZt2vS6QxNCvAZhYWF4enri6OjIxYsXiY6OxsHBgY4dO77u0IRQSLJYCCGEEEIIIYTQAWNjY2bOnKk8nK1mzZrs2rXruTV73yS5ubnk5OQUul9PT69EtViF+Ld68uQJoaGh3LhxAxMTE3x8fJgzZw6lS5d+3aEJoZBksRBCCCGEEEIIUQzq5O+L9O7dm969e+s2mNdo3bp1z62lGxERQWRk5N8XkBD/cPPmzWPevHmvOwwhnkuSxUIIIYQQQgghhCi2Nm3akJKSUuh+R0fHvzEaIYQQr0Kxk8VRUVGvPIiPPvrolfcphBBCCCGEEEII3bG2tsba2vp1hyGEEOIVKnayODIyEpVK9UqDkGSxEEIIIYQQQgghhBBCvF4lKkORm5v7ygJ41YlnIYQQQgghhBBCCCGEEMVX7GTxgQMHdBGHEEIIIYQQQgghhBBCiNeo2Mnipk2b6iIOIYQQQgghhBBCCCGEEK+R3usOQAghhBBCCCGEEEIIIcTrJ8liIYQQQgghhBBCCCGEELpPFj948IAdO3Ywb9485s+fT0JCAvfv39f1sEIIIYQQQggh/sNu376NSqUiNjb2dYfyXLGxsahUKtLT0193KBoyMjJo3749ZcuWRaVSkZCQwMKFC9m9e3ex+klLSyMyMpJr167pKNKX8+TJE/r06YOtrS0qlYqFCxe+7pBEIUpy/yUnJ6NSqfj222+VbSqVirlz5yqvfXx8CAwMfGVxFtXRo0fR09Pjk08+0dr3/vvv4+zszIMHDzS279mzh1atWmFra4uBgQH29va0bt2auLg4nj59qrQLDg5GpVIpX2ZmZtSsWbPAsf4uycnJREdHv5K+goODqV69+nPHyj/vRVHU4xISEvj4448L3f+q5yktLU1ps3fvXq3xVq1apex/FYpdszg3N5evvvoKgPLly+Pu7l5o23Xr1hESEkJmZqbGdjMzM6ZPn87w4cOLO7wQQgghhBBCCB06M33/axvbPbz5axtbaJo/fz4HDhxg/fr12NnZ4ebmxqhRowgMDKRVq1ZF7ictLY0pU6YQGBiIo6OjDiMumfXr1/Ppp5+ybt06XF1dcXFxed0hiUIsXLiw2PdfQY4dO4azs/MriqrkGjVqRL9+/QgNDaVdu3bY2NgAeYnIHTt2sHPnTszMzJT2EydOZMaMGbRv354lS5bg4ODAjRs3SEhIICgoCCsrK/z9/ZX2lSpV4rPPPgPg3r17xMfH079/f8zMzOjWrdvfe7LkJWLnzp3LxIkTdT6Wl5cXx44de27O8mUkJCTw7bffMnToUK19upyn0qVLs2nTJgICAjS2x8XFUbp06Ve2OLfYK4tPnjxJQEAALVu25Jdffim03aeffkqfPn3IzMwkNzdX4+v+/fuMGjWK+fPnv1TwQgghhBBCCCGEKJ7Y2NgXJkV/+eUXPD09adu2LQ0bNqRs2bI6j+vhw4c6HyO/X375BUdHR3r27EnDhg156623StzX64gf8hb1PX78uMB9Li4uxV5d/7rO4+/SsGFDHBwcdD5OZGQkPj4+z20za9Ys9PT0GDt2LAD3799n+PDhtG/fnjZt2ijtdu3axYwZM4iIiGD79u107dqVJk2a0LlzZz777DOOHTuGnZ2dRt8mJiY0bNiQhg0b4ufnx8cff0ytWrXYvn37Kz/XV0m9ijYtLa3EfVhYWNCwYUONZPvfQdfz1K5dO+Lj43n06JGy7fr16xw8eJD333//lZ1HsZPF+/btA8DOzq7QQDIzMxk5ciSQ90urcuXKTJ48mWXLltGvXz9KlSpFbm4ukydP5vfffy959EIIIYQQQgghBHkfw3VxccHU1BRfX1/Onz+v1SY2NhZPT0+MjY0pV64c4eHh5OTkaLS5evUqQUFB2NjYYGJiQpMmTUhNTdVo4+LiwrBhw5gzZw7lypXD1NSUdu3acf36da2+AgMDMTU1pXz58ixYsIBRo0YVmKg9f/48zZs3x9TUFBcXF9asWaOxX/2x63379uHp6YmJiQlNmzYlLS2NjIwMunTpgoWFBa6urmzevLmEVzGPSqVi27ZtHD58WPlos4uLC5cvX2bp0qXKthclIZOTk2nWrBkA9erV0/iYtPrj3rt27aJTp05YWFjQuXNnIG+1r7e3N1ZWVpQtWxYfHx9Onjyp0XdkZCSlS5fmp59+wtvbG1NTU6pXr86XX36p0W7nzp3UrVuX0qVLY2lpSd26dZVSBi4uLsybN4/ffvtNiU2doDp06BCNGjXCxMQEGxsb+vbtS0ZGhtKvOqEVGxvLgAEDsLa2pn79+sr1mzVrFuHh4djZ2WFpacn48ePJzc3l66+/platWpQuXRpfX19+++03jXgfP37MxIkTcXZ2xsjICHd3dzZu3KjRRn0v7N69m5o1a2JkZMQXX3zxomktkPo6njx5knfeeQdjY2OWLl0KwJkzZ2jXrh1lypTBzMyM1q1bc+HCBY3j16xZw9tvv42JiQnW1tZ4e3uTkpKi7FepVMyePZvIyEjs7e2xsbGhT58+WuUVXvRzV5L7rzD5y1Dk9/DhQ1q3bk2lSpW4ePFikeIrKSsrK+bMmcO6detITk5m0qRJ3L59m8WLF2u0mz9/Pg4ODkyaNKnAfurXr0/t2rVfOJ65uTlZWVka2y5fvkynTp2Uefb39+enn37SaPP06VOmTZuGi4sLRkZGVKtWjRUrVmi0uXr1Kl26dMHe3h5jY2MqVqzI6NGjgbz7bMqUKTx48ECZvxcl0l9GQeUk7ty5Q1BQEObm5tjZ2TFx4kTmzZtXYOmGzMxMevTogbm5Oc7OzsyePVvZFxwczLp16zh9+rRyLsHBwYBu5wmgZcuWqFQqjXIsmzZtonLlytSpU+eF/RZVsctQnDx5EpVKRdu2bQuthbFu3TqlPpS3tzd79uzB1NQUgEGDBtGlSxdatmzJo0eP+PTTT5kwYcLLnYUQQgghhBBCiP+sxMREBg4cSHBwMN26dSM1NVVJPKrNnz+f8ePHM3r0aObNm8eZM2eUZPHMmTOBvASBt7c3pUuXJiYmhjJlyhATE0Pz5s359ddfNVaExcfH4+zszLJly8jMzCQ0NJQOHTpw7NgxIG/hVLt27bhx4wYrVqygTJkyzJkzh8uXL6Onp71uq1u3bgwaNIjQ0FA2bdpEv379cHR01Pi48R9//EFISAjh4eEYGBgwYsQIevbsiampKU2aNGHAgAGsWrWKoKAgGjZsWOKP2h87dozQ0FDu3bun1OU0MjKiVatWeHt7ExISAoCrq+tz+/Hy8mLp0qV8+OGHrF27lmrVqmm1GThwIEFBQcTHx6Ovrw/kJWJ79+6Nq6srT548IS4ujiZNmvDjjz9StWpV5disrCx69uzJiBEjmDx5MrNmzaJjx45cvnwZa2trLly4QKdOnejevTszZszg6dOn/PDDD0qpzPj4eGbNmsXBgweJj48HwMHBgdTUVPz8/PDx8WHLli3cuHGDCRMmcPr0aY4eParECRAWFlZgLdIlS5bg4+PDp59+yokTJ4iIiCAnJ4evvvqK8PBwDA0NGTFiBP369SMpKUk5rkuXLhw5coSIiAjc3d3ZvXs3QUFBlC1blpYtWyrtrl27xogRI5g0aRIVKlSgQoUKRZvcAjx58oQePXowevRooqOjsba25uLFizRq1Ijq1asTGxuLnp4e06dPx9fXl7Nnz2JkZMShQ4fo168fY8eOpVWrVvz111+cPHmS27dva/S/ZMkSGjduzLp16zh37hzjxo3D3t6+WD938fHxxb7/SuL+/fu0adOG69evc/jwYcqVK1es3wsl8cEHH7B27Vp69+7NtWvXmDt3Lk5OTsr+7OxsvvnmGzp16kSpUsVL42VnZyvntX37dr755hvWr1+v7L937x4+Pj7o6emxfPlyjI2NmT59uvLzVr58eQDGjRvHokWLmDRpEo0aNSIxMZHBgweTlZXFsGHDAJT4Fy9ejL29PVeuXFGStf379+fq1ats3LiR/fvzSh1ZWFiU/KKVQJ8+fdi/fz+zZ8/G2dmZVatWFZrwHzx4ML169SI+Pp6EhARCQ0Px9PQkICCAyZMnc/PmTX755RelfIStra1O50nNyMiIDh06EBcXR4cOHYC8EhTdu3cv1ngvUuxk8blz5wB49913C22j/iULeTVl1IliNT8/Pzp37szmzZs5cOCAJIuFEEIIIYQQQpTYtGnTaNy4MWvXrgXA39+fR48eMXXqVCAvIRIREcH48eOVByz5+flhaGjImDFjGDduHNbW1ixcuJDbt29z8uRJJQHk6+tL1apVmTt3rsbqsnv37rFnzx7KlCkD5D3Tx9fXly+//BJ/f3/27NnDd999x6FDh2jcuDEAzZs3x8nJCUtLS61z6N27N2FhYUr8Fy9eZMqUKRrJ4oyMDA4ePMjbb78N5CUMhw8fTmhoKJMnTwbyVvBu376dhIQE5RO/T58+1Uhkqr9XJyjU1AkOddkJlUpFw4YNlf1GRkbY29trbHseCwsLPDw8AKhevTp169bVatO2bVtmzZqlse2jjz7SiNXPz4+TJ08SGxur8YCsJ0+eMHPmTKWGrZubGxUrVmTPnj0EBQXx/fffk5WVxZIlSzA3NwfQqBVau3Zt3nrrLYyMjDTOafr06bz11lskJiZiYGAA5M2vv78/u3fv1igPUKtWLVavXq11Xo6Ojnz66afKmDt37mTBggWcPn1aqaP6+++/M3z4cG7fvo2lpSUHDhxg586dfPnll7z33ntA3n16/fp1IiIiNJLFmZmZ7NmzhwYNGmiMm39O1dfw2e16enoab1hkZWUxffp0unbtqmz74IMPsLKy4quvvsLY2BjIq7FbqVIlPvnkE4YOHcrJkyeVlbFqrVu31hrfwcFBSaoFBATw3XffsXXrViVZXJSfu9q1axf7/iuuzMxMZWHjoUOHlFiK+nuhoJ+z3NxcjWuvUqk03mxQmzp1Kk2aNKFatWpaz/e6desWjx8/VhK3arm5uRqfjMg/r6dPn1buX7WQkBB69uypvF67di2XL1/WuC+bNm1KhQoVWLhwIfPmzSM9PZ2YmBjGjRtHZGQkAO+99x7p6elERUUxZMgQ9PX1OXnyJDNmzNC4j3r37g2Ak5MTTk5O6Onpac1f/vNQf5+Tk6Nx7fT19Uv8ALf//e9/xMfHs379enr16gXk3YsFvYEF0LFjR+VcfX192bVrF1u3biUgIABXV1dsbW25fPmyxrncuHFDZ/P0rO7du9OuXTvu37/PjRs3SElJYcOGDcV++OPzFLsMhfoJplWqVClwf1ZWlrL6uEqVKoUur27Xrh2QN2FCCCGEEEIIIURJ5OTkkJqaSvv27TW2d+rUSfn+6NGj3L9/n86dO5Odna18tWjRgocPH/Lzzz8DkJSURLNmzbCyslLa6Ovr07RpU42P1gM0a9ZMSRRDXiLYysqKEydOAJCSkoKlpaWSKAaU0gMFyR9/x44dSU1N1UgyODo6KoliQFll26JFC2WbpaUldnZ2GuUNoqKiMDAwUL769evH5cuXNbblT1b8XQpKLp45c4b27dtjb2+Pvr4+BgYGnD17Vlm8pqanp6dx7i4uLpiYmHD16lUAPD090dfXp0ePHnzxxRfcuXOnSDEdPnyYdu3aaVyT9957D0tLS44cOfLC+CEvyfusqlWr4ujoqPHALfX8qeNNSkrCysqK5s2ba9ynfn5+fP/99xr3grW1tVaiGNCa08uXL9OvXz+NbVFRUVrH5T+PpKQk2rZtS6lSpZQ4ypYtS+3atZWfBS8vLzIyMggODuarr77ir7/+KtK18PDwUM5ZPVZRf+50JT09XSmZcuDAAY3VwkWNr2/fvhrXeerUqRw6dEhjW2GroVesWKGUQSmsVm/+ROm2bds0+h4xYoTGfldXV1JSUkhJSeHgwYNMmzaNmJgYjfk/fPgw1atX17gvrays8PPzU+71EydOkJWVpfVpja5du3Lz5k3l59LLy4u5c+eybNmyAssAFebgwYMa51G5cmUAKleurLH94MGDRe4zP/U8tW3bVtmmp6en8cbPs9Rv1kDedXd3d9e4Z59HF/P0rObNm2Nubk5CQgJxcXF4eXlpfOLiVSj2ymL1D39hRaJ/+OEHHj9+jEql0vijmJ968tUf/xBCCCGEEEIIIYrr5s2bZGdna30U3N7eXvk+PT0dyEtmFESdWE1PT+f48eMFJk7zJ3kK+ui5nZ2dUrf4+vXr2NraFtimIAXFn5WVRXp6unIu+VckGxoaFrr92QcgDRw4kMDAQOV1YmIiK1euZOfOnQXG8nd6dp4gb8X2e++9h62tLfPnz8fZ2RljY2P69++vcU6Q92Ao9TVQe/bcq1atSmJiItHR0bRv3x49PT0CAgJYsmTJc8s2ZGZmasWljvXZusUFxa9W0JwUNn/qeNPT08nIyCg0cX/9+nWlPEFh4+ZPrrZt21Zr/h0dHTXamJqaUrp0aY1t6enpLFy4kIULF2qNoY67efPmfPrppyxatAh/f3+MjY3p1KkTCxcuxMrKSmlf0Hk/+0C+4vzc6cq5c+fIzMxk4cKFWg9zLGp8kZGRSkkGgJUrV5KamqpR29fIyEirj6+//prPPvuM1atXM2PGDIYPH66xStTa2hojIyOtZKWvr2+BSVA1Y2NjjdX8TZo04caNG0yfPp1hw4ZhZWX13Htd/SaaOm+Xv536tfpnYvPmzYSHhxMeHs7QoUNxc3MjOjpaKZdQmDp16mjct9evX6dt27bs3LlT40GEbm5uz+3nea5fv46BgYHGG3xQ+O/jgu7Z/OVV8tPlPD1LX1+fLl26EBcXR1paGn379n1uXCVR7GSxqakp9+/fLzTJq34XFXhucWX1x1sKKtgshBBCCCGEEEIUha2tLaVKleLPP//U2H7jxg3le/U/trdv3671EWGAihUrKu0CAgKU8hXPyp/kyT+eeps6ueHg4MDNmzcLbFOQP//8k3LlymnEb2BggI2NTYHti8PR0VEjQfjzzz9jaGhYYFmIv1v+VXjHjh3j6tWrJCYmUrNmTWX7nTt3NOq4FlVAQAABAQHcvXuXvXv3Mnr0aPr06cPXX39d6DFWVlYFztONGze0Ejcl/Vh8YePa2toW+nHyZxNbhY2bf04NDQ1xcXF57lwX1JeVlRWtW7dm6NChWvvUJT0AgoKCCAoKIj09nR07djB69GgMDAz45JNPCh2voLGK+nOnK40aNaJFixaMGTMGa2trgoKCih2fi4uLxsMrExMTOXfu3HOv/ePHjxk6dCi+vr7069ePcuXK0bJlS7Zt20bHjh2BvPzZu+++y9dff01OTo5SxqJs2bJK3/nfNCmMu7s7T5484ddff6VBgwZYWVlx9uxZrXbP3uvq/xb0O+rZ/Q4ODqxZs4bVq1eTmprKtGnT6Nq1K2fPnqVSpUqFxmRubq5xjdQrq2vUqFHgw0BLwsHBgaysLO7cuaORMC7s93FJ6HKe8uvevbuyQPfZsh+vSrGTxU5OTvzyyy+kpKTQtGlTrf3PLgt/Xh2ZW7duAZq/ZIQQQgghhBBCiOLQ19fHy8uL+Ph4Ro8erWzfunWr8v0777yDqakpV69e1Sr38KwWLVqwYcMG3N3dC/00rdqBAwc0Eg/79+8nIyND+Yd9vXr1uH37NocOHaJJkyZA3sOLvv766wJrFsfHx2uUcdy2bRt16tQpsL7p65J/xXJRjwGKfNzDhw81joO8MiJpaWkaJTiKy8LCgi5dunDixAni4uKe29bb25uEhATmzZunLHT76quvuH37Nt7e3iWO4UVatGjB7NmzMTQ0xNPTU2fjFDWWn3/+mdq1axfpHrSxsaFfv37s3r2bM2fOFHusovzcleT+K45Ro0bx8OFDgoODlVXSxYmvJGbMmMHly5f54osvgLw3Nzp27MioUaPw9/dXVnyPGTOGwMBAoqOjlfrkJaFeLax+E8rb25utW7dy9uxZZeVuZmYm+/btY+DAgQDUr18fAwMDtmzZovE76vPPP8fOzk6rBIKenh716tVj2rRp7Ny5k/Pnz1OpUiWtFeV/J3WydseOHUod5adPnyrXvbgKuxd1NU/5vfPOO/To0QM7O7sSvYn2IsVOFjds2JAzZ86watUqRo4cqbEMPz09nV27dgF5J1SrVq1C+1GfeEmfziqEEEIIIYQQQgCEh4fTrl07+vTpQ7du3UhNTVUeLgZ5HymOiopi/PjxXL16FR8fH/T19bl48SI7duxg27ZtmJqaMmbMGD777DOaNm3KyJEjqVChAjdv3uTEiRM4OjpqJKPNzc1p2bIlEyZM4Pbt24SGhlK/fn3lAWotW7bEy8uLHj16MGPGDCwtLZk9ezbm5uYaDzdSW79+PSYmJnh5ebFp0yYOHTqk/Pv6n8Ld3Z39+/fz1VdfUbZsWSpWrIi1tfVzj6latSr6+vqsWbOGUqVKUapUqeeutGzYsCGlS5fmww8/ZMKECfz+++9ERERorGgsqhUrVnDs2DECAgJwcHDg0qVLbNiwQaMeaUHCw8Np1KgRgYGBDB8+nBs3bjBhwgTq16+vPExPF/z8/GjTpg0BAQGMHz8eT09PHjx4wOnTpzl//nyBD9LTlSlTplCvXj38/f0ZOHAg9vb2/PHHHxw8eJDGjRvTvXt3IiIiuHXrFj4+PtjZ2fHTTz+xd+9exowZU6yxivpzV5L7r7jCwsJ4+PAhPXr0wNjYmMDAwGL9XiiOc+fOMXPmTEJDQzUSrgsXLsTd3Z3IyEjmzp0L5NWUnjBhAh999BGnTp2ia9euODg4cOfOHQ4fPswff/yhtRjz4cOHHD9+XPn+8OHDrFq1Cj8/P6V8Rp8+fViwYAGtW7dm2rRpGBsbM336dEqVKsWoUaOAvPze8OHDmTNnDsbGxjRs2JDdu3ezceNGYmJi0NfX586dO/j7+9OrVy/c3Nx48uQJMTExWFpaKuV/3N3dyc7OZtGiRTRq1AgLC4uXKi1x9+5djTcF1dS1p5/19ttv0759e0aMGMFff/2Fs7MzK1eu5OHDhyX6dIC7uztr1qwhLi6OKlWqYGNjg4uLi87mKT+VSqXxN+5VK3ayuHfv3qxdu5bz58/z/vvvM2/ePFxdXTlz5gzDhg1TLnSPHj2e28/BgwdRqVRUr169xMELIYQQQgghhBBt27Zl+fLlTJ8+nU2bNtGgQQM2b96s8fHdkJAQypUrx/z584mJiVEeNhUYGKisYrW2tub48eNMmjSJ0NBQbt26hZ2dHQ0bNtRakdy+fXucnJwYPHgwmZmZ+Pn5sXz5cmW/SqVix44dDBo0iIEDB1K2bFlGjBjB2bNnOXXqlNY5xMXFERYWRlRUFHZ2dqxcuVKnicmSiI6OZsiQIXTs2JF79+6xdu1agoODn3uMjY0NS5cuZfbs2Xz66adkZ2eTm5tbaHt7e3u2bNnC2LFjadeuHVWrVmXFihXMmjWr2PF6enryxRdfMGbMGG7dusVbb71F9+7dCywn8Kw6deqQlJREWFgYHTt2xMzMjLZt2zJv3jydr/TeunUrM2fO5OOPP+by5cuUKVOG6tWr06dPH52Om1/lypU5efIkkyZNYujQody/fx8HBweaNGmirHquV68eCxcu5PPPP+fu3bs4OTkxbtw4Jk2aVKyxivpzV5L7rySioqJ4+PAhnTp1IjExkRYtWhT590JxDB06lPLlyxMWFqax3cnJiSlTphAaGsoHH3xAjRo1gLxVyN7e3ixdupShQ4dy584drKysqFOnDmvWrKFbt24a/Vy8eJF33nkHyFsJ6+zszLhx45gwYYLSxtzcnOTkZMaMGcPAgQPJycnh3Xff5dChQxole+bMmYOlpSWrV69m2rRpuLi4sHz5cgYNGgTk1d2tUaMGMTExXLlyBRMTE+rWrUtSUpKyOrZNmzYMHTqUGTNm8Oeff9KkSROSk5NLfP1+++03rYfuQd5D+wqyZs0ahg0bxtixYzE2NuaDDz6gevXqLFmypNhj9+vXj5MnTzJ8+HBu3brFBx98QGxsLKCbefq7qXKf91u6EO3bt2fHjh0FZt9zc3MxNzfnzJkzWkXT1TIzM5V6IStWrKB///7Fj/w1unv3LmXKlOHOnTtYWFi87nDeGHXGrddp/1M7+ei0/+pfFvyU21fFvFEvnfYfeGaHTvsf0LynzvquOGSzzvoG8Bo8QKf9r0st8+JGL6G2b+EP53gVkjc+/3+mX1YjP3+d9v/WVd09FMOhUcEPRHhVFh7Ufqf8VQoICNBp/1d+G/HiRi+hmturf5jDs3qdq6izvsPcK+usb4A5sd/otH/5m/t8b/Lf3OC3tWtTiud7U/9t8OjRIy5dukTFihUxNjZ+3eG8cVxcXAgMDCx2kuHJkyd4eHjQuHFj1q5dq6PohBBCFEWTJk3Q19fnwIEDrzuUv0VR//YXe2UxwIYNG+jYsSNJSUla+0xNTdm4cWOhiWKA5cuX8+TJE1Qqlc7/oSqEEEIIIYQQQrwOK1eu5OnTp7i5uZGZmcmyZctIS0tj06ZNrzs0IYT4T9m2bRtXrlyhRo0a/PXXX2zcuJHDhw8THx//ukP7xylRstjMzIy9e/eye/duduzYwZUrVzA0NMTLy4t+/fq9sLjylStX6NixI+XKldNJIWYhhBBCCCGEEOJ1MzY2ZubMmaSlpQFQs2ZNdu3a9dyavW+S3NxccnJyCt2vp6dXYH1mIV4Fuf9EcZQuXZpPP/2UX3/9lSdPnlCtWjU2bNjA+++//7pD+8cpUbJYrVWrViWqobRs2bKXGVYIIYQQQgghhHht1MnfF+nduze9e/fWbTCv0bp1655bSzciIoLIyMi/LyDxnyL3nygOf39/5QGk4vleKlkshBBCCCGEEEKI/6Y2bdqQkpJS6P7nlacU4mXJ/SeEbpQoWbxnzx7Cw8MBGDt2LD169CjysRs3bmTu3LkAzJ49mxYtWpQkBCGEEEIIIYQQQrxG1tbWWFtbv+4wxH+U3H9C6Eaxi7fk5uYyevRofvjhB2xtbYuVKAbo3r07NjY2nDp1ipCQkOIOL4QQQgghhBBCCCGEEEIHip0s3r9/P+fOnUNPT48FCxYUe0CVSsXChQvR19fn559/5uDBg8XuQwghhBBCCCGEEEIIIcSrVexk8bZt2wDw8/PDw8OjRIN6eHgoRaW3bt1aoj6EEEIIIYQQQgghhBBCvDrFThafPHkSlUpFmzZtXmrgwMBAcnNzOX78+Ev1I4QQQgghhBBCCCGEEOLlFTtZfPnyZQDc3NxeauCqVasCkJaW9lL9CCGEEEIIIYQQQgghhHh5xU4W37lzBwArK6uXGlh9/N27d1+qHyGEEEIIIYQQQgghhBAvr9jJYgsLCwBu3779UgOrjzc3N3+pfoQQQgghhBBCiPxu376NSqUiNjb2dYfyXLGxsahUKtLT0193KG+kU6dOERkZyV9//VWs43x8fAgMDFReR0ZGUrp0aeV1cnIyKpWKb7/99pXFWlQBAQFUqVKFx48fa2xPTU2lVKlSLFmyRGP7rVu3mDBhAh4eHpiammJqakr16tUJCQnR+DR3WloaKpVK+dLT06NcuXL06NFD+RT56xAZGcnRo0dfuh/1+T3v2Vj5572oinLc7du3iYyM5H//+1+B+3UxT8HBwahUKho2bKg1Xm5uLuXLl0elUhEZGVnscxb/XaWKe4CtrS2ZmZn873//w8fHp8QDnzlzBgA7O7sS9yGEEEIIIYQQ4tW6feDn1za2ZbPqr21s8WY6deoUU6ZMYdiwYZiampa4n/79+9O6detXGFnJLV26lOrVqxMdHc2UKVMAyMnJYdCgQXh5eTF06FCl7fnz52nevDlZWVmMGDGCevXqoVKp+O6771i+fDlHjx7l2LFjGv1HR0fTrFkznj59yoULF/joo49o1aoVP/74I/r6+n/ruQJMmTKF0qVL06hRI52P9fHHH+vsHG/fvs2UKVOoXr06Hh4eGvt0OU+lS5fmxIkTXLp0iYoVKyrbDx8+zI0bNzAyMtLJ+Yp/r2Ini+vXr8/Zs2f54osvNH5BFdeOHTtQqVTUq1evxH0IIYQQQgghhBCieGJjY4mMjCzWM4QePnyIiYmJ7oJ6zZycnHBycvpbxlKpVBw4cKDQBXiurq5MnDiRadOm0aNHD9zc3IiJieHUqVOkpKSgp/d/HxLv0aMH2dnZpKam4ujoqGz39fVl5MiRbNiwQav/KlWqKCtRGzVqhIWFBe+//z5nz57VSnL+kwQHBwO81KcFXtf56XKenJ2dKVWqFJs2bSIsLEzZHhcXh7+/P4cPH9bhmYl/o2KXoWjZsiUASUlJHDlypESDHjp0iKSkJI3+hBBCCCGEEEKIklq1ahUuLi6Ympri6+vL+fPntdrExsbi6emJsbEx5cqVIzw8nJycHI02V69eJSgoCBsbG0xMTGjSpAmpqakabVxcXBg2bBhz5syhXLlymJqa0q5dO65fv67VV2BgIKamppQvX54FCxYwatQoXFxctGJTrzw0NTXFxcWFNWvWaOwPDg6mevXq7Nu3D09PT0xMTGjatClpaWlkZGTQpUsXLCwscHV1ZfPmzSW8iv9HpVIxc+ZMQkNDeeutt5RPBefm5jJ37lyqVq2KkZERlSpVYsGCBVrn3aVLF+zt7TE2NqZixYqMHj1a2a8u+fDTTz/h7e2tfBz/yy+/1IrjeXMWGxtLnz59gLxPQatUqgKvbVHkL0NRkL1792JqakpERESR4nsZoaGhVKxYkSFDhvDbb78xefJkhg8fTu3atZU2hw8fJiUlhUmTJmkkINUMDQ3p27fvC8dSlwfNysrS2L5ixQrc3NwwMjLCxcWFadOm8fTpU402P/30E/7+/piZmVGmTBk6derElStXNNqsWbOGt99+GxMTE6ytrfH29iYlJQXIu88Axo0bp5RdSE5OfvEFKqGCyknEx8fj5uaGsbExDRs25LvvvsPS0rLA0g1bt27Fzc2N0qVL07x5cy5cuADklY5Qr+rt3Lmzci5paWk6nyeA7t27ExcXp7zOzs5m69at9OjR44X9CpFfsZPFHTt2xMXFhdzcXDp37syvv/5arOPPnTtHly5dlF/inTp1Km4IQgghhBBCCCGEIjExkYEDB9KsWTPi4+Px9fWlc+fOGm3mz59P//798ff354svviA0NJTFixcTHh6utMnMzMTb25tTp04RExPDtm3bMDMzo3nz5vz5558a/cXHxxMfH8+yZctYtmwZJ06coEOHDsr+3Nxc2rVrx6lTp1ixYgVLly5l+/btbN++vcBz6NatG35+fsTHx9OsWTP69evH3r17Ndr88ccfhISEEB4ezmeffcaFCxfo2bMnXbt2pUaNGmzbto06deoQFBT0SmrQLlq0iHPnzvHJJ58oKx9HjhzJRx99xAcffMCuXbsIDg4mNDSU5cuXK8f17t2bH3/8kcWLF7N3716mTJmilUDNysqiZ8+eBAcHEx8fj52dHR07duTWrVtKmxfNWevWrZk0aRKQl8g9duwY8fHxL33eBdm+fTvvv/8+UVFRSmmIotxTJWVoaMiyZcs4cOAATZo0wdLSkqioKI026qTqe++9V6y+nz59SnZ2Nk+ePOHMmTNERkZSrVo1qlf/vzIwMTExDB48WDm34OBgIiMjGT9+vNLmt99+o0mTJty6dYsNGzawfPlyvvvuO5o2bcq9e/eAvMWC/fr1o1WrVuzevZv169fj6+urPMdKXXph+PDhHDt2jGPHjuHl5VXcy1Vi33//PZ07d8bDw4Pt27fzwQcf0LVrV6160ZBX8mTOnDnMnDmT2NhYzp8/T1BQEAAODg7Kz3Z0dLRyLg4ODjqdJ7Vu3brx888/K/WSk5KSePjwIW3bti3WmEJACcpQGBgYMHfuXDp16sSff/5JnTp1mDp1Kv3798fMzKzQ4+7fv8/q1av56KOPuH//PiqVinnz5lGqVLFDEEIIIYQQQgghFNOmTaNx48asXbsWAH9/fx49esTUqVMBuHfvHhEREYwfP57o6GgA/Pz8MDQ0ZMyYMYwbNw5ra2sWLlzI7du3OXnypLKS1tfXl6pVqzJ37lxmz56tjHnv3j327NlDmTJlAChfvjy+vr58+eWX+Pv7s2fPHr777jsOHTpE48aNAWjevDlOTk5YWlpqnUPv3r2Vj5D7+/tz8eJFpkyZQkBAgNImIyODgwcP8vbbbwNw7do1hg8fTmhoKJMnTwagXr16bN++nYSEBEaOHAnkJZ2eXRGq/j47O1sjhvz/PreysmL79u3K6s8LFy6wZMkSli9fzsCBAwFo0aIFf/31F1OmTGHgwIHo6elx8uRJZsyYQdeuXTXO71lPnjxh5syZtGrVCgA3NzcqVqzInj17CAoKKtKc2dra4urqCkCdOnWwsbHRuq6vwqeffkq/fv1YvHgxgwcPBop+T4H2dYa8GsTPbtfX11eus1qzZs1o3rw5+/fv57PPPlNWlqpdu3YNyLv38vedm5urvM4/r8/OC0CFChXYs2ePUgc3JyeHqKgounXrxuLFi4G8ROeTJ0+YN28eYWFhWFtbs2DBArKyskhKSsLKygqA2rVr4+HhQWxsLMOHD+fkyZNYWVkxZ84cZbxna0OryyxUqFBB6yFt+c9D/f2z102lUr1UDeIZM2ZQsWJFtm3bppT3MDc3p1evXlptb9++zffff4+trS2Ql+fq06cPV69excnJSVn1/Wz5CNDdPD3L2dmZd955h7i4OKZOnUpcXBxt27Z9bp5OiMIUe2UxQIcOHZgyZQq5ubk8ePCAMWPG4ODgQOvWrfnoo49YsmQJa9euZcmSJUyePJnWrVvj6OhISEgI9+/fB/IKmL///vuv8lyEEEIIIYQQQvzH5OTkkJqaSvv27TW2P/sp1qNHj3L//n06d+5Mdna28tWiRQsePnzIzz/nPdQvKSmJZs2aYWVlpbTR19enadOmysfm1Zo1a6YkiiEvEWxlZcWJEycASElJwdLSUkkUQ96DqHx9fQs8j/zxd+zYkdTUVI0VuY6OjkqiGKBq1apAXsJWzdLSEjs7O3777TdlW1RUFAYGBspXv379uHz5ssY2AwMDrZhatmypkcDct2+fElv+6/jHH38oY3p5eTF37lyWLVtWYDkQAD09PY24XVxcMDEx4erVq0DR50zXVq5cSb9+/fjkk0+URHFx4ktLSyvwOrdo0UJj27p167TG/t///sfhw4dfWJohf5K5Zs2aGn2np6dr7J81axYpKSmcPHmS+Ph4HB0dCQgI4Pfffwfgl19+IT09XWt1fteuXXny5AknT54E8spgqO97tWrVqlGzZk2lbKmXlxcZGRkEBwfz1Vdf8ddffz33ej/L19dX4zzWr1/P+vXrNbYV9vNUVCkpKQQGBmrUgW7Xrl2BbWvVqqUkiuH/6h+r79kXedXzlF/37t3ZtGkTDx8+ZMeOHXTv3r1IcQmRX4mX9U6ePBknJyeGDx/OX3/9xf3799m7d6/Wx2TU1O+WmJqasmTJEqUwuRBCCCGEEEIIUVI3b94kOztbWQmsZm9vr3yvTsIU9vF2dZIzPT2d48ePF5g4Va9gVcs/nnqbum7x9evXNRJLzzuuoO329vZkZWWRnp6unEv+FcmGhoaFbn/06JHyeuDAgRp1WhMTE1m5ciU7d+4sMJZnY3hWeno6ubm5ha7g/e2333B2dmbz5s2Eh4cTHh7O0KFDcXNzIzo6WqNMh4mJiRJ/QXEXdc50bdu2bVSoUEFjNSwUPT5HR0etNxrq1avH8uXLqVOnjrJNXe9WLTc3lyFDhlClShU+/PBDhg0bRt++fTVWrKrr3169epVKlSop2zdv3szDhw9JTExUSmY8q1KlStStW1eJ5d133+Wtt95iwYIFzJ07l8zMTEB7/tWvMzIygLyyLbVq1dLq397eXmnTvHlzPv30UxYtWoS/vz/GxsZ06tSJhQsXaiSZC7JixQqlnAWgnMuzNaPzr7YuroJ+Ts3NzTE2NtZqW9jP37M/awXR1Tzl17lzZ0aNGsVHH32EgYGBxqcShCiOl6oB0adPH/z9/Zk/fz7r16/XehfkWTY2NnzwwQeMHj26wILeQgghhBBCCCFEcdna2lKqVCmtmsI3btxQvlcnpbZv3671UXD4v0SdlZUVAQEBSvmKZxkZGWm8zj+eepuDgwOQV8P05s2bBbYpyJ9//km5cuU04jcwMHglpRUcHR01/h3+888/Y2hoqCSiCpN/JaSVlRUqlYojR45oJXohr5QE5J37mjVrWL16NampqUybNo2uXbty9uxZjWTZ8xR1znRt/fr1hISE4O/vz9dff42FhUWx4ivsOru5uT33+sfGxnL48GGSk5Np3LgxGzZsYMiQIXz77bdKGQIfHx8gb0X8s6ue1avPi7r62tbWFhsbG06fPq1xboX9TKn3W1lZFXg/37hxQ1n1DhAUFERQUBDp6ens2LGD0aNHY2BgwCeffPLcuNT3k5q6rMeL7tviKOjn9N69ey9MABeHruYpP3t7e5o3b878+fPp169fgW96CVEUL10w2NHRkblz5zJ37lxOnz7NDz/8wK1bt7h37x7m5uZYW1tTs2ZNjY/KCCGEEEIIIYQQr4K+vj5eXl7Ex8czevRoZfvWrVuV79955x1MTU25evWqVrmHZ7Vo0YINGzbg7u7+wlqfBw4c4M6dO0opiv3795ORkUGDBg2AvJWAt2/f5tChQzRp0gTIq3H69ddfF1izOD4+Xql5CigPq3uZeqyvmvoj/7du3aJNmzYvbK+np0e9evWYNm0aO3fu5Pz580VOFhd1zoq6urOk7O3t+frrr2nSpAktW7YkKSkJMzOzIsdXErdu3WLcuHF88MEHyr2zbNky6tSpQ0xMDKNGjQKgcePGyvVt166d8kZFcd24cYP09HTljQk3NzdsbW3ZsmWLxrl9/vnnGBoaUr9+fQC8vb1ZuXIlmZmZlC1bFoCzZ8/y448/0rdvX61xbGxs6NevH7t37+bMmTPKdgMDA53N34vUq1ePxMRE5s2bp5SiSEhIKFFfhd2LupqngowYMQJTU1MGDBhQojGEgFeQLH7W22+/LUlhIYQQQgghhBB/q/DwcNq1a0efPn3o1q0bqampfPrpp8p+S0tLoqKiGD9+PFevXsXHxwd9fX0uXrzIjh072LZtG6ampowZM4bPPvuMpk2bMnLkSCpUqMDNmzc5ceIEjo6OGsloc3NzWrZsyYQJE7h9+zahoaHUr18ff39/IK/er5eXFz169GDGjBlYWloye/ZszM3NNeqjqq1fvx4TExO8vLzYtGkThw4dYteuXbq/eMVQtWpVPvzwQ3r16sW4ceNo0KABWVlZnDt3jgMHDpCQkMCdO3fw9/enV69euLm58eTJE2JiYrC0tCy0ZENBijpn7u7uACxdupT3338fU1NTatSo8UrPu1y5ckrCuG3btuzatavI8ZXEuHHjADQeClezZk2GDx/ORx99RJcuXZSV4hs3bqR58+Z4eXkxcuRI6tWrh56eHmlpaSxfvhwjIyOtFaa//vorx48fJzc3l99//505c+agUqmUBKO+vj6TJ09mxIgR2NnZ0apVK44fP86sWbMYNWqUssJ39OjRrF27lvfee4/w8HAePXrEpEmTqFChglJ6NCIiglu3buHj44OdnR0//fQTe/fuZcyYMUo87u7u7Nixg8aNG2NmZoabm9tLlZc4fvy41jZ7e3uN+uFqYWFh1KtXj44dOzJw4EAuX77M3LlzMTY2LvDn9HneeustLC0tiYuLo2LFihgZGeHp6YmhoaFO5qkggYGBGiVnhCiJV5osFkIIIYQQQggh/m5t27Zl+fLlTJ8+nU2bNtGgQQM2b96srPIFCAkJoVy5csyfP5+YmBgMDAxwdXUlMDBQWRFobW3N8ePHmTRpEqGhody6dQs7OzsaNmyotXq0ffv2ODk5MXjwYDIzM/Hz82P58uXKfpVKxY4dOxg0aBADBw6kbNmyjBgxgrNnz3Lq1Cmtc4iLiyMsLIyoqCjs7OxYuXIlrVq10s0FewmLFy/Gzc2NFStWEBUVRenSpXFzc1MehmZsbEyNGjWIiYnhypUrmJiYULduXZKSkopdUqMoc1a7dm0iIyNZvXo1s2fPpnz58qSlpb3q08bFxYX9+/fTpEkTOnToQEJCQpHiK67Dhw8TGxvLqlWrtK5XVFQUn3/+OaNHj2bz5s0AVK5cme+++445c+awbt06pkyZgkqlolKlSvj7+7Np0yaNBzECTJw4UfnexsaGmjVrKuemNnz4cAwMDJg/fz4ff/wxDg4OREZGahxbvnx5Dh48yNixY+nZsyf6+vr4+fkxf/58Jdlbr149Fi5cyOeff87du3dxcnJi3LhxTJo0Seln6dKljBw5kpYtW/Lw4UMOHDiglG4oiXnz5mlt8/X1VR7Q+KzatWvz+eefExYWRvv27alevTrr1q3Dx8dH67q9iJ6eHmvXrmXixIn4+vry+PFjLl26hIuLi87mSQhdUOWqnzwniuzu3buUKVOGO3fuKPWKxIvVGbdep/1P7eSj0/6rf9n6xY1egnmjXjrtP/DMDp32P6B5T531XXHIZp31DeA1WLcf0VmXWrz/ySiu2r4VdNp/8kbtmn2vUiM/f532/9ZV1xc3KiGHRgU/oOZVWXhw64sbvQRdP/Tiym8jdNp/NTftjze+Sr3O6a4WYph7ZZ31DTAn9hud9i9/c5/vTf6bG/z2UJ31/W/1pv7b4NGjR1y6dImKFSsW+CAn8XwuLi4EBgayZMmSYh335MkTPDw8aNy4MWvXrtVRdEKIl/H111/TokULkpOTadq06esOR4hXpqh/+2VlsRBCCCGEEEIIoQMrV67k6dOnuLm5kZmZybJly0hLS2PTpk2vOzQhxP83dOhQfH19sba25vTp00ydOpXatWsXWLZCiP8CSRYLIYQQQgghhBA6YGxszMyZM5WyCDVr1mTXrl3UrVv39Qb2L5eTk8PzPkRdqpSkQsT/yczMZPjw4aSnp1OmTBkCAgKYO3dusWsWC/FvIb8hhRBCCCGEEEKIYihqTdzevXvTu3dv3QYjtLi6unL58uVC90s1TvGsuLi41x2CEP8okiwWQgghhBBCCCHEv8YXX3zB48ePX3cYQgjxRpJksRBCCCGEEEIIIf41atSo8bpDEEKIN5YUYBFCCCGEEEIIIYQQQgghyWIhhBBCCCGEEEIIIYQQkiwWQgghhBBCCCGEEEIIgSSLhRBCCCGEEEIIIYQQQiDJYiGEEEIIIYQQQgghhBBIslgIIYQQQgghxL/Q7du3UalUxMbGvu5Qnis2NhaVSkV6evrrDkVx8eJFTE1NmTx5sta+UaNGUaZMGa5du6ax/dixY3Tq1AkHBwcMDQ2xtramefPmrFixgidPnijtIiMjUalUypexsTHu7u7Mnj2bp0+f6vzcCnLq1CkiIyP566+/XrqvyMhISpcuXej+tLQ0VCoVW7duLVa/RT0uOTmZ6OjoQvfrYp7UbZYvX6413ldffaXsT0tLK9Y5CyFeD0kWCyGEEEIIIYQQQlGpUiXCw8OZPXs2Z8+eVbanpqayZMkSpk2bhqOjo7J92bJleHt7c+vWLWbNmsW+ffv45JNPqFq1KiNHjmTt2rUa/ZuYmHDs2DGOHTvGnj176Ny5MxMmTGD27Nl/2zk+69SpU0yZMuWVJItfxMHBgWPHjtG8eXOd9P+8ZLEu56l06dJs2rRJa3tcXNxzk+dCiH+eUq87ACGEEEIIIYQQ/xyRkZH/ybH/S2JjY4mMjHzuSs9x48axYcMGBg8ezIEDB8jJyWHQoEHUrl2bDz/8UGn3ww8/MGLECHr37s2aNWtQqVTKvvfff5+QkBB+++03jb719PRo2LCh8rpZs2b89NNPbN++nQkTJry6E9UBlUrFgQMH8PHxKdHxRkZGGuf+d9H1PLVr1464uDh+//13ypUrB8Djx4/Zvn0777//Phs2bNDh2QkhXiVZWSyEEEIIIYQQ4o23atUqXFxcMDU1xdfXl/Pnz2u1iY2NxdPTE2NjY8qVK0d4eDg5OTkaba5evUpQUBA2NjaYmJjQpEkTUlNTNdq4uLgwbNgw5syZQ7ly5TA1NaVdu3Zcv35dq6/AwEBMTU0pX748CxYsYNSoUbi4uGjFdv78eZo3b46pqSkuLi6sWbNGY39wcDDVq1dn3759eHp6YmJiQtOmTUlLSyMjI4MuXbpgYWGBq6srmzdvLuFV/D+GhoYsW7aM5ORk1q1bR0xMDKdOnWLFihXo6f1fKmHx4sXo6+szb948jQSkWpUqVYq0itbc3JysrCyNbRkZGfTt21eZi0aNGnHo0CGtY1esWIGbmxtGRka4uLgwbdo0jVIJt2/fZsCAAZQrVw5jY2PKly9Pt27dgLx7ok+fPgDY2tqiUqkKnJ9XpaByEk+ePGHEiBFYWVlhaWnJoEGD2LhxY4GlGx49esSwYcMoW7YsDg4OjB07luzsbCDvzZYpU6bw4MEDpfSDOqmty3kCqFWrFlWrVtW493bv3k1ubi6tW7cuyqURQvxDSLJYCCGEEEIIIcQbLTExkYEDB9KsWTPi4+Px9fWlc+fOGm3mz59P//798ff354svviA0NJTFixcTHh6utMnMzMTb25tTp04RExPDtm3bMDMzo3nz5vz5558a/cXHxxMfH8+yZctYtmwZJ06coEOHDsr+3Nxc2rVrpyRYly5dyvbt29m+fXuB59CtWzf8/PyIj4+nWbNm9OvXj71792q0+eOPPwgJCSE8PJzPPvuMCxcu0LNnT7p27UqNGjXYtm0bderUISgoiMuXL7/sZcXHx4fevXsTEhLC5MmTGTZsGF5eXhptkpOTqVu3LlZWVsXqOzs7m+zsbO7du8fOnTvZtm0bnTp1Uvbn5OTQsmVLvvjiC2bNmsWWLVsoXbo0fn5+Gsn7mJgYBg8erMxrcHAwkZGRjB8/XmkzZswYEhMTiY6O5ssvv2TOnDkYGRkB0Lp1ayZNmgTA3r17OXbsGPHx8cW+Vi9jwoQJrFixgtDQUDZv3szTp08LXWEdHh6Onp4en3/+OYMHD2bevHmsXr0agP79+9OvXz+N8hEff/wxoLt5elb37t2Ji4tTXsfFxdG+fXuMjY2LNaYQ4vWSMhRCCCGEEEIIId5o06ZNo3HjxkrNVX9/fx49esTUqVMBuHfvHhEREYwfP16p5+rn54ehoSFjxoxh3LhxWFtbs3DhQm7fvs3Jkyexs7MDwNfXl6pVqzJ37lyNWq337t1jz549lClTBoDy5cvj6+vLl19+ib+/P3v27OG7777j0KFDNG7cGIDmzZvj5OSEpaWl1jn07t2bsLAwJf6LFy8yZcoUAgIClDYZGRkcPHiQt99+G4Br164xfPhwQkNDlYfR1atXj+3bt5OQkMDIkSMBePr0qcZKW/X36hWpaqVKaacIpk2bxvr167GyslKu57OuXbtG/fr1tbY/27eenp7GauQHDx5gYGCg0b5r164aCdJdu3Zx8uRJ9u7di7+/v3JdKleuTHR0NNu2bSMnJ4eoqCi6devG4sWLAXjvvfd48uQJ8+bNIywsDGtra06ePEmPHj344IMPlP7VK4ttbW1xdXUFoE6dOtjY2BR6Hmo5OTka2/X19QtcrVsUGRkZLFu2jEmTJhEaGqqcZ4sWLbTKQgA0aNBAOVc/Pz8OHDjA1q1bGTx4ME5OTjg5OWmVjwDdzdOzunfvTkREBBcuXMDe3p7ExEQSEhL+llrQQohXR1YWCyGEEEIIIYR4Y+Xk5JCamkr79u01tj+7+vHo0aPcv3+fzp07Kysls7OzadGiBQ8fPuTnn38GICkpiWbNmmFlZaW00dfXp2nTpqSkpGj036xZMyVRDHmJYCsrK06cOAFASkoKlpaWSqIY8h4C5uvrW+B55I+/Y8eOpKamapTJcHR0VBLFAFWrVgWgRYsWyjZLS0vs7Ow0Eo1RUVEYGBgoX/369ePy5csa2/InBdVWrFiBSqUiMzOTH3/8scA2+ROl3377rUa/bdu21dhvYmJCSkoKKSkpHDlyhEWLFrF3714GDBigtDl8+DAWFhZKohjAwMCADh06cOTIEQB++eUX0tPTtVaRd+3alSdPnnDy5EkAvLy8iI2NZe7cucpcF0VaWlqB16hFixYa29atW1fkPvP76aefePTokdY1ateuXYHt33vvPY3XHh4eXL16tUhj6WKenlWlShXq1KlDXFwcCQkJmJubF3q/CyH+uWRlsRBCCCGEEEKIN9bNmzfJzs5WVgKr2dvbK9+np6cDaJVQUFMnVtPT0zl+/HiBiVP16lO1/OOpt6nrFl+/fh1bW9sC2xSkoPizsrJIT09XziX/imRDQ8NCtz969Eh5PXDgQAIDA5XXiYmJrFy5kp07dxYYi9ovv/zCnDlziIqKYu/evQwZMoTvvvtOYwWyo6OjVrLSw8NDSa4PGjRIq189PT3q1q2rvH733XfJzs4mJCSEMWPGUL16dTIzMwu8Vvb29mRkZAB5ZUPU2/K3AZR2MTExWFlZMW/ePMaNG0f58uUJCwtjyJAhzz1/R0dHrTcJ6tWrx/Lly6lTp46yrWLFis/t53nU90v+e6Ww++RFc10YXc1Tft27d2fNmjU4OzvTpUsX9PX1XxibEOKf5Y1NFm/atInZs2dz5swZTExMaN68ObNmzdL6A/6ssLAwEhIS+P3333ny5An29vb4+voSERGBs7Pz3xi9EEIIIYQQQohXwdbWllKlSmnVFL5x44byvbpO6/bt2ylfvrxWH+pkn5WVFQEBAQWWW1DXuFXLP556m4ODAwAODg7cvHmzwDYF+fPPPylXrpxG/AYGBlplEUrC0dERR0dH5fXPP/+MoaGhRiKwIIMHD6ZSpUqMHz+edu3a4eXlxaJFiwgJCVHa+Pj4sHHjRjIzMylbtiwApqamSt/m5uZFitHd3R2A06dPU716daysrAq8Vjdu3FDmU/3fwuZevb9MmTIsXLiQhQsX8tNPP7Fo0SKGDh1K9erVNVZ+51fYNXJzc3vhtSsq9f1y8+ZNjTkq7D4pKV3NU35du3Zl3Lhx/PLLLxw+fPgVRS+E+Du9kWUoPvnkE7p3787333+Pg4MDOTk5bNu2jUaNGvHHH38UetyXX37JgwcPqFKlCuXLl+fKlSusXbtW42MtQgghhBBCCCHeHPr6+nh5eWk9lGzr1q3K9++88w6mpqZcvXqVunXran1ZW1sDeeUF/ve//+Hu7q7VpkaNGhr9HzhwgDt37iiv9+/fT0ZGBg0aNADyVqDevn2bQ4cOKW3u37/P119/XeB55I9f/bC617UyMzY2loMHD7Js2TIMDQ2pUaMGI0eOJDIyUmOF6ogRI8jOzmbcuHEvNZ66PIQ6Oe7t7c3du3dJSkpS2mRnZxMfH4+3tzeQl7S1tbVly5YtGn19/vnnGBoaFlijt0aNGixYsACAM2fOAP+3QrsoK3RfterVq2NsbMyOHTs0tickJJSoP0NDQx4/fqy1XVfzlJ+TkxOjRo2iR48eNGrU6KXGEkK8Hm/cyuInT54oxdQ7duzI1q1buXbtGtWqVePPP/8kOjpaKfae39GjRzWewtmrVy82bNjA2bNnuXXrlvI/CEIIIYQQQggh3hzh4eG0a9eOPn360K1bN1JTU/n000+V/ZaWlkRFRTF+/HiuXr2Kj48P+vr6XLx4kR07drBt2zZMTU0ZM2YMn332GU2bNmXkyJFUqFCBmzdvcuLECRwdHRk9erTSp7m5OS1btmTChAncvn2b0NBQ6tevryxGatmyJV5eXvTo0YMZM2ZgaWnJ7NmzMTc313iImNr69esxMTHBy8uLTZs2cejQIXbt2qX7i1eAW7duMW7cOHr37o2Pj4+yPTIyks2bNzNq1CglGV+zZk0WL17MsGHDuHjxIn369MHFxYX79+/z7bff8uOPP2ot0Hr69CnHjx8H8v6Nn5qayrRp0/Dw8KBJkyYAtG7dmvr16xMUFMTMmTOxt7cnJiaG69evM3HiRCDvjYLJkyczYsQI7OzsaNWqFcePH2fWrFmMGjVK+Tf+u+++S/v27alevTr6+vqsX78eQ0NDZVWxerXs0qVLef/99zE1NdV6c6A4cnJyNN6sUCsoeW1tbc2QIUOYPn06xsbG1KpViy1btnDu3DmAAu+V53F3dyc7O5tFixbRqFEjLCwscHNz09k8FWT+/PnFilkI8c/yxiWLU1JSlHpTHTt2BPI+UtOwYUO++uor9u7dW+ixxsbGfPzxx6xbt46MjAzOnz8P5NXpUX88pSCPHz/WeGfu7t27r+JUhBBCCCGEEEK8Am3btmX58uVMnz6dTZs20aBBAzZv3qys8gUICQmhXLlyzJ8/n5iYGAwMDHB1dSUwMFBZWWptbc3x48eZNGkSoaGh3Lp1Czs7Oxo2bKj1ALr27dvj5OTE4MGDyczMxM/Pj+XLlyv7VSoVO3bsYNCgQQwcOJCyZcsyYsQIzp49y6lTp7TOIS4ujrCwMKKiorCzs2PlypW0atVKNxfsBcaPH8/Tp0+ZO3euxvbSpUuzaNEiOnbsyJ49e2jZsiUAQ4YMoWbNmkpN4Fu3bmFubk6tWrWIjo6mb9++Gv08fPiQd955B4BSpUpRvnx5goKCiIiIUOpF6+vrs3v3bsaOHcu4ceN48OABXl5eJCUladQLHj58OAYGBsyfP5+PP/4YBwcHIiMjlYQy5CWL169fz6VLl9DT06NGjRp88cUXSpK4du3aREZGsnr1ambPnk358uVJS0sr8fV79OiR1kP3AD799FNlVfSzZs6cSVZWFjNmzODp06e0b9+eCRMmMGzYMI2HKBZFmzZtGDp0KDNmzODPP/+kSZMmJCcnA7qZJyHEv48qNzc393UHURybNm2ie/fuAOzbt095sqZ6lbCRkdFzPzoyYcIEZs2apbyuXbs2iYmJGrWB8ouMjGTKlCla2+/cuYOFhUVJT+U/p8649Trtf2onH532X/3L1jrt37xRL532H3hmx4sbvYQBzXvqrO+KQzbrrG8Ar8EFP833VVmXWrz/wSuu2r4VdNp/8kbtmn2vUiM/3ZYCeutq4bXsX5ZDo4IfPPKqLDyovSLlVQoICNBp/1d+G6HT/qu59X1xo5fQ61zJH1bzImHulXXWN8Cc2G902r/8zX2+N/lvbvDbQ3XW97/V3bt3KVOmzBv3b4NHjx5x6dIlKlasqPHpS1E0Li4uBAYGsmTJkmId9+TJEzw8PGjcuDFr167VUXTi36BXr14cOXKES5cuve5QhBD/EkX92//GrSwuTFFz3jNnzmT69OmcP3+eIUOGcODAAXr27Mm+ffsKrQUVFhbGmDFjlNd3794t8KEIQgghhBBCCCGE2sqVK3n69Clubm5kZmaybNky0tLS2LRp0+sOTfyDHDx4kG+++YY6derw9OlTEhMT+eyzz6ScgxDitXjjksXPJmmffTqo+vsKFV68wk5fXx83NzdGjRrFgQMHSE5O5uuvv+a9994rsL2RkZHWk2+FEEIIIYQQQojnMTY2ZubMmUpJg5o1a7Jr1y7q1q37egMT/yilS5cmMTGRWbNm8fDhQypWrMj8+fMZNWrU6w5NCPEf9MYli+vVq4e1tTW3bt1i27ZtdO/enWvXrilF19Ufqa1WrRoAw4YNY9iwYfz666+cOXOGwMBA9PT0ePr0qUZ94wcPHvz9JyOEEEIIIYQQ4o1T1Hq2vXv3pnfv3roNRrzx6tSpw9GjR193GEIIAbyByWJDQ0Oio6MZNGgQ27Zto1KlSty6dYt79+5hY2PDhAkTADh79iyA8jC833//nXbt2lG6dGkqVarEjRs3uHHjBgBOTk5K7WMhhBBCCCGEEEIIIYT4L9J73QGUxMCBA9mwYQO1atXi2rVrqFQqOnTowNGjRwt9UF2FChV4//33KVu2LGfPniUzMxNXV1cGDRrEsWPH3qiHUQghhBBCCCGEEEIIIcSr9satLFbr2bMnPXsW/iTo/A+8q1SpEvHx8boOSwghhBBCCCGEEEIIId5Ib+TKYiGEEEIIIYQQQgghhBCvliSLhRBCCCGEEEIIIYQQQkiyWAghhBBCCCGEEEIIIYQki4UQQgghhBBCCCGEEEIgyWIhhBBCCCGEEP8CCxYsoEKFCujr62NpaUl0dHSx+1i4cCG7d+/WQXSvxsaNG6lSpQoGBgbUqlXrdYcjCpGcnFyi+8/FxYVhw4Ypr4ODg6levbryOjY2FpVKRXp6+iuJs6iysrKoUaMGTZs2JTc3V2NfQkICKpWKxMREje1Xrlzhww8/xNXVFWNjY8zNzalTpw4RERHcvHlTaZecnIxKpVK+SpUqhbOzM0OGDOHWrVt/y/nld/v2bSIjI/nf//73WsYX4nUr9boDEEIIIYQQQgjxz3H8+PHXNnbDhg1LdNyvv/5KSEgIoaGhtGnThiVLlhAdHc3EiROL1c/ChQsJDAykVatWJYpDl+7fv0/fvn3p3r07sbGxWFhYvO6QRCGSk5OZO3duse+//CZPnsyDBw9eUVQlZ2BgwLJly2jSpAmxsbH06dMHyLsnhw8fTocOHQgMDFTanzhxgpYtW2JlZcXIkSOpUaMGWVlZHD16lOXLl3Pu3Dni4uI0xli7di3VqlUjOzub06dPEx4ezqVLl9i7d+/feq6QlyyeMmUK1atXx8PD428fX4jXTZLFQgghhBBCCCHeaGfPniU3N5cBAwZQqVIlkpKSdDre48ePMTAwQE/v7/uwblpaGo8fP6ZXr168++67L9VXTk4OT58+xcDA4BVFV3QPHz7ExMREa3tkZCTJyckkJye/dF//Fq6urn/LOGlpaVSsWJFLly7h4uJSYBtvb2/69OnDuHHjaNOmDTY2NkyaNIk7d+6wePFipd2jR4/o3LkzTk5OHDlyRONNjffee4+QkBC++OILrf6rV69O3bp1lbEePXrE6NGjuX//PqVLl361JyyEeC4pQyGEEEIIIYQQ4o0VHBxMmzZtgLzkmkqlYsqUKTx48ED5aLuPj88L+3FxceHy5cssXbpUOS42NlbZN2zYMGbPno2zszMmJiZkZGTwyy+/0K1bN8qXL4+pqSkeHh7MmzePp0+fKv2mpaWhUqnYsGEDw4YNo2zZsjg4ODB27Fiys7OVdlevXqVLly7Y29tjbGxMxYoVGT16NJCXSK1RowYAvr6+qFQqIiMjAcjIyKBv377Y2NhgYmJCo0aNOHTokMa5+fj4EBgYyLp163Bzc8PIyIgffvhBKXOwb98+PD09MTExoWnTpqSlpZGRkUGXLl2wsLDA1dWVzZs3a12zXbt20aBBA0xMTLC1tWXIkCEaK2HVJQZ27dpFp06dsLCwoHPnzi+e1AKor2NsbCwDBgzA2tqa+vXrA3nJ+4kTJ+Ls7IyRkRHu7u5s3LhR4/jTp0/TqlUrrK2tMTU1xc3NjdmzZyv71dciOTmZ2rVrY2ZmRv369UlNTdXoJzc3l7lz51K1alWMjIyoVKkSCxYsUPZHRkaW6P4rSP4yFAVZu3YthoaGfPLJJ0WK72XMnj0blUrFuHHjSE1NZcmSJUydOpVy5copbbZs2cJvv/3GzJkzC1z9bm5uTo8ePV44lrm5Obm5ueTk5Cjbnj59yrRp03BxccHIyIhq1aqxYsUKrWMPHTpEo0aNMDExwcbGhr59+5KRkaHRZubMmVSuXBljY2NsbW1p0aIFly5dUhLnAJ07d1bmMC0traiXSYg3nqwsFkIIIYQQQgjxxpo8eTIeHh6Ehoayfft2bG1tWbt2LXFxcezfvx+gSCUb4uPjadWqFd7e3oSEhACaKzu3bdtGlSpVWLRoEfr6+piZmfHDDz/g5uZGz549MTc359SpU0RERHD//n0iIiI0+g8PD6ddu3Z8/vnnHD16lMjISCpXrszgwYMB6N27N9euXWPx4sXY29tz5coVvv32WwD69++Pq6srvXv3ZunSpXh5eeHk5EROTg4tW7bk4sWLzJo1C3t7exYvXoyfnx9Hjx6lTp06yvjffvstaWlpREVFUbZsWcqXLw/AH3/8QUhICOHh4RgYGDBixAh69uyJqakpTZo0YcCAAaxatYqgoCAaNmyIs7MzAFu3bqVr16706dOHKVOmcP36dSZMmEBmZiabNm3SOPeBAwcSFBREfHw8+vr6xZrf/MLCwmjdujVxcXFKUr5Lly4cOXKEiIgI3N3d2b17N0FBQZQtW5aWLVsC0KZNG+zt7fnkk08oU6YM58+f5+rVqxp9//HHH4wYMYIJEyZQpkwZwsLCaN++PRcuXFBWYY8cOZLVq1cTHh5OgwYNOHr0KKGhoZiYmDB48GD69+/P1atX2bhxY7Huv5KIiYlh7NixrF+/nm7duhUpvpdhbW3N7Nmz6du3L8nJydSsWVOjxjLkvUFQqlQpmjdvXqy+c3JyyM7OVspQzJ07lxYtWlCmTBmlzbhx41i0aBGTJk2iUaNGJCYmMnjwYLKyspQ4UlNT8fPzw8fHhy1btnDjxg0mTJjA6dOnOXr0KPr6+qxfv57JkycTFRXFO++8w507dzh8+DB3796lWrVqbN++nQ4dOhAdHU2zZs0AcHBweKlrJ8SbRJLFQgghhBBCCCHeWK6urlStWhWA2rVr4+Liwr59+9DT0ytWDeTatWtjZGSEvb19gcdlZWWxZ88ezMzMlG2+vr74+voCeSs6vb29+euvv1iyZIlWsrhBgwbKx/X9/Pw4cOAAW7duVRJ4J0+eZMaMGXTt2lU5pnfv3gA4OTkpK4s9PDyU+Hbu3MnJkyfZu3cv/v7+APj7+1O5cmWio6PZtm2b0ldGRgYpKSlKkvjZ7QcPHuTtt98G4Nq1awwfPpzQ0FAmT54MQL169di+fTsJCQmMHDmS3Nxcxo4dS9euXVm9erXSl4ODA61atWLy5MlKfwBt27Zl1qxZGuM+ffpUYwX206dPyc3N1VhtrVKptJLLtWrV0hjzwIED7Ny5ky+//JL33ntPub7Xr18nIiKCli1bkp6ezqVLl1i0aJGyCl2dBHzetTAzM6NZs2acOHECb29vLly4wJIlS1i+fDkDBw4EoEWLFvz1119MmTKFgQMH4uTkhJOTU7Hvv+KaMWMGU6ZMYcuWLbRt2xagSPHp6elprdhVf69O2Krp6+ujUqk0xg0ODmb69OlcuHCBzz77TGt+rl27ho2NDcbGxhrbc3JylIfjFTSv+a+Vp6cn69evV16np6cTExPDuHHjlFX17733Hunp6URFRTFkyBD09fWZPn06b731FomJiUqCv3z58vj7+7N7927atGnDyZMn8fT0JCwsTOm/Xbt2yve1a9cGoEqVKjqdQyH+qaQMhRBCCCGEEEII8QI+Pj4aiWLIq88aERFB5cqVMTIywsDAgPDwcK5fv879+/c12qoTmWoeHh4aK1u9vLyYO3cuy5Yt4/z580WK6fDhw1hYWCiJYsh7GFmHDh04cuSIRltPT0+tRDGAo6OjRmJXnXhv0aKFss3S0hI7Ozt+++03AM6dO8fly5fp0qWLsho0Ozubpk2boqenp6yIVmvdurXWuH379sXAwED5mjp1KocOHdLYVlDN3vx9JSUlYWVlRfPmzTVi8fPz4/vvvycnJwdra2ucnZ0JCwtj3bp1WiuKC7sW6oebqdvv27cPgI4dO2qM1aJFC/744w/l+uhaeHg406dPJzExUUkUFye+gwcPalznypUrA1C5cmWN7QcPHtQa++uvv+bChQuoVKpC60vnTzADlClTRun32dXCauvXryclJYUTJ04QFxfHkydPCAgIUH6OTpw4QVZWllYZk65du3Lz5k3OnTsH5P1MtGvXTqMe93vvvYelpaXyM+Hl5cX333/PmDFjOHLkCFlZWQVfaCH+oyRZLIQQQgghhBBCvIC9vb3WttDQUObMmcOAAQPYvXs3KSkpTJo0CchLJD/L0tJS47WhoaFGm82bN+Pr60t4eDhVqlRRPg7/PJmZmdjZ2RUYa/4arQXFX1hcL4o3PT0dgPbt22skF01NTcnJydFKmhY0dmRkJCkpKcrXgAED8PLy0thW0IPQ8veVnp5ORkaGRhwGBgb079+f7Oxsrl+/jkqlIikpCXd3dz788EPKly9P3bp1tWo7F3Ytnj3v3NxcbGxsNMby8/MD+NuSxVu3bqVGjRp4e3trbC9qfHXq1NG4zjt37gTyVqo/u/3ZMiaQVxt6yJAh+Pn5ERYWxrRp07Rq+To6OnLz5k0eP36ssf3w4cPKPBfE3d2dunXrUr9+fbp168Znn33Gjz/+qNQNz8zMBLTnX/1afb9nZmYWeL89+zMRHBzMggUL+PLLL2ncuDG2traMHDmShw8fFhibEP81UoZCCCGEEEIIIYR4gYJWS27ZsoVBgwYRGhqqbNu1a1eJ+ndwcGDNmjWsXr2a1NRUpk2bRteuXTl79iyVKlUq8BgrKyv+/PNPre03btzAysrqhfGXlLrvJUuW0KBBA639jo6OLxzbxcUFFxcX5XViYiLnzp2jbt26zx07f19WVlbY2tqye/fuAturk+lVq1Zly5YtZGVlcfToUSZOnEibNm34/fffKV269HPHfHYslUrFkSNHlETys9zc3IrUz8vauXMnHTp0oGPHjiQkJCiraIsan7m5ucZ1Vid8a9SooTEn+UVHR/Pbb7+xZ88eypUrR1xcHMOHD9dI6vv4+LBmzRoOHDhAQECAsl1d2iExMbFI5+ju7g7kPZhQfW4Af/75p8YD9W7cuKGxvyg/E3p6eowcOZKRI0fy+++/s2nTJiZMmICNjY1SekWI/zJZWSyEEEIIIYQQ4l/F0NBQa2VjUY/LvyL4eR4+fKiRlMvJydF6uFtx6enpUa9ePaZNm0Z2dvZzS1J4e3tz9+5dkpKSlG3Z2dnEx8drrTp9lapVq4aTkxMXL16kbt26Wl/5k8W61KJFC27evImhoWGBseRPmhoYGNC0aVMmTJjA3bt3uXbtWpHHUtenvnXrVoFjmZubAyW//4rKzc2Nffv2ceLECbp3767UHC5qfCVx7tw5Zs2aRVhYGJUrV8bExITFixeTmJhIQkKC0q5z586UL1+esLAw7t27V+Lxfv75ZwBsbGwAqF+/PgYGBmzZskWj3eeff46dnZ1SPsXb25uEhASN2stfffUVt2/fLvBnoly5coSEhODp6cmZM2cA7RXlQvzXyMpiIYQQQgghhBD/Ku7u7mRnZ7No0SIaNWqEhYVFkVZ9uru7s3//fr766ivKli1LxYoVsba2LrS9n58fq1atwsPDAxsbGz7++OMSJQnv3LmDv78/vXr1ws3NjSdPnhATE4OlpSVeXl6FHte6dWvq169PUFAQM2fOxN7enpiYGK5fv87EiROLHUdRqVQq5s+fT48ePXjw4AGtW7fGzMyMy5cvs2vXLqKjo5Xkna75+fnRpk0bAgICGD9+PJ6enjx48IDTp09z/vx5Vq9ezY8//khISAhdu3bF1dWVO3fuMGPGDFxcXAqsi1yYqlWr8uGHH9KrVy/GjRtHgwYNyMrK4ty5cxw4cEBJmpb0/iuOGjVqkJSURPPmzfnggw9Yv359keMriSFDhuDs7MyECROUbYGBgbz//vuMHDkSPz8/zMzMMDY2ZsuWLQQEBODl5cXw4cOpUaMGOTk5/Prrr2zevLnApPXPP/9MdnY2T58+5eLFi0ydOhVTU1PlIY82NjYMHz6cOXPmYGxsTMOGDdm9ezcbN24kJiZGeWBeeHg4jRo1IjAwkOHDh3Pjxg0mTJhA/fr1adWqFQCDBg2ibNmyNGzYkLJly/LNN9/www8/MHToUADeeustLC0tiYuLo2LFihgZGeHp6Vngam0h/o0kWSyEEEIIIYQQ4l+lTZs2DB06lBkzZvDnn3/SpEmTQh/G9azo6GiGDBlCx44duXfvHmvXriU4OLjQ9jExMQwePJjhw4djampKcHAw7du3L7Qua2GMjY2pUaMGMTExXLlyBRMTE+rWrUtSUpKysrIg+vr67N69m7FjxzJu3DgePHiAl5cXSUlJWvVmX7XOnTtjaWnJ9OnT2bBhA5BXWiIgIKDQ+si6snXrVmbOnMnHH3/M5cuXKVOmDNWrV6dPnz5AXvLvrbfeYsaMGfz++++UKVOGxo0bs2HDBiXJWFSLFy/Gzc2NFStWEBUVRenSpXFzc9N48FpJ77/i8vLyYu/evfj5+TFo0CBWrlxZpPiK69NPP2X//v3s27cPIyMjjX2LFi3Cw8ODqKgoZs2aBUCDBg344YcfmDlzJgsXLuT333/HwMCAqlWr0rlzZ4YNG6Y1hnquVCoV9vb21K9fny1btlClShWlzZw5c7C0tGT16tVMmzYNFxcXli9fzqBBg5Q2derUISkpibCwMDp27IiZmRlt27Zl3rx5ylw3atSIVatWsWrVKv766y8qVarEggUL6NevH5C3un/t2rVMnDgRX19fHj9+zKVLl55bokOIfxNVbm5u7usO4k1z9+5dypQpw507d7CwsHjd4bwx6oxbr9P+p3by0Wn/1b/UfoLvq2TeqJdO+w88s0On/Q9o3lNnfVccsllnfQN4DS7e/8wX17pU7af9vkq1fSvotP/kjVN12n8jP/8XN3oJb10t+mqR4nJopP1AmVdp4cGtOu3/2TpyunDltxE67b+aW1+d9t/rXEWd9R3mXllnfQPMif1Gp/3L39zne5P/5ga/PVRnff9bvan/Nnj06BGXLl2iYsWKGBsbv+5whBBCCKFjRf3bLzWLhRBCCCGEEEIIIYQQQkgZCiGEEEIIIYQQ/37PPvAqP5VKVexyBEIUh9x/Qog3hSSLhRBCCCGEEEL86xkYGBS6z9nZmbS0tL8vGPGfI/efEOJNIcliIYQQQgghhBD/eikpKYXuy//QLiFeNbn/hBBvCkkWCyGEEEIIIYT416tbt+7rDkH8h8n9J4R4U8gD7oQQQgghhBBCCCGEEEJIslgIIYQQQgghhBBCCCGEJIuFEEIIIYQQQgghhBBCIMliIYQQQgghhBBCCCGEEEiyWAghhBBCCCGEEEIIIQSSLBZCCCGEEEIIIYQQQgiBJIuFEEIIIYQQQvwLLFiwgAoVKqCvr4+lpSXR0dHF7mPhwoXs3r1bB9G9Ghs3bqRKlSoYGBhQq1at1x2OKERycnKJ7j8XFxeGDRumvA4ODqZ69erK69jYWFQqFenp6a8kTiGEKEip1x2AEEIIIYQQQoh/js+31H9tY3fpfLJEx/3666+EhIQQGhpKmzZtWLJkCdHR0UycOLFY/SxcuJDAwEBatWpVojh06f79+/Tt25fu3bsTGxuLhYXF6w5JFCI5OZm5c+cW+/7Lb/LkyTx48OAVRSWEEEUjK4uFEEIIIYQQQrzRzp49S25uLgMGDKBRo0ZUrVpVp+M9fvyYp0+f6nSM/NLS0nj8+DG9evXi3XffpUaNGiXuKycnh6ysrFcYXdE9fPiwwO2RkZH4+Pi8kr7+LVxdXfH09HzdYQgh/mMkWSyEEEIIIYQQ4o0VHBxMmzZtgLzkmkqlYsqUKTx48ACVSoVKpSpSEtLFxYXLly+zdOlS5bjY2Fhl37Bhw5g9ezbOzs6YmJiQkZHBL7/8Qrdu3ShfvjympqZ4eHgwb948jURyWloaKpWKDRs2MGzYMMqWLYuDgwNjx44lOztbaXf16lW6dOmCvb09xsbGVKxYkdGjRwN5iVR1ctjX1xeVSkVkZCQAGRkZ9O3bFxsbG0xMTGjUqBGHDh3SODcfHx8CAwNZt24dbm5uGBkZ8cMPPyhlDvbt24enpycmJiY0bdqUtLQ0MjIy6NKlCxYWFri6urJ582ata7Zr1y4aNGiAiYkJtra2DBkyRGMlbHJyMiqVil27dtGpUycsLCzo3Lnziye1AOrrGBsby4ABA7C2tqZ+/bxV8I8fP2bixIk4OztjZGSEu7s7Gzdu1Dj+9OnTtGrVCmtra0xNTXFzc2P27NnKfvW1SE5Opnbt2piZmVG/fn1SU1M1+snNzWXu3LlUrVoVIyMjKlWqxIIFC5T9kZGRJbr/CpK/DEVB1q5di6GhIZ988kmR4hNCiBeRMhRCCCGEEEIIId5YkydPxsPDg9DQULZv346trS1r164lLi6O/fv3AxSpZEN8fDytWrXC29ubkJAQIC/5rLZt2zaqVKnCokWL0NfXx8zMjB9++AE3Nzd69uyJubk5p06dIiIigvv37xMREaHRf3h4OO3atePzzz/n6NGjREZGUrlyZQYPHgxA7969uXbtGosXL8be3p4rV67w7bffAtC/f39cXV3p3bs3S5cuxcvLCycnJ3JycmjZsiUXL15k1qxZ2Nvbs3jxYvz8/Dh69Ch16tRRxv/2229JS0sjKiqKsmXLUr58eQD++OMPQkJCCA8Px8DAgBEjRtCzZ09MTU1p0qQJAwYMYNWqVQQFBdGwYUOcnZ0B2Lp1K127dqVPnz5MmTKF69evM2HCBDIzM9m0aZPGuQ8cOJCgoCDi4+PR19cv1vzmFxYWRuvWrYmLi1OS8l26dOHIkSNERETg7u7O7t27CQoKomzZsrRs2RKANm3aYG9vzyeffEKZMmU4f/48V69e1ej7jz/+YMSIEUyYMIEyZcoQFhZG+/btuXDhAgYGBgCMHDmS1atXEx4eToMGDTh69CihoaGYmJgwePBg+vfvz9WrV9m4cWOx7r+SiImJYezYsaxfv55u3boVKT4hhHgRSRYLIYQQQgghhHhjubq6KmUnateujYuLC/v27UNPT4+GDRsWuZ/atWtjZGSEvb19gcdlZWWxZ88ezMzMlG2+vr74+voCeSs6vb29+euvv1iyZIlWsrhBgwYsXrwYAD8/Pw4cOMDWrVuVBN7JkyeZMWMGXbt2VY7p3bs3AE5OTsrKYg8PDyW+nTt3cvLkSfbu3Yu/vz8A/v7+VK5cmejoaLZt26b0lZGRQUpKipIkfnb7wYMHefvttwG4du0aw4cPJzQ0lMmTJwNQr149tm/fTkJCAiNHjiQ3N5exY8fStWtXVq9erfTl4OBAq1atmDx5stIfQNu2bZk1a5bGuE+fPtVYgf306VNyc3M1VlurVCqt5HKtWrU0xjxw4AA7d+7kyy+/5L333lOu7/Xr14mIiKBly5akp6dz6dIlFi1apKxCb9asGfnlvxZmZmY0a9aMEydO4O3tzYULF1iyZAnLly9n4MCBALRo0YK//vqLKVOmMHDgQJycnHBycir2/VdcM2bMYMqUKWzZsoW2bdsCFCk+PT35gLkQ4vnkt4QQQgghhBBCCPECPj4+GoligEePHhEREUHlypUxMjLCwMCA8PBwrl+/zv379zXaqhOZah4eHhorW728vJg7dy7Lli3j/PnzRYrp8OHDWFhYKIliAAMDAzp06MCRI0c02np6emoligEcHR01ErvqxHuLFi2UbZaWltjZ2fHbb78BcO7cOS5fvkyXLl3Izs5Wvpo2bYqenp6yIlqtdevWWuP27dsXAwMD5Wvq1KkcOnRIY9uzK7sL6yspKQkrKyuaN2+uEYufnx/ff/89OTk5WFtb4+zsTFhYGOvWrdNaUVzYtfDw8ABQ2u/btw+Ajh07aozVokUL/vjjD+X66Fp4eDjTp08nMTFRSRT/k+ITQrzZJFkshBBCCCGEEEK8gL29vda20NBQ5syZw4ABA9i9ezcpKSlMmjQJyEskP8vS0lLjtaGhoUabzZs34+vrS3h4OFWqVKFatWps3779uTFlZmZiZ2dXYKwZGRkvjL+wuF4Ub3p6OgDt27fXSO6ampqSk5OjlZQsaOzIyEhSUlKUrwEDBuDl5aWx7Ysvvijw3J6Vnp5ORkaGRhwGBgb079+f7Oxsrl+/jkqlIikpCXd3dz788EPKly9P3bp1tWo7F3Ytnj3v3NxcbGxsNMby8/MD+NuSsVu3bqVGjRp4e3trbP+nxCeEeLNJGQohhBBCCCGEEOIFVCqV1rYtW7YwaNAgQkNDlW27du0qUf8ODg6sWbOG1atXk5qayrRp0+jatStnz56lUqVKBR5jZWXFn3/+qbX9xo0bWFlZvTD+klL3vWTJEho0aKC139HR8YVju7i44OLiorxOTEzk3Llz1K1b97lj5+/LysoKW1tbdu/eXWB7dTK9atWqbNmyhaysLI4ePcrEiRNp06YNv//+O6VLl37umM+OpVKpOHLkiJJIfpabm1uR+nlZO3fupEOHDnTs2JGEhASlnvI/JT4hxJtNksVCCCGEEEIIIf5VDA0Nefz4cYmOy78i+HkePnyokZTLycnRerhbcenp6VGvXj2mTZvGzp07OX/+fKHJYm9vb+bMmUNSUpJS5iI7O5v4+HitVaevUrVq1XBycuLixYt8+OGHOhunKFq0aMHs2bMxNDTE09Pzhe0NDAxo2rQpEyZMoG3btly7dk0pvfEi6vrUt27dUmofF6Sk919Rubm5sW/fPpo1a0b37t3ZvHkz+vr6RY5PCCGeR5LFQgghhBBCCCH+Vdzd3cnOzmbRokU0atQICwuLIq2qdHd3Z//+/Xz11VeULVuWihUrYm1tXWh7Pz8/Vq1ahYeHBzY2Nnz88cclShLeuXMHf39/evXqhZubG0+ePCEmJgZLS0u8vLwKPa5169bUr1+foKAgZs6cib29PTExMVy/fp2JEycWO46iUqlUzJ8/nx49evDgwQNat26NmZkZly9fZteuXURHRxc5Afuy/Pz8aNOmDQEBAYwfPx5PT08ePHjA6dOnOX/+PKtXr+bHH38kJCSErl274urqyp07d5gxYwYuLi4F1kUuTNWqVfnwww/p1asX48aNo0GDBmRlZXHu3DkOHDhAQkICUPL7rzhq1KhBUlISzZs354MPPmD9+vVFjk8IIZ5HksVCCCGEEEIIIf5V2rRpw9ChQ5kxYwZ//vknTZo0ITk5+YXHRUdHM2TIEDp27Mi9e/dYu3YtwcHBhbaPiYlh8ODBDB8+HFNTU4KDg2nfvj0DBgwoVrzGxsbUqFGDmJgYrly5gomJCXXr1iUpKQkbG5tCj9PX12f37t2MHTuWcePG8eDBA7y8vEhKSqJOnTrFiqG4OnfujKWlJdOnT2fDhg1AXmmJgICAQusj68rWrVuZOXMmH3/8MZcvX6ZMmTJUr16dPn36APDWW2/x1ltvMWPGDH7//XfKlClD48aN2bBhA/r6+sUaa/Hixbi5ubFixQqioqIoXbo0bm5udO7cWWlT0vuvuLy8vNi7dy9+fn4MGjSIlStXFik+IYR4HlVubm7u6w7iTXP37l3KlCnDnTt3sLCweN3hvDHqjFuv0/6ndvLRaf/Vv9R+gu+rZN6ol077DzyzQ6f9D2jeU2d9VxyyWWd9A3gNLt7/zBfXutQyOu2/tm8FnfafvHGqTvtv5Of/4kYv4a2rRV8tUlwOjbQfKPMqLTy4Vaf9BwQE6LT/K7+N0Gn/1dz66rT/Xucq6qzvMPfKOusbYE7sNzrtX/7mPt+b/Dc3+O2hOuv73+pN/bfBo0ePuHTpEhUrVsTY2Ph1hyOEEEIIHSvq3369vzEmIYQQQgghhBBCCCGEEP9QUoZCCCGEEEIIIcS/XnZ2dqH7VCpVscsRCFEccv8JId4UkiwWQgghhBBCCPGvZ2BgUOg+Z2dn0tLS/r5gxH+O3H9CiDeFJIuFEEIIIYQQQvzrpaSkFLrPyMjob4xE/BfJ/SeEeFNIslgIIYQQQgghxL9e3bp1X3cI4j9M7j8hxJtCHnAnhBBCCCGEEEIIIYQQQpLFQgghhBBCCCGEEEIIISRZLIQQQgghhBBCCCGEEAJJFgshhBBCCCGEEEIIIYRAksVCCCGEEEIIIYQQQgghkGSxEEIIIYQQQgghhBBCCCRZLIQQQgghhBDiX2DBggVUqFABfX19LC0tiY6OLnYfCxcuZPfu3TqI7tXYuHEjVapUwcDAgFq1ar3ucEQhkpOTS3T/ubi4MGzYMOV1cHAw1atXV17HxsaiUqlIT09/JXEWR/5Y8ktOTkalUvHtt98Wq9+iHpeQkMDHH39c6P49e/bQqlUrbG1tMTAwwN7entatWxMXF8fTp081zkOlUilfZmZm1KxZk08++USjv7S0NKXN3r17tcZbtWqVsl+If5tSrzsAIYQQQgghhBD/HD/+uPy1je3pObhEx/3666+EhIQQGhpKmzZtWLJkCdHR0UycOLFY/SxcuJDAwEBatWpVojh06f79+/Tt25fu3bsTGxuLhYXF6w5JFCI5OZm5c+cW+/7Lb/LkyTx48OAVRaVbXl5eHDt2DHd3d530n5CQwLfffsvQoUO19k2cOJEZM2bQvn17lixZgoODAzdu3CAhIYGgoCCsrKzw9/dX2leqVInPPvsMgHv37hEfH0///v0xMzOjW7duGn2XLl2aTZs2ERAQoLE9Li6O0qVLc//+fR2crRCvl6wsFkIIIYQQQgjxRjt79iy5ubkMGDCARo0aUbVqVZ2O9/jxY43Vin+HtLQ0Hj9+TK9evXj33XepUaNGifvKyckhKyvrFUZXdA8fPixwe2RkJD4+Pq+kr38LV1dXPD09dT6OehVtWlpaifuwsLCgYcOGmJmZvbrAimDXrl3MmDGDiIgItm/fTteuXWnSpAmdO3fms88+49ixY9jZ2WkcY2JiQsOGDWnYsCF+fn58/PHH1KpVi+3bt2v1365dO+Lj43n06JGy7fr16xw8eJD3339f16cnxGshyWIhhBBCCCGEEG+s4OBg2rRpA+Ql11QqFVOmTOHBgwfKx8SLkoR0cXHh8uXLLF26VDkuNjZW2Tds2DBmz56Ns7MzJiYmZGRk8Msvv9CtWzfKly+PqakpHh4ezJs3TyORrE7EbdiwgWHDhlG2bFkcHBwYO3Ys2dnZSrurV6/SpUsX7O3tMTY2pmLFiowePRrIS6Sqk8O+vr6oVCoiIyMByMjIoG/fvtjY2GBiYkKjRo04dOiQxrn5+PgQGBjIunXrcHNzw8jIiB9++EEpLbBv3z48PT0xMTGhadOmpKWlkZGRQZcuXbCwsMDV1ZXNmzdrXbNdu3bRoEEDTExMsLW1ZciQIRorYdUlBnbt2kWnTp2wsLCgc+fOL57UAqivY2xsLAMGDMDa2pr69esDecn7iRMn4uzsjJGREe7u7mzcuFHj+NOnT9OqVSusra0xNTXFzc2N2bNnK/vV1yI5OZnatWtjZmZG/fr1SU1N1egnNzeXuXPnUrVqVYyMjKhUqRILFixQ9kdGRpbo/ivIi0o/AKxduxZDQ0OljMKL4tOVgspJ3Llzh6CgIMzNzbGzs2PixInMmzevwNINmZmZ9OjRA3Nzc5ydnbXmZt26dZw+fVq5psHBwQDMnz8fBwcHJk2aVGBc9evXp3bt2i+M39zcvMA3UFq2bIlKpdIoT7Np0yYqV65MnTp1XtivEG8iKUMhhBBCCCGEEOKNNXnyZDw8PAgNDWX79u3Y2tqydu1a4uLi2L9/P0CRSjbEx8fTqlUrvL29CQkJAfKSz2rbtm2jSpUqLFq0CH19fczMzPjhhx9wc3OjZ8+emJubc+rUKSIiIrh//z4REREa/YeHh9OuXTs+//xzjh49SmRkJJUrV2bw4LzSG7179+batWssXrwYe3t7rly5oiTe+vfvj6urK71792bp0qV4eXnh5ORETk4OLVu25OLFi8yaNQt7e3sWL16Mn58fR48e1Uhmffvtt6SlpREVFUXZsmUpX748AH/88QchISGEh4djYGDAiBEj6NmzJ6ampjRp0oQBAwawatUqgoKCaNiwIc7OzgBs3bqVrl270qdPH6ZMmcL169eZMGECmZmZbNq0SePcBw4cSFBQEPHx8ejr6xdrfvMLCwvTqkXbpUsXjhw5QkREBO7u7uzevZugoCDKli1Ly5YtAWjTpg329vZ88sknlClThvPnz3P16lWNvv/44w9GjBjBhAkTKFOmDGFhYbRv354LFy5gYGAAwMiRI1m9ejXh4eE0aNCAo0ePEhoaiomJCYMHD6Z///5cvXqVjRs3Fuv+K4mYmBjGjh3L+vXrlfIJL4rv79SnTx/279+vvMmyatUqreS72uDBg+nVqxfx8fEkJCQQGhqKp6cnAQEBTJ48mZs3b/LLL78o5SNsbW3Jzs7mm2++oVOnTpQqVbz0lvqNmvv377N9+3a++eYb1q9fr9XOyMiIDh06EBcXR4cOHYC8EhTdu3cv1nhCvEkkWSyEEEIIIYQQ4o3l6uqqlJ2oXbs2Li4u7Nu3Dz09PRo2bFjkfmrXro2RkRH29vYFHpeVlcWePXs0Pmbv6+uLr68vkLei09vbm7/++oslS5ZoJYsbNGjA4sWLAfDz8+PAgQNs3bpVSeCdPHmSGTNm0LVrV+WY3r17A+Dk5KSsLPbw8FDi27lzJydPnmTv3r1KTVZ/f38qV65MdHQ027ZtU/rKyMggJSVFSRI/u/3gwYO8/fbbAFy7do3hw4cTGhrK5MmTAahXrx7bt28nISGBkSNHkpuby9ixY+natSurV69W+nJwcKBVq1ZMnjxZ6Q+gbdu2zJo1S2Pcp0+faqzAfvr0Kbm5uRqrrVUqlVZyuVatWhpjHjhwgJ07d/Lll1/y3nvvKdf3+vXrRERE0LJlS9LT07l06RKLFi1SVqE3a9aM/PJfCzMzM5o1a8aJEyfw9vbmwoULLFmyhOXLlzNw4EAAWrRowV9//cWUKVMYOHAgTk5OODk5Ffv+K64ZM2YwZcoUtmzZQtu2bQGKFJ+enh65ubnk5OQofam/z8nJ0bj++vr6JX6A2//+9z/i4+NZv349vXr1AiAgIIBq1aoV2L5jx47KanlfX1927drF1q1bCQgIwNXVFVtbWy5fvqxxTW/cuMHjx4+17un856enp4ee3v99sP706dNK8l8tJCSEnj17Fhhb9+7dadeuHffv3+fGjRukpKSwYcOGf/TDMIV4GVKGQgghhBBCCCGEeAEfHx+teqyPHj0iIiKCypUrY2RkhIGBAeHh4Vy/fl3rwVfqRKaah4eHxspWLy8v5s6dy7Jlyzh//nyRYjp8+DAWFhYaD+8yMDCgQ4cOHDlyRKOtp6enVlINwNHRUSOxq068t2jRQtlmaWmJnZ0dv/32GwDnzp3j8uXLdOnShezsbOWradOm6OnpaZQiAGjdurXWuH379sXAwED5mjp1KocOHdLY9uzK7sL6SkpKwsrKiubNm2vE4ufnx/fff09OTg7W1tY4OzsTFhbGunXrtFYUF3YtPDw8AJT2+/btA/ISm8+O1aJFC/744w/l+uhaeHg406dPJzExUUkUFye+gwcPalznypUrA1C5cmWN7QcPHixxjCkpKQAa8enp6SnJ+vye/flQqVS4u7sXOk/55U9ob9u2TeM8RowYobHf1dWVlJQUUlJSOHjwINOmTSMmJoaoqKgC+2/evDnm5uYkJCQQFxeHl5eXzuuiC/E6ycpiIYQQQgghhBDiBezt7bW2hYaGsmrVKiIiIqhTpw6Wlpbs2LGDadOm8ejRI0qXLq20tbS01DjW0NBQ46FZmzdvJjw8nPDwcIYOHYqbmxvR0dHKR98LkpmZqfXwLnWsGRkZL4y/sLheFG96ejoA7du3L7DP/EnTgsaOjIxk2LBhyuuVK1eSmprKihUrlG1GRkZax+XvKz09nYyMDK2VomrXr1/HycmJpKQkwsPD+fDDD3nw4AF16tTh/7F35/E13fkfx183EUkEWUTTqCUIIUUrYostFWkQodbU2qC2VBjb2EdsobULulBbVahd0U6qxN5KTatT06FF7Pu+k+X3Rx45P1cSknBpzPv5eNzH5J7zPZ/v55xzTerjez9n6tSp1K1b1xib2bV4+LxTUlJwdXXNcK4TJ04YbTosaeXKlVSsWJHatWubbc9qflWqVDGKuZB6jZo2bcr69etxd3c3tnt5eeU4xzNnzmBjY4Ojo6PZ9ow+r5Dxtb969epj5yhUqBC2trbpisoBAQEZFqvT2NnZ4evra7yvW7cu586dY/z48fTu3RsXFxez8dbW1rRp04aYmBgSEhLo0qXLY/MSye1ULBYRERERERF5goy+jr9ixQp69OjB4MGDjW0bN27MUXx3d3fmz5/PvHnz2LdvH+PGjSM0NJSDBw9SqlSpDI9xcXHh/Pnz6bafO3cuXcErp+0EMpsXYNasWVSvXj3d/iJFijxxbg8PDzw8PIz3GzZs4NChQ2ZFvIw8GsvFxYXChQtn2hIgrThZtmxZVqxYwYMHD9i9ezfDhg0jJCSEU6dOmRX1H8fFxQWTycTOnTuNQvLDnqa4mh3r16+nRYsWtGzZkrVr1xqF8qzmV6BAAbPrnJCQAEDFihXN7snTcHd358GDB1y7ds2sYJzR5zWn8uTJQ61atfj+++9JSkoyWpY4Ozsb55fRdchI+fLluX//Pn/88UeGn+m2bdtSp04dALNWMSIvIxWLRURERERE5KWSN29e7t27l6PjHl7t+yR37twxK0YlJSWle7hbdllZWVG1alXGjRvH+vXr+fPPPzMtFteuXZtJkyYRGxtrfI0/MTGRNWvWpFt1+iyVK1eOokWLcuTIET744AOLzZMVDRo04KOPPiJv3rxUqlTpieNtbGyoV68eQ4YMoWnTppw+fTrLLQXS+lNfunQp03YKkPPPX1Z5eXmxefNm3nrrLdq2bcvy5cuxtrbOcn7PQ1qxdt26dUbv7eTkZL7++uscxcvsz2b//v1p0qQJUVFRRo/tnPjtt98AMl2VXbNmTdq1a8crr7xC0aJFczyPSG6gYrGIiIiIiIi8VMqXL09iYiIzZszAz8+PggULZmnVZ/ny5dmyZQvfffcdzs7OlCxZkkKFCmU6PjAwkLlz5+Lt7Y2rqytz5szJUZHw2rVrBAUF0bFjR7y8vLh//z7R0dE4OTnh4+OT6XHBwcFUq1aNDh06MHHiRNzc3IiOjubMmTMMGzYs23lklclkYurUqbRr145bt24RHByMg4MDx44dY+PGjURFRT23nq6BgYGEhITQsGFD/v73v1OpUiVu3brFgQMH+PPPP5k3bx6//vorAwYMIDQ0lNKlS3Pt2jUmTJiAh4dHhn2RM1O2bFk++OADOnbsyKBBg6hevToPHjzg0KFDbN26lbVr1wI5//xlR8WKFYmNjaV+/fq89957LF68OMv55dT169dZuXJluu0ZPSzw9ddfp3nz5vTp04fbt29TokQJPvvsM+7cuZOjVe7ly5dn/vz5xMTEUKZMGVxdXfHw8CA4OJghQ4bwj3/8g19++YXQ0FDc3d25du0aO3bs4OzZsxQoUMAs1p07d/jhhx+Mn3fs2MHcuXMJDAzM9PNgMpn44osvsp23SG6kYrGIiIiIiIi8VEJCQggPD2fChAmcP3+eunXrEhcX98TjoqKi6NWrFy1btuTGjRssWLCAsLCwTMdHR0fTs2dPIiIiyJcvH2FhYTRv3pxu3bplK187OzsqVqxIdHQ0x48fx97eHl9fX2JjYzNd6QipvVQ3bdrEwIEDGTRoELdu3cLHx4fY2FiqVKmSrRyyq3Xr1jg5OTF+/HiWLFkCpLaWaNiwYab9kS1l5cqVTJw4kTlz5nDs2DEcHR2pUKECnTt3BuDVV1/l1VdfZcKECZw6dQpHR0fq1KnDkiVLjNYFWTVz5ky8vLz49NNPGTNmDPnz58fLy4vWrVsbY3L6+csuHx8fvv32WwIDA+nRowefffZZlvLLqRMnTmQYZ8eOHRmOnz9/Pr1792bgwIHY2dnx3nvvUaFCBWbNmpXtubt27crevXuJiIjg0qVLvPfeeyxcuBCACRMmULt2bWbPnk14eDjXrl3DxcWFKlWqMH/+fN59912zWEeOHKFmzZpA6orlEiVKMGjQIIYMGZLtvEReRqaUlJSUF51EbnP9+nUcHR25du0aBQsWfNHp5BpVBi22aPyxrfwtGr/CP9M/wfdZKuDX0aLxm/y+zqLxu9Vvb7HYJXstt1hsAJ+e2fuP+exatM/xyYOeQuWA4haNH7d0rEXj+wUGPXnQU3j1ZNZXi2SXu1/GD+h4VqZvS79y41lq2LChReMfP9HnyYOeQjkvyz5cpOOhkhaLPbS8p8ViA0xauMui8fU79/Fy8+/csNfDLRb7ZZVb/25w9+5djh49SsmSJbGzs3vR6YjI/4i6detibW3N1q1bX3QqIv9zsvq7XyuLRURERERERETkmVq1ahXHjx+nYsWK3L59m6VLl7Jjxw7WrFnzolMTkcdQsVhEREREREReeomJiZnuM5lM2W5HIJId/4ufv/z58/PFF1/wxx9/cP/+fcqVK8eSJUt45513XnRqIvIYKhaLiIiIiIjIS8/GxibTfSVKlCAhIeH5JSP/c/4XP39BQUEEBVm25ZyIPHsqFouIiIiIiMhLLz4+PtN9tra2zzET+V+kz5+I5BYqFouIiIiIiMhLz9fX90WnIP/D9PkTkdzC6kUnICIiIiIiIiIiIiIvnorFIiIiIiIiIiIiIqJisYiIiIiIiIiIiIioWCwiIiIiIiIiIiIiqFgsIiIiIiIiIiIiIuTiYvGyZcvw8fHB3t4eFxcXWrVqxeHDhx97zJAhQ6hZsyavvPIKdnZ2lCpVioiICM6fP/+cshYRERERERERERH5a8qVxeLPP/+ctm3b8vPPP+Pu7k5SUhKrVq3Cz8+Ps2fPZnrchx9+SHx8PG5ubhQqVIijR48ya9YsAgICSE5Ofo5nICIiIiIiIs/StGnTKF68ONbW1jg5OREVFZXtGNOnT2fTpk0WyO7ZWLp0KWXKlMHGxoY333zzRafzXO3evRsrKys+//zzdPveeecdSpQowa1bt8y2f/PNNzRu3JjChQtjY2ODm5sbwcHBxMTEmNUAwsLCMJlMxsvBwYE33ngjw7mel7i4uBx9hkVEnlaeF51Adt2/f58hQ4YA0LJlS1auXMnp06cpV64c58+fJyoqipkzZ2Z47PDhw+nbty+FCxcmKSmJ0NBQVq1axW+//cb+/fupXLny8zwVERERERGRv5w3Vv7zhc29v1VQjo77448/GDBgAIMHDyYkJIRZs2YRFRXFsGHDshVn+vTpNGnShMaNG+coD0u6efMmXbp0oW3btixcuJCCBQu+6JSeKz8/P7p27crgwYNp1qwZrq6uAKxdu5Z169axfv16HBwcjPHDhg1jwoQJNG/enFmzZuHu7s65c+dYu3YtHTp0wMXFhaCg//+8lSpVii+//BKAGzdusGbNGt5//30cHBx49913n+/Jklosnjx5crY/wyIiTyvXrSyOj4/n4sWLQGqxGKBIkSLUqFEDgG+//TbTY8eNG0fhwoUBsLa2xs/Pz9hna2trqZRFRERERETEgg4ePEhKSgrdunXDz8+PsmXLWnS+e/fuPfdvpyYkJHDv3j06duxIrVq1qFixYo5jJSUl8eDBg2eYXdbduXMnw+2RkZH4+/s/9tgPP/wQKysrBg4cCKQW0CMiImjevDkhISHGuI0bNzJhwgRGjRrF6tWrCQ0NpW7durRu3Zovv/ySPXv28Morr5jFtre3p0aNGtSoUYPAwEDmzJnDm2++yerVq5/uhEVEcplcVyw+ceKE8fPD/+fu5uYGwPHjx7MU59atWyxevBiAWrVq4e3tnenYe/fucf36dbOXiIiIiIiIvHhhYWFGobB06dKYTCZGjx7NrVu3jLYCTypCAnh4eHDs2DFmz55tHLdw4UJjX+/evfnoo48oUaIE9vb2XL58mf/+97+8++67FCtWjHz58uHt7c2UKVPMCskJCQmYTCaWLFlC7969cXZ2xt3dnYEDB5KYmGiMO3nyJG3atMHNzQ07OztKlixJv379gNRCalpxOCAgAJPJRGRkJACXL1+mS5cuuLq6Ym9vj5+fH9u3bzc7N39/f5o0acKiRYvw8vLC1taW/fv3ExYWRoUKFdi8eTOVKlXC3t6eevXqkZCQwOXLl2nTpg0FCxakdOnSLF++PN0127hxI9WrV8fe3p7ChQvTq1cvs1YQcXFxmEwmNm7cSKtWrShYsCCtW7d+8k3NhIuLC5MmTWLRokXExcUxYsQIrl69mu7bxVOnTsXd3Z0RI0ZkGKdatWpZ+mZxgQIF0hXVjx07RqtWrXB0dMTBwYGgoCD+/e9/m41JTk5m3LhxeHh4YGtrS7ly5fj000/NxjzpfufkMywi8izkujYUmUlJScny2AsXLhASEsL+/fspV64cK1aseOz4CRMmMHr06KdNUURERERERJ6xkSNH4u3tzeDBg1m9ejWFCxdmwYIFxMTEsGXLFoAstWxYs2YNjRs3pnbt2gwYMABILT6nWbVqFWXKlGHGjBlYW1vj4ODA/v378fLyon379hQoUIBffvmFUaNGcfPmTUaNGmUWf/jw4TRr1oyvvvqK3bt3ExkZiaenJz179gSgU6dOnD59mpkzZ+Lm5sbx48f56aefAHj//fcpXbo0nTp1Yvbs2fj4+FC0aFGSkpJo1KgRR44c4cMPP8TNzY2ZM2cSGBjI7t27qVKlijH/Tz/9REJCAmPGjMHZ2ZlixYoBcPbsWQYMGMDw4cOxsbGhT58+tG/fnnz58lG3bl26devG3Llz6dChAzVq1KBEiRIArFy5ktDQUDp37szo0aM5c+YMQ4YM4cqVKyxbtszs3Lt3706HDh1Ys2YN1tbW2bq/j3rvvfdYsGCBcb0mT55M0aJFjf2JiYns2rWLVq1akSdP9koeacX7mzdvsnr1anbt2mUsMoPU9hT+/v5YWVnxySefYGdnx/jx46lbty6//vqrcU0HDRrEjBkzGDFiBH5+fmzYsIGePXvy4MEDevfuDTz5fp88eZKlS5dm6zMsIvIs5Lpicdr/+QKcP38+3c/Fixd/7PEHDx6kcePGHDlyhBo1avD1118bvY4yM3ToUPr372+8v379ulkeIiIiIiIi8mKULl3aaDtRuXJlPDw82Lx5M1ZWVka7wqyoXLkytra2uLm5ZXjcgwcP+Oabb8z64gYEBBAQEACkLmCqXbs2t2/fZtasWemKxdWrVzdWwAYGBrJ161ZWrlxpFIv37t3LhAkTCA0NNY7p1KkTAEWLFjVWFnt7exv5rV+/nr179/Ltt98a/XeDgoLw9PQkKiqKVatWGbEuX75MfHx8ur/LXr58mW3btvH6668DcPr0aSIiIhg8eDAjR44EoGrVqqxevZq1a9fSt29fUlJSGDhwIKGhocybN8+I5e7uTuPGjRk5cqQRD6Bp06Z8+OGHZvMmJyebrcBOTk4mJSXFbLW1yWTKsLg8duxY6tatS7ly5YiIiDDbd+nSJe7du5fuPFNSUkhKSjLeW1lZYWX1/1+2PnDgADY2NmbHDBgwgPbt2xvvFyxYwLFjxzhw4ADly5cHoF69ehQvXpzp06czZcoULl68SHR0NIMGDTJWf7/99ttcvHiRMWPG0KtXL6ytrZ94v4sWLZrtz7CIyLOQ69pQVK1alUKFCgEYv/hOnz7NDz/8AEDDhg0BKFeuHOXKlWPWrFnGsdu3b8fPz48jR47QqlUrtm7d+sRCMaT2My5YsKDZS0RERERERP53+Pv7mxWKAe7evcuoUaPw9PTE1tYWGxsbhg8fzpkzZ7h586bZ2Lffftvsvbe3NydPnjTe+/j4MHnyZD7++GP+/PPPLOW0Y8cOChYsaPagNhsbG1q0aMHOnTvNxlaqVCnDRU9FihQxK+ymFd4bNGhgbHNycuKVV14x2kIeOnSIY8eO0aZNGxITE41XvXr1sLKyMlbIpgkODk43b5cuXbCxsTFeY8eOZfv27WbbHl7Z/bBPP/0Uk8lEQkICCQkJGY4xmUxm71etWmUWu0+fPmb7S5cuTXx8PPHx8Wzbto1x48YRHR3NmDFjjDE7duygQoUKRqEYUltjBAYGGtf7xx9/5MGDB+nabYSGhnLhwgUOHToE5Ox+i4g8D7muWJw3b16ioqKA1P+zL1WqFOXLl+fGjRu4uroyZMgQIHUF8cGDB42H4UHqv95evnwZk8nE8ePH8ff3NxrYb9y48YWcj4iIiIiIiPz1pT0n52GDBw9m0qRJdOvWjU2bNhEfH2/0yb17967ZWCcnJ7P3efPmNRuzfPlyAgICGD58OGXKlKFcuXJPfLjalStX0j2oLS3Xy5cvPzH/zPJ6Ur5pf89u3ry5WQE2X758JCUlmT1rKLO5IyMjjeJsfHw83bp1w8fHx2zb119/ne6477//ni+//JK5c+fy2muvpVtZXKhQIWxtbc0K8ZC6Cjwtrru7e7q4dnZ2+Pr64uvrS926dRk+fDg9evRg/PjxxrW8cuVKhufy8PW+cuVKhuec9j5tXE7ut4jI85Dr2lBAar8jBwcHJk+ezO+//46dnR0tWrRg4sSJFClSJNPj7t+/D6R+/WTv3r1m+y5cuGDRnEVERERERCT3enSlKsCKFSvo0aMHgwcPNrbldCGSu7s78+fPZ968eezbt49x48YRGhrKwYMHKVWqVIbHuLi4mLVnTHPu3DlcXFyemH9OpcWeNWsW1atXT7f/0b+XZzS3h4cHHh4exvsNGzZw6NAhfH19M5333r17hIeHExAQQNeuXXnttddo1KgRq1atomXLlgDkyZOHWrVq8f3335OUlGS0sXB2djZipxXEn6R8+fLcv3+fP/74g+rVq+Pi4sLBgwfTjXv4eqf97/nz53nttdfMxjy8Pyf3W0Tkech1K4vTtG/fnp9//pm7d+9y9epV42EDaVJSUkhJSTF6BD28LaNXWFjY8z8JEREREREReeby5s3LvXv3cnTcoyuCH+fOnTtmhcekpKR0D3fLLisrK6pWrcq4ceNITEx8bIuC2rVrc/36dWJjY41tiYmJrFmzhtq1az9VHo9Trlw5ihYtypEjR4zVuA+/HreI62lMmDCBY8eOMWfOHCC1DWXLli3529/+Ztb2o3///pw+fdr4VnJO/fbbbwBG+8ratWvz73//26xgfOXKFTZv3mxc72rVqmFjY8OKFSvMYn311Ve88sorRpuPNJnd75x+hkVEnlauXFksIiIiIiIikpny5cuTmJjIjBkz8PPzo2DBgnh5eWXpuC1btvDdd9/h7OxMyZIljWfmZCQwMJC5c+fi7e2Nq6src+bMyVGB79q1awQFBdGxY0e8vLy4f/8+0dHRODk54ePjk+lxwcHBVKtWjQ4dOjBx4kTc3NyIjo7mzJkzDBs2LNt5ZJXJZGLq1Km0a9eOW7duERwcjIODA8eOHWPjxo1ERUWlK4o+rUOHDjFx4kQGDx5sFnv69OmUL1+eyMhIJk+eDKRelyFDhvCPf/yDX375hdDQUNzd3bl27Ro7duzg7NmzFChQwCz+nTt3jGch3blzhx07djB37lwCAwON3smdO3dm2rRpBAcHM27cOOzs7Bg/fjx58uThb3/7G5BaWI6IiGDSpEnY2dlRo0YNNm3axNKlS4mOjsba2jpL9zunn2ERkaelYrGIiIiIiIi8VEJCQggPD2fChAmcP3+eunXrEhcX98TjoqKi6NWrFy1btuTGjRssWLDgsd9CjY6OpmfPnkRERJAvXz7CwsJo3rw53bp1y1a+dnZ2VKxYkejoaI4fP469vT2+vr7ExsY+9qHs1tbWbNq0iYEDBzJo0CBu3bqFj48PsbGxVKlSJVs5ZFfr1q1xcnJi/PjxLFmyBEhtLdGwYcNM+yM/jfDwcIoVK8bQoUPNthctWpTRo0czePBg3nvvPSpWrAikrkKuXbs2s2fPJjw8nGvXruHi4kKVKlWYP38+7777rlmcI0eOULNmTSB1VW+JEiUYNGiQ8VwkgAIFChAXF0f//v3p3r07SUlJ1KpVi+3bt5s9PHDSpEk4OTkxb948xo0bh4eHB5988gk9evQAsna/c/oZFhF5WqaUlJSUF51EbnP9+nUcHR25du0aBQsWfNHp5BpVBi22aPyxrfwtGr/CP9M/wfdZKuDX0aLxm/y+zqLxu9Vvb7HYJXstt1hsAJ+e2fuP+exatM/RovErBxS3aPy4pWMtGt8vMOjJg57Cqyczfor2s+Dul/6BMs/S9G0rLRq/YcOGFo1//ESfJw96CuW8ulg0fsdDJS0We2h5T4vFBpi0cJdF4+t37uPl5t+5Ya+HWyz2yyq3/t3g7t27HD16lJIlS2JnZ/ei0xERERELy+rv/lzbs1hEREREREREREREnh21oRAREREREZGXXmJiYqb7TCYT1tbWzzEbERGRvyYVi0VEREREROSlZ2Njk+m+EiVKkJCQ8PySERER+YtSsVhEREREREReevHx8Znus7W1fY6ZiIiI/HWpWCwiIiIiIiIvPV9f3xedgoiIyF+eHnAnIiIiIiIiIiIiIioWi4iIiIiIiIiIiIiKxSIiIiIiIiIiIiKCisUiIiIiIiIiIiIigorFIiIiIiIiIiIiIoKKxSIiIiIiIiIiIiKCisUiIiIiIiLyEpg2bRrFixfH2toaJycnoqKish1j+vTpbNq0yQLZPRtLly6lTJky2NjY8Oabb77odJ47k8nE5MmTM90fFhZGhQoVsh03q8dFRkaye/fuDPfdunWLqKgoKleuTP78+bGzs6Ns2bL07NmTf//732ZjTSaT2cvNzY2QkJB04yIjIzGZTLz22mskJyenm7NWrVqYTCbCwsKyfrIiIk+Q50UnICIiIiIiIn8dyw4cfmFzv/t66Rwd98cffzBgwAAGDx5MSEgIs2bNIioqimHDhmUrzvTp02nSpAmNGzfOUR6WdPPmTbp06ULbtm1ZuHAhBQsWfNEp/eWMHDmSW7duWSz+6NGjyZ8/P35+fmbbL168SP369Tl27BgRERHUqVOHvHnzcuDAAebNm8e6des4c+aM2TERERG0a9eOlJQUTp48SVRUFG+//Ta///47Tk5OxjgbGxsuXrzI9u3b8ff3N7YfO3aMPXv2kD9/foudr4j8b1KxWERERERERHK1gwcPkpKSQrdu3ShVqhSxsbEWne/evXvY2NhgZfX8vqybkJDAvXv36NixI7Vq1XqqWElJSSQnJ2NjY/OMssu6O3fuYG9vn257ZGQkcXFxxMXF5Th26dI5+8eGp9WrVy+OHDnCjz/+yOuvv25sf+uttwgPD+fzzz9Pd0zx4sWpUaOG8b5s2bK8+eab7N692+wfK/LmzUuDBg2IiYkxKxYvW7aM119/HWtra8uclIj8z1IbChEREREREcm1wsLCCAkJAVKLhSaTidGjR3Pr1i3ja/4PF9ky4+HhwbFjx5g9e7Zx3MKFC419vXv35qOPPqJEiRLY29tz+fJl/vvf//Luu+9SrFgx8uXLh7e3N1OmTDFrGZCQkIDJZGLJkiX07t0bZ2dn3N3dGThwIImJica4kydP0qZNG9zc3LCzs6NkyZL069cPSC2kVqxYEYCAgABMJhORkZEAXL58mS5duuDq6oq9vT1+fn5s377d7Nz8/f1p0qQJixYtwsvLC1tbW/bv32+0X9i8eTOVKlXC3t6eevXqkZCQwOXLl2nTpg0FCxakdOnSLF++PN0127hxI9WrV8fe3p7ChQvTq1cvs5W9cXFxmEwmNm7cSKtWrShYsCCtW7d+8k3NoYzaSezcuZPKlStjZ2dHpUqV+O6773jzzTczbN0QFxdH5cqVcXBwoFq1auzbt8/YZzKZABg0aJDx+YiLi+PYsWOsWrWK8PBws0JxGisrK7p16/bE3AsUKADAgwcP0u1r27YtK1euNNu3dOlS2rVr98S4IiLZpZXFIiIiIiIikmuNHDkSb29vBg8ezOrVqylcuDALFiwgJiaGLVu2AGSpZcOaNWto3LgxtWvXZsCAAYD5StVVq1ZRpkwZZsyYgbW1NQ4ODuzfvx8vLy/at29PgQIF+OWXXxg1ahQ3b95k1KhRZvGHDx9Os2bN+Oqrr9i9ezeRkZF4enrSs2dPADp16sTp06eZOXMmbm5uHD9+nJ9++gmA999/n9KlS9OpUydmz56Nj48PRYsWJSkpiUaNGnHkyBE+/PBD3NzcmDlzJoGBgezevZsqVaoY8//0008kJCQwZswYnJ2dKVasGABnz55lwIABDB8+HBsbG/r06UP79u3Jly8fdevWpVu3bsydO5cOHTpQo0YNSpQoAcDKlSsJDQ2lc+fOjB49mjNnzjBkyBCuXLnCsmXLzM69e/fudOjQgTVr1jzXlbBnzpyhYcOG+Pj48NVXX3Ht2jV69erFtWvX0vV8Pnv2LH369GHIkCE4OjoydOhQmjdvzuHDh7GxsWHPnj3UrFnTaB8B4O3tzbp160hJSeHtt9/OVm7JyckkJiaSkpLCqVOn+Pvf/46rq2uG/7AREhJC165diY2NJTg4mP/85z/8+uuvrF27NsMivojI01CxWERERERERHKt0qVLU7ZsWQAqV66Mh4cHmzdvxsrKyuxr/k9SuXJlbG1tcXNzy/C4Bw8e8M033+Dg4GBsCwgIICAgAICUlBRq167N7du3mTVrVrpicfXq1Zk5cyYAgYGBbN26lZUrVxrF4r179zJhwgRCQ0ONYzp16gRA0aJFjZXF3t7eRn7r169n7969fPvttwQFBQEQFBSEp6cnUVFRrFq1yoh1+fJl4uPjjSLxw9u3bdtmrIo9ffo0ERERDB48mJEjRwJQtWpVVq9ezdq1a+nbty8pKSkMHDiQ0NBQ5s2bZ8Ryd3encePGjBw50myVbdOmTfnwww/N5k1OTjZbgZ2cnExKSorZamuTyfRUxeVp06aRJ08eNm7caKzcLVmyJHXq1Ek39tHr4ODgwFtvvcWPP/5I7dq1jWv+aPuI06dPA6S7ro+eX5485uWXwYMHM3jwYOO9i4sLa9aswdHRMV1u+fLlo1mzZixbtozg4GBiYmKoWbMmJUuWzNb1EBHJCrWhEBEREREREXkCf39/s0IxwN27dxk1ahSenp7Y2tpiY2PD8OHDOXPmDDdv3jQb++jKU29vb06ePGm89/HxYfLkyXz88cf8+eefWcppx44dFCxY0CgUQ+oD0Vq0aMHOnTvNxlaqVCldQROgSJEiZoXdtMJ7gwYNjG1OTk688sornDhxAoBDhw5x7Ngx2rRpQ2JiovGqV68eVlZWxoroNMHBwenm7dKlCzY2NsZr7NixbN++3Wzb0/Ygjo+P56233jIKxQC1a9fGxcXlidfB29sbwOwePU5am4o0TZs2NTuXR69J3759iY+PJz4+no0bN1KzZk2aNWvGr7/+mmH8tm3bsm7dOu7cucOyZcto27ZtlvISEckuFYtFREREREREnsDNzS3dtsGDBzNp0iS6devGpk2biI+PZ8SIEUBqIflhTk5OZu/z5s1rNmb58uUEBAQwfPhwypQpQ7ly5Vi9evVjc7py5QqvvPJKhrlevnz5iflnlteT8r148SIAzZs3NyuI5suXj6SkJKOo/Li5IyMjjWJpfHw83bp1w8fHx2zb119/nfnJZ8GZM2coXLhwuu0ZXbPMrsOj9/FRRYoUAdIXladPn058fDyffPJJhscVLVoUX19ffH19ady4MatWrSJPnjyMGTMmw/FBQUHY2Njwj3/8g6NHj9KmTZvH5iUiklNqQyEiIiIiIiLyBI+uHAVYsWIFPXr0MGsnsHHjxhzFd3d3Z/78+cybN499+/Yxbtw4QkNDOXjwIKVKlcrwGBcXF86fP59u+7lz59Ktns0o/5xKiz1r1iyqV6+ebn9aAfVxc3t4eODh4WG837BhA4cOHcLX1/eZ5enu7s6FCxfSbc/omuVU3bp1MZlMxMbGUr9+fWO7p6cnQLoV5pmxtbWlVKlSHDhwIMP9NjY2tGzZkqlTpxIQEJBp8V9E5GlpZbGIiIiIiIi8VPLmzcu9e/dydNyTVpI+7M6dO8YKVICkpKR0D3fLLisrK6pWrcq4ceNITEx8bEuK2rVrc/36dWJjY41tiYmJrFmzhtq1az9VHo9Trlw5ihYtypEjR4zVsQ+/Hi0WvyhVq1Zly5Yt3Lhxw9i2Y8eOdKuus8rGxibd56NEiRK0bNmS2bNn8/vvv+c417t373L48GFcXV0zHfP+++8TEhJC3759czyPiMiTaGWxiIiIiIiIvFTKly9PYmIiM2bMwM/Pj4IFC+Ll5ZWl47Zs2cJ3332Hs7MzJUuWpFChQpmODwwMZO7cuXh7e+Pq6sqcOXNyVKS+du0aQUFBdOzYES8vL+7fv090dDROTk74+PhkelxwcDDVqlWjQ4cOTJw4ETc3N6Kjozlz5gzDhg3Ldh5ZZTKZmDp1Ku3atePWrVsEBwfj4ODAsWPH2LhxI1FRUUbv42ft3//+NytXrjTblj9/fho2bJhubL9+/ZgzZw7BwcEMGjSIq1evMnr0aFxdXbGyyv7aufLly7Nu3Trq1KmDg4MDXl5eFChQgI8//pj69etTs2ZNevfuTZ06dbCzs+PUqVMsWrQIKysr8uXLZxbr+PHj/PDDDwBcuHCB2bNnc+nSJeOBhxmpVq0aa9euzXbeIiLZoWKxiIiIiIiIGN59/ekeKvZXEBISQnh4OBMmTOD8+fPUrVuXuLi4Jx4XFRVFr169aNmyJTdu3GDBggWEhYVlOj46OpqePXsSERFBvnz5CAsLo3nz5nTr1i1b+drZ2VGxYkWio6M5fvw49vb2+Pr6Ehsb+9iVptbW1mzatImBAwcyaNAgbt26hY+PD7GxsVSpUiVbOWRX69atcXJyYvz48SxZsgRIbS3RsGFDi7ZIWLx4MYsXLzbbVrp06QxXYLu7u/PNN9/Qp08fWrVqRenSpZkxYwa9e/fG0dEx23PPnj2bvn370qhRI+7cucPWrVvx9/fH1dWV3bt3M2PGDFasWMG0adNISkqiePHivPXWW/zyyy/GA/PSREdHEx0dDaT2Sy5fvjxr1qzhnXfeyXZeIiLPkiklJSXlRSeR21y/fh1HR0euXbtGwYIFX3Q6uUaVQYufPOgpjG3lb9H4Ff6Z/gm+z1IBv44Wjd/k93UWjd+tfnuLxS7Za7nFYgP49Mzef8xn16J92f8P0eyoHFDcovHjlo61aHy/wKAnD3oKr5603F943f3SPxzlWZq+beWTBz2FjFbgPEvHT/SxaPxyXl0sGr/joZIWiz20vKfFYgNMWrjLovH1O/fxcvPv3LDXwy0W+2WVW/9ucPfuXY4ePUrJkiWxs7N70emIPDd//PEH5cqVY/78+bz33nsvOh0Rkecmq7/7tbJYRERERERERF5KQ4cOpVKlShQpUoQjR44QFRWFu7s7LVu2fNGpiYj8JalYLCIiIiIiIi+9xMTETPeZTCasra2fYzbyvNy/f5/Bgwdz7tw57O3t8ff3Z9KkSeTPn/9FpyYi8pekYrGIiIiIiIi89GxsbDLdV6JECRISEp5fMvLcTJkyhSlTprzoNEREcg0Vi0VEREREROSlFx8fn+k+W1vb55iJiIjIX5eKxSIiIiIiIvLS8/X1fdEpiIiI/OVZvegEREREREREREREROTFU7FYRERERERERERERFQsFhEREREREREREREVi0VEREREREREREQEFYtFREREREREREREBBWLRURERERERERERAQVi0VEREREROQlMG3aNIoXL461tTVOTk5ERUVlO8b06dPZtGmTBbJ7NpYuXUqZMmWwsbHhzTfffNHpSCbi4uJy9Pnz8PCgd+/exvuwsDAqVKhgvF+4cCEmk4mLFy8+kzyz6sGDB1SsWJF69eqRkpJitm/t2rWYTCY2bNhgtv348eN88MEHlC5dGjs7OwoUKECVKlUYNWoUFy5cMMbFxcVhMpmMV548eShRogS9evXi0qVLz+X8HnX16lUiIyP5z3/+89Sx0s7vp59+ynTMo/c9q7JyXEJCApGRkZw+fTrD/Za4T/7+/phMJt5999108924cQN7e3tMJhMLFy7M9jnL85HnRScgIiIiIiIifx1VBi1+YXPvm9QpR8f98ccfDBgwgMGDBxMSEsKsWbOIiopi2LBh2Yozffp0mjRpQuPGjXOUhyXdvHmTLl260LZtWxYuXEjBggVfdEqSibi4OCZPnpztz9+jRo4cya1bt55RVjlnY2PDxx9/TN26dVm4cCGdO3cGUj+TERERtGjRgiZNmhjjf/zxRxo1aoSLiwt9+/alYsWKPHjwgN27d/PJJ59w6NAhYmJizOZYsGAB5cqVIzExkQMHDjB8+HCOHj3Kt99++1zPFVKLxaNHj6ZChQp4e3tbfL41a9bg7OxskdgJCQmMHj2aJk2aUKRIEbN9lrxP+fPn5+uvv+bWrVs4ODiYnWuePCpF/tXpDomIiIiIiEiudvDgQVJSUujWrRulSpUiNjbWovPdu3cPGxsbrKye35d1ExISuHfvHh07dqRWrVpPFSspKYnk5GRsbGyeUXZZd+fOHezt7dNtj4yMJC4ujri4uKeO9bIoXbr0c5knISGBkiVLcvToUTw8PDIcU7t2bTp37sygQYMICQnB1dWVESNGcO3aNWbOnGmMu3v3Lq1bt6Zo0aLs3LnT7B813n77bQYMGMDXX3+dLn6FChXw9fU15rp79y79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dOlC1apVgdT2E6VKlSI2NtbswXdubm4ZFnofp3z58nz99decP38eNzc3XFxc0j20EODcuXOULVsWSD3/Bw8ecOXKFZydnc3GmEwm4x8DypYty4oVK3jw4AG7d+9m2LBhhISEcOrUKbMezCIiLzMVi0VEREREROSl4uDgQM2aNfn9998ZN25clo557bXXGDBgAEuXLuX333/P1nwNGjTgt99+o3Llyun6+T7MxsbGbEXyszZ9+nTu3r1Ls2bN+Oc//0mtWrWylV9ODBw4EJPJxEcffQRA9+7dWbBgAT179iQ+Ph4rq9QvNPfv35/evXvzxRdf0LFjxxzP99tvv2FjY0PBggWB1FYVn332mVkh+ODBg/z666906dLFGAOwYsUKunfvbsRasWIFlStXNmvZAan3qV69egwZMoSmTZty+vRpypYtm25FuYjIy0jFYhEREREREXnpTJo0ifr16xMaGsq7776Ls7MzJ0+e5LvvvqNz5874+/vTo0cPnJ2dqVGjBs7OzuzatYv9+/dnuAL3cUaPHk3VqlUJCgqie/fuuLm5cfbsWbZt20adOnVo27YtkLoqdt26ddSpUwcHBwe8vLye+crjjz/+mDt37tC4cWM2b95M1apVs5xfdm3bto1FixYxf/58YxWylZUVH3/8MdWqVWPOnDn07t0bgPDwcHbv3k1YWBhbt24lJCQEV1dXLl26RGxsLJB+FfbVq1f54YcfALhx4wabNm1i06ZNdOvWDXt7ewD69evHggULePvttxk+fDh3795lxIgRFC9enLCwMAAqVapEixYt6N+/P3fu3MHLy4slS5awe/du1q1bB8Cvv/7KgAEDCA0NpXTp0ly7do0JEybg4eFB6dKlgdT7N3/+fGJiYihTpgyurq54eHjk6NqJiPxVqVgsIiIiIiIiLx0/Pz927tzJqFGj6Ny5M/fv36do0aIEBATg6elpjJk7dy5z587l9u3blCpVimnTptG1a9dszeXp6cnevXsZMWIE4eHh3Lx5E3d3d+rWrUulSpWMcbNnz6Zv3740atSIO3fusHXrVvz9/Z/laWMymZg/fz737t0jKCiIuLg4KlWqlKX8suP+/fv06tWLOnXqGEXZND4+PoSHhzNixAhatWrFq6++islkYsmSJTRq1Ih58+bRpUsXbt26ReHChalRowYbNmwgODjYLM6uXbuoWbMmAPb29pQqVYpJkybRp08fY0yxYsXYtm0bAwcOpH379lhbWxMYGMjUqVPNis9Llixh2LBhTJw4kcuXL1OuXDlWrlxJSEgIAK+++iqvvvoqEyZM4NSpUzg6OlKnTh2WLFlirMbu2rUre/fuJSIigkuXLvHee++xcOHCHF0/EZG/KlNKWld4ybLr16/j6OjItWvXjK++yJNVGbTYovHHtvK3aPwK/wx+8qCnUMAv51/Fyoomv6+zaPxu9dtbLHbJXsstFhvAp2c3i8ZftM/RovErBxS3aPy4pWMtGt8vMMii8V89Wdpisd39XrFYbIDp21ZaNH7Dhg0tGv/4iT5PHvQUynl1sWj8jodKWiz20PKeFosNMGnhLovG1+/cx8vNv3PDXs/eakrJvX83uHv3LkePHqVkyZLY2dm96HRERETEwrL6u9/qOeYkIiIiIiIiIiIiIn9RakMhIiIiIiIi8gIkJyeTnJyc6X5ra2tMJtNzzEhERP7XaWWxiIiIiIiIyAswZswYbGxsMn0tWrToRacoIiL/Y7SyWEREREREROQF6N69O02aNMl0f8mSluufLyIikhEVi0VERERERERegCJFilCkSJEXnYaIiIhBbShERERERERERERERMViEREREREREREREVGxWERERERERERERERQsVhEREREREREREREULFYRERERERERERERFCxWERERERERERERERQsVhERERERETkuYiMjGT37t3ZOmbhwoWYTCYuXrwIQEJCAiaTiZUrVxpjPDw86N279zPNNStiYmIwmUx8//33ZtuTkpLw9fWlWrVqJCcnG9tTUlL48ssvqV+/Pi4uLuTNm5fXXnuNVq1asWnTJrMY/v7+mEwm4+Xo6EiNGjVYt27dczm3jKxdu5Y5c+Y8k1j+/v40adIk0/2P3vesyupxCxcuZOnSpRnus8R9iouLM8b897//TTfn8OHDMZlMeHh4ZOt8ReTZy/OiExAREREREZG/jiubP3phczs3+PsLm/t5GD16NPnz58fPzy/HMdzd3dmzZw9ly5Z9hpnlTNu2bVmwYAHh4eH8+uuv2NraAhAdHc0vv/xCfHw8Vlapa9RSUlLo0KEDy5Yto1OnTkRERFCoUCGOHz/O8uXLCQ4O5r///S9eXl5G/Fq1ajF58mQArl69yueff06LFi3Yvn07tWrVeu7nu3btWn76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ssR9eljLli05e/Ysu3btIiYmhsaNG1OwYMEs5SYilqeVxSIiIiIiIpLrubm5GT9fuXKFpKQk+vXrR79+/dKNPXHiBJDah/bGjRt89tlnTJs2DUdHR9577z0mTpyIvb29Mf7RlZt58+bl7t27xvuLFy8yffp0pk+fnm6uvHnzPuWZZc3evXu5fPkyM2fOTPdgv6zm9+mnn5q1bhg9ejQAo0aNMrYVKFAgXYz58+eza9cuVq5cSdeuXRk6dCgff/yxsb9IkSIA6YqVHTt2xN/fH4CqVaumi+vo6Iivr6/x/q233uLgwYMMHDiQTp06YTKZuHLlCm+++Wa6Y93c3Lh8+TKQ+nmwsbExKyinjUlJSeHq1as4ODgQGxvL8OHD+eCDD7h16xZVqlRh6tSp1K1bN138h4WEhJgV3fft20fPnj3T/UNB2nXIiTNnzmT4wLvM+vw+6TObEUvep4e5uLgQFBTEwoULWbVqlVlLFxF58VQsFhERERERkVzv4YKUk5MTJpOJYcOGpWuJAODq6gqAlZUVffv2pW/fvpw6dYply5YxZMgQXF1ds9WP1sXFheDgYONr/w/LqLhqCW3btiVPnjy8++67bNiwwWzFaVbz8/LyMttXqFAhALNC4KMuXrzI4MGD6dy5My1atOD8+fN88MEHdOnSxSgsFitWjFKlShEbG2v24Ds3NzezIn9WlC9fnq+//prz58/j5uaGi4tLuocWApw7d46yZcsCqef/4MEDrly5grOzs9kYk8lkFFbLli3LihUrePDgAbt372bYsGGEhIRw6tQpsx7MjypUqJBxrQBu3rwJPP66ZZe7uzsXLlxItz2jc88pS96nR7Vt25aOHTuSP39+goODnzp3EXl21IZCREREREREXioODg7UrFmT33//HV9f33QvDw+PdMe89tprDBgwgEqVKhkPAsuqBg0a8Ntvv1G5cuV0cz1cgLWxsXni6s6nMX36dN577z2aNWvGrl27sp1fTgwcOBCTycRHH30EQPfu3fH19aVnz54kJycb4/r378+PP/7IF1988VTz/fbbb9jY2BhtC2rXrs3333/PlStXjDEHDx7k119/pXbt2sYYgBUrVpjFWrFiBZUrVzZr2QGp96levXoMGTKE69evGz2Xs7I611KqVq3K1atX2b59u7Ht5s2bfP/99zmKl9m5WOo+PapZs2Y0a9aMYcOGGX20ReSvQSuLRURERERE5KUzadIk6tevT2hoKO+++y7Ozs6cPHmS7777js6dO+Pv70+PHj1wdnamRo0aODs7s2vXLvbv35/hCtzHGT16NFWrViUoKIju3bvj5ubG2bNn2bZtG3Xq1KFt27ZA6mrLdevWUadOHRwcHPDy8nrmK48//vhj7ty5Q+PGjdm8eTNVq1bNcn7ZtW3bNhYtWsT8+fONlbVWVlZ8/PHHVKtWjTlz5tC7d28AwsPD2b17N2FhYWzdupWQkBBcXV25dOkSsbGxQPpV2FevXuWHH34A4MaNG2zatIlNmzbRrVs3o01Iv379WLBgAW+//TbDhw/n7t27jBgxguLFixMWFgZApUqVaNGiBf379+fOnTt4eXmxZMkSdu/ezbp16wD49ddfGTBgAKGhoZQuXZpr164xYcIEPDw8KF26NJB6/+bPn09MTAxlypTB1dU1w394yKqzZ8+ycuXKdNszWmnbqFEjfHx8aNeuHRMmTMDJyYmPPvqIAgUKYGWV/XWA5cuXZ9GiRXz99de4u7tTpEgRihQpYrH79CgHBwdWr16d7bxFxPJULBYREREREZGXjp+fHzt37mTUqFF07tyZ+/fvU7RoUQICAvD09DTGzJ07l7lz53L79m1KlSrFtGnT6Nq1a7bm8vT0ZO/evYwYMYLw8HBu3ryJu7s7devWpVKlSsa42bNn07dvXxo1asSdO3fYunWr0Qv2WTGZTMyfP5979+4RFBREXFwclSpVylJ+2XH//n169epFnTp1jKJsGh8fH8LDwxkxYgStWrXi1VdfxWQysWTJEho1asS8efPo0qULt27donDhwtSoUYMNGzakK5Lu2rWLmjVrAmBvb0+pUqWYNGkSffr0McYUK1aMbdu2MXDgQNq3b4+1tTWBgYFMnTrVrKi5ZMkShg0bxsSJE7l8+TLlypVj5cqVhASJawAAACYUSURBVISEAPDqq6/y6quvMmHCBE6dOoWjoyN16tRhyZIlWFtbA9C1a1f27t1LREQEly5d4r333mPhwoU5un6Q2tv40Yfuwf/31H6YyWRi3bp19OjRg+7du+Ps7EyfPn04ePAgv/zyS7bn/vvf/86ff/5Jp06duHr1KqNGjSIyMtJi90lEcg9TSkpKyotOIre5fv06jo6OXLt2TU/szIYqgxZbNP7YVv4WjV/hn5bto1TAr6NF4zf5fZ1F43er395isUv2Wm6x2AA+PbtZNP6ifY4WjV85oLhF48ctHWvR+H6BQRaN/+rJ0haL7e6X8QNFnpXp29KvNHmWGjZsaNH4x09Y9i8I5by6WDR+x0MlLRZ7aHlPi8UGmLRw15MHPQX9zn283Pw7N+z17K2mlNz7d4O7d+9y9OhRSpYsqa+Ai+RS9+/fx9vbmzp16rBgwYIXnY6I/MVl9Xe/VhaLiIiIiIiIiPzFffbZZyQnJ+Pl5cWVK1f4+OOPSUhIYNmyZS86NRF5iahYLCIiIiIiIvICJCcnmz0E7lHW1taYTKbnmJH8ldnZ2TFx4kQSEhIAeOONN9i4cSO+vr4vNjERealkvwu6iIiIiIiIiDy1MWPGYGNjk+lr0aJFLzpF+Qvp1KkT//nPf7h9+za3b99mz549BAVZtqWbiPzv0cpiERERERERkRege/fuNGnSJNP9JUtarn++iIhIRlQsFhEREREREXkBihQpQpEiRV50GiIiIga1oRARERERERERERERFYtFRERERERERERERMViEREREREREREREUHFYhERERERERERERFBxWIRERERERERERERQcViEREREREREREREUHFYhEREREREZHnIjIykt27d2frmIULF2Iymbh48SIACQkJmEwmVq5caYzx8PCgd+/ezzTXrMgol0f5+/vTpEmTbMfOynFXr14lMjKS//znPxnuv3TpEkOGDMHb25t8+fKRL18+KlSowIABA0hISEh3HmkvKysrXnvtNdq1a8exY8fMYoaFhWEymahRo0a6+VJSUihWrBgmk4nIyMhsn7OIyF9BnhedgIiIiIiIiPx11Iqu9cLm3hWx64XN/TyMHj2a/Pnz4+fnl+MY7u7u7Nmzh7Jlyz7DzCxnzpw5WFtbWyT21atXGT16NBUqVMDb29ts359//kn9+vV58OABffr0oWrVqphMJv71r3/xySefsHv3bvbs2WN2TFRUFG+99RbJyckcPnyYf/zjHzRu3Jhff/3V7Bzy58/Pjz/+yNGjRylZsqSxfceOHZw7dw5bW1uLnK+IyPOgYrGIiIiIiIi8VFJSUrh///5LWbSztbXNcFWrJYSFhQGpq5tz6tEi7vPSrl07EhMT2bdvH0WKFDG2BwQE0LdvX5YsWZLumDJlyhjX1s/Pj4IFC/LOO+9w8OBBs/MoUaIE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vAyvRYsWxqNJUVFR+Pr60rt3b8xmMx07duSZZ56xz4REREREREREaohnn32WzZs3Exsby5tvvsljjz2Gv79/mWkrRESk5qlxaSgAnn76aRo2bEhkZCSJiYnUq1eP4cOHs3Dhwgpzhf3lL3/B09OTFStWcPr0aVxdXXn44YdZuHAhDRs2vI0zEBGRms7Z2Zk5c+aUSlMkIiIiUptlZGQQHh5OWloarq6uDBo0iMjIyJvOWSwiIr9MNS4NhYiIiIiIiFSP0lCIiIjcWWptGgoRERERERERERERufUULBYRERERERERERERBYtFRERERETuVMpKKCIicmeo7D1fwWIREZEaJDo6GpPJZPzExsbae0giIlIDOTo6ApCTk2PnkYiIiMjtYLnnW34HKE/d2zEYERERERER+eVwcHDAzc2NCxcuANCgQQNMJpOdRyUiIiK3mtlsJicnhwsXLuDm5oaDg0OF9RUsFhERqUHatm3LiBEjjLKHh4cdRyMiIjVZixYtAIyAsYiIiNRebm5uxr2/IiazklSJiIiIiIjcsYqKiigoKLD3MERERMRGHB0db7ii2ELBYhERsbvo6Ghef/11Tpw4gYuLCwMGDODll19mzZo1zJs3z6iXnJzMqVOn6N+/v7Fv+/btRvns2bN4e3sbx44dO0aXLl0A+Oqrr7jvvvuMY1u2bGHYsGGYzWYWL17MgQMHOHr0KGlpaWRkZODk5ESrVq0IDAwkPDwcPz8/qzGfOXMGHx8fozxnzhzGjh3L/PnziYmJIT09HR8fHyZMmMCkSZOqPe+2bdsabcaOHWsc27VrF8HBwTc8BjB37txy+xURERERERFRGgoREbGradOmERUVZZTz8vJYt24dH3/8Mf369StV/95778XJyYn8/HwAdu/ebQSLd+/ebVV39+7dRrA4Li7O2G8ymQgKCgKur6aaMWNGqfMUFBSQlJREUlISa9euZd26dYSFhZU7j7179/Laa69x+fJlY19SUhKTJ08mMzOT2bNnV2veIiIiIiIiIrZWx94DEBGRO9f27dutAqYAPXr0IDAwkOzsbLZs2VKqTYMGDQgICDDKX375ZZnbYB08Lr7drVs3mjZtalXXw8ODXr16MXjwYP7whz/Qs2dP4zGdgoICxo8fz5UrV8qdy7Zt28jKyuI3v/kNPXv2tDq2aNEisrOzqzVvEREREREREVtTsFhEROymZMB06dKlHDhwgLi4OGJiYsp9K3vx1Ap79+6lqKgI+DkgbAnyWspms5mvvvqqzPYODg4cOXKE1NRU9u7dS0xMDB988AH79+/no48+Muqlp6cTGxtb4Xzee+894uPj2b9/P3/605+M/VeuXGH//v3VnreIiIiIiIiILSlYLCIidlFYWMgXX3xhlO+66y4mTpxolPv3709oaGiZbYsHe7Ozszl8+DCZmZkcPXoUwEgXkZyczPnz5zl+/Djp6elltjeZTDRp0oQXXniBnj170qRJE+rWrYvJZGLw4MFW5/3222/LnU9gYCDDhw83yiXb/vDDD9Wet4iIiIiIiIgtKWexiIjYxaVLl8jLyzPKXbp0oU4d6+8wu3btys6dO0u1LStv8cWLF7l27RoAM2bMYMOGDcaxjIwMo23xfMUAhw8fJjg42CrXcHkyMzPLPebv729VdnV1tSpfvXoVqN68RURERERERGxJwWIREflFuJnUC5a8xZYcxV9++SVpaWkAeHt70717d3x9fUlKSioVLC6Zr3jmzJlWgWIvLy+6d+9OgwYNyMnJ4ZNPPjGOmc3mcsdUMgeyJRXGjdgy5YQlPYdFamqqzc4lIiIiIiIiNZ+CxSIiYhfu7u7Ur1+f3NxcAJKSkjCbzVbBU0taibIEBwdbBYsvXrwIwH333Wf8t6xgcfEUFIBVLmN/f3/i4+NxcnICID4+3ipYfCtUd94VsYzbovi8Afbs2VOlfkVEREREROTOoJzFIiJiFw4ODvTt29cof/fdd6xatcoo79ixg08//bTc9sWDvufPnzdeZmcJFgcGBgJw5MgRzpw5U2Y7gIKCAmPb2dkZR0dHAHJycpgzZ87NTaoSqjvvirRo0cKqHB0dbawujoyM5MiRI1XqV0RERERERO4MWlksIiJ28/zzz7Nt2zaj/NRTT7Fy5UqcnZ2Jj4+vMO1DybzFhYWFQOlgsSWPMZTOVwwQEBBAXFwccH0lcefOnWnfvj0HDx60WdqG6sy7IgEBAUb6DICPP/4YDw8PTCaT1Qv+RERERERERMqilcUiImI3/fv3Z+rUqUbZbDaTkJDA7t27cXV15aGHHrKqXzzNgiVvcXGNGzfm17/+NQAdO3akefPmVsdL5isGWLBgAXXr/vzdaVJSEjExMaSmpjJv3rzqTbAc1Zl3RVxcXJg2bZrVvoyMDNLT03F3d2f48OHVH7yIiIiIiIjUWgoWi4iIXUVGRrJq1Sq6d++Os7MzHh4ePProoxw4cID69esb9RwcHHB3d7dqWzKlRO/evalT5+dbm2WVcXn1AYKCgti1axfBwcE0aNCARo0a0adPH2JiYnj88cerP8FyVHXelpXUFpa0GRZz585l6dKl+Pr64uTkhKenJ2PHjuXw4cNGIF1ERERERESkLCZzVZ91FRERuQXOnj1LmzZtSu1PTEykV69eZGdnA9eDup9//vntHp7NVHXe06ZNIyoqyiifOnWK9u3b237AIiIiIiIiUuspWCwiInY1aNAgjh8/TlBQEHfddRcAp0+f5sMPPzRW0ZpMJv773//Sv39/ew71lrrZea9du5YDBw7w1ltvkZubC4C3t7fVy/tEREREREREqkMvuBMREbtLSUlh3bp1ZR5zdnbm9ddfr1WBYoubmfeSJUs4cuSIVZ2FCxfafIwiIiIiIiJy51CwWERE7GrixIl4enqyb98+UlNTycrKolGjRnTo0IF+/frxzDPP1Mo0C1Wdd/369fHz8yMiIoKhQ4faYeQiIiIiIiJSWykNhYiIiIiIiIiIiIhQ58ZVRERERERERERERKS2U7BYRERERERERERERBQsFhEREREREREREREFi0VEREREREREREQEBYtFREREREREREREBAWLRURERERERERERAQFi0VEREREREREREQEBYtFREREREREREREBAWLRURERERERERERAT4P3paDoCrac6SAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10, 8))\n", + "palette = sns.color_palette(\"tab20\", n_colors=len(df['model'].unique())) # 더 많은 색상 지원\n", + "sns.barplot(x='region', y='CSI', hue='model', ci=None, data=df.loc[(df['region']=='gwangju'),:], palette=palette)\n", + "plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', fontsize=11)\n", + "plt.title('Soft Voting Ensemble: Model Performance Comparison in Gwangju', fontsize=15, fontweight='bold') # 제목 볼드 및 크기 조정\n", + "plt.ylabel('CSI', fontsize=20,) # y축 라벨 변경 및 스타일 조정\n", + "plt.xlabel('') # y축 라벨 변경 및 스타일 조정\n", + "# x축(도시명) 글씨 크기 조정\n", + "plt.xticks(fontsize=15, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.yticks(fontsize=10, fontweight='bold') # x축(지역명) 폰트 크기 증가\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "6it [00:00, 8513.47it/s]\n" + ] + }, + { + "data": { + "text/html": [ + "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "df = pd.read_feather(\"../data/asos_air_merge.feather\") # asos와 air 병합한 데이터 불러오기\n", + "\n", + "df['지역_1'] = df['지역'].str.split(' ').str[0] # 도,시,광역시 이름 저장\n", + "df['지역_2'] = df['지역'].str.split(' ').str[1] # 시,군,구 이름 저장\n", + "data = df.loc[df['거리차이(km)'] <= 5,:].drop_duplicates(subset=['지점']).copy() # 5km 이내 데이터만 추출\n", + "# 데이터 필터링 (6개 지점만 선택)\n", + "data = data.loc[data['지점'].isin([112, 108, 133, 159, 143, 156]), :].copy()\n", + "\n", + "\n", + "import folium\n", + "from tqdm import tqdm\n", + "\n", + "# 지도 중심 설정 (첫 번째 지점 기준)\n", + "map_center = [data['위도'].iloc[0], data['경도'].iloc[0]]\n", + "\n", + "m = folium.Map(location=map_center, zoom_start=10, tiles=\"OpenStreetMap\")\n", + "\n", + "# CircleMarker + 텍스트 추가\n", + "for index, row in tqdm(data.iterrows()):\n", + " # 원형 마커 추가\n", + " folium.CircleMarker(\n", + " location=[row['위도'], row['경도']],\n", + " radius=6, # 마커 크기\n", + " color='blue', \n", + " fill=True,\n", + " fill_color='blue',\n", + " fill_opacity=0.7,\n", + " ).add_to(m)\n", + "\n", + " # 텍스트 항상 표시 (DivIcon 사용)\n", + " folium.map.Marker(\n", + " [row['위도'], row['경도']], \n", + " icon=folium.DivIcon(\n", + " icon_size=(120, 30),\n", + " icon_anchor=(0, 0),\n", + " html=f'
{row[\"지점\"]}
'\n", + " )\n", + " ).add_to(m)\n", + "\n", + "m" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [], + "source": [ + "from collections import Counter\n", + "\n", + "seoul= pd.read_feather(\"../data/data_for_modeling/df_seoul.feather\")\n", + "busan= pd.read_feather(\"../data/data_for_modeling/df_busan.feather\")\n", + "incheon= pd.read_feather(\"../data/data_for_modeling/df_incheon.feather\")\n", + "daegu = pd.read_feather(\"../data/data_for_modeling/df_daegu.feather\")\n", + "daejeon = pd.read_feather(\"../data/data_for_modeling/df_daejeon.feather\")\n", + "gwangju = pd.read_feather(\"../data/data_for_modeling/df_gwangju.feather\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "seoul = seoul.loc[seoul['year'].isin([2018, 2019, 2020, 2021]), :]\n", + "busan = busan.loc[busan['year'].isin([2018, 2019, 2020, 2021]), :]\n", + "incheon = incheon.loc[incheon['year'].isin([2018, 2019, 2020, 2021]), :]\n", + "daegu = daegu.loc[daegu['year'].isin([2018, 2019, 2020, 2021]), :]\n", + "daejeon = daejeon.loc[daejeon['year'].isin([2018, 2019, 2020, 2021]), :]\n", + "gwangju = gwangju.loc[gwangju['year'].isin([2018, 2019, 2020, 2021]), :]" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "seoul :\n", + "multi_class\n", + "2 91.12\n", + "1 8.73\n", + "0 0.15\n", + "Name: count, dtype: float64\n", + "\n", + "busan :\n", + "multi_class\n", + "2 94.54\n", + "1 5.12\n", + "0 0.34\n", + "Name: count, dtype: float64\n", + "\n", + "incheon :\n", + "multi_class\n", + "2 83.46\n", + "1 14.54\n", + "0 2.00\n", + "Name: count, dtype: float64\n", + "\n", + "daegu :\n", + "multi_class\n", + "2 96.34\n", + "1 3.52\n", + "0 0.14\n", + "Name: count, dtype: float64\n", + "\n", + "daejeon :\n", + "multi_class\n", + "2 90.01\n", + "1 9.35\n", + "0 0.64\n", + "Name: count, dtype: float64\n", + "\n", + "gwangju :\n", + "multi_class\n", + "2 90.93\n", + "1 8.71\n", + "0 0.36\n", + "Name: count, dtype: float64\n" + ] + } + ], + "source": [ + "print(\"seoul :\")\n", + "print(np.round(seoul['multi_class'].value_counts()*100 / seoul.shape[0],2))\n", + "print()\n", + "print('busan :')\n", + "print(np.round(busan['multi_class'].value_counts()*100 / busan.shape[0],2))\n", + "print()\n", + "print('incheon :')\n", + "print(np.round(incheon['multi_class'].value_counts()*100 / incheon.shape[0],2))\n", + "print()\n", + "print('daegu :')\n", + "print(np.round(daegu['multi_class'].value_counts()*100 / daegu.shape[0],2))\n", + "print()\n", + "print('daejeon :')\n", + "print(np.round(daejeon['multi_class'].value_counts()*100 / daejeon.shape[0],2))\n", + "print()\n", + "print('gwangju :')\n", + "print(np.round(gwangju['multi_class'].value_counts()*100 / gwangju.shape[0],2))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(35064, 31)" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "seoul.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "year\n", + "2020 8784\n", + "2018 8760\n", + "2019 8760\n", + "2021 8760\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "seoul['year'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "py39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b84b9154771fa7188594f6d69c442d471db90efe --- /dev/null +++ b/README.md @@ -0,0 +1,272 @@ +### 가시거리(Visibility) 예측 모델링 프로젝트 + +기상·대기오염·항공정보(ASOS, DataOn, TAF)를 통합해 가시거리(`visi`)를 예측합니다. 불균형 데이터를 SMOTENC/CTGAN으로 보강하고, GBDT(LightGBM/XGBoost)와 탭울러 딥러닝(ResNet-like, FT-Transformer, DeepGBM)을 결합해 다중/이진 분류를 수행합니다. + +### 기술 스택(Tech Stack) + +- 데이터 처리: `pandas`, `numpy` +- EDA/시각화: `matplotlib`, `seaborn` +- 샘플링/불균형 처리: `imbalanced-learn (SMOTENC)`, `CTGAN`, `Optuna`(CTGAN 하이퍼파라미터), 지역/연도 기반 분할 +- 모델링(GBDT): `LightGBM`, `XGBoost`(GPU 옵션 포함, 사용자 정의 CSI 평가) +- 모델링(딥러닝): `PyTorch` 기반 `ResNetLike`, `FTTransformer`, `DeepGBM` +- 최적화: `hyperopt`(LightGBM/XGBoost), `Optuna`(CTGAN) +- 유틸/저장: `joblib` + +### 시스템 아키텍처(파이프라인) + +1) 데이터 수집/적재: `data/ASOS`, `data/dataon`, `data/data_for_TAF` +2) 병합/전처리: `0.air_data_merge.ipynb` → `1.data_merge.ipynb` → `2.eda_preproccesing.ipynb` +3) 데이터 증강(불균형 처리): `Analysis_code/make_oversample_data/` 내 `SMOTENC` → `CTGAN(+Optuna)` → 규칙 기반 필터링 +4) 데이터 분할: 지역별(`*_train.csv`, `*_test.csv`), 연도 기반 3-Fold 홀드아웃 +5) 학습: GBDT(`optima/*.py`)와 딥러닝 노트북(`deeplearning_model_*`) +6) 평가/분석: 사용자 정의 `CSI` + F1/Accuracy, `model_visualize.ipynb`, `find_reason/*`(트렌드, 분포 비교) +7) 앙상블/최종: `model_voting_test_best_sample/*`, `final_test/final.ipynb` + +### TL;DR (빠른 시작) + +1) 파이썬 환경 준비 후 필수 패키지 설치 + +```bash +pip install -U torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 +pip install pandas numpy scikit-learn matplotlib seaborn imbalanced-learn optuna ctgan xgboost lightgbm joblib +``` + +2) 데이터 배치 +- 원천/중간 산출물을 `data/` 하위에 배치. 학습용 CSV/feather는 `data/data_for_modeling/` 참고. + +3) 오버샘플링 수행(SMOTE/CTGAN) + +```bash +cd Analysis_code/make_oversample_data +python smote_sample_1.py +python oversampling_code.py +``` + +4) GBDT 최적화/학습 예시(서울시) + +```bash +cd ../optima +python LGB_smote_seoul.py +python XGB_smote_seoul.py +``` + +5) 딥러닝 모델 학습/평가: 노트북 실행(`Analysis_code/` 내 `.ipynb`) + +--- + +### 프로젝트 구조 + +``` +visibility_prediction/ +├── Analysis_code/ +│ ├── 0.air_data_merge.ipynb +│ ├── 1.data_merge.ipynb +│ ├── 2.eda_preproccesing.ipynb +│ ├── 3.oversampling.ipynb +│ ├── deeplearning_model_binary.ipynb +│ ├── deeplearning_model_multi.ipynb +│ ├── make_train_test.ipynb +│ ├── model_visualize.ipynb +│ ├── final_test/ +│ │ └── final.ipynb +│ ├── find_reason/ # 지역별 트렌드/원인 분석 노트북 +│ ├── sampling_data_test/ # 샘플링 데이터 성능 테스트 노트북 +│ ├── model_voting_test_best_sample/ +│ │ └── ensemble__voting_best_sample.ipynb +│ ├── make_oversample_data/ +│ │ ├── oversampling_code.py # SMOTENC+CTGAN 파이프라인 +│ │ ├── smote_sample_1.py # 연도/전처리 포함 SMOTE 샘플 +│ │ └── (gan_sample_*.py 등) +│ ├── optima/ # GBDT 하이퍼파라미터 탐색/학습 스크립트 +│ │ ├── LGB_smote_seoul.py +│ │ └── XGB_smote_seoul.py +│ ├── models/ +│ │ ├── best_resnet_model.pth +│ │ └── tabnet_model.zip +│ ├── deepgbm.py +│ ├── ft_transformer.py +│ └── resnet_like.py +├── data/ +│ ├── ASOS/ # 기상 +│ ├── dataon/ # 대기오염(대용량 일자별 CSV) +│ ├── data_for_modeling/ # 지역별 train/test CSV 및 feather +│ ├── data_for_demo/ +│ ├── data_for_TAF/ # 공항 TAF(항공기상) CSV +│ └── data_oversampled/ +│ ├── smote/ +│ ├── ctgan7000/ +│ ├── ctgan10000/ +│ └── ctgan20000/ +└── README.md +``` + +--- + +### 데이터 및 변수(Variables) + +- 목표 변수 + - `visi`: 가시거리(연속값). 합성 표본 필터링 규칙에서 확인되는 구간 예시: class 0은 [0,100), class 1은 [100,500), class 2는 그 외 구간으로 사용됩니다. + - `multi_class`: 다중 분류 라벨(정수 0/1/2) + - `binary_class`: 이진 라벨. 규칙: `binary_class = 0 if multi_class == 2 else 1` + +- 주요 피처 그룹(코드 기준) + - 기상(ASOS): `temp_C`, `precip_mm`, `wind_speed`, `wind_dir`(정온→0 치환), `hm`, `vap_pressure`, `dewpoint_C`, `loc_pressure`, `sea_pressure`, `solarRad`, `snow_cm`, `cloudcover`(int), `lm_cloudcover`(int), `low_cloudbase`, `groundtemp` + - 대기오염(DataOn): `O3`, `NO2`, `PM10`, `PM25` + - 시간/주기: `year`(int), `month`(int), `hour`(int), `hour_sin`, `hour_cos`, `month_sin`, `month_cos` + - 파생: `ground_temp - temp_C`(지면-기온 차) + +- 범주형 변수(모델/샘플링 관점) + - `wind_dir`, `cloudcover`, `lm_cloudcover`, 그리고 `int` 타입의 시간 변수(`year`, `month`, `hour`)는 SMOTENC/GBDT에서 범주형으로 취급됨(코드에서 `float64`가 아닌 열 인덱스 자동 탐지) + +- 전처리 규칙(발췌) + - `wind_dir` 중 `'정온'`은 "0"으로 치환 후 정수형 변환 + - `cloudcover, lm_cloudcover` 정수형 변환 + - 학습 시 타깃/보조 열(`multi_class, binary_class`) 분리 후 필요 시 재계산 + +--- + +### EDA 및 전처리 + +- 병합/정리 + - 인덱스 열 제거: `Unnamed: 0` 드롭 + - 자료형 정합성: `cloudcover`, `lm_cloudcover` 정수형; `year`, `month`, `hour` 정수형 + - 특수값 치환: `wind_dir == '정온'` → "0" 후 정수형 변환 + +- 특징 공학 + - 주기형 인코딩: `hour_sin`, `hour_cos`, `month_sin`, `month_cos` + - 차분형 파생: `ground_temp - temp_C` + +- 분포/트렌드 분석 + - 지역별 시계열 트렌드: `find_reason/*_trend.ipynb` + - 분포 비교/변화 감지: `find_reason/wasserstein_distance.ipynb`(Wasserstein 거리 기반 분포 차이 정량화) + +- 데이터 분할 + - 지역 단위 데이터셋(`*_train.csv`, `*_test.csv`) + - 연도 기반 홀드아웃 3-Fold(2018–2020 조합)로 일반화 성능 검증 + +### 불균형 처리 및 합성 샘플링 + +- SMOTENC + - 범주형 인덱스: 입력 특성 중 `float64`가 아닌 열의 위치 인덱스 사용 + - 샘플링 전략 예시: `{0: 10000, 1: 10000, 2: 기존 개수}` 또는 데이터 규모에 따라 `{0: 500/1000, 1: ceil(n1/100)*100, 2: n2}` + - 재계산: 샘플링 후 `multi_class`에서 `binary_class` 및 주기/차분 파생을 복구 + +- CTGAN(+Optuna) + - 클래스 0, 1을 대상으로 Optuna로 `embedding_dim, generator_dim, discriminator_dim, pac, batch_size, discriminator_steps` 탐색 후 합성 + - 생성 표본 품질 필터: `class 0 → 0 ≤ visi < 100`, `class 1 → 100 ≤ visi < 500` + - 최종 합본 후 파생/보조 피처(`binary_class`, 주기/차분 항목) 복구 + +- 산출물 + - `data/data_oversampled/smote/`, `ctgan7000/`, `ctgan10000/`, `ctgan20000/` 하위에 지역별 CSV 저장 + +--- + +### 모델 아키텍처(상세) + +- 딥러닝(tabular) + - `resnet_like.py` + - 입력: `x_num [B, N_num]`, `x_cat [B, N_cat]` → concat → 입력선형(`d_main=128`) → 잔차블록(`n_blocks=4`, `d_hidden=64`, `dropout_first=0.25`) → 출력층 + - 출력: `num_classes == 2 → 1 로짓`, `> 2 → K 로짓` + - `ft_transformer.py` + - 수치: Linear(`num_features → d_token=192`), 범주: `cat_cardinalities`별 `nn.Embedding(d_token)` 후 합성 + - 인코더: `TransformerEncoderLayer(d_model=d_token, nhead=8, dropout≈0.2)` × `n_blocks=6` → 평균 풀링 → 분류 헤드 + - `deepgbm.py` + - 수치 Linear(`d_main=128`) + 범주 임베딩 합산 → 잔차 MLP 블록(`n_blocks=4`, `d_hidden=64`, `dropout≈0.2`) → 분류 헤드 + +- GBDT + - LightGBM(`optima/LGB_smote_seoul.py`): `objective='multiclassova'`, `n_estimators≈4000`, 조기종료, GPU 옵션 예시 존재, `hyperopt`로 `max_depth, min_child_weight, num_leaves, subsample, learning_rate` 탐색 + - XGBoost(`optima/XGB_smote_seoul.py`): `objective='multi:softprob'`, `tree_method='hist'`, `enable_categorical=True`, GPU 옵션, `hyperopt`로 핵심 하이퍼파라미터 탐색, `eval_metric=CSI` + +--- + +### 학습/검증 전략 + +- 연도 기반 홀드아웃 3-Fold(예시) + - Fold1: Train 2018–2019 → Val 2020 + - Fold2: Train 2018–2020 → Val 2019 + - Fold3: Train 2019–2020 → Val 2018 +- 지역 단위로 별도 학습(예: `seoul_train.csv` 등) + +--- + +### 평가 지표 + +- 사용자 정의 CSI(Critical Success Index) 다중분류 버전 + +```python +H = cm[0, 0] + cm[1, 1] +F = (cm[1, 0] + cm[2, 0] + cm[0, 1] + cm[2, 1]) +M = (cm[0, 2] + cm[1, 2]) +CSI = H / (H + F + M + 1e-10) +``` + +- 그 외: 정확도, F1 등 노트북/스크립트에서 병행 확인 + +--- + +### 실행 방법(상세) + +- 환경 준비 + - Python 3.8+ 권장, CUDA 지원 시 GPU 사용 가능(CTGAN/GBDT 속도 향상) + - LightGBM GPU가 미설치라면 `pip install lightgbm`으로 CPU 버전 사용 또는 GPU 빌드 필요 + +- 데이터 준비 + - `data/ASOS/`: 연도별 기상 원천 + - `data/dataon/`: 대기오염 일자별 CSV(대용량) + - `data/data_for_modeling/`: 지역별 학습/평가 세트(`*_train.csv`, `*_test.csv`, `df_*.feather`) + - `data/data_for_TAF/`: 공항별 TAF(항공기상) + +- 전처리/탐색 + - `Analysis_code/0.air_data_merge.ipynb` → `1.data_merge.ipynb` → `2.eda_preproccesing.ipynb` + +- 오버샘플링 + - `Analysis_code/make_oversample_data/`에서 스크립트 실행(상단 TL;DR 참조) + +- GBDT 최적화/학습 + - `Analysis_code/optima/LGB_smote_seoul.py`, `XGB_smote_seoul.py` 실행 + - 산출 모델은 `Analysis_code/save_model/` 하위에 `.pkl`로 저장 + +- 딥러닝 학습 + - `deeplearning_model_*` 노트북에서 탭울러 모델 학습/평가, `model_visualize.ipynb`로 시각화 + +- 앙상블/최종 평가 + - `model_voting_test_best_sample/ensemble__voting_best_sample.ipynb` + - `final_test/final.ipynb` + +--- + +### 모델 입출력 규격(요약) + +- 수치 입력 `x_num`: `float32` 텐서 `[batch, num_numeric_features]` +- 범주 입력 `x_cat`: 정수 인덱스 텐서 `[batch, num_categorical_features]` +- 출력: 이진(1 로짓) 또는 다중분류(K 로짓). 손실/임계값은 노트북 내 설정 참고 + +--- + +### 재현성/시드 + +- `random_state=42`(SMOTENC), 모델 스크립트 내 `random_state=120` 등의 고정값 사용 +- 데이터/하드웨어 차이에 따라 재현률이 다를 수 있으므로 fold/seed를 명시적으로 설정 권장 + +--- + +### 주의/트러블슈팅 + +- `optima/LGB_smote_seoul.py`의 `sys.path.append(...)`는 환경 의존적 경로입니다. 일반 환경에서는 제거해도 `from lightgbm import LGBMClassifier`가 동작해야 합니다. +- 스크립트는 상대 경로를 가정합니다. 실행 전 현재 작업 디렉터리가 `Analysis_code/*` 하위인지 확인하세요. +- `wind_dir`의 `'정온'` 값 치환/형변환이 누락되면 GBDT/XGB에서 오류가 발생할 수 있습니다. +- `dataon/`은 매우 대용량입니다. 메모리 여유를 확보하거나 연도/지역 단위로 처리하세요. + +--- + +### 의존성 + +- Python 3.8+ +- PyTorch, pandas, numpy, scikit-learn, imbalanced-learn, optuna, ctgan, xgboost, lightgbm, joblib, matplotlib, seaborn + +--- + +### 라이선스/인용 + +- 라이선스: 추후 업데이트 예정 +- 본 프로젝트/결과물을 인용 시 `visibility_prediction` 저장소와 사용된 데이터 소스(ASOS, DataOn, TAF)를 명시해 주세요.