{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "e9ae3563",
   "metadata": {},
   "source": [
    "# Регрессия по датасету факторов тревожности и депрессии двумя нейросетевыми подходами\n",
    "\n",
    "В работе автоматически выбирается ключевая зависимая переменная, после чего решается задача регрессии двумя способами:\n",
    "\n",
    "1. классической нейросетью;\n",
    "2. нейросетью с эволюцией весов (генетический поиск).\n",
    "\n",
    "Далее сравниваются метрики на валидационной и тестовой выборках. Финальный текстовый вывод в ноутбуке не приводится."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7c1e469",
   "metadata": {},
   "source": [
    "## 1. Импорт библиотек"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "6447886b",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import re\n",
    "import math\n",
    "import json\n",
    "import random\n",
    "import inspect\n",
    "import warnings\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from sklearn.compose import ColumnTransformer\n",
    "from sklearn.impute import SimpleImputer\n",
    "from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.neural_network import MLPRegressor\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import OneHotEncoder, StandardScaler\n",
    "\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "RANDOM_STATE = 42\n",
    "np.random.seed(RANDOM_STATE)\n",
    "random.seed(RANDOM_STATE)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "49665fb0",
   "metadata": {},
   "source": [
    "## 2. Загрузка данных и первичный просмотр"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "c5c57ca9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Используемый файл: anxiety_depression_data.csv\n",
      "Форма датасета: (1200, 21)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>Gender</th>\n",
       "      <th>Education_Level</th>\n",
       "      <th>Employment_Status</th>\n",
       "      <th>Sleep_Hours</th>\n",
       "      <th>Physical_Activity_Hrs</th>\n",
       "      <th>Social_Support_Score</th>\n",
       "      <th>Anxiety_Score</th>\n",
       "      <th>Depression_Score</th>\n",
       "      <th>Stress_Level</th>\n",
       "      <th>...</th>\n",
       "      <th>Chronic_Illnesses</th>\n",
       "      <th>Medication_Use</th>\n",
       "      <th>Therapy</th>\n",
       "      <th>Meditation</th>\n",
       "      <th>Substance_Use</th>\n",
       "      <th>Financial_Stress</th>\n",
       "      <th>Work_Stress</th>\n",
       "      <th>Self_Esteem_Score</th>\n",
       "      <th>Life_Satisfaction_Score</th>\n",
       "      <th>Loneliness_Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>56</td>\n",
       "      <td>Male</td>\n",
       "      <td>Bachelor's</td>\n",
       "      <td>Unemployed</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.4</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>69</td>\n",
       "      <td>Female</td>\n",
       "      <td>Bachelor's</td>\n",
       "      <td>Retired</td>\n",
       "      <td>8.8</td>\n",
       "      <td>2.8</td>\n",
       "      <td>6</td>\n",
       "      <td>18</td>\n",
       "      <td>7</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>46</td>\n",
       "      <td>Female</td>\n",
       "      <td>Master's</td>\n",
       "      <td>Employed</td>\n",
       "      <td>5.3</td>\n",
       "      <td>1.6</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>13</td>\n",
       "      <td>8</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>32</td>\n",
       "      <td>Female</td>\n",
       "      <td>High School</td>\n",
       "      <td>Unemployed</td>\n",
       "      <td>8.8</td>\n",
       "      <td>0.5</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>8</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>60</td>\n",
       "      <td>Female</td>\n",
       "      <td>Bachelor's</td>\n",
       "      <td>Retired</td>\n",
       "      <td>7.2</td>\n",
       "      <td>0.7</td>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Frequent</td>\n",
       "      <td>8</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 21 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Age  Gender Education_Level Employment_Status  Sleep_Hours  \\\n",
       "0   56    Male      Bachelor's        Unemployed          6.0   \n",
       "1   69  Female      Bachelor's           Retired          8.8   \n",
       "2   46  Female        Master's          Employed          5.3   \n",
       "3   32  Female     High School        Unemployed          8.8   \n",
       "4   60  Female      Bachelor's           Retired          7.2   \n",
       "\n",
       "   Physical_Activity_Hrs  Social_Support_Score  Anxiety_Score  \\\n",
       "0                    0.4                     3              4   \n",
       "1                    2.8                     6             18   \n",
       "2                    1.6                     5              5   \n",
       "3                    0.5                     4              6   \n",
       "4                    0.7                     2              7   \n",
       "\n",
       "   Depression_Score  Stress_Level  ...  Chronic_Illnesses  Medication_Use  \\\n",
       "0                 2             9  ...                  0             NaN   \n",
       "1                 7             6  ...                  0             NaN   \n",
       "2                13             8  ...                  0             NaN   \n",
       "3                 3             4  ...                  1             NaN   \n",
       "4                15             3  ...                  0             NaN   \n",
       "\n",
       "  Therapy  Meditation  Substance_Use Financial_Stress  Work_Stress  \\\n",
       "0       0           1            NaN                4            3   \n",
       "1       1           0            NaN                1            4   \n",
       "2       0           1            NaN                8            7   \n",
       "3       0           0            NaN                7            4   \n",
       "4       1           1       Frequent                8            9   \n",
       "\n",
       "   Self_Esteem_Score  Life_Satisfaction_Score  Loneliness_Score  \n",
       "0                  7                        5                 1  \n",
       "1                  7                        4                 6  \n",
       "2                  8                        1                 1  \n",
       "3                  8                        4                 4  \n",
       "4                  5                        7                 7  \n",
       "\n",
       "[5 rows x 21 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Типы данных:\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>dtype</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Age</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gender</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Education_Level</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Employment_Status</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sleep_Hours</th>\n",
       "      <td>float64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Physical_Activity_Hrs</th>\n",
       "      <td>float64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Social_Support_Score</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Anxiety_Score</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Depression_Score</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Stress_Level</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Family_History_Mental_Illness</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Chronic_Illnesses</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Medication_Use</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Therapy</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Meditation</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Substance_Use</th>\n",
       "      <td>object</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Financial_Stress</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Work_Stress</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Self_Esteem_Score</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Life_Satisfaction_Score</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Loneliness_Score</th>\n",
       "      <td>int64</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                 dtype\n",
       "Age                              int64\n",
       "Gender                          object\n",
       "Education_Level                 object\n",
       "Employment_Status               object\n",
       "Sleep_Hours                    float64\n",
       "Physical_Activity_Hrs          float64\n",
       "Social_Support_Score             int64\n",
       "Anxiety_Score                    int64\n",
       "Depression_Score                 int64\n",
       "Stress_Level                     int64\n",
       "Family_History_Mental_Illness    int64\n",
       "Chronic_Illnesses                int64\n",
       "Medication_Use                  object\n",
       "Therapy                          int64\n",
       "Meditation                       int64\n",
       "Substance_Use                   object\n",
       "Financial_Stress                 int64\n",
       "Work_Stress                      int64\n",
       "Self_Esteem_Score                int64\n",
       "Life_Satisfaction_Score          int64\n",
       "Loneliness_Score                 int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "candidate_paths = [\n",
    "    \"anxiety_depression_data.csv\",\n",
    "    \"/mnt/data/anxiety_depression_data.csv\",\n",
    "    \"/kaggle/input/anxiety-and-depression-mental-health-factors/anxiety_depression_data.csv\",\n",
    "]\n",
    "\n",
    "data_path = None\n",
    "for p in candidate_paths:\n",
    "    if os.path.exists(p):\n",
    "        data_path = p\n",
    "        break\n",
    "\n",
    "if data_path is None:\n",
    "    raise FileNotFoundError(\"Файл anxiety_depression_data.csv не найден.\")\n",
    "\n",
    "df_raw = pd.read_csv(data_path)\n",
    "\n",
    "print(f\"Используемый файл: {os.path.basename(data_path)}\")\n",
    "print(f\"Форма датасета: {df_raw.shape}\")\n",
    "display(df_raw.head())\n",
    "print(\"\\nТипы данных:\")\n",
    "display(df_raw.dtypes.rename(\"dtype\").to_frame())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "93bb21fa",
   "metadata": {},
   "source": [
    "## 3. Нормализация названий колонок и выбор зависимой переменной"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "11f602e9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>original_name</th>\n",
       "      <th>normalized_name</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Age</td>\n",
       "      <td>age</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Gender</td>\n",
       "      <td>gender</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Education_Level</td>\n",
       "      <td>education_level</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Employment_Status</td>\n",
       "      <td>employment_status</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Sleep_Hours</td>\n",
       "      <td>sleep_hours</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Physical_Activity_Hrs</td>\n",
       "      <td>physical_activity_hrs</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Social_Support_Score</td>\n",
       "      <td>social_support_score</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Anxiety_Score</td>\n",
       "      <td>anxiety_score</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Depression_Score</td>\n",
       "      <td>depression_score</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Stress_Level</td>\n",
       "      <td>stress_level</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>Family_History_Mental_Illness</td>\n",
       "      <td>family_history_mental_illness</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>Chronic_Illnesses</td>\n",
       "      <td>chronic_illnesses</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>Medication_Use</td>\n",
       "      <td>medication_use</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>Therapy</td>\n",
       "      <td>therapy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>Meditation</td>\n",
       "      <td>meditation</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>Substance_Use</td>\n",
       "      <td>substance_use</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>Financial_Stress</td>\n",
       "      <td>financial_stress</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>Work_Stress</td>\n",
       "      <td>work_stress</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>Self_Esteem_Score</td>\n",
       "      <td>self_esteem_score</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>Life_Satisfaction_Score</td>\n",
       "      <td>life_satisfaction_score</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>Loneliness_Score</td>\n",
       "      <td>loneliness_score</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    original_name                normalized_name\n",
       "0                             Age                            age\n",
       "1                          Gender                         gender\n",
       "2                 Education_Level                education_level\n",
       "3               Employment_Status              employment_status\n",
       "4                     Sleep_Hours                    sleep_hours\n",
       "5           Physical_Activity_Hrs          physical_activity_hrs\n",
       "6            Social_Support_Score           social_support_score\n",
       "7                   Anxiety_Score                  anxiety_score\n",
       "8                Depression_Score               depression_score\n",
       "9                    Stress_Level                   stress_level\n",
       "10  Family_History_Mental_Illness  family_history_mental_illness\n",
       "11              Chronic_Illnesses              chronic_illnesses\n",
       "12                 Medication_Use                 medication_use\n",
       "13                        Therapy                        therapy\n",
       "14                     Meditation                     meditation\n",
       "15                  Substance_Use                  substance_use\n",
       "16               Financial_Stress               financial_stress\n",
       "17                    Work_Stress                    work_stress\n",
       "18              Self_Esteem_Score              self_esteem_score\n",
       "19        Life_Satisfaction_Score        life_satisfaction_score\n",
       "20               Loneliness_Score               loneliness_score"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Выбранная зависимая переменная: depression_score\n"
     ]
    }
   ],
   "source": [
    "def normalize_col(name: str) -> str:\n",
    "    name = str(name).strip().lower()\n",
    "    name = name.replace(\"&\", \" and \")\n",
    "    name = re.sub(r\"[^a-z0-9]+\", \"_\", name)\n",
    "    name = re.sub(r\"_+\", \"_\", name).strip(\"_\")\n",
    "    return name\n",
    "\n",
    "original_columns = df_raw.columns.tolist()\n",
    "normalized_columns = [normalize_col(c) for c in original_columns]\n",
    "\n",
    "mapping_df = pd.DataFrame({\n",
    "    \"original_name\": original_columns,\n",
    "    \"normalized_name\": normalized_columns\n",
    "})\n",
    "\n",
    "df = df_raw.copy()\n",
    "df.columns = normalized_columns\n",
    "\n",
    "display(mapping_df)\n",
    "\n",
    "target_priority = [\n",
    "    \"depression_score\",\n",
    "    \"anxiety_score\",\n",
    "    \"life_satisfaction_score\",\n",
    "    \"loneliness_score\",\n",
    "    \"self_esteem_score\",\n",
    "]\n",
    "\n",
    "numeric_cols = df.select_dtypes(include=[np.number]).columns.tolist()\n",
    "\n",
    "target_col = None\n",
    "for col in target_priority:\n",
    "    if col in df.columns:\n",
    "        target_col = col\n",
    "        break\n",
    "\n",
    "if target_col is None:\n",
    "    score_like = [c for c in numeric_cols if any(token in c for token in [\"score\", \"level\", \"months\", \"risk\"])]\n",
    "    if score_like:\n",
    "        target_col = score_like[0]\n",
    "    else:\n",
    "        target_col = numeric_cols[-1]\n",
    "\n",
    "print(f\"Выбранная зависимая переменная: {target_col}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "04adb740",
   "metadata": {},
   "source": [
    "## 4. Подготовка признаков"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "6970efd9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Число исходных признаков: 20\n",
      "Число числовых признаков: 15\n",
      "Число категориальных признаков: 5\n",
      "Категориальные признаки: ['gender', 'education_level', 'employment_status', 'medication_use', 'substance_use']\n",
      "\n",
      "Пропуски по признакам:\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>missing_count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>medication_use</th>\n",
       "      <td>747</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>substance_use</th>\n",
       "      <td>834</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                missing_count\n",
       "medication_use            747\n",
       "substance_use             834"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = df.drop(columns=[target_col]).copy()\n",
    "y = df[target_col].astype(float).copy()\n",
    "\n",
    "numeric_features = X.select_dtypes(include=[np.number]).columns.tolist()\n",
    "categorical_features = [c for c in X.columns if c not in numeric_features]\n",
    "\n",
    "print(f\"Число исходных признаков: {X.shape[1]}\")\n",
    "print(f\"Число числовых признаков: {len(numeric_features)}\")\n",
    "print(f\"Число категориальных признаков: {len(categorical_features)}\")\n",
    "print(\"Категориальные признаки:\", categorical_features)\n",
    "\n",
    "missing_info = X.isna().sum().rename(\"missing_count\").to_frame()\n",
    "print(\"\\nПропуски по признакам:\")\n",
    "display(missing_info[missing_info[\"missing_count\"] > 0] if missing_info[\"missing_count\"].sum() > 0 else missing_info.head(0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "eda2d4f8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Размерность после кодирования: 32\n",
      "Первые признаки после преобразования: ['num__age', 'num__sleep_hours', 'num__physical_activity_hrs', 'num__social_support_score', 'num__anxiety_score', 'num__stress_level', 'num__family_history_mental_illness', 'num__chronic_illnesses', 'num__therapy', 'num__meditation', 'num__financial_stress', 'num__work_stress', 'num__self_esteem_score', 'num__life_satisfaction_score', 'num__loneliness_score']\n"
     ]
    }
   ],
   "source": [
    "X_train_full, X_test, y_train_full, y_test = train_test_split(\n",
    "    X, y, test_size=0.20, random_state=RANDOM_STATE\n",
    ")\n",
    "\n",
    "X_train, X_val, y_train, y_val = train_test_split(\n",
    "    X_train_full, y_train_full, test_size=0.20, random_state=RANDOM_STATE\n",
    ")\n",
    "\n",
    "def make_one_hot_encoder():\n",
    "    params = inspect.signature(OneHotEncoder).parameters\n",
    "    if \"sparse_output\" in params:\n",
    "        return OneHotEncoder(handle_unknown=\"ignore\", sparse_output=False)\n",
    "    return OneHotEncoder(handle_unknown=\"ignore\", sparse=False)\n",
    "\n",
    "numeric_transformer = Pipeline([\n",
    "    (\"imputer\", SimpleImputer(strategy=\"median\")),\n",
    "    (\"scaler\", StandardScaler()),\n",
    "])\n",
    "\n",
    "categorical_transformer = Pipeline([\n",
    "    (\"imputer\", SimpleImputer(strategy=\"most_frequent\")),\n",
    "    (\"onehot\", make_one_hot_encoder()),\n",
    "])\n",
    "\n",
    "preprocessor = ColumnTransformer([\n",
    "    (\"num\", numeric_transformer, numeric_features),\n",
    "    (\"cat\", categorical_transformer, categorical_features),\n",
    "])\n",
    "\n",
    "X_train_proc = preprocessor.fit_transform(X_train)\n",
    "X_val_proc = preprocessor.transform(X_val)\n",
    "X_test_proc = preprocessor.transform(X_test)\n",
    "\n",
    "feature_names = preprocessor.get_feature_names_out().tolist()\n",
    "\n",
    "y_scaler = StandardScaler()\n",
    "y_train_scaled = y_scaler.fit_transform(np.asarray(y_train).reshape(-1, 1)).ravel()\n",
    "y_val_scaled = y_scaler.transform(np.asarray(y_val).reshape(-1, 1)).ravel()\n",
    "y_test_scaled = y_scaler.transform(np.asarray(y_test).reshape(-1, 1)).ravel()\n",
    "\n",
    "print(f\"Размерность после кодирования: {X_train_proc.shape[1]}\")\n",
    "print(\"Первые признаки после преобразования:\", feature_names[:15])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "13e12ec4",
   "metadata": {},
   "source": [
    "## 5. Классическая нейросеть для регрессии"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "91206172",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>internal_val_r2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>19</td>\n",
       "      <td>0.443408</td>\n",
       "      <td>-0.139546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>20</td>\n",
       "      <td>0.441419</td>\n",
       "      <td>-0.139293</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>21</td>\n",
       "      <td>0.438660</td>\n",
       "      <td>-0.140623</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>22</td>\n",
       "      <td>0.437019</td>\n",
       "      <td>-0.145204</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>23</td>\n",
       "      <td>0.434403</td>\n",
       "      <td>-0.150929</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    epoch  train_loss  internal_val_r2\n",
       "18     19    0.443408        -0.139546\n",
       "19     20    0.441419        -0.139293\n",
       "20     21    0.438660        -0.140623\n",
       "21     22    0.437019        -0.145204\n",
       "22     23    0.434403        -0.150929"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "hidden_dim = 8\n",
    "\n",
    "baseline_mlp = MLPRegressor(\n",
    "    hidden_layer_sizes=(hidden_dim,),\n",
    "    activation=\"tanh\",\n",
    "    solver=\"adam\",\n",
    "    learning_rate_init=0.01,\n",
    "    max_iter=300,\n",
    "    early_stopping=True,\n",
    "    validation_fraction=0.15,\n",
    "    n_iter_no_change=20,\n",
    "    random_state=RANDOM_STATE,\n",
    ")\n",
    "\n",
    "baseline_mlp.fit(X_train_proc, y_train_scaled)\n",
    "\n",
    "baseline_pred_val = y_scaler.inverse_transform(\n",
    "    baseline_mlp.predict(X_val_proc).reshape(-1, 1)\n",
    ").ravel()\n",
    "\n",
    "baseline_pred_test = y_scaler.inverse_transform(\n",
    "    baseline_mlp.predict(X_test_proc).reshape(-1, 1)\n",
    ").ravel()\n",
    "\n",
    "baseline_history = pd.DataFrame({\n",
    "    \"epoch\": np.arange(1, len(baseline_mlp.loss_curve_) + 1),\n",
    "    \"train_loss\": baseline_mlp.loss_curve_,\n",
    "})\n",
    "\n",
    "if hasattr(baseline_mlp, \"validation_scores_\") and baseline_mlp.validation_scores_ is not None:\n",
    "    baseline_history[\"internal_val_r2\"] = baseline_mlp.validation_scores_\n",
    "\n",
    "display(baseline_history.tail())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0669af73",
   "metadata": {},
   "source": [
    "## 6. Нейросеть с эволюцией весов\n",
    "\n",
    "Используется та же базовая архитектура: один скрытый слой из 8 нейронов и линейный выход.\n",
    "Оптимизация весов выполняется генетическим алгоритмом без градиентного спуска."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "5ea2b6f9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>generation</th>\n",
       "      <th>best_train_mse</th>\n",
       "      <th>best_val_mse</th>\n",
       "      <th>mean_val_mse</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>41</td>\n",
       "      <td>1.022187</td>\n",
       "      <td>0.908786</td>\n",
       "      <td>0.914387</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>42</td>\n",
       "      <td>1.022187</td>\n",
       "      <td>0.908786</td>\n",
       "      <td>0.911603</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>43</td>\n",
       "      <td>1.015362</td>\n",
       "      <td>0.910657</td>\n",
       "      <td>0.913201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>44</td>\n",
       "      <td>1.024683</td>\n",
       "      <td>0.904279</td>\n",
       "      <td>0.912303</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>45</td>\n",
       "      <td>1.022092</td>\n",
       "      <td>0.904854</td>\n",
       "      <td>0.912798</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    generation  best_train_mse  best_val_mse  mean_val_mse\n",
       "40          41        1.022187      0.908786      0.914387\n",
       "41          42        1.022187      0.908786      0.911603\n",
       "42          43        1.015362      0.910657      0.913201\n",
       "43          44        1.024683      0.904279      0.912303\n",
       "44          45        1.022092      0.904854      0.912798"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def unpack_population(theta, n_features, hidden_dim):\n",
    "    idx = 0\n",
    "    w1_size = n_features * hidden_dim\n",
    "    b1_size = hidden_dim\n",
    "    w2_size = hidden_dim\n",
    "\n",
    "    W1 = theta[:, idx:idx + w1_size].reshape(theta.shape[0], n_features, hidden_dim)\n",
    "    idx += w1_size\n",
    "    b1 = theta[:, idx:idx + b1_size].reshape(theta.shape[0], 1, hidden_dim)\n",
    "    idx += b1_size\n",
    "    W2 = theta[:, idx:idx + w2_size].reshape(theta.shape[0], hidden_dim, 1)\n",
    "    idx += w2_size\n",
    "    b2 = theta[:, idx].reshape(theta.shape[0], 1)\n",
    "    return W1, b1, W2, b2\n",
    "\n",
    "def forward_population(theta, Xmat, n_features, hidden_dim):\n",
    "    W1, b1, W2, b2 = unpack_population(theta, n_features, hidden_dim)\n",
    "    hidden = np.tanh(np.einsum(\"nd,pdh->pnh\", Xmat, W1) + b1)\n",
    "    out = np.einsum(\"pnh,phq->pnq\", hidden, W2).squeeze(-1) + b2\n",
    "    return out\n",
    "\n",
    "def regression_metrics(y_true, y_pred):\n",
    "    rmse = float(np.sqrt(mean_squared_error(y_true, y_pred)))\n",
    "    mae = float(mean_absolute_error(y_true, y_pred))\n",
    "    r2 = float(r2_score(y_true, y_pred))\n",
    "    return {\"r2\": r2, \"rmse\": rmse, \"mae\": mae}\n",
    "\n",
    "n_features = X_train_proc.shape[1]\n",
    "param_dim = n_features * hidden_dim + hidden_dim + hidden_dim + 1\n",
    "\n",
    "population_size = 28\n",
    "n_generations = 45\n",
    "elite_size = 6\n",
    "mutation_scale = 0.08\n",
    "mutation_prob = 0.15\n",
    "\n",
    "population = np.random.normal(0.0, 0.35, size=(population_size, param_dim))\n",
    "\n",
    "history_rows = []\n",
    "best_theta = None\n",
    "best_val_mse = np.inf\n",
    "\n",
    "for gen in range(1, n_generations + 1):\n",
    "    pred_train_pop = forward_population(population, X_train_proc, n_features, hidden_dim)\n",
    "    pred_val_pop = forward_population(population, X_val_proc, n_features, hidden_dim)\n",
    "\n",
    "    train_mse = np.mean((pred_train_pop - y_train_scaled[None, :]) ** 2, axis=1)\n",
    "    val_mse = np.mean((pred_val_pop - y_val_scaled[None, :]) ** 2, axis=1)\n",
    "\n",
    "    fitness = -(0.30 * train_mse + 0.70 * val_mse)\n",
    "    order = np.argsort(-fitness)\n",
    "\n",
    "    if val_mse[order[0]] < best_val_mse:\n",
    "        best_val_mse = float(val_mse[order[0]])\n",
    "        best_theta = population[order[0]].copy()\n",
    "\n",
    "    best_idx = order[0]\n",
    "    history_rows.append({\n",
    "        \"generation\": gen,\n",
    "        \"best_train_mse\": float(train_mse[best_idx]),\n",
    "        \"best_val_mse\": float(val_mse[best_idx]),\n",
    "        \"mean_val_mse\": float(val_mse.mean()),\n",
    "    })\n",
    "\n",
    "    elites = population[order[:elite_size]].copy()\n",
    "    new_population = [elites[i].copy() for i in range(elite_size)]\n",
    "\n",
    "    selection_pool = population[order[: max(elite_size, population_size // 2)]]\n",
    "\n",
    "    while len(new_population) < population_size:\n",
    "        p1 = selection_pool[np.random.randint(0, len(selection_pool))]\n",
    "        p2 = selection_pool[np.random.randint(0, len(selection_pool))]\n",
    "        alpha = np.random.uniform(0.25, 0.75, size=param_dim)\n",
    "        child = alpha * p1 + (1.0 - alpha) * p2\n",
    "\n",
    "        mutation_mask = np.random.rand(param_dim) < mutation_prob\n",
    "        child[mutation_mask] += np.random.normal(0.0, mutation_scale, size=mutation_mask.sum())\n",
    "\n",
    "        new_population.append(child)\n",
    "\n",
    "    population = np.vstack(new_population)\n",
    "\n",
    "ga_history = pd.DataFrame(history_rows)\n",
    "display(ga_history.tail())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "b2c6ee93",
   "metadata": {},
   "outputs": [],
   "source": [
    "ga_pred_val_scaled = forward_population(\n",
    "    best_theta.reshape(1, -1), X_val_proc, n_features, hidden_dim\n",
    ").ravel()\n",
    "\n",
    "ga_pred_test_scaled = forward_population(\n",
    "    best_theta.reshape(1, -1), X_test_proc, n_features, hidden_dim\n",
    ").ravel()\n",
    "\n",
    "ga_pred_val = y_scaler.inverse_transform(ga_pred_val_scaled.reshape(-1, 1)).ravel()\n",
    "ga_pred_test = y_scaler.inverse_transform(ga_pred_test_scaled.reshape(-1, 1)).ravel()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "61d1d8d5",
   "metadata": {},
   "source": [
    "## 7. Сравнение метрик моделей"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "2b52c455",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>model</th>\n",
       "      <th>r2_test</th>\n",
       "      <th>rmse_test</th>\n",
       "      <th>mae_test</th>\n",
       "      <th>r2_val</th>\n",
       "      <th>rmse_val</th>\n",
       "      <th>mae_val</th>\n",
       "      <th>n_original_features</th>\n",
       "      <th>n_processed_features</th>\n",
       "      <th>hidden_dim</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Нейросеть с эволюцией весов</td>\n",
       "      <td>-0.051088</td>\n",
       "      <td>5.485670</td>\n",
       "      <td>4.669989</td>\n",
       "      <td>0.081751</td>\n",
       "      <td>5.424188</td>\n",
       "      <td>4.615466</td>\n",
       "      <td>20</td>\n",
       "      <td>32</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Классическая нейросеть</td>\n",
       "      <td>-0.200336</td>\n",
       "      <td>5.862213</td>\n",
       "      <td>4.926224</td>\n",
       "      <td>-0.192068</td>\n",
       "      <td>6.180237</td>\n",
       "      <td>5.259978</td>\n",
       "      <td>20</td>\n",
       "      <td>32</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                         model   r2_test  rmse_test  mae_test    r2_val  \\\n",
       "0  Нейросеть с эволюцией весов -0.051088   5.485670  4.669989  0.081751   \n",
       "1       Классическая нейросеть -0.200336   5.862213  4.926224 -0.192068   \n",
       "\n",
       "   rmse_val   mae_val  n_original_features  n_processed_features  hidden_dim  \n",
       "0  5.424188  4.615466                   20                    32           8  \n",
       "1  6.180237  5.259978                   20                    32           8  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "baseline_metrics_val = regression_metrics(y_val, baseline_pred_val)\n",
    "baseline_metrics_test = regression_metrics(y_test, baseline_pred_test)\n",
    "\n",
    "ga_metrics_val = regression_metrics(y_val, ga_pred_val)\n",
    "ga_metrics_test = regression_metrics(y_test, ga_pred_test)\n",
    "\n",
    "results_df = pd.DataFrame([\n",
    "    {\n",
    "        \"model\": \"Классическая нейросеть\",\n",
    "        \"r2_test\": baseline_metrics_test[\"r2\"],\n",
    "        \"rmse_test\": baseline_metrics_test[\"rmse\"],\n",
    "        \"mae_test\": baseline_metrics_test[\"mae\"],\n",
    "        \"r2_val\": baseline_metrics_val[\"r2\"],\n",
    "        \"rmse_val\": baseline_metrics_val[\"rmse\"],\n",
    "        \"mae_val\": baseline_metrics_val[\"mae\"],\n",
    "        \"n_original_features\": X.shape[1],\n",
    "        \"n_processed_features\": X_train_proc.shape[1],\n",
    "        \"hidden_dim\": hidden_dim,\n",
    "    },\n",
    "    {\n",
    "        \"model\": \"Нейросеть с эволюцией весов\",\n",
    "        \"r2_test\": ga_metrics_test[\"r2\"],\n",
    "        \"rmse_test\": ga_metrics_test[\"rmse\"],\n",
    "        \"mae_test\": ga_metrics_test[\"mae\"],\n",
    "        \"r2_val\": ga_metrics_val[\"r2\"],\n",
    "        \"rmse_val\": ga_metrics_val[\"rmse\"],\n",
    "        \"mae_val\": ga_metrics_val[\"mae\"],\n",
    "        \"n_original_features\": X.shape[1],\n",
    "        \"n_processed_features\": X_train_proc.shape[1],\n",
    "        \"hidden_dim\": hidden_dim,\n",
    "    },\n",
    "]).sort_values(by=[\"r2_test\", \"rmse_test\"], ascending=[False, True]).reset_index(drop=True)\n",
    "\n",
    "display(results_df)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cebd8456",
   "metadata": {},
   "source": [
    "## 8. Визуализация истории обучения"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "471ef6ad",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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hwEAMhn7WRktS0eg6huAlZPUkRARERHlCyttjVBUfCquhMQCACLjU5CeoZM4IiIiIqKyKTY2FuXKlROXVSoVdu7cCXd3d7Rv3x6RkZESRkevZF0BeOdX4M0VUkdCRERElC9M2hqh2OQ08WedAETEs68tERERkRQ8PDxw5coVg3VKpRLbt2+Hh4cHunfvLlFkRERERFSaMWlrhDKTtiql/u0JY19bIiIiIkl06dIFq1atyrI+M3HboEGD4g+K8i8jHdDx22tERERUcrCnrRHKTNqamSqgTdchJCYZTSSOiYiIiKgs+uqrr5CUlJTtNqVSiR07diAkJKSYo6J8WVofeHofGHcScK4jdTREREREecJKWyMUl6JP2lqp9Tn1sFhORkZEREQkBaVSCTMzM1SpUgU3b97MdnulSpUkiIzyTKbQP2vjpI2DiIiIKB+YtDVCmZW25cxMAbA9AhEREZGUTExMkJJScj9EP378OHr06AFXV1fIZDL89ttvuY7/559/0KpVK9jZ2cHMzAyenp5YvHhx8QRbFNQa/XMKk7ZERERUcjBpa4RS03WQywA7KxUAIJSVtkRERESSev/99zF//nykp6dLHUq+JSYmon79+lixYkWexltYWMDPzw/Hjx/HzZs3MXXqVEydOjXb3r4lgupZ0paVtkRERFSCsKetEZrWvRa+6FoTh26F4+itSITFstKWiIiISErnzp3D4cOHceDAAdStWxcWFhYG23fu3ClRZK/WpUsXdOnSJc/jGzZsiIYNG4rL7u7u2LlzJ06cOIExY8YURYhFS6y0jZU2DiIiIqJ8YNLWSMnlMriV0/8xEBrDSlsiIiIiKdnY2KBv375ShyGJS5cu4dSpU/jyyy9zHKPVaqHVasXluDgjqmpVWeufWWlLREREJQiTtkbM1doMABCdmIqUtAyoTRQSR0RERERUNq1bty5P406ePIkmTZpApVIVcURFr0KFCnj8+DHS09Mxc+ZMjB49Osex/v7+mDVrVjFGlw/saUtEREQlEHvaGqGJPwfgvc0XEJ2ohbmpPlEbxr62REREREavS5cuCAkJkTqMQnHixAmcP38eK1euxJIlS/DTTz/lOHbKlCmIjY0VHw8fPizGSF/BsRZQ9Q3ArorUkRARERHlGSttjdDR25F4mpSGj96oDhdrNe4+TkRYTDIq21u8emciIiIikowgCFKHUGgqV64MAKhbty4iIiIwc+ZMvP3229mOValUxltd3GiI/kFERERUgrDS1sgIgoC4FP2sxNZmJnC10bdICGWlLRERERFJRKfTGfSsJSIiIqKixUpbI5OgTUeGTl+hYW1mIva1DYtJljIsIiIiIiqhEhISEBgYKC4HBQUhICAAtra2qFixIqZMmYKQkBBs3LgRALBixQpUrFgRnp6eAIDjx49j4cKF+OCDDySJv9DodICcNStERERUMjBpa2Rik9MAAKZKOdQmCrjYqAEAobFM2hIRERFR/p0/fx7t27cXlydOnAgAGDZsGNavX4+wsDAEBweL23U6HaZMmYKgoCAolUpUqVIF8+fPx9ixY4s99kJx/ySwpR9Qzh343ympoyEiIiLKEyZtjUxm0tbazAQAxErb0Bi2RyAiIiIydjKZTOoQsvD29s611+769esNlsePH4/x48cXcVTFSKkG0hKBlFipIyEiIiLKM34/yMi8nLTNrLQNY6UtERERkdErTRORlRpqjf5ZGydtHERERET5wEpbI5OkzYBcBmjU+rfGRexpy0pbIiIiImMXHx8vdQj0MlVm0jaefW2JiIioxGDS1sj41HLC3bldoU3XAQBcn1XaxmvTEZeSBo3aRMrwiIiIiMqMhg0b5rndwcWLF4s4GiqwzEpbCEBqPKC2ljQcIiIiorxg0tYIyWQyqE0UAABzUyVszE0Qk5SGsJgUaJyZtCUiIiIqDr169ZI6BCoMSjUgNwF0aUBKHJO2REREVCIwaVsCuFibISYpDaGxyajhbCV1OERERERlwowZM6QOgQqDTKavtk16wr62REREVGKwoZORWX8yCO9tvoAD18PFda7WzyYjY19bIiIiIqL8c28DVH0DUJhKHQkRERFRnrDS1shcDI7BX9fC0bhSOXGdy7O+tmGxyVKFRURERFSmZWRkYPHixfjll18QHByM1NRUg+3R0dESRUZ50n+D1BEQERER5YtRVNquWLEC7u7uUKvV8PLywtmzZ3Mc6+3tDZlMluXRrVu3Yoy46MQmpwEArM2e9651sTYDAISy0paIiIhIErNmzcKiRYswYMAAxMbGYuLEiejTpw/kcjlmzpwpdXhEREREVMpInrT9+eefMXHiRMyYMQMXL15E/fr10blzZ0RGRmY7fufOnQgLCxMf165dg0KhQL9+/Yo58qKRmbTV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Wc6nK/e0yDVFRERERE4I8YOg0wiwBfk6EhERERHfJm0//PBDpk+fziOPPMKqVasYMGAA48aNIzc3t97xFRUVnHXWWezcuZNPPvmELVu28Prrr5OQkNDCkTeNglJjYYtQ/5bpL2u3WrjxD10AeGXhdqpc7ha5roiIiIiIiIiIiDScT5O2zz77LDfccANTp06lT58+vPLKKwQGBvLmm2/WO/7NN98kLy+PL774ghEjRtCpUydGjhzJgAEDWjjypuGsTto6Avxa7JqXD0siPMjG7rwSvl6b1WLXFRERERFp9bb/CN/dazyKiIiI+JDPkrYVFRWsXLmSMWPG1AZjNjNmzBiWLFlS72u++uorUlJSmDZtGjExMfTr148nn3wSl+vw/VnLy8txOp3erbCwsMnfy7HyJm0DWy5pG2izct1pnQF4ef423G5Pi11bRERERKRV2/IdLH0FfvvB15GIiIhIO+ezpO2+fftwuVzExMTUOR4TE0N2dna9r9mxYweffPIJLpeLb7/9loceeohnnnmGv/71r4e9zowZM3A4HN6tT58+Tfo+jpXH4/G2R2jJSluAq1I6EmK3sjW3iB825rTotUVEREREWq2EocbjnhW+jUNERETaPZ8vRNYYbreb6OhoXnvtNYYMGcJll13GAw88wCuvvHLY19x///0UFBR4t40bN7ZgxIdXUuGiqrrKtaWTtqH+fkw5tSMA/1qwDY9H1bYiIiIiIiRWJ22z1kJVuW9jERERkXbNZ0nbyMhILBYLOTl1Kz1zcnKIjY2t9zVxcXH06NEDi8XiPda7d2+ys7OpqKio9zV2u53Q0FDvFhIS0nRv4jjUVNn6WUwE+FmOMrrpXTuiM/5+ZtZmFPDz1n0tfn0RERERkVYnvAsEhIOrHLLX+zoaERERacd8lrS12WwMGTKEefPmeY+53W7mzZtHSkpKva8ZMWIE27Ztw+12e4/99ttvxMXFYbPZmj3mphQdYmfRvaP4722nYTKZWvz6EcF2rhiWDBi9bUVERERETjTbcot4/OuNvLkorWkmNJlqq23VIkFERER8yKftEaZPn87rr7/O22+/zaZNm7j55pspLi5m6tSpAEyZMoX777/fO/7mm28mLy+PO+64g99++41vvvmGJ598kmnTpvnqLRwzq8VMYodAesWG+iyGG//QBT+LiaVpeazYmeezOERERERE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yERERESkjo0bN5KQkOB9brfb6x131113cc011xxxri5duhAbG0tubm6d41VVVeTl5REbG3vE19ckjrt3784pp5xChw4d+Pzzz7niiiuIjY1l2bJldcbn5OQAeOeNjY31Hjt4TGhoKAEBAUe8toiIiIiIryhpKyIiIiJ1hISENGjxqKioKKKioo46LiUlhfz8fFauXMmQIUMA+PHHH3G73QwfPrzBcXk8Hjwej7ddQ0pKCk888QS5ubne9gtz584lNDSUPn36eMd8++23deaZO3cuKSkpDb6uiIiIiEhLU3sEEREREWlWvXv3Zvz48dxwww0sW7aMX375hVtvvZXLL7+c+Ph4APbs2UOvXr28lbM7duxgxowZrFy5kt27d7N48WIuueQSAgICmDBhAgBjx46lT58+XHXVVaxZs4bvv/+eBx98kGnTpnmrg2+66SZ27NjBPffcw+bNm/nXv/7FRx99xJ///Gff/DBERERERBpASVsRERERaXbvvfcevXr1YvTo0UyYMIHTTjuN1157zXu+srKSLVu2UFJSAoC/vz8///wzEyZMoFu3blx22WWEhISwePFib1WtxWLh66+/xmKxkJKSwuTJk5kyZQp/+ctfvPN27tyZb775hrlz5zJgwACeeeYZZs6cybhx41r2ByAiIiIi0ggmj8fj8XUQLSkjI4OkpCTS09NJTEz0dTgiIiIirYbuk6SpOJ1OHA4HBQUFDWq1ISIiItJeNPQ+SZW2IiIiIiIiIiIiIq1Iu1uIzO12A5CVleXjSERERERal5r7o5r7JZFjVfNlPqfT6eNIRERERFqXmvujozU/aHdJ25ycHACGDRvm40hEREREWqecnBySk5N9HYacwAoLCwFISkrycSQiIiIirVNhYSEOh+Ow59tdT9uqqipWr15NTEwMxcXF9OnTh40bNxISEuLr0KQZFBYW6jNu4/QZt336jNs+fcath9vtJicnh0GDBmG1trt/25cm5Ha7yczMJCQkBJPJ1KjXOp1Ob29l9cNtm/QZt336jNs+fcZtnz7j5uPxeCgsLCQ+Ph6z+fCda9vd3bjVauXkk08GasuRExIS9B9gG6XPuO3TZ9z26TNu+/QZty6qsJWmYDabj3sxu9DQUP0/oY3TZ9z26TNu+/QZt336jJvHkSpsa2ghMhEREREREREREZFWRElbERERERERERERkVakXSdt7XY7jzzyCHa73dehSDPRZ9z26TNu+/QZt336jEXkYPp/Qtunz7jt02fc9ukzbvv0Gfteu1uITERERERERERERKQ1a9eVtiIiIiIiIiIiIiKtjZK2IiIiIiIiIiIiIq2IkrYiIiIiIiIiIiIirUi7Tdq+/PLLdOrUCX9/f4YPH86yZct8HZI0kUcffRSTyVRn69Wrl6/DkuP0008/cc455xAfH4/JZOKLL76oc97j8fDwww8TFxdHQEAAY8aMYevWrb4JVo7J0T7ja6655pDf7fHjx/smWGm0GTNmcPLJJxMSEkJ0dDTnn38+W7ZsqTOmrKyMadOmERERQXBwMBdddBE5OTk+ilhEfEH36G2H7t3aPv3Z3vb9+9//pn///oSGhhIaGkpKSgrfffed97w+37bnb3/7GyaTiTvvvNN7TJ+z77TLpO2HH37I9OnTeeSRR1i1ahUDBgxg3Lhx5Obm+jo0aSJ9+/YlKyvLuy1atMjXIclxKi4uZsCAAbz88sv1nv/HP/7BCy+8wCuvvMLSpUsJCgpi3LhxlJWVtXCkcqyO9hkDjB8/vs7v9gcffNCCEcrxWLhwIdOmTePXX39l7ty5VFZWMnbsWIqLi71j/vznP/Pf//6Xjz/+mIULF5KZmcmFF17ow6hFpCXpHr1t0b1b26c/29u+xMRE/va3v7Fy5UpWrFjBmWeeyXnnnceGDRsAfb5tzfLly3n11Vfp379/neP6nH3I0w4NGzbMM23aNO9zl8vliY+P98yYMcOHUUlTeeSRRzwDBgzwdRjSjADP559/7n3udrs9sbGxnqeeesp7LD8/32O32z0ffPCBDyKU4/X7z9jj8Xiuvvpqz3nnneeTeKTp5ebmegDPwoULPR6P8Tvr5+fn+fjjj71jNm3a5AE8S5Ys8VWYItKCdI/edunerX3Qn+3tQ4cOHTwzZ87U59vGFBYWerp37+6ZO3euZ+TIkZ477rjD4/Ho99jX2l2lbUVFBStXrmTMmDHeY2azmTFjxrBkyRIfRiZNaevWrcTHx9OlSxcmTZrE7t27fR2SNKO0tDSys7Pr/F47HA6GDx+u3+s2ZsGCBURHR9OzZ09uvvlm9u/f7+uQ5BgVFBQAEB4eDsDKlSuprKys83vcq1cvkpOT9Xss0g7oHr190b1b26Q/29s2l8vF7NmzKS4uJiUlRZ9vGzNt2jQmTpxY5/ME/R77mtXXAbS0ffv24XK5iImJqXM8JiaGzZs3+ygqaUrDhw9n1qxZ9OzZk6ysLB577DFOP/101q9fT0hIiK/Dk2aQnZ0NUO/vdc05OfGNHz+eCy+8kM6dO7N9+3b+3//7f5x99tksWbIEi8Xi6/CkEdxuN3feeScjRoygX79+gPF7bLPZCAsLqzNWv8ci7YPu0dsX3bu1Pfqzve1at24dKSkplJWVERwczOeff06fPn1ITU3V59tGzJ49m1WrVrF8+fJDzun32LfaXdJW2r6zzz7bu9+/f3+GDx9Ox44d+eijj7juuut8GJmIHI/LL7/cu3/SSSfRv39/unbtyoIFCxg9erQPI5PGmjZtGuvXr1e/cRERkTZCf7a3XT179iQ1NZWCggI++eQTrr76ahYuXOjrsKSJpKenc8cddzB37lz8/f19HY78TrtrjxAZGYnFYjlkpbucnBxiY2N9FJU0p7CwMHr06MG2bdt8HYo0k5rfXf1ety9dunQhMjJSv9snmFtvvZWvv/6a+fPnk5iY6D0eGxtLRUUF+fn5dcbr91ikfdA9evuie7e2RX+2t202m41u3boxZMgQZsyYwYABA3j++ef1+bYRK1euJDc3l8GDB2O1WrFarSxcuJAXXngBq9VKTEyMPmcfandJW5vNxpAhQ5g3b573mNvtZt68eaSkpPgwMmkuRUVFbN++nbi4OF+HIs2kc+fOxMbG1vm9djqdLF26VL/XbVhGRgb79+/X7/YJwuPxcOutt/L555/z448/0rlz5zrnhwwZgp+fX53f4y1btrB79279Hou0A7pHb19079Y26M/29sntdlNeXq7Pt40YPXo069atIzU11bsNHTqUSZMmeff1OftOu2yPMH36dK6++mqGDh3KsGHDeO655yguLmbq1Km+Dk2awN13380555xDx44dyczM5JFHHsFisXDFFVf4OjQ5DkVFRXUqKtPS0khNTSU8PJzk5GTuvPNO/vrXv9K9e3c6d+7MQw89RHx8POeff77vgpZGOdJnHB4ezmOPPcZFF11EbGws27dv55577qFbt26MGzfOh1FLQ02bNo3333+fL7/8kpCQEG8PLIfDQUBAAA6Hg+uuu47p06cTHh5OaGgot912GykpKZxyyik+jl5EWoLu0dsW3bu1ffqzve27//77Ofvss0lOTqawsJD3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mDp1KgCLFy+mY8eOPPDAA97xv2/ZICIiIiLSmvTu3ZtffvmlzrFffvmFHj161Eme3nfffVx88cUkJyfzhz/8gQsvvJCTTz65wXO43W5WrVrFtGnT6o1j0KBBuFwucnNzOf300w8br9lsplu3bt7nh1vj4t///jfBwcFcddVVh5wbPHgwH374IdHR0fpWnIg0mBYiExFphN27dzNw4EDeeOMNtm3bxo4dO3jnnXc477zzOP3007nzzjsbNE/37t0577zzuOGGG1i0aBFr1qxh8uTJJCQkeL/qtXr1ah5++GFmzpzJiBEjePbZZ7njjjvYsWOHd47du3cze/Zstm/fzgsvvMDnn3/eXG9dREREROS43XXXXcybN4/HH3+c3377jbfffpuXXnqJu+++u8648PBwAIYNG8add97J1KlTvYt2HW2O9PR0brjhBnJzc7nsssvqjaNHjx5MmjSJKVOm8Nlnn5GWlsayZcuYMWMG33zzTaPf1z/+8Q+eeeYZb8/ag02aNInIyEjOO+88fv75Z9LS0liwYAG33347GRkZjb6WiLQPStqKiDRCv379eOSRR5g1axannHIKffv25R//+Ae33norP/zwQ53Fxo7mrbfeYsiQIfzxj38kJSUFj8fDt99+i5+fH2VlZUyePJlrrrmGc845B4Abb7yRUaNGcdVVV+FyuTj33HP585//zK233srAgQNZvHhxnd5ZIiIiIiKtzeDBg/noo4+YPXs2/fr14+GHH+Yvf/nLIYuQHeyxxx7D7Xbz6KOPNmiO559/nm3btvHDDz+QnJx82HnfeustpkyZwl133UXPnj05//zzWb58+RFfczijRo1i1KhR9Z4LDAzkp59+Ijk5mQsvvJDevXtz3XXXUVZWpspbETksk+dIXbRFREREREREREREpEWp0lZERERERERERESkFVHSVkRERERERERERKQVUdJWREREREREREREpBVR0lZERERERERERESkFVHSVkRERERERERERKQVUdJWREREREREREREpBVR0lZERERERERERESkFVHSVkRERERERERERKQVUdJWREREREREREREpBVR0lZERERERERERESkFVHSVkRERERERERERKQVUdJWREREREREREREpBX5/waWBxfXeHrXAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1400x500 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(1, 2, figsize=(14, 5))\n",
    "\n",
    "axes[0].plot(baseline_history[\"epoch\"], baseline_history[\"train_loss\"], label=\"train_loss\")\n",
    "if \"internal_val_r2\" in baseline_history.columns:\n",
    "    ax2 = axes[0].twinx()\n",
    "    ax2.plot(baseline_history[\"epoch\"], baseline_history[\"internal_val_r2\"], label=\"internal_val_r2\", linestyle=\"--\")\n",
    "    ax2.set_ylabel(\"internal_val_r2\")\n",
    "axes[0].set_title(\"Классическая нейросеть\")\n",
    "axes[0].set_xlabel(\"Эпоха\")\n",
    "axes[0].set_ylabel(\"Loss\")\n",
    "\n",
    "axes[1].plot(ga_history[\"generation\"], ga_history[\"best_val_mse\"], label=\"best_val_mse\")\n",
    "axes[1].plot(ga_history[\"generation\"], ga_history[\"mean_val_mse\"], label=\"mean_val_mse\", linestyle=\"--\")\n",
    "axes[1].set_title(\"Эволюция весов\")\n",
    "axes[1].set_xlabel(\"Поколение\")\n",
    "axes[1].set_ylabel(\"MSE\")\n",
    "axes[1].legend()\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "745eb3d4",
   "metadata": {},
   "source": [
    "## 9. Финальная ячейка с ключевой информацией для вывода\n",
    "\n",
    "Ниже печатаются все данные, достаточные для корректного итогового вывода по реальным результатам."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "74dd6643",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=== КЛЮЧЕВАЯ ИНФОРМАЦИЯ ДЛЯ ВЫВОДА ===\n",
      "Зависимая переменная: depression_score\n",
      "\n",
      "Число исходных признаков: 20\n",
      "Число признаков после кодирования: 32\n",
      "Архитектура обеих моделей: один скрытый слой, hidden_dim = 8\n",
      "\n",
      "Метрики моделей на тестовой выборке:\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>model</th>\n",
       "      <th>r2_test</th>\n",
       "      <th>rmse_test</th>\n",
       "      <th>mae_test</th>\n",
       "      <th>r2_val</th>\n",
       "      <th>rmse_val</th>\n",
       "      <th>mae_val</th>\n",
       "      <th>n_original_features</th>\n",
       "      <th>n_processed_features</th>\n",
       "      <th>hidden_dim</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Нейросеть с эволюцией весов</td>\n",
       "      <td>-0.051088</td>\n",
       "      <td>5.485670</td>\n",
       "      <td>4.669989</td>\n",
       "      <td>0.081751</td>\n",
       "      <td>5.424188</td>\n",
       "      <td>4.615466</td>\n",
       "      <td>20</td>\n",
       "      <td>32</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Классическая нейросеть</td>\n",
       "      <td>-0.200336</td>\n",
       "      <td>5.862213</td>\n",
       "      <td>4.926224</td>\n",
       "      <td>-0.192068</td>\n",
       "      <td>6.180237</td>\n",
       "      <td>5.259978</td>\n",
       "      <td>20</td>\n",
       "      <td>32</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                         model   r2_test  rmse_test  mae_test    r2_val  \\\n",
       "0  Нейросеть с эволюцией весов -0.051088   5.485670  4.669989  0.081751   \n",
       "1       Классическая нейросеть -0.200336   5.862213  4.926224 -0.192068   \n",
       "\n",
       "   rmse_val   mae_val  n_original_features  n_processed_features  hidden_dim  \n",
       "0  5.424188  4.615466                   20                    32           8  \n",
       "1  6.180237  5.259978                   20                    32           8  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Лучшая модель:\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>model</th>\n",
       "      <th>r2_test</th>\n",
       "      <th>rmse_test</th>\n",
       "      <th>mae_test</th>\n",
       "      <th>r2_val</th>\n",
       "      <th>rmse_val</th>\n",
       "      <th>mae_val</th>\n",
       "      <th>n_original_features</th>\n",
       "      <th>n_processed_features</th>\n",
       "      <th>hidden_dim</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Нейросеть с эволюцией весов</td>\n",
       "      <td>-0.051088</td>\n",
       "      <td>5.48567</td>\n",
       "      <td>4.669989</td>\n",
       "      <td>0.081751</td>\n",
       "      <td>5.424188</td>\n",
       "      <td>4.615466</td>\n",
       "      <td>20</td>\n",
       "      <td>32</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                         model   r2_test  rmse_test  mae_test    r2_val  \\\n",
       "0  Нейросеть с эволюцией весов -0.051088    5.48567  4.669989  0.081751   \n",
       "\n",
       "   rmse_val   mae_val  n_original_features  n_processed_features  hidden_dim  \n",
       "0  5.424188  4.615466                   20                    32           8  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Последние эпохи обучения классической нейросети:\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>internal_val_r2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>19</td>\n",
       "      <td>0.443408</td>\n",
       "      <td>-0.139546</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>20</td>\n",
       "      <td>0.441419</td>\n",
       "      <td>-0.139293</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>21</td>\n",
       "      <td>0.438660</td>\n",
       "      <td>-0.140623</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>22</td>\n",
       "      <td>0.437019</td>\n",
       "      <td>-0.145204</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>23</td>\n",
       "      <td>0.434403</td>\n",
       "      <td>-0.150929</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    epoch  train_loss  internal_val_r2\n",
       "18     19    0.443408        -0.139546\n",
       "19     20    0.441419        -0.139293\n",
       "20     21    0.438660        -0.140623\n",
       "21     22    0.437019        -0.145204\n",
       "22     23    0.434403        -0.150929"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Последние поколения эволюционной нейросети:\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>generation</th>\n",
       "      <th>best_train_mse</th>\n",
       "      <th>best_val_mse</th>\n",
       "      <th>mean_val_mse</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>41</td>\n",
       "      <td>1.022187</td>\n",
       "      <td>0.908786</td>\n",
       "      <td>0.914387</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>42</td>\n",
       "      <td>1.022187</td>\n",
       "      <td>0.908786</td>\n",
       "      <td>0.911603</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>43</td>\n",
       "      <td>1.015362</td>\n",
       "      <td>0.910657</td>\n",
       "      <td>0.913201</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>44</td>\n",
       "      <td>1.024683</td>\n",
       "      <td>0.904279</td>\n",
       "      <td>0.912303</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>45</td>\n",
       "      <td>1.022092</td>\n",
       "      <td>0.904854</td>\n",
       "      <td>0.912798</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    generation  best_train_mse  best_val_mse  mean_val_mse\n",
       "40          41        1.022187      0.908786      0.914387\n",
       "41          42        1.022187      0.908786      0.911603\n",
       "42          43        1.015362      0.910657      0.913201\n",
       "43          44        1.024683      0.904279      0.912303\n",
       "44          45        1.022092      0.904854      0.912798"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Первые 10 фактических и предсказанных значений на тесте для классической нейросети:\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>y_true</th>\n",
       "      <th>y_pred_baseline</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>16.0</td>\n",
       "      <td>7.021719</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>17.0</td>\n",
       "      <td>7.601334</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>8.291664</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>20.0</td>\n",
       "      <td>7.948137</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>9.0</td>\n",
       "      <td>11.095712</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>8.0</td>\n",
       "      <td>8.723350</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>4.0</td>\n",
       "      <td>13.524598</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>6.0</td>\n",
       "      <td>8.556482</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>10.0</td>\n",
       "      <td>14.762222</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>12.0</td>\n",
       "      <td>10.204337</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   y_true  y_pred_baseline\n",
       "0    16.0         7.021719\n",
       "1    17.0         7.601334\n",
       "2     1.0         8.291664\n",
       "3    20.0         7.948137\n",
       "4     9.0        11.095712\n",
       "5     8.0         8.723350\n",
       "6     4.0        13.524598\n",
       "7     6.0         8.556482\n",
       "8    10.0        14.762222\n",
       "9    12.0        10.204337"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Первые 10 фактических и предсказанных значений на тесте для эволюционной нейросети:\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>y_true</th>\n",
       "      <th>y_pred_evolution</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>16.0</td>\n",
       "      <td>10.958071</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>17.0</td>\n",
       "      <td>10.376983</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>10.510197</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>20.0</td>\n",
       "      <td>10.529310</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>9.0</td>\n",
       "      <td>8.517944</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>8.0</td>\n",
       "      <td>10.199173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>4.0</td>\n",
       "      <td>10.684324</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>6.0</td>\n",
       "      <td>10.408346</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>10.0</td>\n",
       "      <td>8.274663</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>12.0</td>\n",
       "      <td>11.599403</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   y_true  y_pred_evolution\n",
       "0    16.0         10.958071\n",
       "1    17.0         10.376983\n",
       "2     1.0         10.510197\n",
       "3    20.0         10.529310\n",
       "4     9.0          8.517944\n",
       "5     8.0         10.199173\n",
       "6     4.0         10.684324\n",
       "7     6.0         10.408346\n",
       "8    10.0          8.274663\n",
       "9    12.0         11.599403"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "best_model_row = results_df.iloc[0].copy()\n",
    "\n",
    "print(\"=== КЛЮЧЕВАЯ ИНФОРМАЦИЯ ДЛЯ ВЫВОДА ===\")\n",
    "print(f\"Зависимая переменная: {target_col}\")\n",
    "print()\n",
    "print(f\"Число исходных признаков: {X.shape[1]}\")\n",
    "print(f\"Число признаков после кодирования: {X_train_proc.shape[1]}\")\n",
    "print(f\"Архитектура обеих моделей: один скрытый слой, hidden_dim = {hidden_dim}\")\n",
    "print()\n",
    "\n",
    "print(\"Метрики моделей на тестовой выборке:\")\n",
    "display(results_df[[\n",
    "    \"model\", \"r2_test\", \"rmse_test\", \"mae_test\",\n",
    "    \"r2_val\", \"rmse_val\", \"mae_val\",\n",
    "    \"n_original_features\", \"n_processed_features\", \"hidden_dim\"\n",
    "]])\n",
    "\n",
    "print(\"Лучшая модель:\")\n",
    "display(pd.DataFrame([best_model_row]))\n",
    "\n",
    "print(\"Последние эпохи обучения классической нейросети:\")\n",
    "display(baseline_history.tail())\n",
    "\n",
    "print(\"Последние поколения эволюционной нейросети:\")\n",
    "display(ga_history.tail())\n",
    "\n",
    "print(\"Первые 10 фактических и предсказанных значений на тесте для классической нейросети:\")\n",
    "display(pd.DataFrame({\n",
    "    \"y_true\": np.asarray(y_test)[:10],\n",
    "    \"y_pred_baseline\": baseline_pred_test[:10]\n",
    "}))\n",
    "\n",
    "print(\"Первые 10 фактических и предсказанных значений на тесте для эволюционной нейросети:\")\n",
    "display(pd.DataFrame({\n",
    "    \"y_true\": np.asarray(y_test)[:10],\n",
    "    \"y_pred_evolution\": ga_pred_test[:10]\n",
    "}))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "819b0d8e",
   "metadata": {},
   "source": [
    "Итог\n",
    "\n",
    "Зависимой переменной выбрана depression_score. Сравнивались две модели одной архитектуры (1 скрытый слой, hidden_dim = 8): классическая нейросеть и нейросеть с эволюцией весов.\n",
    "\n",
    "На тестовой выборке лучшей оказалась эволюционная нейросеть: R² = -0.051, RMSE ≈ 5.49, MAE ≈ 4.67, тогда как классическая модель показала более слабый результат (R² = -0.200, RMSE ≈ 5.86, MAE ≈ 4.93).\n",
    "\n",
    "Следовательно, метод весовой эволюции оказался не такой плохой как классического обучения, но обе модели абсолютная фигня. Даже после множества изменений не получилоась сделать нормальную модель... \n",
    "\n",
    "-_-"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
