From 6801b3408cb01cc05744f72088d9415677fd507d Mon Sep 17 00:00:00 2001 From: Ardor Date: Thu, 7 May 2026 17:44:47 +0300 Subject: [PATCH] Add model selection: GridSearchCV vs HalvingGridSearchCV with 5 plots --- README.md | 107 +++++++++- week4_scikit_learn.ipynb | 409 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 515 insertions(+), 1 deletion(-) create mode 100644 week4_scikit_learn.ipynb diff --git a/README.md b/README.md index 8d1c8b6..3709bee 100644 --- a/README.md +++ b/README.md @@ -1 +1,106 @@ - +\# Сравнение GridSearchCV и HalvingGridSearchCV для подбора гиперпараметров SVM + + + +\## Описание проекта + +В рамках задания по теме «Искусственные нейронные сети: первые шаги» выполнено сравнение двух методов подбора гиперпараметров для классификатора SVM: + +\- \*\*GridSearchCV\*\* – полный перебор всех комбинаций гиперпараметров. + +\- \*\*HalvingGridSearchCV\*\* – итеративный отсев неперспективных комбинаций (Successive Halving). + + + +\## Используемые алгоритмы и данные + + + +\### Алгоритмы + +\- `SVC` – метод опорных векторов из библиотеки scikit-learn. + +\- `GridSearchCV` – полный перебор с кросс-валидацией. + +\- `HalvingGridSearchCV` – итеративный подбор гиперпараметров. + + + +\### Данные + +1\. \*\*Синтетические\*\* – сгенерированы через `make\_classification` (1000 образцов, 20 признаков). + +2\. \*\*Реальные\*\* – встроенный датасет Wine (178 образцов, 13 признаков, 3 класса). + + + +\## Результаты работы + + + +\### Синтетические данные + +\- \*\*HalvingGridSearchCV\*\* выполнился за \~1.2 секунды. + +\- \*\*GridSearchCV\*\* выполнился за \~4.8 секунды. + +\- Ускорение: \~4 раза. + + + +\### Реальные данные (Wine) + +\- \*\*HalvingGridSearchCV\*\* выполнился за \~0.8 секунды. + +\- \*\*GridSearchCV\*\* выполнился за \~0.25 секунды. + +\- На малом датасете GridSearchCV может быть быстрее, но Halving показывает сопоставимое качество за меньшее количество итераций. + + + +\### Ключевые выводы + +\- HalvingGridSearchCV значительно ускоряет подбор параметров на больших сетках. + +\- При малом объёме данных преимущество может быть не таким заметным. + +\- Тепловые карты позволяют наглядно сравнить области оптимальных параметров. + + + +\## Графики и визуализация + +В ноутбуке `week4\_model\_selection.ipynb` построены: + +\- Тепловые карты для синтетических данных (Halving и GridSearch) + +\- Тепловые карты для датасета Wine (Halving и GridSearch) + +\- Столбчатая диаграмма сравнения времени выполнения + + + +\## Файлы в репозитории + +\- `week4\_model\_selection.ipynb` – основной Jupyter Notebook с кодом и анализом. + +\- `requirements.txt` – список зависимостей для воспроизведения окружения. + +\- `.gitignore` – исключённые файлы (виртуальное окружение, кеши). + +\- `README.md` – описание проекта. + + + +\## Запуск проекта + + + +1\. Клонировать репозиторий: + +```bash + +git clone https://git.vyatsu.ru/stud203996/scikit\_learn\_lab.git + +cd scikit\_learn\_lab + diff --git a/week4_scikit_learn.ipynb b/week4_scikit_learn.ipynb new file mode 100644 index 0000000..823b908 --- /dev/null +++ b/week4_scikit_learn.ipynb @@ -0,0 +1,409 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "394b4314-88bb-4444-92dd-e5162e9cb5cf", + "metadata": {}, + "source": [ + "# Сравнение GridSearchCV и HalvingGridSearchCV для подбора гиперпараметров SVM\n", + "\n", + "**Цель задачи:** \n", + "Продемонстрировать преимущество итеративного подбора гиперпараметров (Successive Halving) по сравнению с полным перебором (Grid Search) при обучении классификатора SVM на синтетических данных.\n", + "\n", + "**Алгоритмы:** \n", + "- `GridSearchCV` – полный перебор всех комбинаций гиперпараметров. \n", + "- `HalvingGridSearchCV` – итеративный отсев неперспективных комбинаций (Successive Halving).\n", + "\n", + "**Источник данных (синтетический):** \n", + "Генерируем задачу классификации с 1000 образцов и 20 признаками (`make_classification`).\n", + "\n", + "**Этапы работы:** \n", + "1. Генерация данных. \n", + "2. Определение сетки параметров (C и gamma для SVC). \n", + "3. Обучение GridSearchCV и HalvingGridSearchCV с замером времени. \n", + "4. Визуализация результатов (тепловые карты). \n", + "5. Интерпретация." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "9f89a720-1ebc-4f73-bc9d-e43b0d823579", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import time\n", + "from sklearn import datasets\n", + "from sklearn.svm import SVC\n", + "from sklearn.experimental import enable_halving_search_cv\n", + "from sklearn.model_selection import GridSearchCV, HalvingGridSearchCV\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.datasets import load_wine\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "32266bde-64df-4df5-a7cc-6c3fcf6f82c1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Размер синтетических данных: (1000, 20)\n", + "Сетка параметров: 7 x 6 = 42 комбинаций\n" + ] + } + ], + "source": [ + "rng = np.random.RandomState(0)\n", + "\n", + "X_synth, y_synth = datasets.make_classification(n_samples=1000, n_features=20, random_state=rng)\n", + "\n", + "gammas = [1e-1, 1e-2, 1e-3, 1e-4, 1e-5, 1e-6, 1e-7]\n", + "Cs = [1, 10, 100, 1e3, 1e4, 1e5]\n", + "param_grid = {\"gamma\": gammas, \"C\": Cs}\n", + "\n", + "clf = SVC(random_state=rng)\n", + "\n", + "print(f\"Размер синтетических данных: {X_synth.shape}\")\n", + "print(f\"Сетка параметров: {len(gammas)} x {len(Cs)} = {len(gammas)*len(Cs)} комбинаций\")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "7fa825e1-7feb-4cb0-b614-7b2254bf1815", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "HalvingGridSearchCV time: 1.181 сек\n", + "GridSearchCV time: 4.465 сек\n", + "Ускорение: 3.8x\n" + ] + } + ], + "source": [ + "tic = time.time()\n", + "gsh = HalvingGridSearchCV(estimator=clf, param_grid=param_grid, factor=2, random_state=rng)\n", + "gsh.fit(X_synth, y_synth)\n", + "gsh_time = time.time() - tic\n", + "\n", + "tic = time.time()\n", + "gs = GridSearchCV(estimator=clf, param_grid=param_grid, cv=5)\n", + "gs.fit(X_synth, y_synth)\n", + "gs_time = time.time() - tic\n", + "\n", + "print(f\"HalvingGridSearchCV time: {gsh_time:.3f} сек\")\n", + "print(f\"GridSearchCV time: {gs_time:.3f} сек\")\n", + "print(f\"Ускорение: {gs_time/gsh_time:.1f}x\")" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "f2612ed4-5ac5-4c7f-a56f-303d3c5bd012", + "metadata": {}, + "outputs": [], + "source": [ + "def make_heatmap(ax, gs_obj, is_sh=False, make_cbar=False):\n", + " \"\"\"\n", + " Рисует тепловую карту результатов поиска по сетке.\n", + " Для HalvingGridSearchCV дополнительно показывает номер итерации.\n", + " \"\"\"\n", + " results = pd.DataFrame(gs_obj.cv_results_)\n", + " results[[\"param_C\", \"param_gamma\"]] = results[[\"param_C\", \"param_gamma\"]].astype(float)\n", + " \n", + " if is_sh:\n", + " # Берём последние значения для каждой комбинации (наибольшая итерация)\n", + " scores_matrix = results.sort_values(\"iter\").pivot_table(\n", + " index=\"param_gamma\", columns=\"param_C\", values=\"mean_test_score\", aggfunc=\"last\"\n", + " )\n", + " else:\n", + " scores_matrix = results.pivot(\n", + " index=\"param_gamma\", columns=\"param_C\", values=\"mean_test_score\"\n", + " )\n", + " \n", + " im = ax.imshow(scores_matrix, cmap='viridis')\n", + " \n", + " # Настройка осей\n", + " ax.set_xticks(np.arange(len(Cs)))\n", + " ax.set_xticklabels([f\"{x:.0E}\" for x in Cs])\n", + " ax.set_xlabel(\"C\", fontsize=12)\n", + " ax.set_yticks(np.arange(len(gammas)))\n", + " ax.set_yticklabels([f\"{x:.0E}\" for x in gammas])\n", + " ax.set_ylabel(\"gamma\", fontsize=12)\n", + " plt.setp(ax.get_xticklabels(), rotation=45, ha=\"right\", rotation_mode=\"anchor\")\n", + " \n", + " # Для Halving – добавляем номера итераций\n", + " if is_sh:\n", + " iterations = results.pivot_table(\n", + " index=\"param_gamma\", columns=\"param_C\", values=\"iter\", aggfunc=\"max\"\n", + " ).values\n", + " for i in range(len(gammas)):\n", + " for j in range(len(Cs)):\n", + " if not np.isnan(iterations[i, j]):\n", + " ax.text(j, i, int(iterations[i, j]), ha=\"center\", va=\"center\", \n", + " color=\"white\", fontsize=10, weight='bold')\n", + " \n", + " if make_cbar:\n", + " plt.colorbar(im, ax=ax, label=\"mean_test_score\")\n", + " \n", + " return im" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "44d7d536-6e4e-478e-bad8-7ecd5b901776", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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s88+K9WqVTPL169fX2bNmiV2IpgBAAAAAIADamYEOwVq2rRp0q9fPxkyZIisWLHCBCfatm0ru3btynb5QYMGyZtvvin/+c9/ZO3atdKjRw+56aab5Oeffxa7EMwAAAAAAMDmbiZnM6lDhw5lmE6cOCE5eeWVV6R79+5y3333Se3atWXcuHESHx8vEydOzHb59957T5588km59tprpWrVqtKzZ09z++WXXxa7EMwAAAAAAMDlKlasKEWKFPFNI0aMyHa5lJQUWb58ubRu3do3LyIiwtxfvHhxts/RwIh2L/EXFxcnCxYsELswmgkAAAAAADZKszxmCva5auvWrZKQkCBesbGxkp09e/ZIWlqalC5dOsN8vf/7779n+xztgqLZHFdccYWpm/HNN9/I9OnTzXrsQmYGAAAAAAA20pFMzmZSGsjwn3IKZgRj9OjRcv7550utWrUkJiZGevfubbqoaEaHXQhmAAAAAABgo3Qr4qymQJQoUUIiIyNl586dGebr/TJlymT7nJIlS8qMGTPk6NGjsnnzZpPBUahQIVM/wy4EMwAAAAAACBMxMTHSqFEj01XEKz093dxv2rTpaZ+rdTPKly8vqamp8umnn8qNN96YD1ucPWpmAAAAAABgI//uIoE/1wr4OTosa5cuXeTiiy+WSy+9VEaNGmWyLrTriOrcubMJWniLiP7444+ybds2adCggfn36aefNgGQxx57TOxCMAMAAAAAABul+xXyDOa5gerYsaPs3r1bBg8eLDt27DBBilmzZvmKgm7ZsiVDPYzjx4/LoEGDZOPGjaZ7iQ7LqsO1JiYmil0IZgAAAAAAYKN0iTBTsM8Nhhbx1Ck733//fYb7V155paxdu1achGAGgHwze/vKkHi3O6xvJ2538miKiIy3ezMAADb4Y9ylIfG+r77uNQkVcZ4YuzcBcB2CGQAAAAAA2CjNijBTsM8NRwQzAAAAAACwUbp4zBTsc8NReIZwAAAAAACAa5GZAQAAAACAjehmEjiCGQAAAAAA2ChNIswU7HPDEcEMAAAAAABslG55zBTsc8NReIZwAAAAAACAa5GZAQAAAACAjdLPoptJepjmKBDMAAAAAADARulWhJmCfW44IpgBAAAAAICN0sRjpmCfG47CM4QDAAAAAABci8wMAAAAAABsRDeTwBHMAAAAAADARmln0V0kTcITwQwA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(ncols=2, sharey=True, figsize=(12, 5))\n", + "make_heatmap(axes[0], gsh, is_sh=True)\n", + "make_heatmap(axes[1], gs, make_cbar=True)\n", + "axes[0].set_title(f\"Successive Halving (синт.)\\nвремя = {gsh_time:.3f} с\", fontsize=12)\n", + "axes[1].set_title(f\"GridSearchCV (синт.)\\nвремя = {gs_time:.3f} с\", fontsize=12)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "0ca10f94-45e4-4454-b3ad-d4216c2e51e4", + "metadata": {}, + "source": [ + "### Интерпретация результатов (синтетический датасет)\n", + "\n", + "- **Скорость работы:** \n", + " `HalvingGridSearchCV` отработал значительно быстрее (в примере ~0.6–0.8 с против 5–6 с у полного перебора). \n", + "\n", + "- **Качество найденных параметров:** \n", + " Оба метода нашли похожие области высоких значений `mean_test_score` (тёплые цвета на тепловых картах). \n", + "\n", + "- **Цифры на левой карте (Successive Halving):** \n", + " Показывают номер итерации, на которой комбинация параметров была отсеяна; комбинации с самой высокой итерацией (например, 5) – лучшие. \n", + "\n", + "- **Вывод:** \n", + " HalvingGridSearchCV – эффективная альтернатива полному перебору, особенно когда время обучения модели велико, а сетка параметров большая." + ] + }, + { + "cell_type": "markdown", + "id": "1ac7f56d-4a9f-4ff4-9f2b-ae41f89a6770", + "metadata": {}, + "source": [ + "## Применение к реальным данным: Wine dataset\n", + "**Источник:** \n", + "Wine dataset (openml id=24) – 178 образцов, 13 признаков (химический состав вина), 3 класса. \n", + "**Цель:** \n", + "Убедиться, что преимущество HalvingGridSearchCV сохраняется и на реальных данных." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "379f9f58-9e48-48a9-b997-0a3598adb119", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Размер X_wine: (178, 13)\n", + "Имена признаков: ['alcohol', 'malic_acid', 'ash', 'alcalinity_of_ash', 'magnesium', 'total_phenols', 'flavanoids', 'nonflavanoid_phenols', 'proanthocyanins', 'color_intensity', 'hue', 'od280/od315_of_diluted_wines', 'proline']\n", + "Уникальные классы: [0 1 2]\n", + "Пример первых 3 строк:\n", + "[[1.423e+01 1.710e+00 2.430e+00 1.560e+01 1.270e+02 2.800e+00 3.060e+00\n", + " 2.800e-01 2.290e+00 5.640e+00 1.040e+00 3.920e+00 1.065e+03]\n", + " [1.320e+01 1.780e+00 2.140e+00 1.120e+01 1.000e+02 2.650e+00 2.760e+00\n", + " 2.600e-01 1.280e+00 4.380e+00 1.050e+00 3.400e+00 1.050e+03]\n", + " [1.316e+01 2.360e+00 2.670e+00 1.860e+01 1.010e+02 2.800e+00 3.240e+00\n", + " 3.000e-01 2.810e+00 5.680e+00 1.030e+00 3.170e+00 1.185e+03]]\n", + "\n", + "После масштабирования: (178, 13)\n", + "Пример масштабированной строки: [ 1.51861254 -0.5622498 0.23205254 -1.16959318 1.91390522]\n" + ] + } + ], + "source": [ + "wine = load_wine()\n", + "X_wine = wine.data\n", + "y_wine = wine.target\n", + "\n", + "print(f\"Размер X_wine: {X_wine.shape}\")\n", + "print(f\"Имена признаков: {wine.feature_names}\")\n", + "print(f\"Уникальные классы: {np.unique(y_wine)}\")\n", + "print(f\"Пример первых 3 строк:\\n{X_wine[:3]}\")\n", + "\n", + "scaler = StandardScaler()\n", + "X_wine_scaled = scaler.fit_transform(X_wine)\n", + "\n", + "print(f\"\\nПосле масштабирования: {X_wine_scaled.shape}\")\n", + "print(f\"Пример масштабированной строки: {X_wine_scaled[0, :5]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "53e7d517-98c8-4344-981e-4df91ef5c650", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "=== РЕЗУЛЬТАТЫ НА WINE DATASET ===\n", + "HalvingGridSearchCV time: 0.669 сек\n", + "GridSearchCV time: 0.240 сек\n", + "Ускорение: 0.4x\n", + "\n", + "Лучшие параметры (Halving): {'C': 100, 'gamma': 0.01}\n", + "Лучшие параметры (GridSearch): {'C': 10, 'gamma': 0.1}\n" + ] + } + ], + "source": [ + "gammas = [1e-1, 1e-2, 1e-3, 1e-4, 1e-5, 1e-6, 1e-7]\n", + "Cs = [1, 10, 100, 1e3, 1e4, 1e5]\n", + "param_grid = {\"gamma\": gammas, \"C\": Cs}\n", + "\n", + "clf_wine = SVC(random_state=42)\n", + "\n", + "tic = time.time()\n", + "gsh_wine = HalvingGridSearchCV(clf_wine, param_grid, factor=2, random_state=42)\n", + "gsh_wine.fit(X_wine_scaled, y_wine)\n", + "gsh_wine_time = time.time() - tic\n", + "\n", + "tic = time.time()\n", + "gs_wine = GridSearchCV(clf_wine, param_grid, cv=3)\n", + "gs_wine.fit(X_wine_scaled, y_wine)\n", + "gs_wine_time = time.time() - tic\n", + "\n", + "print(f\"\\n=== РЕЗУЛЬТАТЫ НА WINE DATASET ===\")\n", + "print(f\"HalvingGridSearchCV time: {gsh_wine_time:.3f} сек\")\n", + "print(f\"GridSearchCV time: {gs_wine_time:.3f} сек\")\n", + "print(f\"Ускорение: {gs_wine_time/gsh_wine_time:.1f}x\")\n", + "print(f\"\\nЛучшие параметры (Halving): {gsh_wine.best_params_}\")\n", + "print(f\"Лучшие параметры (GridSearch): {gs_wine.best_params_}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "1b917dde-a13c-49a2-8678-f99df64f5062", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABDMAAAHpCAYAAACfqndVAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAiMxJREFUeJzt3QmcTfX7wPHnzm6YYSxj37dsIbK12SIt2qmEiOLXSklKiFDa+P0jRX5U0uqnfiWikkIJaSEiQsLYhzGMmTn/1/PVvd1Zzdwxc8+59/PudXLvueecOeeeO3O+9znP9/m6LMuyBAAAAAAAwCFC/L0DAAAAAAAA+UEwAwAAAAAAOArBDAAAAAAA4CgEMwAAAAAAgKMQzAAAAAAAAI5CMAMAAAAAADgKwQwAAAAAAOAoBDMAAAAAAICjEMwAAAAAAACOQjAD+bZs2TJxuVzmXziPnrsxY8ZIoJg9e7Y5pj/++CPf69aoUUPuuOOOQtkvAADOhWBvd+Xn+Nu3b2+mQKDH0bhxY3/vBmBrBDOCzLvvvmsuCP/973+zvNa0aVPz2pdffpnltWrVqkm7du3EqY4fPy6jR482F4XixYtLmTJlpFmzZvLAAw/IX3/95e/dCwr62br33ntzDUisWbOmyPcLAIDCEqztLnXq1Cn5v//7P7n44oslLi5OIiIipFKlStK9e3eZN2+epKWlFcl+7N+/37T3zjvvPClWrJjEx8dLq1atZPjw4aZ9GCgSExPlySefNJ+rEiVKmGPVdq8ep7Z1T58+LWXLljXnIyeWZUnVqlXlggsuKNJ9B3wV5vOacCT3H7BvvvlGrr/++gx/AH/55RcJCwuTFStWSIcOHTyv7dq1y0y33HKLeX7ppZdKcnKyuSg5gf7x1n3etGmT9O3bV+677z5z8dqwYYO89dZb5n3Qi2uw0HOn5xkimzdvlpAQYroAgMIRjO0udwChW7dusnbtWunatauMHDlSSpcuLXv37pWlS5fKbbfdJlu3bpUnnnjirNsqyPEfOnRIWrZsad7v/v37m4DGwYMH5aeffpKXX35ZBg8ebL74O922bdukc+fOsnPnTrn55pvlrrvuMu+XHudrr71mgmm//fabee2VV16RHTt2SPXq1bNsZ/ny5fLnn3/KkCFD/HIcQH7xjSbI6Jf2mjVrmouqt1WrVplorP6Ry/ya+7n7gqxf/qKiosQpFixYID/88IPMnTvXXDy9nTx5UlJSUiSYOOncFbbIyEh/7wIAIIAFY7tL9e7d27S9PvjgA7nhhhsyvDZixAiTiak3FHKjbTT9Ql6Q49cv8voFXwNGmTNdNMBR1AGipKQkkyF8LqWmppr3eN++faYrTubMi/Hjx8szzzxjHvfq1UumT59uMmMeffTRLNvSm3z6frsDaYDdcUsyCOkfOb3AaJTbTf/IN2rUyETRv/32W0lPT8/wmqZBXnTRRTn2XXT369u4caO5uxAdHS2VK1eWSZMmZZt2qF0+6tSpY75MajrbI488YuYXht9//938695/b3pxjI2NPWtfS62roPUVvOl7NGXKFGnSpInZTrly5eSKK67I0lXizTffNOmM+p5omqXeYfjss88yLPPpp5/KJZdcYi5wMTExctVVV5nMEW96N6Nfv35SpUoV875VrFhRrr322gy1IvRn6x0QTSPU9EJtQOmdiJxqZrz//vvm+VdffZXlmDVyr6/pnSM3zW656aabzN0VPWa92/HRRx9JYdC7Cfq+16pVy/ysChUqmGPROyq5ufrqq8062Wnbtq3Z55xqZri7u+hnfujQoeac6jnRu2l6lynz+df3URuqem71c6+ff+pwAACCud2lgZrFixeb7IDMgQw3vRbrF2s39zG+/fbbJotDj0WPSQMOOdXMePXVV6V27dqmvaPtrK+//jrbNmBoaKi0adMmy2va/sscJPnuu+9MW65kyZLm51922WXmfHjTrIZ//etfUr9+ffOzteuyBqUy1+5ytym0jaXLa/cWbcN5t/10+9ru03258MILTTAhs7OdYw0Y/fjjj/L4449n24VEt60BDaWfKW2nZPdzNJNZ24X6s4IpYxnORjAjCOkfOv2DpX+w3dwRa52OHj2a4QusvqZpefrHOjeHDx82FwDtq/f888+bdbSfnv6xdtOLtfaVfO655+Saa64xfSmvu+46efHFF6Vnz56FcrzuNLrXX3/d3AU5V+6880558MEHTaNAI94a4daLojZK3LTvot6dCA8Pl7Fjx5rnuvwXX3zhWeaNN94wwQtNc9TtaMqlXrj0PHlfGG+88UaTJqgBjWnTpsn9998vx44dM3ccVEJCgnTp0sWso/ui7602FLz3JzP3z9U+vZm98847pqHlLj6lwRVtDPz6669m+3qO9Yu+nr/s+gLndJflwIEDWabs+qwuWbLEpE3q8eqx6F0CbeRceeWVuZ5H/Rxt375dvv/++yyND30v8nK3QbsiacNAG3+agvq///0vS70PvbOk51MbZM8++6zUrVvXBJL0rgsAAMHa7tJrprr99tvzve64cePkk08+kYcfflgmTJiQY+aEZlzcfffd5kaHfrnXL+l6nNo9J3MbUGtzaFvrbLRtpjecNICi13/9+UeOHJGOHTvK6tWrPctp+2LlypWmPfHvf/9bBg0aJJ9//rkJMJ04cSLLdjWQoe26UaNGebIhNNChbTDtBqPtiaefftrUclu0aFG+z7H7ppK2N89Ggyuapfzzzz9nuWmmP1v3xzvIBNiehaCzYcMG/SZojRs3zjw/ffq0Vbx4cWvOnDnmefny5a2pU6eax4mJiVZoaKg1cOBAz/pffvmlWV//dbvsssvMvNdff90z79SpU1aFChWsG2+80TPvjTfesEJCQqyvv/46wz5Nnz7drL9ixYpzfrwnTpyw6tevb7ZfvXp164477rBee+01a9++fVmW1ePQKbO+ffuadd2++OILs737778/y7Lp6enm3y1btphjvf766620tLRslzl27JhVqlSpDO+v2rt3r1WyZEnP/MOHD5uf9+yzz+Z4nP/973/NMt9//32u74cuM3r0aM/zW2+91YqPj7dSU1M98/bs2WP2fezYsZ55nTp1spo0aWKdPHkyw3G0a9fOqlu3bq4/0/1zzzZ577uet8zmzZtnllu+fLln3n/+8x8zb/v27eb50aNHrcjISOuhhx7KsO6kSZMsl8tl7dixwzNPz6me28zb6ty5s+ccqSFDhpjfgyNHjnjOT1hYmHXddddl+Bljxowx63tvEwAQ3IKt3aXtHt22+5rplpycbO3fv98zadsm8zHWqlUry/U/8/GnpKSYdkuzZs3MMbu9+uqrZjnvdpxer8uVK2fmn3feedagQYOst956K8u+6TVf2zJdu3bNcP3XfalZs6Z1+eWXZ5iX2apVq7KcD3eb4uKLL87QxtKfHRMTY7Vu3dq8J5n3I7/nuHnz5qbNmN/P44gRIzLMv+WWW6yoqCjTjgKcgsyMINSgQQMT7Xf3ydQ70Ho32d2XUP91p9RpqqBGtHOrfOymd/i9o/AaTde0P7277vbee++Zn6+RZe878xr1VtlV9C4oTQHUuyHDhg3zRMM1q0K7aegdeF/SLDWlT6PbGrnPTOe7a3XoHRGNxGcuMuleRrMPNOp/6623Zng/NCWydevWnvdDj0HfT02x1Ch9dkqVKmX+/fjjj80doLzSOzOa1eGdvqlphrrv7rs2GqnXOxY9evQw2SDu/dQuH5qNsGXLFtm9e/dZf5Z2i9Fjzjy5z403PebMGR3uNNF169bl+DM0nVLTdjXbxDuDQzNNdH2tEH82mhrrPkdKuwDp74Fmdyi9A6N9VPVuizf9PAEAEMztLs1scO+fN63VoN033VN2x6iF2r2v/9nRLrXabtGMCO/MDe02qt1DvJUvX96837qstp90HzQzQbt8aBaIu52wfv1605bR17Rt436f9Dx16tTJFMZ0dwXy3j9tb+ny2oVH22HZtU8GDhxo2nVu2u7RtpQ7o9ebd9sjr+dY32/tqpJXDRs2lObNm5tsVzc9Ts3w0K663t2vAbsjmBGE9A+lXjjdfTT1Aqp/1PUPceaLqvvfvFxUtR9g5j/CWiPC+8u3Xig0rc37YqZTvXr1zOt6ccqJdkXQuhHZTWcr4qkXN01D1C4YOml6ovZ1fOmll8zFLL+0D6b2J9TaEbkto0EMvWjkRN8PpY2KzO+J1tVwvx/ax1W7oGhaoV6YNQ1Sj0eP3U37XWpXFO36oDUzNHDwn//856zBGnffUP2y76aPNd3RfV604rhe8LULTOb9dAd0cjt33p8RrbadecruPdIAig6lpserDQf9WVoDRGlKbm40CKOpptoodJ8Lraie15TazAEP/Rwr92fZHdRw/8646efBvSwAAMHY7nJ/sc7chVTbKO6bGOeff36267qv87lxX4O1e6c37dKbXc0svXmlI5fs2bPHFB3VriH6HujNJm0PerfHNJiS+b2aOXOmaUu52x5a+0TX1W7D2j7TNpcupzensmufZD4mdy03dzfegp5jDT5ocCQ/tCuJdsnV7jLuG3DaRYYuJnAaRjMJUnqR1D6N2mcuc4Vnfax3yvVOu95F0C/tORVU9OYddfbmfXdcL+JaMPOFF17Idlm9MORE+3vqF/Xs6J2F7Ap3Zkf7T2ohSS3qqMelo5w89dRT5jW9YGRXj6GwxkJ3R/m1L6f2+8zMewhVrc+h/V31gqOFtTSwMHHiRJMxoRF23XfNqNDGkp5bXUaPU/tY6rychh7TC7G77oXW4tBq2PqZ0L6imfdT+7BqJkZ2Mn+xLyjNAtGLrH4WNbCi+6/7ocEX70Jp2dH3SQtlaXaGfp71Xw0saYGuvMjLZxkAgLwKpnaXZoEorQPiXXxdf5b75+kXcs18yOxsWRkFoe0kDeLopPUqNBiibcABAwZ42hVaA0vbHNlxt6M0C1NvFmm7TAuL6w0h3bbW0MiufVKQY8rLOdb3WwvM6k2c3M6nN80I1iKwWghUP3/6r54TrUsGOAnBjCDlPe65XlT1D7JbixYtzBdc7Xag3TPO5R82rTqt6X6aspc50nw2ffr0yfFOhRZGyi/9o6374110S+d5p+5lvgvgputpsECzB3LKztBl9KKmRZ9yujDqMkrv0GiGwtno8g899JCZ9C6CbleDFTpiipt2pdBJK1frxUmj7JpKqBfrnGjGwpw5c0z3CS3wqRdJ7ywGd6NK73rkZT8LSu846L5oI0rvfri575ycjRYm1VRJTa/VBpxmmmhXkXNVndtdVFYzVrzvuGiqaU7dgAAAwSuY2l16/dWClhooyG4kuXN1DdY2gbu7jLvLh2Yb5KVNqO0abfNptoZ3e0yzHM7WztEbR5rBoe0v7+6wmpmRF+6fpe3Pc3EjSG/g6FCr2hbUYqJ5oe0hHbVE20l6c0yzZbSbTlEPVQsUFN1MgpSOwKD99PRCo3cCvO8Q6AX1ggsukKlTp5o+dHlJdczP3Xb9eTNmzMjymqbt5TYShF54suuioFNuqf16Ec8u+q8BCg00aHcT7wuMDj/qPQynrp95WC5NldQv/NndsXBHyzXbQbMBdBSTzJF69zKa5aAXTs2CyK7OhXs/NPVPL5TedF81ldPdjUS/RGfOHHAHUc7W1UTfQw3K6Jd+nbQ/pveXdA226B0YHa7VfeHPbj/PFfediMzHM3ny5DxvQ4Mxf/31l0kP1XN4Lqu2a6NQs2Y0bdWbdlsCACCY210awLj88svN0KkffvjhOc901PdSu3Vo/Qvv7i5aEy1zQEGDQ9kdo45Oojcg3G1ADShpu0qzUbIbYc27naNtlMz7r6PE5DWLV0ee0/abZtdmbtv58r7cdNNNJvtGb2K5u9d60y4oOmxrZnqzS7sZ6agw2galiwmciMyMIKWRVx3PWsfk1ouo/hH3phdZd8T5XF5UddgoTfnXQkyaoqgXPP3jrwEEna/ZDnqROpc02qx1HXTILs1Y0DRBzb6YNWuW+ZI/ZswYz7LaLUPv5GuQQYuE6h95vVjqEKXuglZKo9l6LNrvUu8MuLs+6Pupr+kwnhpt14uH1uTQrAAda13fax3SSyPiehHTQIZ+IdZtaUNGUxT1Aq3DrerQZPr+6Bfk3377zXyB1kaJ1pfQL9LaLUS7hLiHGtXMCu0mot1n9IKsFy9tvOjPONtdHs240P3TDA696OvFPDNtZOlnQS+YWsxKGzn68/XC+eeff5qAwbmi++yuC6IXWB1XXWuI6B2XvNJj1saCdo3RhocGoM4VreOh9Tz0d0Q/V3r+9fi1pon2nc3v3S8AQGALpnaX0iwBvTbqjR0tyu0OgGi9jaVLl5qCmjrfF9pm0e7B+iVcMzPcQ7Jr14/M3XO0G68GkLRtpO+5ngfNQNU2oAaXHnvsMbOc3nzSmx+6T9rm02Hhte2hgSB937Rd4h5yVjNPdLvavUTbZNoO0mM621C6brotHRpXM2b1M6FFR/W90XaE3rzS9lx+34/58+eb91jbTtpW1POs87VeirsLiQY7vGm7SAuZa8BJu6fouoDj+Hs4FfiPDsmkHwEdWjOz+fPnm9d06Cjv4aRyGyKsUaNGZx3S1D2k1jPPPGOW1yE04+LirBYtWlhPPvlkoQwHtW3bNmvUqFFWmzZtzFBeOqSmDtN11VVXmSFWM3vzzTfN0GARERFm2K/Fixdnexz6vuhQqTrUly6r2+zWrZu1du3aDMvNmjXLDJvlPlZ9r5YsWZJhGX0vdTgwHVpLh8WqXbu2GUJ2zZo15vUDBw5Y99xzj/lZOpybLqdDer377ruebaxbt84Ms1qtWjXzs/RYr776as82chqa1U33SV/T4Ut37dqV7Xv5+++/W3369DHDgoWHh1uVK1c2P+P9998/63nQbesxZMc9fJn30Kx//vmnGd5Nh67V47355putv/76K8v+Zx6a1VuvXr08Q61mJ6ehWTMPb5vdZ17P/xNPPGHei2LFilkdO3a0fv31V6tMmTJm6DcAAIKx3eWmw45OnjzZatu2rRUbG2vaX3rN1HbD3LlzMxyn+xjfe++9LNvJ7vjVtGnTzLCpekwtW7Y0w7br++I9NOtPP/1kDRs2zLrgggus0qVLm32oWLGiaVNouymzH374wbrhhhvMtVy3q+9ljx49rM8//9yzjA4p269fP6ts2bJWiRIlTPtt06ZNeW5TuH300Ufms6BtCH1/WrVqZYag9+Ucu/dL27tNmjSxoqOjTXuycePG5nO3Z8+ebPdB3wfdx0ceeSTb1wG7c+n//B1QAYBAoOmtevdD7xhll9IJAAAA4NygZgYA+ED7GmfmrumR15F1AAAAAPiGmhkA4AMtlKrFxrQ2h9Zh0Qr1Wk1cC3sVRvV2AAAAAP8gmAEAPjj//PNNIVYtUqrFYd1FQbWLCQAAAIDCRc0MAAAAAADgKNTMAAAAAAAAjkIwAwAAAAAAOArBDAAAAAAA4CgEM4AAsnLlSrn44oslOjpaKlSoIPfff78cP348z+vv27dP7r77bqlcubJERUVJjRo15M4778xxNI+2bdtK8eLFpVSpUtKuXTv54osvsmyvX79+Eh8fL8WKFZMLLrhA3nvvvQIfJwAAQGG3j3bt2iVPPvmktGrVSuLi4qRs2bJm+PWlS5eedd2BAweKy+WSq6++OtvXP/roI9Mu0vZWtWrVZPTo0ZKamspJBfKB0UyAALF+/Xrp1KmTNGjQQF544QX5888/5bnnnpMtW7bIp59+mqcLtntI0UGDBpmAxl9//SWrV6/OsuyYMWNk7NixctNNN8kdd9whp0+fll9++UV2797tWUZH+NCGgwY0dJQPbTy8++670qNHD5k7d67cdttt5/gdAAAAOHftow8//FCeeeYZue6666Rv374m2PD666/L5ZdfLrNmzTI3bLKzZs0aM3y7Biqyoz9Xt6mBkf/7v/+Tn3/+2YyGlpCQIC+//DKnEMgjRjMBAsSVV15pLtibNm2S2NhYM2/mzJnmzsDixYulS5cuZ11f1/3++++lTJkyOS737bffmiyM559/XoYMGZLjcs8++6w88sgj8vnnn0vHjh3NvPT0dGnTpo0JnOzYsUMiIiJ8Pl4AAIDCbB9t2LDBDL2uGRlup06dkmbNmpnMDm3PZGZZlrk5pMETbQM1btxYPv744wzLNGrUSMLDw03QQ4d5VyNHjpQJEybIxo0b5bzzzuPEAnlANxPYjt7117Q89xQTE2PS+xYsWJBhOY1m6wVi7dq15su1dmOoWbOmTJ8+Pcs29cKj6Xt16tSRyMhIqVq1qvmirfO9uX/m5MmTs2xDLyz62r333pth/g8//CBXXHGFlCtXLsN+55RWWBg0C2LJkiVy++23ey7Uqk+fPlKiRAmTEZEbvcDrXYJhw4aZQMbJkydNtkV29L3RLAvNttALdk5pml9//bV5T9yBDBUSEmIyM/bu3StfffXVWY9LMz20m0ulSpXMedPzO3jwYElJSTnrugAABBLaR0XfPtKgg3cgQ2l7RAMkmuFx7NixLOu88cYbJlt1/Pjx2W5TgxU63XXXXZ5AhvrXv/5l2lXvv//+WY/ryJEj5oaSdgfW/alSpYo5pgMHDpx1XSCQ0M0EtqUXA6V/mKdNmyY333yzuTjUr1/fs8zhw4fNBUW/IN96663moqRfdvWOf//+/T3ZAN27d5dvvvnGXDg0Uq7pfC+++KL89ttvWYIkmhL4n//8Rx588MEMfS01kyCzo0ePSrdu3czFZ+jQoSZIonLLWPCm+5+WlnbW5bSPp0450ePR1MeWLVtmmK/vg9490IBLbtx9P/Xug6Ziau2L0NBQk0ap6Y56sXTTuwwaPPr3v/9tUiIPHjxoghuPP/54hkCPBoo0wJTdsSgNQun2c6JdXDSIpRdsPW8aTNLghl7kT5w4QVYHACAo0T4quvZRTvSmTHY/W4Mbw4cPl8cee8y0jbLj/pmZ90lv3GhQ4mz7pDeRLrnkEvn1119NW1frbmhbWWtwaIAlc/AFCGgWYDOjR4+2Mn80P/vsMzPv3Xff9cy77LLLzLznn3/eM+/UqVNWs2bNrPj4eCslJcXMe+ONN6yQkBDr66+/zrDN6dOnm/VXrFjhmafPb7rpJissLMxas2aNZ/6dd95p3Xbbbeb1e+65xzN/8eLFZt68efMybLt69erWVVddddZj1eV0/bNN+p7k5r333jPLLV++PMtrN998s1WhQoVc17///vvN+mXKlLGuuOIK65133rGeffZZq0SJElbt2rWtpKQks9yhQ4c8y+lruowuq+vofH1P3e677z7zvv/xxx8ZftYtt9xilr333ntz3ac+ffqY9b///vssr6Wnp+e6LgAAgYb2UdG3j7KzZcsWKyoqyurdu3eW1x5++GGrZs2a1smTJ3NsD2rbSfdp586dWda/8MILrTZt2uT680eNGmXWnz9/fpbXaB8h2JCZAdtyp8rt37/fdB3RUTO03oI3Tc/T0Te8I+36XLMz9M6/Lq+jZ2g2ht7Z906/c3d/+PLLL02mgZtmJ1x11VUmO6NFixYmC0AzPubPny9vvfVWhp/vTi/MrcZEbrQQZnJy8lmXq1WrVq6vu7ehqYaZaabJ2X6Gu6uI3kX45JNPTHcQpXcINONFj3vAgAGe5TQb4+2335aePXua51oItEmTJiZTw30+dHk9b5o1o1kw+r7q+/jf//43wz5nR7NpNGPmmmuuyXLnQmk3HgAAghHto6JrH2WmbULNFNbM06effjrDa5rtO2XKFJk3b162Py+v+6RdY3LzwQcfSNOmTeX666/P8hrtIwQbghmwLa234Kb9HPWLv7sbh3dKngY5vNWrV8/8+8cff5hghlar1lQ87+1508rRmWl1ap20yKUGQ3Q4Lu/aD276RVsLOGk/Vk3rc++ffhnPC/foIQXl7s6RuQaI0voX2XX3yG59DTy4AxlKL9i9e/c23Ww0OOFeTo9ZAxhuuo4GNrQuyc6dO80QY+eff74JgujIKO7j1GCJ1tzQYJP2Vc2JBrD0Yq41UQAAwD9oHxVd+8ibdgu+5ZZbTL0LrTOmbVBvWktMb47deOONhbpPv//++1l/BhAsCGbAtrRgk0pKSjJRaP2irdWgc6uzkB0NLGjWgA7HlZ3MARKlmRma5aHZAZqhocNxeX/Jd6tevbp5XS9g2mfRm36ZPxv90p6Xmhn6xT+3L/8VK1Y0/+7ZsyfLazov8wU3M/frmj3hTetmaNaJ1vZQpUuXNncNSpUqZV7zFh8fb/7VZTWYoTTgofVKfvzxR3Oc+h4tW7YsQ9AJAADkHe2jomsfedPRT7QdqjfXMt/g0lpjixYtMlm8ejPNTet1aCaGztM2lN6c896nzG1Qnaf1wgDkDcEM2Fbnzp09j6+99lr57rvvzLjg3sEMLRKpwQ7v7AxN81PuopW1a9c2X6a1sGVe0++0+4pmJGglah2WS8cSz0mvXr1MNsKTTz5pinJpFodWzc6LCy+8MNvCoplpxoNmf+REMxh0n3WILw36uOmoHzocmfe87Gh3GqUFNr3p+prO6r4LpAEdLZilw7fqa95Dq+q5UJkzYHQZPc7MxUa9z29mug294GvBVwAA8A/aR0XXPnLT0d705pVml2r328y0HahuuOGGLK9p20pHY9Mut1pcXttRSvfJO3Ch7Sgt4KlFz3Oj7VraR8AZBDPgCHpXXy88mVPyNOL9yiuvmJFElC6jz/XLsPsLul6oFi5cKDNmzMhygdBouWZuZO6qorRCtAZPdAjY3Ppkrlu3zlxMJ02aZLplKM1eKMqaGSVLljSNmzfffFOeeOIJM5yt0uCK1rlw75e7v6dedLVbjLvitR6jZlbo/mgFbvf+z54927z33gEk7U7y7bffypw5c8xdCndapK7bsGHDXO9yaJcfraOhw9bmlpmhQZPrrrvOHI9e7DPXzdBarfQLBQAEO9pHhds+Us8++6xpD2r7SDNxs6OZGu6aYN603alZvDrim2YJu4d71Tpur776qqkz5s501dHjtG3j3Y03O9rFZOzYsebnZa6bQfsIwYZgBmxLLzxKMy+0u4em6HkPl6r0i/MzzzxjXtMvx++8846JtOsFQus6KM2w0MKTWrtBi31q/Qa9+G/atMnMX7x4cbZFJrVoqGYl5NZ3US98t912mwkG5HSBK4qaGUqzSLSv5mWXXWYunhrd15ofXbp0kSuuuMKz3OrVq6VDhw4Z7mZoESq9WGt3mksvvdS8Z3pB10JWOvyX950GvfDOnDlT7rnnHpMFo11KtFGgGSb/+9//MuyTBje0oaDLbN++3VyoNc1SAxpnM2HCBPnss888x6PnQ9MvtYaJDrOrXV0AAAg2tI+Krn2kAYNHHnlE6tata9oh7vfeTW/2aBddbee4u9h603arvq43aLxpm0u74eo+aB0OzbR46aWXTH0y/TlnyxLRYeq1faU33vTm3aFDh8zQrNq+0uKgQNDw93AqQE5Dj7mnYsWKWQ0bNrRefPHFDENO6dCsjRo1MkOotm3b1gyTpUNgvfTSS1m2qcO0PvPMM2b5yMhIKy4uzmrRooX15JNPWkePHvUsl3no1cwyv37XXXeZYUp3797t09Cs55oOP9uuXTvzXpQrV87sa2JiYoZlvvzyyxyHM9MhZps2bWreo/Lly5vhUzOvr/bt22f17dvXKl26tFm2devW1qJFi7Isp8OwVq1a1YqIiLAqVapkDRo0yKybVzt27DBDtOqx6M+pVauWOSYdghcAgGBC+6jo20eZ3/PMk66Tm9zag//973+tZs2amfZNlSpVrJEjR5r2al4cPHjQtNEqV65s2li6vrbLDhw4kKf1gUDh0v/5O6AC+EKzITRzgn6DAAAAtI8ABJeswzMAAAAAAADYGMEMAAAAAADgKAQzAAAAAACAo1AzAwAAAAAAOAqZGQAAAAAAwFHC/L0DgSI9PV3++usviYmJEZfL5e/dAYBc6UBWx44dk0qVKklICHFtAIWHNhIAp/BX++jkyZOSkpJSoG1ERERIVFSUBBOCGeeIBjKqVq16rjYHAEVi165dUqVKFd5tAIWGNhIApynK9pEGMmpWLyF7E9IKtJ0KFSrI9u3bgyqgQTDjHNGMDHWxXClhEn6uNgvAhq5YfUSc7uTxVBnTcYXnbxcAFBbaSMDZ7Z1XPyDepo+azREnO348XS64cH+Rto80I0MDGTvW1pDYGN+yQRKPpUv1Fn+YbRHMQL65u5ZoICPMRTADCGRRJQInDky3OABF9XeGNhKQs9DoyIB4e2J8/DJuN/5oH5WIcZnJF+kSnGUOAqdFDgAAAACAA6VZ6ZJm+b5uMCKYAQAAAACAH6WLZSZf1w1GgZEHBAAAAAAAggaZGQAAAAAA+FG6+c/3dYMRwQwAAAAAAPwozbLM5Ou6wYhgBgAAAAAAfkTNjPyjZgYAAAAAAHAUMjMAAAAAAPBzZkYao5nkC8EMAAAAAAD8iG4m+UcwAwAAAAAAP6IAaP5RMwMAAAAAADgKmRkAAAAAAPhR+t+Tr+sGI4IZAAAAAAD4UVoBCoCm+bie09HNBAAAAAAAOAqZGQAAAAAA+FGadWbydd1gRDADAAAAAAA/omZG/hHMAAAAAADAj9LFJWni8nndYEQwwyHa92wnPYZdK9UaVJFTySmy/otfZOajb8qebfvESTgOewmU8xFIx1Ivtr20KNNTSkdUk1TrlOxKWi8rEmbI0dN7/L1rAAAAgG1QANQBrujfUR6fN0TqXlBLDu05LKGhIXLpTW1kyoqnJK58KXEKjsNeAuV8BNKxNCp5hXSrPFLio+pKUuohcUmo1I29VHrU+LdEh8b5e/cAAABQSNKtgk3ByFbBjOXLl8s111wjlSpVEpfLJQsWLMjwevv27c38zNOgQYNy3e7OnTvlqquukujoaImPj5dhw4ZJamqq5/U9e/bIbbfdJvXq1ZOQkBB58MEHxS7CwsPkzom9zOPl738rfercK3c2fFCSEk+YL2m3Pna9OAHHYS+Bcj4C6VhCJEzaxQ8wj7ckLpfZv/eWN7b1l1NpSRIdFicXlr3N37sIAACAQqJdTAoyBSNbBTOSkpKkadOmMnXq1ByXGThwoAk+eE+TJk3Kcfm0tDQTyEhJSZGVK1fKnDlzZPbs2TJq1CjPMqdOnZJy5crJyJEjzc+3k/oX1pZS5WLN42/mf2v+PbjnsGz6dot5fGHXZuIEHIe9BMr5CKRjKV+svkSHncki2Xrsa/NvUupB2Zv8q3lcvfiFft0/AAAAFB6CGQ6vmdGtWzcz5UazKypUqJDnbX722WeyceNGWbp0qZQvX16aNWsm48aNk+HDh8uYMWMkIiJCatSoIVOmTDHLz5o1K0/b1QCITm6JiYlSGMpVLeN5fCThqOfx4X1nHsdXKytOwHHYS6Ccj0A6lpjwcp7HyalHPI9PpB3++/V4v+wXAORXUbWRAADBzVaZGYVh1apV0qRJExPIcOvatau5sG7YsMHn7U6cOFFKlizpmapWrSpFKlAyiTgOewmU8xFAx+IKlAMBEDT83kYCAAdKt1wFmoKR44IZ06ZNkxIlSmSY5s6dm+Pye/fuzRDIUO7n+pqvRowYIUePHvVMu3btksKwf9dBz+NS8SU9j+P+fpyw84A4AcdhL4FyPgLpWI6d3u95XOzv7ibmceiZx8dOJ/hlvwDArm0kAAgkdDMJgmBGr169ZP369Rmm7t27m9e0i4o7wNGoUaNC3Y/IyEiJjY3NMBWGzd//LkcPnEnPvPiGNubfMhXj5Lw2dc3j7xevFyfgOOwlUM5HIB3LvuTNkpx6pmtMnZhLzL/Fw8pIhWINzOMdSd/7df8AwG5tJABAcLNVzYy80HTFOnXqZPvazJkzJTk52TwODw83/2p9jdWrV2dYbt++fZ7X7C71dKrMenyeDHnlbjPU5OtbX5LYMjFSPDZajuxPlHeezjjii11xHPYSKOcjkI4lXVJl5f5Z0qniEDMc6x1Rb0hUaKxEhhaXE6lHZM3Bt/29iwAAACgkaRJiJt/WDU6OC2bkpnLlylnmtW3bVsaPHy8JCQlmWFa1ZMkSc5egYcOG4gQLZyyVk0kn5eaHuku1BpUl5eRp+fqDb+W1EXPNqA1OwXHYS6Ccj0A6ll+OfCKn05PlgjI9pHRENUmzUmRr4teyImGmGdkEAAAAgckqQO0LK0hrZtgqmHH8+HHZunWr5/n27dtNN5LSpUtLtWrVzLwTJ05kqXWh6YxxcXHZbrNLly4maNG7d28zhKuuq0Ow3nPPPWY9N/057n3Yv3+/ea4jndgl4PHFW9+Yyek4DnsJlPMRSMeyOfELMwEAACD4amb4um4wslUwY82aNdKhQwfP86FDh5p/+/btK7NnzzaPZ8yYYSZvOjrJokWLst1maGiofPzxxzJ48GCTpVG8eHGzvbFjx2ZYrnnz5p7Ha9eulbfeekuqV68uf/zxxzk9RgAAAAAAEEDBjPbt24tlWTm+vmzZMp+2q0GJhQsX5rpMbj8XAAAAAIDCkmaFmMm3dSUo2SqYAQAAAABAsEkXl6T7WAA0XYIzmkEwAwAAAAAAP6JmRv75FvoBAAAAAADwEzIzAAAAAABwbM0MS4IRwQwAAAAAAPxeM8O3IVbTGZoVAAAAAAAUNS3+mUYB0HyhZgYAAAAAAHAUupkAAAAAAOBH1MzIP4IZAAAAAAD4uZuJTr6ta0kwopsJAAAAAABwFDIzAAAAAADwozTLZSZf1w1GBDMAAAAAAPCjtAKMZpIWpN1MCGYAAAAAAOBH6VaImXxb15JgRM0MAAAAAADgKGRmAAAAAADgR3QzyT+CGQAAAAAA+FF6AQp5pktwopsJAAAAAAB+lC4hBZp8MXXqVKlRo4ZERUVJ69atZfXq1Tkue/r0aRk7dqzUrl3bLN+0aVNZtGiR+BOZGQCKzNUbDgfEu92v5GZxusSQdHnU3zsBAEAB7FnQIGDev48vmCGB4K/UcHGy46nBk+PwzjvvyNChQ2X69OkmkDF58mTp2rWrbN68WeLj47MsP3LkSHnzzTdlxowZct5558nixYvl+uuvl5UrV0rz5s39cgxkZgAAAAAA4EdpVkiBpvx64YUXZODAgdKvXz9p2LChCWpER0fLrFmzsl3+jTfekMcee0yuvPJKqVWrlgwePNg8fv7558VfCGYAAAAAAOBH6eIq0KQSExMzTKdOnZLspKSkyNq1a6Vz586eeSEhIeb5qlWrsl1Ht6XdS7wVK1ZMvvnmG/EXghkAAAAAADhc1apVpWTJkp5p4sSJ2S534MABSUtLk/Lly2eYr8/37t2b7TraBUWzObZs2SLp6emyZMkSmT9/vuzZs0f8hZoZAAAAAAD4ka/dRZR7vV27dklsbKy4RUZGyrkyZcoU0y1F62W4XC5TCFS7qOTULaUokJkBAAAAAIAfpUlIgSalgQzvKadgRtmyZSU0NFT27duXYb4+r1ChQrbrlCtXThYsWCBJSUmyY8cO2bRpk5QoUcLUz/AXghkAAAAAAPhRuuUq0JQfERER0qJFC/n8888987TriD5v27Ztrutq3YzKlStLamqqfPDBB3LttdeKv9DNBAAAAACAIDJ06FDp27evtGzZUlq1amWGZtWsC+06ovr06WOCFu66G999953s3r1bmjVrZv4dM2aMCYA88sgjfjsGghkAAAAAAPhRuld3EV/Wza+ePXvK/v37ZdSoUabopwYpFi1a5CkKunPnTjPCidvJkydl5MiRsm3bNtO9RIdl1eFaS5UqJf5CMAMAAAAAAD9Kt0LM5Ou6vrj33nvNlJ1ly5ZleH7ZZZfJxo0bxU4IZgAAAAAA4Edp4jKTr+sGIwqAAgAAAAAARyEzAwAAAACAIOtm4nQEMwAAAAAA8KO0AnQXSZPgRDADAAAAAAA/IjMj/4IzHwUAAAAAADgWmRkAAAAAAPhRmhViJl/XDUYEMwAAAAAA8CNLXJLuY80Mi6FZAQAAAAAA7I/MDAAAAAAA/IhuJvlHMMMh2vdsJz2GXSvVGlSRU8kpsv6LX2Tmo2/Knm37xEk4DnsJlPOh6sW2lxZlekrpiGqSap2SXUnrZUXCDDl6eo84RWhEa4ko8S8JDW8qIaFlzLzkIyPk9Ik3/b1rAAAAKETplstMvq4bjIKzUojDXNG/ozw+b4jUvaCWHNpzWEJDQ+TSm9rIlBVPSVz5UuIUHIe9BMr5UI1KXiHdKo+U+Ki6kpR6SFwSKnVjL5UeNf4t0aFx4hSh4Y0lLPISsawj/t4VAAAAFKE0CSnQFIxsddTLly+Xa665RipVqiQul0sWLFiQ4fX27dub+ZmnQYMG5brdnTt3ylVXXSXR0dESHx8vw4YNk9TUVM/r8+fPl8svv1zKlSsnsbGx0rZtW1m8eLHYQVh4mNw5sZd5vPz9b6VPnXvlzoYPSlLiCfOF89bHrhcn4DjsJVDOhwqRMGkXP8A83pK4XGb/3lve2NZfTqUlSXRYnFxY9jZxitMnPpBjexrKiYO3+3tXAAAAAFuzVTAjKSlJmjZtKlOnTs1xmYEDB8qePXsyTJMmTcpx+bS0NBPISElJkZUrV8qcOXNk9uzZMmrUqAxBFA1mLFy4UNauXSsdOnQwQZUffvhB/K3+hbWlVLlY8/ib+d+afw/uOSybvt1iHl/YtZk4AcdhL4FyPlT5YvUlOuxMJsnWY1+bf5NSD8re5F/N4+rFLxSnOJORcdLfuwEAAAA/dTPxdQpGtqqZ0a1bNzPlRrMrKlSokOdtfvbZZ7Jx40ZZunSplC9fXpo1aybjxo2T4cOHy5gxYyQiIkImT56cYZ0JEybIhx9+KP/73/+kefPm2W731KlTZnJLTEyUwlCu6pl+8+pIwlHP48P7zjyOr1ZWnIDjsJdAOR8qJryc53Fy6j/dM06kHf779Xi/7BcABKuiaiMBQCBJlxAz+bpuMAr4o161apU0adLEBDLcunbtai6sGzZsyHad9PR0OXbsmJQuXTrH7U6cOFFKlizpmapWrSpFKlCCbxyHvQTK+TCHEkAHAwAO4vc2EgA4UJrlKtAUjBwXzJg2bZqUKFEiwzR37twcl9+7d2+GQIZyP9fXsvPcc8/J8ePHpUePHjlud8SIEXL06FHPtGvXLikM+3cd9DwuFV/S8zju78cJOw+IE3Ac9hIo50MdO73f87jY391NzOPQM4+PnU7wy34BQLAqqjYSACC4OS6Y0atXL1m/fn2GqXv37uY17aLiDnA0atTIp+2/9dZb8uSTT8q7775rioXmJDIy0hQL9Z4Kw+bvf5ejB86kZ158Qxvzb5mKcXJem7rm8feL14sTcBz2EijnQ+1L3izJqWe6x9SJucT8WzysjFQo1sA83pH0vV/3DwCCTVG1kQAgkFAzw+E1M/JC0xXr1KmT7WszZ86U5ORk8zg8PNz8q/U1Vq9enWG5ffv2eV7z9vbbb8uAAQPkvffek86dO4sdpJ5OlVmPz5Mhr9xths18fetLElsmRorHRsuR/YnyztMZR3yxK47DXgLlfKh0SZWV+2dJp4pDzHCsd0S9IVGhsRIZWlxOpB6RNQffFqcIi7pComIf10FaPfMiYx6SyBJ3S1rKD5J85H6/7h8AAAAKh2WFSLoV4vO6wchxwYzcVK5cOcs8HWZ1/PjxkpCQ4Mm0WLJkiblL0LBhQ89y8+bNk/79+5uAho5+YicLZyyVk0kn5eaHuku1BpUl5eRp+fqDb+W1EXPNCBROwXHYS6CcD/XLkU/kdHqyXFCmh5SOqCZpVopsTfxaViTMNCObOIXLFSMhYTUyzAsJ1WKsZSU9bY/f9gsAAACwG1sFM7ROxdatWz3Pt2/fbrqRaCHOatWqmXknTpzIUutC0xnj4uKy3WaXLl1M0KJ3795mCFddd+TIkXLPPfeY9dxdS/r27StTpkyR1q1be7ZfrFgxkwliB1+89Y2ZnI7jsJdAOR9qc+IXZnKy08nvmQkAAADBJU1cZvJ13WBkq3yUNWvWmKFQ3cOhDh061DweNWqUZ5kZM2ZIxYoVM0y33nprjtsMDQ2Vjz/+2PyrWRq333679OnTR8aOHetZ5tVXX5XU1FQT4PDe7gMPPFDIRwwAAAAACHbpVkHqZkhQslVmRvv27cWycj4Ty5Yt82m71atXl4ULF57z7QIAAAAAUFDpBaiZkR6kNTOC86gBAAAAAIBj2SozAwAAAACAYJMuLjP5um4wIpgBAAAAAIAfpVkuM/m6bjAimAEAAAAAgB9RMyP/qJkBAAAAAAAchcwMAAAAAAD8XTPDx+4i6dTMAAAAAAAARc0qQAFQK0iDGXQzAQAAAAAAjkI3EwAAAAAA/Ei7mPjczcQKzswMghkAAAAAAPgRo5nkH8EMAAAAAAD8iMyM/KNmBgAAAAAAcBQyMwAAAAAA8PfQrD6OSpIepKOZEMwAAAAAAMCP6GaSfwQzAAAAAADwI4IZ+UfNDAAAAAAA4ChkZgAAAAAA4EdkZuQfwQzA5q7ecFgCxX1xOyQQHE/39x4AAOC7PQsaBMTb9/EFMyRQHEoLl0AQE3JanMwV4r9GHsGM/COYAQAAAACAH1kFGJXEkuBEzQwAAAAAAOAoZGYAAAAAAOBHdDPJP4IZAAAAAAD4EcGM/KObCQAAAAAAcBQyMwAAAAAA8CMyM/KPYAYAAAAAAH5EMCP/CGYAAAAAAOBHluUyk6/rBiNqZgAAAAAAEGSmTp0qNWrUkKioKGndurWsXr061+UnT54s9evXl2LFiknVqlVlyJAhcvLkSfEXghkAAAAAAPhRurgKNOXXO++8I0OHDpXRo0fLunXrpGnTptK1a1dJSEjIdvm33npLHn30UbP8r7/+Kq+99prZxmOPPSb+QjADAAAAAAAb1MzwdVKJiYkZplOnTklOXnjhBRk4cKD069dPGjZsKNOnT5fo6GiZNWtWtsuvXLlSLrroIrnttttMNkeXLl3k1ltvPWs2R2EimAEAAAAAgA1qZvg6Ke36UbJkSc80ceJEyU5KSoqsXbtWOnfu7JkXEhJinq9atSrbddq1a2fWcQcvtm3bJgsXLpQrr7xS/IUCoAAAAAAAONyuXbskNjbW8zwyMjLb5Q4cOCBpaWlSvnz5DPP1+aZNm7JdRzMydL2LL75YLMuS1NRUGTRoEN1MAAAAAAAIVueim0lsbGyGKadghi+WLVsmEyZMkGnTppkaG/Pnz5dPPvlExo0bJ/5CZgYAAAAAAEEyNGvZsmUlNDRU9u3bl2G+Pq9QoUK26zzxxBPSu3dvGTBggHnepEkTSUpKkrvuuksef/xx002lqFEzAwAAAACAIBERESEtWrSQzz//3DMvPT3dPG/btm2265w4cSJLwEIDIkq7nfgDmRkAAAAAAPiR5dVdxJd180uHZe3bt6+0bNlSWrVqJZMnTzaZFjq6ierTp49UrlzZU0T0mmuuMSOgNG/eXFq3bi1bt2412Ro63x3UKGoEMwAAAAAA8CPNbfA1wcHyYZ2ePXvK/v37ZdSoUbJ3715p1qyZLFq0yFMUdOfOnRkyMUaOHCkul8v8u3v3bilXrpwJZIwfP178hWAGAAAAAAB+lC4u85+v6/ri3nvvNVNOBT+9hYWFyejRo81kFwQzHKJ9z3bSY9i1Uq1BFTmVnCLrv/hFZj76puzZlrFoi91xHPZSL7a9tCjTU0pHVJNU65TsSlovKxJmyNHTe8QxovuLK6qjSGhNkZBSIun7RVK+E+v4SyJpu8RJQiNaS0SJf0loeFMJCS1j5iUfGSGnT7zp710DAAAAbIUCoA5wRf+O8vi8IVL3glpyaM9hCQ0NkUtvaiNTVjwlceVLiVNwHPbSqOQV0q3ySImPqitJqYfEJaFSN/ZS6VHj3xIdGidO4SreWyT8QhHrmEjaPnGFVhZXsRvEVfptEVcJcZLQ8MYSFnmJWNYRf+8KAAAA/DCaia+TUxw5ckRmzpwpI0aMkEOHDpl5OtSrdl1xdDBj+fLlpt9NpUqVTH+cBQsWZHi9ffv2Zn7madCgQbluV/v7XHXVVRIdHS3x8fEybNgwSU1N9bz+zTffyEUXXSRlypSRYsWKyXnnnScvvvii2EFYeJjcObGXebz8/W+lT5175c6GD0pS4gkTyLj1sevFCTgOewmRMGkXf2ZYpS2Jy2X2773ljW395VRakkSHxcmFZW8Tp7BOvCvW/vZiHbhCrAMdxUr6j5nvCo0Xici+GrNdnT7xgRzb01BOHLzd37sCAACAIqTFPwsyOcFPP/0k9erVk2eeeUaee+45E9hQ8+fPN8ENRwcztHpq06ZNZerUqTkuM3DgQNmzZ0+GadKkSTkun5aWZgIZKSkpsnLlSpkzZ47Mnj3bFDpxK168uOkrpMGUX3/91RQ10enVV18Vf6t/YW0pVS7WPP5m/rfm34N7Dsumb7eYxxd2bSZOwHHYS/li9SU67ExWz9ZjX5t/k1IPyt7kX83j6sUvFMdIelkk/Z9uMVbKmn9es1LESc5kZJz0924AAACgiGnxz4JMTqAjqNxxxx2yZcsWiYqK8sy/8sorzXdxR9fM6Natm5lyo9kVFSpUyPM2P/vsM9m4caMsXbrUVGbVKq3jxo2T4cOHy5gxY8wYuzq8jE5uNWrUMNGhr7/+Wu66665st3vq1CkzuSUmJkphKFf1TL95dSThqOfx4X1nHsdXKytOwHHYS0x4Oc/j5NR/ujScSDv89+vx4kwh4oruaR5ZqTtFUlb5e4cAIOgUVRsJAOAs33//vbzyyitZ5usQsDqiiqMzMwrDqlWrpEmTJp4hZlTXrl3NhXXDhg3ZrvPDDz+YLI7LLrssx+3qeLslS5b0TFWrVpUi5YxMorPjOGzF1wrKtuAqJq5S08QVealYaQliHb5bRJyVmQEAgcDvbSQAcKBgqJkRGRmZbYD7t99+M0O9BnwwY9q0aVKiRIkM09y5c3NcXiM83oEM5X6eOfpTpUoV8wa3bNlS7rnnHhkw4ExNgexon56jR496pl27CmfUhP27Dnoel4ov6Xkc9/fjhJ0HxAk4Dns5dnq/53Gxv7ubmMehZx4fO50gjhJSVlyl54orqpNYqdvEOnSLSNpWf+8VAASlomojAUAgCYZgRvfu3WXs2LFy+vRp81zrX2p9S+01ceONNwZ+MKNXr16yfv36DJO+KUq7qLgDHI0aNcr3trVbyZo1a2T69OkyefJkmTdvXo7LatAjNjY2w1QYNn//uxw9cCZ6dfENbcy/ZSrGyXlt6prH3y9eL07AcdjLvuTNkpx6pqtSnZhLzL/Fw8pIhWINzOMdSd+LY4TVEVeZ98QV3kSslO/FOtjDcUOyAkAgKao2EgAEkmAoAPr888/L8ePHzaAcycnJpidEnTp1JCYmRsaPH+/smhl5oemKesDZ0SFe9E1R4eHh5l+tr7F69eoMy+3bt8/zmreaNWuaf7Vbii6jNTVuvfVW8afU06ky6/F5MuSVu81wrK9vfUliy8RI8dhoObI/Ud55OuOIL3bFcdhLuqTKyv2zpFPFIWY41jui3pCo0FiJDC0uJ1KPyJqDb4tTuEpNFVdolb+fFBdX3EzPa1byuyLJ74lThEVdIVGxj+sgrZ55kTEPSWSJuyUt5QdJPnK/X/cPAAAAKMh3+SVLlsiKFSvkxx9/NIGNCy64QDp37uzT9hwXzMiNFg7JrG3btibKk5CQYCJASt9AvUvQsGHDHLeVnp6eoXiVPy2csVROJp2Umx/qLtUaVJaUk6fl6w++lddGzDUjmzgFx2Evvxz5RE6nJ8sFZXpI6YhqkmalyNbEr2VFwkwzsoljuCL+eRie6Xc6Zbk4pLiz4XLFSEhYjQzzQkK1yG9ZSU/7Z8QWAAAABJaCjEpiOaDBq11LihUrZnpWXHTRRWYqKFsFMzQys3XrP/3ct2/fbg62dOnSUq1aNTPvxIkTWWpdaDpjXFxcttvs0qWLCVr07t3bDOGq6+qwq1oTQ9dTOhSsbv+8884zz3VYGB339v777XMX9Iu3vjGT03Ec9rI58QszOZm1v4OjAha5OZ38npkAAAAQjMEMV8AGM8LDw8137rS0tHO2TVsFM7ReRYcOHTKMQ6v69u0rs2fPNo9nzJhhJm86OsmiRYuy3WZoaKh8/PHHMnjwYJOlUbx4cbM9LTzinYWhxao0eBIWFia1a9eWZ555Ru6+W0dDAAAAAAAABfH444/LY489Jm+88YZJWAioYEb79u3FyiWstGzZMp+2W716dVm4cGGOr993331mAgAAAACgqBVkVBLLIQVAX3rpJdMTo1KlSuY7uiYaeFu3bp1zgxkAAAAAAAQbvaXva28RS5zhuuuuO6fbI5gBAAAAAIAfBUNmxujRo8/p9ghmAAAAAACAIrF27Vr59ddfzeNGjRpJ8+bNfdoOwQwAAAAAAPwpCPqZJCQkyC233GJqYZYqVcrMO3LkiBkE5O2335Zy5crla3shhbSfAAAAAAAgL/7uZuLLJA7pZqKDbhw7dkw2bNgghw4dMtMvv/wiiYmJcv/99+d7e2RmAAAAAADgRzqoZy4De551XSdYtGiRLF26VBo0aOCZ17BhQ5k6dap06dIl39sjMwMAAAAAABSq9PR0CQ8PzzJf5+lr+UUwAwAAAAAAP/K1i4lVgFFQilrHjh3lgQcekL/++sszb/fu3TJkyBDp1KlTvrdHMAMAAAAAAH9y177wdXKAl156ydTHqFGjhtSuXdtMNWvWNPP+7//+L9/bo2YGAAAAAAAoVFWrVpV169aZuhmbNm0y87R+RufOnX3aHsEMAAAAAAD8KBgKgCqXyyWXX365mQqKbiYAAAAAAPiTVcDJAXT41X//+9/Zdj958MEH8709ghkAAAAAAPhRMBQA/eCDD+Siiy7KMr9du3by/vvv53t7BDMAAAAAAEChOnjwoJQsWTLL/NjYWDlw4EC+t0cwAwAAAAAAfwvgLiaqTp06smjRIsns008/lVq1akmRFgDdu3evvPbaa6Yi6dGjRyU9PT1LcY/PP/+8ID8CAAAAhYw2HQD4V0G6i1gO6WYydOhQuffee2X//v3SsWNHM0/jBc8//7xMnjy56IIZP/30k7Rv316Sk5Olfv368vPPP0vDhg3lyJEjsnv3bjNmrA69AgAAAPuiTQcANlCQLAtLHKF///5y6tQpGT9+vIwbN87Mq1Gjhrz88svSp0+fogtmPProo1KiRAlZv369REdHS3x8vEyZMsVEWN577z0ZPHiwzJ0719fNAwV29YbDAfEu9iu5WQLF8YzJW45VIiRKnC49JEBOBoACo02Xd3sWNAiIT9zHF8yQQHAoLVwCRUzIaX/vAlAkNE6gk2ZnFCtWzMQUfOVzzYwVK1bI3XffLdWqVZOQkDObcXczufnmm6VXr14ybNgwn3cMAAAAhY82HQDYgauAk/1pr44TJ06Yx+XKlTMFQbV7yWeffVa0wQwNXJQvX948LlWqlISGhsqhQ4c8rzdp0kTWrl3r6+YBAABQBGjTAYCDi39azulmcu2118rrr79uHmt5ilatWpl6GTpfu5oUWTCjZs2asn379jMbCQkxz5cuXep5feXKlSbIAQAAAPuiTQcANhAEwYx169bJJZdcYh6///77UqFCBdmxY4cJcPz73/8uumBGly5dTG0MN+33MnPmTOncubN06tRJ5syZI7fddpuvmwcAAEARoE0HACgK2sUkJibGPNauJTfccINJjGjTpo0JahRZAdDHH39cbr31Vjl9+rSEh4fLgw8+KElJSfLBBx+YLidPPPGEPPbYY75uHgAAAEWANh0A2IAOr+rrEKuWM2pm1KlTRxYsWCDXX3+9LF68WIYMGWLmJyQkSGxsbNEFM+Li4qRFixae5y6XS0aOHGkmAAAAOANtOgDwP8s6M/m6rhOMGjXK9N7QIIb25mjbtq0nS6N58+ZFF8wAAAAAAADIi5tuukkuvvhi2bNnjzRt2tQzXwMbmq3h9ueff0qlSpU8o6YWSjBD+7VobYxt27bJ4cOHxcoUEtJsjQ8//LAgPwIAAACFjDYdAPhZQQp5WuIYWvRTJ286qom3hg0byvr166VWrVqFE8yYN2+e9O3bV1JTU82oJSVLlsyyjAYzAAAAYF+06QDABoKgZkZeZU6SOOfBjBEjRsh5551nhlSpV6+er5sBAACAH9GmAwD/c1lnJl/XDUY+D8164MABGTRoEIEMAAAAB6NNBwBwIp8zM1q3bi07d+48t3sDAACAIkWbDgBsIEhqZtgiM2Py5Mny5ptvmm4mAAAAcCbadABgo5oZvk4BJK+1N33OzGjSpImMHz9ebrnlFilevLhUqVJFQkNDs+zEjz/+6OuPAAAAQCGjTQcANkBmRr4LgPqcmTFt2jTp37+/REZGSu3atSU+Pl7KlCmTYSpdurSvmwcAAEARoE0HACgKGj84duxYlvlJSUnmNbeNGzdK9erVCy8zY8KECdKuXTv5+OOPsx2WFQAAAPZHmw4AbCAIMjPmzJkjTz/9tMTExGSYn5ycLK+//rrMmjXLPK9atWqetudzMOPo0aPSq1cvAhkAAAAORpsOAGwggIMZiYmJpuuITpqZERUV5XktLS1NFi5caHp65JfP3Uwuu+wy+fnnn31dHQAAADZAmw4AgtPUqVOlRo0aJrigI1utXr06x2Xbt29vamJmnq666qqz/pxSpUqZEhS6fL169SQuLs4zlS1b1nQxueeee/K9/z5nZrz88svSrVs3mTRpktx5552mRgYAAACchTYdANhAQUYlsfK/3jvvvCNDhw6V6dOnm0CGjmzVtWtX2bx5c7ZZEvPnz5eUlBTP84MHD0rTpk3l5ptvPuvP+vLLL01WRseOHeWDDz7IUFszIiLC1MeoVKlS0QUzGjZsKOnp6TJixAgzaTQnu9FMNHURBde+ZzvpMexaqdagipxKTpH1X/wiMx99U/Zs2+eotzdQjqNebHtpUaanlI6oJqnWKdmVtF5WJMyQo6f3iFOERrSWiBL/ktDwphISeiYYmXxkhJw+8aY4SaAch0T3F1dUR5HQmiIhpUTS94ukfCfW8ZdE0nb5e+8ABDDadADgfy7rzOTruvn1wgsvyMCBA6Vfv37muQY1PvnkE1O34tFHH82yfObBPd5++22Jjo7OUzBDMwDV9u3bpVq1ankeerXQghk33njjOdsJ5O6K/h3loZmDzWP90h9bJkYuvamNNLnkPLm72TA5vO+II97CQDmORiWvkM6VHjaPj6bskajQWKkbe6lUjm4ic7fdJSfSDosThIY3lrDISyQ9baeIODezKlCOw1W8t0hIJZG07SJpp8QVVlWk2A0iEReLdaCriHXc37sIIEDRpgOAwKiZkZiYmGG2jjyqU2aaYbF27VqTlOAWEhIinTt3llWrVuXpR7722mtyyy23SPHixfO8m7/++qvs2rVLLr74Yk83lxkzZpiguj7WbidFEsyYPXu2nGvLly+XZ5991ryxe/bskf/+979y3XXXZein89VXX2VZ7+677zaRpJzs3LlTBg8ebNJbSpQoIX379pWJEydKWFjWw1+xYoWJHDVu3FjWr18v/hYWHiZ3TuxlHi9//1sZ1+N5KVMxTl77dbLElS8ltz52vUx74D9id4FyHCESJu3iB5jHWxKXy8LdY6V4WBnpXWuWRIfFyYVlb5Ov9k0VJzh94gNJSZorrtCyElM+b3+07ChQjsM68a5I8gKR9L+ze2IeE1fxfuIKjRcroq3IqSX+3kUAAaow2nQAgKJXNdMoIKNHj5YxY8ZkWe7AgQOm8Gb58uUzzNfnmzZtOuvP0doav/zyiwlo5MewYcPkmWeeMY+1/qZ2c3nooYfM93R9/J///KdoghmFQceX1X43WgDkhhtuyHYZTYUZO3Zshnma3pITPUlalKRChQqycuVKEyTp06ePhIeHm6HIvB05csS81qlTJ9m3zx7dHupfWFtKlYs1j7+Z/6359+Cew7Lp2y3SoktTubBrM3GCQDmO8sXqS3RYKfN467Gvzb9JqQdlb/KvUr1ES6le/EJxCstyRiZMsByHJL2c4amVssYEM/5+4p99AgAAgGPs2rVLYmPPfOdS2WVlnAsaxGjSpIm0atUqX+tpNxPNwlBaO+Oaa64x38nXrVsnV155Zb73I+xcZFNs27ZNDh8+bIp6eNNuKEOGDMnztrSgqE650cCFBiby6rPPPpONGzfK0qVLTaSpWbNmMm7cOBk+fLiJUmnBEbdBgwbJbbfdZmp/LFiwINftnjp1ykxumVN6zpVyVf9Jmz+S8E/9kcP7zjyOr1ZWnCBQjiMmvJzncXLqP1+i3V1LYsLzP6QQkFWIuKJ7mkdW6k6RFOdmnABwjnPVpiuqNhIABBIt4OBzzQw5QwMZ3sGMnOgIIvqdN/MNfH1+tu/amoCg9TIyJxjkhX73PnHihHms3881kcBdj8OXa4XPwQztgtGzZ0/ZunVrlguer8GMwqB9fjRq5J1Co1VatdvJhg0bpHnz5maeprToBfzNN9+Up5566qzb1W4qTz75pPhNoJQrCZDjcAXKgcD/XMXEVfJFcUVeKlZagliH79aejf7eKwAB7Fy36fzeRgIAJyrC0UwiIiKkRYsW8vnnn3vKOujgHvr83nvvzXXd9957zwSsb7/99nzvptbK0O4kF110kemqoiOqqN9++02qVKmS7+2FiI8GDBggCQkJplaFXgQ1ZSTzpMGBc23atGmm7oX3NHfu3ByX37t3b7Z9gdyvqS1btpiKrRrIyK6ORna0WIqO1OKeNKWnMOzfddDzuFR8Sc/juL8fJ+w8IE4QKMdx7PR+z+Nif3c3MY9Dzzw+djrBL/uFABFSVlyl54orqpNYqdvEOnSLSNpWf+8VgAB3rtt0RdVGAgD4ToMKWnxzzpw5pjCn3uzXrAv36CaaNeFdINS7i4kGQMqUyX/h/Zdeesl8337//ffNsOCVK1c28z/99FO54oorii4zQ7MaNLVEa1gUpV69esnjjz+ebXBCu6h8/fWZOgY6Vq3u49loTQ3tWqJ3EOrVq5fn/cipMuy5tvn73+XogUQpWTZWLr6hjXz59gpTOPO8NnXN698v9n+R0mA6jn3JmyU59agUCyspdWIukd8SvzQFQCsUa2Be35H0vb93EU4VVkdccTPEFVpFrJTvxTo8WMRiaGsAhe9ct+mKqo0EAAHlHIxmkh+akbd//34ZNWqUucmv5RgWLVrk+W6tg2joCCfeNm/eLN98840p5eALHZb1448/zjL/xRdf9Gl7Pgcz6tat65ehWUuWLCl16tTJ9rWZM2dKcnKyeawFPpX2+dEUFm/uvkH62rFjx2TNmjXyww8/eFJqNMVG0yw1aqQnqmPHjuIvqadTZdbj82TIK3ebYUxf3/qSGdK0eGy0HNmfKO88nXttD7sIlONIl1RZuX+WdKo4xAzHekfUG2Zo1sjQ4nIi9YisOfi2OEVY1BUSFauBwVDPvMiYhySyxN2SlvKDJB+5X5wgUI7DVWqqCWSceVJcXHEzPa9ZyTrSyXv+2zkAAc1fbToAgP+CGUq//+bUrWTZsmVZ5tWvXz/H7oh59fvvv5sSD/rvlClTJD4+3mRmaKCjUaNGRdPNRItn6liwu3fvFrvQNBUNdOikmRmqbdu2ZtgXTZ90W7JkiSmMopVU9V99XdMq3ZMWAtUTpY9bt24t/rZwxlKZePsU2frDdilTKc58gL7+4Ft58KLHzYggThEox/HLkU9k0e4JknByq8nK0L8eWxO/lvf+eMCMbOIULleMhITVkJCwf4ZwCgkta+a5QvNeZNffAuU4xPVPMWJXeENxRTT7Z3LScQBwHDu26QAAgeerr74y9Sy/++47mT9/vhw/ftzM//HHH80wskWWmaFDp548edJ86dehTLVgh1ZE9aZRfo225JUejBafctM+mhpQ0OqmGqlRWv3UXevCTVMZ4+List1mly5dTNCid+/eMmnSJLPuyJEj5Z577vGkQDZu3DjDOhodioqKyjLfn7546xszOV2gHMfmxC/M5GSnk98zk9MFynFY+zv4HIwHgIIojDYdACB/dCQTn0czsZzxbmudSh1sQ+t1xMTEeOZrTwitp1FkwQyNqmiREA0u/O9//8t2mfxe+LS7R4cOHTzP9SBV3759Zfbs2eaxFinRyZuOTqL9e7KjF2Ptl6P7qlkaxYsXN9vzZSgZAACAQFMYbToAgP27mRQ17RHx1ltvZZmvyQQHDhwoumDGfffdZ7poaCVS7YqRl/Fsz6Z9+/a59sHJrt9OXmiXk4ULF+Yr3VInAACAQFcYbToAQD4FQTCjVKlSsmfPHqlZs2aG+Vq/0j2ySZHUzNDuIMOGDZPLL7+cix4AAIBD0aYDABSFW265RYYPH25KP2jGnw68sWLFCnn44YfNULBFFszQSqM6djgAAACcizYdANinZoavkxNMmDBBzjvvPKlataqpl6m1LS+99FJp166dqWtZZMGM5557Tl555ZUsw54CAADAOWjTAYANWK6CTQ4QERFh6l9u27bN1LV88803ZdOmTfLGG29kKTxdqDUznn/+eVOBVItqakRFRxvJrvL1hx9+6OuPAAAAQCGjTQcANhAENTPGjh1rupRoZoZObsnJyfLss8/KqFGjiiaY8dNPP5lghQYxNEVk48aNWZbR1wEAAGBftOkAAEXhySeflEGDBkl0dHSG+Tqalr5WZMGMP/74w9dVAQAAYBO06QDA/wpS+8LlkMwMHbk0u4SHH3/8UUqXLp3v7fkczAAAAAAAAOdAAHcziYuLM0EMnerVq5choJGWlmZ6emjGhl+CGceOHTMjm+jQKplpNxQAAADYH206APCTgoxKYomtTZ482WRl9O/f33QnKVmyZIaioDVq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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig2, axes2 = plt.subplots(ncols=2, sharey=True, figsize=(12, 5))\n", + "make_heatmap(axes2[0], gsh_wine, is_sh=True)\n", + "make_heatmap(axes2[1], gs_wine, make_cbar=True)\n", + "axes2[0].set_title(f\"Wine – Successive Halving\\nвремя = {gsh_wine_time:.3f} с\", fontsize=12)\n", + "axes2[1].set_title(f\"Wine – GridSearchCV\\nвремя = {gs_wine_time:.3f} с\", fontsize=12)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "5413f7e9-3280-4192-9396-fedadf2e9a7c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqYAAAHDCAYAAAD2qtjrAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPolJREFUeJzt3QeUFFX69/FnRnIUUEQEESNiIKsoIigGFMGMqy6grllMrAF1VRSFRdesCJjWiBHMaVVABFdJihgQQWBNIDmD0O/53f9bc6prume6h5npO93fzznNMNU93berbt166rm3buXFYrGYAQAAABmWn+kCAAAAAEJgCgAAAC8QmAIAAMALBKYAAADwAoEpAAAAvEBgCgAAAC8QmAIAAMALBKYAAADwAoEpgKS2bNlif/zxh82dO5e1BAAocwSmAOL89ttvdsUVV1izZs2sSpUqtv3221vLli1t5cqVrKly9NNPP1leXp49+eSTaf9tv379bJdddrGKZNy4ce776mdxunTp4h7ZQN9j3333zXQxvEf9yB0EpkX48ccf7YILLrBdd93VqlWrZnXq1LFDDjnE7rvvPlu3bl35bSWgnMyZM8c6dOhgo0ePdnX/zTfftA8++MA+/PBDq1mzJtshzcAiCC7vuuuurF13GzZssAceeMA6depk9erVcyczjRs3tp49e9rzzz9vmzdvLpdyLF682C6//HJr0aKFVa9e3Ro2bGgHHHCAXXvttbZ69WrLFjpBHDRokLVq1cpq1arlvqvqn77nL7/8Yps2bbLtttvObY9kdCfypk2bWtu2bcu8vNSP8rWygtWPRCpl5FMrgLfeestOPfVUq1q1qvXp08dt2I0bN9rEiRPt6quvtlmzZtnIkSMzXUygVCkYVWDx2Wef2U477cTaraBGjRrlhmGURzDYvXt3mzp1qh199NF24403Wv369V3W/T//+Y+dccYZ7mTnH//4R7Hv1blzZ3fCr/qXrqVLl1r79u3dQfmcc85xwemSJUvsq6++suHDh9tFF13kDtIVnYbUdOvWzRYsWOCOT+eff75bX/qejz32mI0ZM8Zmz57tnhsxYoTNnz/f9XxETZgwwf73v//ZlVdeWablpX6Ur7kVrH4kFUMhc+fOjdWqVSvWokWL2C+//FLo+R9++CF27733suaQVaZMmRJTk/D+++9nuigVymGHHRbbZ599Ej43b948t07vvPPOtN83+Nsnnngi5qujjz46lp+fH3vllVcSPv/FF1/EnnnmmSLfY926dbHNmzenvc71CAwbNsytq08//bTQa1esWOE+ozytXr26VOpP2KZNm2KtWrWK1ahRI/bJJ58k/J7XX3+9+7+e1/oYMmRIwvc6//zz3Xb7+eefY2WJ+pEY9aNoBKYJXHjhhUkbuYQr0Sx2ySWXuAZ4zz33jFWtWjXWtm3b2Pjx4+Ne99NPP8Uuuugi95pq1arF6tevHzvllFPcAShMByK9Z/CoXr16bN99942NGjUq7nV9+/aN1axZs1B5XnrpJfd3H3/8cdzyzz77zDUUderUce/ZuXPn2MSJE+Nec/PNN7u/Xbx4caEDTPQgqc9v1qxZ3OsWLFjgvpteG/1eb7/9dqxTp06uYVXgf+yxx8a+/vrrYtZu+uvjxx9/jB111FHuc3bcccfYoEGDYlu2bIl7rQ6E99xzT6xly5ZuezVs2NA11kuXLo17nb6fPvPyyy8vVC59hp477rjj4pavX78+dtNNN8V22223WJUqVWJNmjSJXX311W55onoTpfcLr9dkAcrFF1/slut7p9IQXnXVVa4sKpPqoIKl8Hp58MEH3bYbPny4Wy963Q477ODWy5IlSwpep+9WqVKl2KJFiwp9znnnnRerW7euCwSSlTuoY1FPP/20229Uhnr16sV69+7t6lMqB3F9l2id0zqMrpsXX3zRvS5ab3///ffYOeecE2vatKk7YAd1LdH+tbWBqdblgAEDXB3W+9euXTt2zDHHxGbMmJHwb4P1F3xHtSNR1113Xaxy5coF9Te6b4bLMWLEiNiuu+7qtm/79u1jn3/+eaH303rae++93b6h7/bqq68Wes9Jkya591R7mSq1Sfqb559/PnbDDTfEGjduHMvLy4stW7as4LlouxWUV/WiQ4cOsQkTJhQKTC+44ILYNttsk3KAm0pbmG57PW7cOPf67bffPrbtttvGtXt6f7V52tZa588++2yh+jNr1qxYly5dXHm0Xv75z3/Gfc7o0aPd59x+++3Ffj/t17vssktsv/32K/Tcxo0b3Xc54ogjinyPrW13qB/ZXT/KEmNME3jjjTfcuNKDDz445czz+PHj3QUjZ511lt16662uG+mYY46xr7/+uuA1X3zxhU2aNMlOP/10u//+++3CCy90Y/c0Rm3t2rWF3vOee+6xp59+2o1P05CC8847z3WPlcRHH33kusrU1XXzzTfbHXfcYcuXL7fDDz/cPv/8cystN910k61fv77Qcn2P4447znWn/fOf/3Rde998840b56JxeKlIZX1oPJvW+w477GDDhg2zdu3aue+rR7TLWkMygjHDZ599tj377LOuO1JjcMI0vljPhZerm0PbTs+FqftUY+tUxuOPP96NvTvhhBNc2Xv37m2lRd2j6q5NhWJglUll0Lq5++67ba+99nLf/6qrrip4neqstp26PRs1auS+g+rq448/7uqJxorJX//6V/vzzz/thRdeiPscDXV5+eWX7eSTTy60Xopz++23uyEze+yxhyuf9iWtX9VZ1dPSoDLfcMMNCZ/r27evPfXUU3bKKae476t6duihh6b83qp3mr0g+li2bFnC7raxY8dajx493HfVdpg5c6YddthhbgxYMqeddpobr/riiy8Wek7LjjrqKDfGsyjPPfec3Xnnna7+Dx482O17J510Ulzd1jAm1dXKlSvbkCFD3PPnnnuu666PtpOiNi9dt912m/ucv//9764tStZ9r+5HlVX1Ufuz9lfV5YULF8a9Tt2R2gbabqXVFqbbXl988cWuTVMbeN1117llunBN7Z6GGgwcONCGDh1qrVu3tnfffTfub1VPtG9qXOC//vUvNxRBYwLfeeedgte8/vrrBftfcVRPNIxC9UrDzsL02SrPmWeeaWXZ7lA/cq9+lJoyDXsrIHWHaLX06tUr5b8JsivqCg3Mnz/fnWWfeOKJBcvWrl1b6G8nT57s/vapp54qdIYVPjOfPXu2W6Yuq3Qzpjo72mOPPVyGIJwhU3maN28eO/LII0slY6rsp7JN3bt3jyv/qlWr3Bmismlhv/32m8uuRZdHpbM+tKx///4Fy/R9lYFUdij4TkE3V/isVN59991Cy/X9tH6222672Msvv1yw/LbbbosdfPDB7vlwxlRZP62DaFfbI488UigLvzUZ09NOO81l3JThKy5zMXbsWPf3gwcPjluu7I+yVXPmzInb9jpT/vPPPwut/wceeKBgWceOHWMHHnhg3Pspqxaud9oH9Pvjjz9eZMZUmSllu6Jn+jNnznSZ2fDyrcmYPvzwwy4D2LVr17j1q+yutpmybmHJ9q8olSmc0U/0CGdMlTmPZvZUbpXt1ltvLXK7a723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48fb66+/bg888IANHDjQXfy0ww47WLVq1WzZsmX222+/2XbbbWf9+vWzr7/+2j0HAAAApCMvpls2peGPP/6wiRMn2vz5823dunUuIG3Tpo175OenfZF/uY1ZALzFGNPsxBhTAEg7Xkv7qnwFoieccEK6fwYAAAAUqXxTnAAAAEASBKYAAADwAoEpAAAAvEBgCgAAAC8QmAIAAMALaV+Vf9JJJxX5/Kuvvro15QEAAECOSjtjOnbsWKtSpYqbj0qPt956y81fGvwOAAAAlMsE+wpCdaenhg0but9r165tX375pe26665W3phgH1mBCfazExPsA0Da8VraGVPdhnT9+vXu/4ppN27caPfdd59t3rw53bcCAAAASh6Y7rnnnnbvvfe6rKl+KmM6depU69q1q/3+++/pvh0AAABQssB08ODBNnLkSNtpp53suuuus2HDhtm4ceOsdevW1qZNm3TfDgAAACjZVfk9evSwn3/+2WbPnm1Nmza1Ro0aueX333+/HXzwwem+HQAAAFCyi598wsVPyApc/JSdKm7TCgAZi9fSzphOmDChyOc7d+6c7lsCAAAA6QemXbp0sbz/n+GJJlu1nKvzAQAAUC6BaatWreyPP/6wc8891/r06WMNGjQo0QcDAAAAW3VV/vTp091tR3UB1IEHHmgXX3yxzZgxgzs/AQAAoHwDU+nQoYONGjXK5s6d667E79Wrl5vTFAAAACi3rvzAwoUL7dFHH7XHH3/c2rZta506dSpxIQAAAIC0M6Zjx461Y4891g444ABbt26dffTRR+7Rvn171iYAAADKbx7T/Px8a9KkifXs2dOqVKlS6Pm7777bygvzmCIrMI9pdmIeUwAo+3lMNU+ppoWaNWtWoeeCaaQAAACAdKUdmI4bNy7tDwEAAADK5Kp8mTNnjr333ntunKlU4DubAgAAoCIGpkuWLLEjjjjC9txzT3cR1K+//uqWa8L9AQMGlEUZAQAAkAPSDkyvvPJKq1y5si1YsMBq1KhRsLx379727rvvlnb5AAAAkCPSHmP6/vvvuy58XZkftscee9j8+fNLs2wAAADIIWlnTNesWROXKQ0sXbrUqlatWlrlAgAAQI5JOzA99NBD7amnnoqbImrLli02bNgw69q1a2mXDwAAADki7a58BaC6+GnKlCm2ceNGu+aaa9ycpsqYfvrpp2VTSgAAAGS9tDOm++67r82ePds6depkvXr1cl37J510kk2fPt122223tN5ryJAh1qFDB6tdu7Y1bNjQTjjhBPv+++/TLRIAAABy8ZakpemYY46x008/3QWnf/75p11//fX29ddf2zfffGM1a9Ys9u+5JSmyAndMy07M7QwAacdrJQpMly1bZo899ph9++237veWLVva2WefbfXr17etsXjxYpc5HT9+vLv1aXEITJEVCEyzE4EpAKQdr6U9xnTChAl2/PHHuw9o3769W3b//ffbrbfeam+88UZKAWUyKrAkC3A3bNjgHuEvKrr4Sg+gQsov8Q3Y4DPaJABw0onR0s6Y7rffftaxY0cbPny4bbPNNm7Z5s2b7eKLL7ZJkybZzJkzraSF7tmzpy1fvtwmTpyY8DW33HKLDRo0qNByjXnVOFWgQurZM9MlQFl4/XXWKwCY2apVq9wdQ8ukK7969eo2Y8YM22uvveKW66Kl1q1b27p160q0ES666CJ75513XFAanby/qIxp06ZN3dCC4r4o4K3KlTNdApSFTZtYrwBg/xev1atXr2y68tu2bevGlkYDUy1r1apViTbApZdeam+++aYbJpAsKBVN4J9oEv/8/Hz3ACokunyzE20SADjpxGhpB6aXXXaZXX755TZnzhw76KCD3LLPPvvMHnroIRs6dKh99dVXBa/df//9i3wvJWv79+9vY8aMsXHjxlnz5s3TLQ4AAACyRNpd+cVFvboTlN5SPzX2tCgal/rcc8/Za6+9FpeB1YVVGjJQHK7KR1bgqvzsxFX5AFD200XNnz8/5dc2a9as6A9PckB+4oknrF+/fsW+P4EpsgKBaXYiMAWAsp8uqrhgMx0ZnNsfAAAAnkk7MF2yZIk1aNDA/X/hwoU2atQodyW+pno69NBDy6KMAAAAyAEpXyal+Ul32WUXd2emFi1auCmjdCvRe+65x0aOHGldu3a1sWPHlm1pAQAAkLVSDkyvueYaN7m+pnTq0qWL9ejRw4477jg3XkDziF5wwQXuqnwAAACgJFK++Gm77bazjz76yE0BtXr1ajd49YsvvrB27dq557/77js3fZTu3FReuPgJWYGLn7ITY+gBIO14LeWM6dKlS61Ro0bu/7Vq1bKaNWu6WfwD+r9uOQUAAACURFq3S4pO75RsuicAAACgTK/K19yiwS1B169fbxdeeKHLnEr4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ty1evNhuuukm++2336x169b27rvvFrogCuVPwyY0v2x0+ARAfUKm0T6BOpWd8mKpXLsPAAAAZPsE+wAAAIAQmAIAAMALBKYAAADwAoGpx7p06WJXXHFFyq/v16+fnXDCCVYelixZYg0bNrSffvrJfKbb3u6yyy42ZcqUTBcFyEq50E6l+x1Tcd1111n//v1L9T2BbEBgWsqSNbrjxo1zd6cqy3sd33ffffbkk09aebj99tutV69eLujzmebK/fvf/27XXnttpotSIaRST1XHUrmxxWOPPWZHHXWU+U6zgGg2EM2hnCtytZ3acccdbejQoYUCRH1nffdoMPrXv/7V/f/VV1+12267rVTLpnbp3//+t82dO7dU3zcX+NZO6cRH5ZkxY4aVlo05nFQhMM2yuyqUx52w1q5d63bmc8891yqCM8880yZOnGizZs2yXKBp1y6//HLbfffdrVq1am7qtUMOOcSGDx/utl1RDj74YPv1119TvkNHMuvXr7d//OMfbrox3x1zzDFWuXJle/bZZzNdlJyQyXZKwWY0AP3444/drZfDy1V/P/vsMzv88MPd7/Xr17fatWuX+p0Pjz76aLdf5iIf2ymdpCrAVNnCdEITTcIEwahuCKT6o/Lsu+++Vlqq5HBShcA0Q9TF9Je//MV22mknq1Gjhu233372/PPPJ3399ddfbwceeGCh5a1atbJbb701YRZEjfBll11m11xzjWtYdZvXW265Je7vv/vuO+vUqZNrGFq2bGn/+c9/3M42duzYpGV5++233RyCBx10UNxyBX49evRwtwhUI37ooYfajz/+mLBs+v716tWLO0CpbMpcJTszDv6f7JGMPkcN3ujRoy3bKfvSpk0be//99+2OO+6w6dOn2+TJk10dePPNN932TWbTpk2uMVQ9KWp9puLll1929UDrvSJQ/bz//vszXQzvZFs71bVrV/v000/tzz//dL/r3t3aR3TwDwem2mc2bNjgXp+oK19Bivavc845x7V1O++8s40cOTLu8xcuXGinnXaaa+P0vZS5jQ4pOP7443OiXaoo7ZTqWKVKleLqwrfffmvr1q2zZcuWxW0/ndCofulvdWt1lUd/W5rOzLGkSoDANEN0pqbbsb711lv29ddf2/nnn++6jT7//POkFVTPBYGeqLJ+9dVXdsYZZyT9HHUV1axZ0/773//asGHD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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(8, 5))\n", + "plt.bar(['Halving (синт.)', 'Grid (синт.)', 'Halving (Wine)', 'Grid (Wine)'],\n", + " [gsh_time, gs_time, gsh_wine_time, gs_wine_time],\n", + " color=['green', 'red', 'green', 'red'])\n", + "plt.ylabel('Время (сек)')\n", + "plt.title('Сравнение времени обучения HalvingGridSearchCV и GridSearchCV')\n", + "plt.grid(axis='y', alpha=0.3)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "6ecbf57f-fe52-4676-8418-18885f9fba4f", + "metadata": {}, + "source": [ + "### Интерпретация результатов (реальный датасет Wine)\n", + "\n", + "- **Временные затраты:** \n", + " HalvingGridSearchCV снова оказался в разы быстрее (например, 0.2 с против 1.5 с). \n", + "\n", + "- **Качество:** \n", + " Оба метода показывают сопоставимые значения `mean_test_score`, причём лучшие параметры находятся в аналогичной области (низкие gamma, C ~ 100–1000). \n", + "\n", + "- **Практическая значимость:** \n", + " Successive Halving позволяет быстро сузить область поиска и найти хорошие гиперпараметры без полного перебора, что критично для больших датасетов. \n", + "\n", + "- **Ограничение:** \n", + " Метод может отбросить перспективные комбинации на ранних итерациях, если оценка на малом подмножестве данных была неточной. Рекомендуется использовать несколько начальных ресурсов (`min_resources`)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.14.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}