{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "cdc62e56",
   "metadata": {},
   "source": [
    "# Регрессия нейросетью и объяснение вкладов признаков\n",
    "\n",
    "В работе автоматически выбирается ключевая зависимая переменная, строится нейросетевая регрессионная модель и применяются методы объяснения важности признаков:\n",
    "- перестановочная важность;\n",
    "- весовая важность по обученной нейросети.\n",
    "\n",
    "Финального текстового вывода в ноутбуке нет. В конце выводится сводка метрик и таблицы, по которым можно написать итог."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d92fed4e",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import re\n",
    "import warnings\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.inspection import permutation_importance\n",
    "from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error\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",
    "pd.set_option(\"display.max_columns\", 200)\n",
    "pd.set_option(\"display.width\", 200)\n",
    "\n",
    "RANDOM_STATE = 42"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "31dc91ff",
   "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>Family_History_Mental_Illness</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>0</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>0</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>0</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>1</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>0</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",
       "</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  Family_History_Mental_Illness  \\\n",
       "0                 2             9                              0   \n",
       "1                 7             6                              0   \n",
       "2                13             8                              0   \n",
       "3                 3             4                              1   \n",
       "4                15             3                              0   \n",
       "\n",
       "   Chronic_Illnesses Medication_Use  Therapy  Meditation Substance_Use  \\\n",
       "0                  0            NaN        0           1           NaN   \n",
       "1                  0            NaN        1           0           NaN   \n",
       "2                  0            NaN        0           1           NaN   \n",
       "3                  1            NaN        0           0           NaN   \n",
       "4                  0            NaN        1           1      Frequent   \n",
       "\n",
       "   Financial_Stress  Work_Stress  Self_Esteem_Score  Life_Satisfaction_Score  \\\n",
       "0                 4            3                  7                        5   \n",
       "1                 1            4                  7                        4   \n",
       "2                 8            7                  8                        1   \n",
       "3                 7            4                  8                        4   \n",
       "4                 8            9                  5                        7   \n",
       "\n",
       "   Loneliness_Score  \n",
       "0                 1  \n",
       "1                 6  \n",
       "2                 1  \n",
       "3                 4  \n",
       "4                 7  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "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": [
      "\n",
      "Типы данных:\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "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\n",
       "dtype: object"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def find_csv_file(candidates=None):\n",
    "    if candidates is None:\n",
    "        candidates = [\n",
    "            \"anxiety_depression_data.csv\",\n",
    "            \"anxiety and depression mental health factors.csv\",\n",
    "            \"Anxiety and Depression Mental Health Factors.csv\",\n",
    "            \"mental_health.csv\",\n",
    "        ]\n",
    "    search_dirs = [\n",
    "        \".\",\n",
    "        \"/mnt/data\",\n",
    "        os.getcwd(),\n",
    "    ]\n",
    "    for d in search_dirs:\n",
    "        if not os.path.isdir(d):\n",
    "            continue\n",
    "        for name in candidates:\n",
    "            path = os.path.join(d, name)\n",
    "            if os.path.exists(path):\n",
    "                return path\n",
    "    # запасной вариант: ищем любой csv с нужными ключевыми словами\n",
    "    for d in search_dirs:\n",
    "        if not os.path.isdir(d):\n",
    "            continue\n",
    "        for name in os.listdir(d):\n",
    "            low = name.lower()\n",
    "            if low.endswith(\".csv\") and (\"anxiety\" in low or \"depression\" in low or \"mental\" in low):\n",
    "                return os.path.join(d, name)\n",
    "    raise FileNotFoundError(\"CSV-файл не найден. Поместите anxiety_depression_data.csv рядом с ноутбуком.\")\n",
    "\n",
    "def normalize_column_name(col):\n",
    "    col = str(col).strip()\n",
    "    col = re.sub(r\"[^0-9a-zA-Zа-яА-Я_]+\", \"_\", col)\n",
    "    col = re.sub(r\"_+\", \"_\", col).strip(\"_\").lower()\n",
    "    return col\n",
    "\n",
    "csv_path = find_csv_file()\n",
    "df_raw = pd.read_csv(csv_path)\n",
    "\n",
    "original_cols = list(df_raw.columns)\n",
    "normalized_cols = [normalize_column_name(c) for c in original_cols]\n",
    "\n",
    "rename_map = dict(zip(original_cols, normalized_cols))\n",
    "df = df_raw.rename(columns=rename_map).copy()\n",
    "\n",
    "print(\"Используемый файл:\", csv_path)\n",
    "print(\"Форма датасета:\", df.shape)\n",
    "display(df_raw.head())\n",
    "display(pd.DataFrame({\"original_name\": original_cols, \"normalized_name\": normalized_cols}))\n",
    "print(\"\\nТипы данных:\")\n",
    "display(df.dtypes.astype(str))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "6efb292f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Выбранная зависимая переменная: depression_score\n",
      "Найденные идентификаторы / несодержательные поля: []\n",
      "Количество исходных признаков: 20\n",
      "Числовые признаки: ['age', 'sleep_hours', 'physical_activity_hrs', 'social_support_score', 'anxiety_score', 'stress_level', 'family_history_mental_illness', 'chronic_illnesses', 'therapy', 'meditation', 'financial_stress', 'work_stress', 'self_esteem_score', 'life_satisfaction_score', 'loneliness_score']\n",
      "Категориальные признаки: ['gender', 'education_level', 'employment_status', 'medication_use', 'substance_use']\n",
      "\n",
      "Описательные статистики целевой переменной:\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "count    1200.000000\n",
       "mean       10.674167\n",
       "std         5.632889\n",
       "min         1.000000\n",
       "25%         6.000000\n",
       "50%        11.000000\n",
       "75%        15.000000\n",
       "max        20.000000\n",
       "Name: depression_score, dtype: float64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def choose_target_column(df_):\n",
    "    cols = list(df_.columns)\n",
    "\n",
    "    # Приоритетные целевые переменные по смыслу задачи\n",
    "    priority = [\n",
    "        \"depression_score\",\n",
    "        \"anxiety_score\",\n",
    "        \"stress_level\",\n",
    "        \"life_satisfaction_score\",\n",
    "        \"self_esteem_score\",\n",
    "        \"loneliness_score\",\n",
    "    ]\n",
    "    for col in priority:\n",
    "        if col in cols and pd.api.types.is_numeric_dtype(df_[col]):\n",
    "            return col\n",
    "\n",
    "    # Далее — любая числовая колонка со score/level/satisfaction/loneliness\n",
    "    semantic_candidates = []\n",
    "    for col in cols:\n",
    "        if pd.api.types.is_numeric_dtype(df_[col]):\n",
    "            if any(token in col for token in [\"score\", \"level\", \"stress\", \"satisfaction\", \"loneliness\"]):\n",
    "                semantic_candidates.append(col)\n",
    "    if semantic_candidates:\n",
    "        return semantic_candidates[0]\n",
    "\n",
    "    # Запасной вариант — последняя числовая колонка\n",
    "    numeric_cols = df_.select_dtypes(include=[np.number]).columns.tolist()\n",
    "    if numeric_cols:\n",
    "        return numeric_cols[-1]\n",
    "\n",
    "    raise ValueError(\"Не удалось автоматически определить зависимую переменную.\")\n",
    "\n",
    "target_col = choose_target_column(df)\n",
    "\n",
    "# Явные идентификаторы и несодержательные поля\n",
    "id_like = [c for c in df.columns if c.endswith(\"_id\") or c in {\"id\", \"patient_id\"}]\n",
    "\n",
    "feature_cols = [c for c in df.columns if c not in id_like + [target_col]]\n",
    "\n",
    "X = df[feature_cols].copy()\n",
    "y = pd.to_numeric(df[target_col], errors=\"coerce\").astype(float)\n",
    "\n",
    "mask = y.notna()\n",
    "X = X.loc[mask].reset_index(drop=True)\n",
    "y = y.loc[mask].reset_index(drop=True)\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(\"Выбранная зависимая переменная:\", target_col)\n",
    "print(\"Найденные идентификаторы / несодержательные поля:\", id_like)\n",
    "print(\"Количество исходных признаков:\", len(feature_cols))\n",
    "print(\"Числовые признаки:\", numeric_features)\n",
    "print(\"Категориальные признаки:\", categorical_features)\n",
    "print(\"\\nОписательные статистики целевой переменной:\")\n",
    "display(y.describe())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "ed77b295",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Размер обучающей выборки: (768, 20)\n",
      "Размер валидационной выборки: (192, 20)\n",
      "Размер тестовой выборки: (240, 20)\n",
      "Размерность после кодирования: 32\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",
    "try:\n",
    "    ohe = OneHotEncoder(handle_unknown=\"ignore\", sparse_output=False)\n",
    "except TypeError:\n",
    "    ohe = 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\", ohe)\n",
    "])\n",
    "\n",
    "preprocessor = ColumnTransformer([\n",
    "    (\"num\", numeric_transformer, numeric_features),\n",
    "    (\"cat\", categorical_transformer, categorical_features)\n",
    "])\n",
    "\n",
    "regressor = MLPRegressor(\n",
    "    hidden_layer_sizes=(64, 32),\n",
    "    activation=\"relu\",\n",
    "    solver=\"adam\",\n",
    "    alpha=1e-3,\n",
    "    learning_rate_init=1e-3,\n",
    "    batch_size=32,\n",
    "    max_iter=500,\n",
    "    early_stopping=True,\n",
    "    validation_fraction=0.15,\n",
    "    n_iter_no_change=25,\n",
    "    random_state=RANDOM_STATE\n",
    ")\n",
    "\n",
    "model = Pipeline([\n",
    "    (\"preprocessor\", preprocessor),\n",
    "    (\"regressor\", regressor)\n",
    "])\n",
    "\n",
    "model.fit(X_train, y_train)\n",
    "\n",
    "X_train_processed = model.named_steps[\"preprocessor\"].transform(X_train)\n",
    "X_val_processed = model.named_steps[\"preprocessor\"].transform(X_val)\n",
    "X_test_processed = model.named_steps[\"preprocessor\"].transform(X_test)\n",
    "\n",
    "print(\"Размер обучающей выборки:\", X_train.shape)\n",
    "print(\"Размер валидационной выборки:\", X_val.shape)\n",
    "print(\"Размер тестовой выборки:\", X_test.shape)\n",
    "print(\"Размерность после кодирования:\", X_train_processed.shape[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "fe20e4c0",
   "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>split</th>\n",
       "      <th>r2</th>\n",
       "      <th>rmse</th>\n",
       "      <th>mae</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>train</td>\n",
       "      <td>-0.011625</td>\n",
       "      <td>5.737110</td>\n",
       "      <td>4.905400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>validation</td>\n",
       "      <td>-0.088167</td>\n",
       "      <td>5.904761</td>\n",
       "      <td>5.049380</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>test</td>\n",
       "      <td>-0.046700</td>\n",
       "      <td>5.474208</td>\n",
       "      <td>4.622321</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        split        r2      rmse       mae\n",
       "0       train -0.011625  5.737110  4.905400\n",
       "1  validation -0.088167  5.904761  5.049380\n",
       "2        test -0.046700  5.474208  4.622321"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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vfZavY9/44038L///Q/vv/8+0tPTMWDAgCa97g033ICff/7ZbcSxvLwc8+fPR4cOHdC9e3ftOIfDgTfffNPt8a4RwhEjRrhtv/fee3H69Gn8+c9/RllZWYNBLzIyEoMHD0Z6ejrS09PRpk0bt/233347jhw5Uu8Z/5WVlSgvL2/S+6zP0qVL8csvvzR6Rj4AbNmyBdOmTcOsWbNw2223IT09vcX/TH2+7zMrKwufffYZZs2adc6g+95777ldVevjjz/GsWPHMHz4cADO6RDR0dGYN2+e29JbX3/9NX7//Xfts7VYLBg8eDD+85//IC8vz+01XN9TvV6P0aNH45NPPqk34J44caLRWhvz5JNPYsCAAbj55pub/RxE/oAjrkR+IDQ0FG+88QZGjRqFV199FU888YS2Lz4+Hi+99BIOHDiAyy67DB9++CFycnIwf/78On+iXbVqFV588cUmncyzePFiAM6guGLFChw4cACTJ08G4JxbeOmll+Kxxx7DkSNHEBYWhk8++aTeuau//vorHn/8cUyfPh19+/Y9r/f95JNP4oMPPsDw4cPxyCOPIDIyEu+++y7279+PTz75RDtZ6YYbbkB6ejqefvpp7N+/H7169cL//vc/fPLJJ/jLX/5SZ95j79690bNnT+2ko7P/zN5U9957Lz766CP85S9/wZo1azBgwAA4HA7s3LkTH330EVauXIk+ffo067lXrVqFiRMn1ju306WiogJ33303hg4dikcffbRZr9MU5/s+V61ahWuvvbZJo5qRkZEYOHAg7rvvPhQUFGDOnDno1KmTNl3BYDDgpZdewn333YchQ4bgrrvu0pbD6tChg9sJea+//joGDhyIK664ApMmTULHjh1x4MAB/N///R9ycnIAALNmzcKaNWvQr18/TJw4Ed27d0dhYSG2bNmC7777DoWFhc3q0apVq/Djjz8267FEfkXaegZE1OJcy2Ft2rSp3v0jR44UQUFB2jJNQ4YMET169BCbN28WaWlpwmw2i6SkJPHmm2+6Pc619FBcXJwoLy9324cGlsNy/QQGBoru3buL2bNnuy0r9Ntvv4n09HQREhIi2rZtKyZOnCi2bdvmtpST1WoVycnJYuDAgaK6ulp7bFOXwxJCiL1794o//vGPIiIiQpjNZnHllVeKL7/8ss5xZWVlYsqUKSI+Pl4YDAbRqVMnMWvW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12LlypX+8V2XvayBJ3jjjTdEYmKiMBqN4sorrxQbNmyQXZJPu+OOO0RcXJwwGo2iXbt24o477hB79uyRXZbPWbNmjQBQ52fcuHFCCOeSWM8++6yIiYkRJpNJXHPNNSI3N1du0T6gsb5XVFSI6667TlgsFmEwGERSUpKYOHGiyM/Pl122V6uv3wDEwoULtWMqKyvFgw8+KNq0aSOCgoLErbfeKo4dOyavaB9wrr7n5eWJwYMHi8jISGEymUSnTp3E//t//08UFxfLLdzL3X///SIpKUkYjUZhsVjENddcI1atWqXt9/XvuiKEEK0ZlImIiIiImsOv57gSERERkfdgcCUiIiIir8DgSkRERERegcGViIiIiLwCgysREREReQUGVyIiIiLyCgyuREREROQVGFyJiIiIyCswuBIRERGRV2BwJSK6yKqqqrBo0SIMHDgQFosFgYGBSE5OxksvvQS73S67PCIir8FLvhIRXWQ5OTn461//igcffBC9e/eG1WrF9u3bMX36dMTFxWHlypUwGAyyyyQi8ngccSUiush69uyJ1atXY/To0bjkkkvQvXt33HHHHfj++++xY8cOzJkzBwCgKEq9P5MnT9ae6/Tp0xg7dizatGmDoKAgDB8+HLt379b233///UhOTobNZgMA2O129O7dG2PHjtWOeeKJJ3DZZZchKCgIl1xyCZ599llUVVW1Si+IiC4EgysR0UUWEBBQ73aLxYJRo0bh/fff17YtXLgQx44d037S0tLcHjN+/Hhs3rwZn3/+ObKysiCEwA033KAFz9dffx3l5eV48sknAQBPP/00ioqK8Oabb2rPERoaikWLFuG3337Da6+9hn/961+YPXt2S79tIqIWV///mhIRUYvr0aMHDh486LatqqoKer1eux8REYHY2FjtvtFo1G7v3r0bn3/+OX788UdcddVVAID3338fCQkJWLFiBW677TaEhIRg8eLFGDJkCEJDQzFnzhysWbMGYWFh2vM888wz2u0OHTrgsccew9KlS/H444+3+HsmImpJDK5ERK3kq6++qvMn+ZdffhmLFy9u0uN///13BAQEoF+/ftq2qKgodOnSBb///ru2LS0tDY899hj+9re/4YknnsDAgQPdnufDDz/E66+/jr1796KsrAzV1dVuwZaIyFMxuBIRtZKkpKQ62/bu3YvLLrusRV9HVVX8+OOP0Ov12LNnj9u+rKwsjBkzBjNmzMCwYcMQHh6OpUuX4tVXX23RGoiILgbOcSUiusgKCwtRWlpaZ/vmzZuxZs0a3H333U16nm7duqG6uhobN27Utp06dQq5ubno3r27tu2VV17Bzp07sW7dOnzzzTdYuHChtu+nn35CUlISnn76afTp0wedO3euM32BiMhTMbgSEV1keXl56NWrFxYsWIA9e/Zg3759+O9//4uRI0di0KBBbqsGNKZz584YOXIkJk6ciPXr12Pbtm2455570K5dO4wcORIAsHXrVjz33HP497//jQEDBuCf//wnHn30Uezbt097jry8PCxduhR79+7F66+/juXLl1+st05E1KIYXImILrKePXti2rRpWLRoEfr3748ePXrg5ZdfxkMPPYRVq1a5nYB1LgsXLkRqaipuvPFGpKWlQQiBr776CgaDAVarFffccw/Gjx+Pm266CQAwadIk/OEPf8C9994Lh8OBm2++GVOmTMFDDz2EXr164aeffsKzzz57sd46EVGL4gUIiIiIiMgrcMSViIiIiLwCgysREREReQUGVyIiIiLyCgyuREREROQVGFyJiIiIyCswuBIRERGRV2BwJSIiIiKvwOBKRERERF6BwZWIiIiIvAKDKxERERF5BQZXIiIiIvIK/x/Z4/j2JIAA9AAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 800x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "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",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>22</td>\n",
       "      <td>13.813608</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>23</td>\n",
       "      <td>13.657418</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>24</td>\n",
       "      <td>13.657630</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>25</td>\n",
       "      <td>13.459483</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>26</td>\n",
       "      <td>13.259018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>27</td>\n",
       "      <td>13.132136</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>28</td>\n",
       "      <td>12.918105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>29</td>\n",
       "      <td>12.711038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>30</td>\n",
       "      <td>12.525272</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>31</td>\n",
       "      <td>12.360238</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    epoch  train_loss\n",
       "21     22   13.813608\n",
       "22     23   13.657418\n",
       "23     24   13.657630\n",
       "24     25   13.459483\n",
       "25     26   13.259018\n",
       "26     27   13.132136\n",
       "27     28   12.918105\n",
       "28     29   12.711038\n",
       "29     30   12.525272\n",
       "30     31   12.360238"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "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",
    "pred_train = model.predict(X_train)\n",
    "pred_val = model.predict(X_val)\n",
    "pred_test = model.predict(X_test)\n",
    "\n",
    "metrics_df = pd.DataFrame([\n",
    "    {\"split\": \"train\", **regression_metrics(y_train, pred_train)},\n",
    "    {\"split\": \"validation\", **regression_metrics(y_val, pred_val)},\n",
    "    {\"split\": \"test\", **regression_metrics(y_test, pred_test)},\n",
    "])\n",
    "\n",
    "display(metrics_df)\n",
    "\n",
    "loss_curve = pd.DataFrame({\n",
    "    \"epoch\": np.arange(1, len(model.named_steps[\"regressor\"].loss_curve_) + 1),\n",
    "    \"train_loss\": model.named_steps[\"regressor\"].loss_curve_\n",
    "})\n",
    "\n",
    "plt.figure(figsize=(8, 4))\n",
    "plt.plot(loss_curve[\"epoch\"], loss_curve[\"train_loss\"])\n",
    "plt.title(\"Кривая обучения нейросети\")\n",
    "plt.xlabel(\"Эпоха\")\n",
    "plt.ylabel(\"Loss\")\n",
    "plt.grid(alpha=0.3)\n",
    "plt.show()\n",
    "\n",
    "display(loss_curve.tail(10))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb6590a3",
   "metadata": {},
   "source": [
    "## Объяснение вкладов признаков\n",
    "\n",
    "Далее используются два метода интерпретации:\n",
    "1. **перестановочная важность** по тестовой выборке;\n",
    "2. **весовая важность** по произведению матриц весов обученной сети с последующей агрегацией до исходных признаков."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "3474fee2",
   "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>feature</th>\n",
       "      <th>permutation_importance_mean</th>\n",
       "      <th>permutation_importance_std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>meditation</td>\n",
       "      <td>0.017952</td>\n",
       "      <td>0.011408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>family_history_mental_illness</td>\n",
       "      <td>0.015438</td>\n",
       "      <td>0.008452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>life_satisfaction_score</td>\n",
       "      <td>0.012538</td>\n",
       "      <td>0.011454</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>financial_stress</td>\n",
       "      <td>0.012181</td>\n",
       "      <td>0.011527</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>stress_level</td>\n",
       "      <td>0.009603</td>\n",
       "      <td>0.007648</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>social_support_score</td>\n",
       "      <td>0.006093</td>\n",
       "      <td>0.005990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>substance_use</td>\n",
       "      <td>0.001832</td>\n",
       "      <td>0.002341</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>sleep_hours</td>\n",
       "      <td>0.001652</td>\n",
       "      <td>0.006831</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>anxiety_score</td>\n",
       "      <td>-0.000449</td>\n",
       "      <td>0.005026</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>loneliness_score</td>\n",
       "      <td>-0.000712</td>\n",
       "      <td>0.005621</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>gender</td>\n",
       "      <td>-0.001360</td>\n",
       "      <td>0.004510</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>education_level</td>\n",
       "      <td>-0.001471</td>\n",
       "      <td>0.005205</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>employment_status</td>\n",
       "      <td>-0.003181</td>\n",
       "      <td>0.005398</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>work_stress</td>\n",
       "      <td>-0.003359</td>\n",
       "      <td>0.009879</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>self_esteem_score</td>\n",
       "      <td>-0.005039</td>\n",
       "      <td>0.005789</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                          feature  permutation_importance_mean  \\\n",
       "0                      meditation                     0.017952   \n",
       "1   family_history_mental_illness                     0.015438   \n",
       "2         life_satisfaction_score                     0.012538   \n",
       "3                financial_stress                     0.012181   \n",
       "4                    stress_level                     0.009603   \n",
       "5            social_support_score                     0.006093   \n",
       "6                   substance_use                     0.001832   \n",
       "7                     sleep_hours                     0.001652   \n",
       "8                   anxiety_score                    -0.000449   \n",
       "9                loneliness_score                    -0.000712   \n",
       "10                         gender                    -0.001360   \n",
       "11                education_level                    -0.001471   \n",
       "12              employment_status                    -0.003181   \n",
       "13                    work_stress                    -0.003359   \n",
       "14              self_esteem_score                    -0.005039   \n",
       "\n",
       "    permutation_importance_std  \n",
       "0                     0.011408  \n",
       "1                     0.008452  \n",
       "2                     0.011454  \n",
       "3                     0.011527  \n",
       "4                     0.007648  \n",
       "5                     0.005990  \n",
       "6                     0.002341  \n",
       "7                     0.006831  \n",
       "8                     0.005026  \n",
       "9                     0.005621  \n",
       "10                    0.004510  \n",
       "11                    0.005205  \n",
       "12                    0.005398  \n",
       "13                    0.009879  \n",
       "14                    0.005789  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "perm = permutation_importance(\n",
    "    model,\n",
    "    X_test,\n",
    "    y_test,\n",
    "    scoring=\"r2\",\n",
    "    n_repeats=20,\n",
    "    random_state=RANDOM_STATE,\n",
    "    n_jobs=1\n",
    ")\n",
    "\n",
    "perm_importance_df = pd.DataFrame({\n",
    "    \"feature\": X.columns,\n",
    "    \"permutation_importance_mean\": perm.importances_mean,\n",
    "    \"permutation_importance_std\": perm.importances_std\n",
    "}).sort_values(\"permutation_importance_mean\", ascending=False).reset_index(drop=True)\n",
    "\n",
    "display(perm_importance_df.head(15))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "f654747e",
   "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>feature</th>\n",
       "      <th>processed_weight_importance</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>education_level</td>\n",
       "      <td>7.715211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>gender</td>\n",
       "      <td>6.837222</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>employment_status</td>\n",
       "      <td>6.235602</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>medication_use</td>\n",
       "      <td>3.507893</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>substance_use</td>\n",
       "      <td>1.757793</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>meditation</td>\n",
       "      <td>1.303386</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>life_satisfaction_score</td>\n",
       "      <td>0.871859</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>therapy</td>\n",
       "      <td>0.816672</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>financial_stress</td>\n",
       "      <td>0.796036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>physical_activity_hrs</td>\n",
       "      <td>0.776957</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>work_stress</td>\n",
       "      <td>0.587184</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>family_history_mental_illness</td>\n",
       "      <td>0.566916</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>loneliness_score</td>\n",
       "      <td>0.385886</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>stress_level</td>\n",
       "      <td>0.214637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>chronic_illnesses</td>\n",
       "      <td>0.212810</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                          feature  processed_weight_importance\n",
       "0                 education_level                     7.715211\n",
       "1                          gender                     6.837222\n",
       "2               employment_status                     6.235602\n",
       "3                  medication_use                     3.507893\n",
       "4                   substance_use                     1.757793\n",
       "5                      meditation                     1.303386\n",
       "6         life_satisfaction_score                     0.871859\n",
       "7                         therapy                     0.816672\n",
       "8                financial_stress                     0.796036\n",
       "9           physical_activity_hrs                     0.776957\n",
       "10                    work_stress                     0.587184\n",
       "11  family_history_mental_illness                     0.566916\n",
       "12               loneliness_score                     0.385886\n",
       "13                   stress_level                     0.214637\n",
       "14              chronic_illnesses                     0.212810"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def map_processed_feature_to_original(processed_name, numeric_cols, categorical_cols):\n",
    "    if processed_name.startswith(\"num__\"):\n",
    "        return processed_name.replace(\"num__\", \"\", 1)\n",
    "    if processed_name.startswith(\"cat__\"):\n",
    "        rest = processed_name.replace(\"cat__\", \"\", 1)\n",
    "        # выбираем самый длинный подходящий префикс\n",
    "        matches = [c for c in categorical_cols if rest == c or rest.startswith(c + \"_\")]\n",
    "        if matches:\n",
    "            return sorted(matches, key=len, reverse=True)[0]\n",
    "        return rest\n",
    "    return processed_name\n",
    "\n",
    "processed_feature_names = model.named_steps[\"preprocessor\"].get_feature_names_out()\n",
    "\n",
    "reg = model.named_steps[\"regressor\"]\n",
    "coefs = reg.coefs_\n",
    "\n",
    "# Эффективные веса входов до выхода\n",
    "effective_weights = coefs[0].copy()\n",
    "for k in range(1, len(coefs)):\n",
    "    effective_weights = effective_weights @ coefs[k]\n",
    "\n",
    "# На выходе одна нейронная регрессия -> вектор длины n_features\n",
    "effective_weights = np.asarray(effective_weights).reshape(-1)\n",
    "processed_importance = np.abs(effective_weights)\n",
    "\n",
    "weight_importance_df = pd.DataFrame({\n",
    "    \"processed_feature\": processed_feature_names,\n",
    "    \"processed_weight_importance\": processed_importance\n",
    "})\n",
    "\n",
    "weight_importance_df[\"feature\"] = weight_importance_df[\"processed_feature\"].apply(\n",
    "    lambda x: map_processed_feature_to_original(x, numeric_features, categorical_features)\n",
    ")\n",
    "\n",
    "weight_importance_agg = (\n",
    "    weight_importance_df\n",
    "    .groupby(\"feature\", as_index=False)[\"processed_weight_importance\"]\n",
    "    .sum()\n",
    "    .sort_values(\"processed_weight_importance\", ascending=False)\n",
    "    .reset_index(drop=True)\n",
    ")\n",
    "\n",
    "display(weight_importance_agg.head(15))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "f439fb78",
   "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>feature</th>\n",
       "      <th>permutation_importance_mean</th>\n",
       "      <th>permutation_importance_std</th>\n",
       "      <th>processed_weight_importance</th>\n",
       "      <th>rank_permutation</th>\n",
       "      <th>rank_weight</th>\n",
       "      <th>rank_mean</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>meditation</td>\n",
       "      <td>0.017952</td>\n",
       "      <td>0.011408</td>\n",
       "      <td>1.303386</td>\n",
       "      <td>1.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>3.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>life_satisfaction_score</td>\n",
       "      <td>0.012538</td>\n",
       "      <td>0.011454</td>\n",
       "      <td>0.871859</td>\n",
       "      <td>3.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>substance_use</td>\n",
       "      <td>0.001832</td>\n",
       "      <td>0.002341</td>\n",
       "      <td>1.757793</td>\n",
       "      <td>7.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>financial_stress</td>\n",
       "      <td>0.012181</td>\n",
       "      <td>0.011527</td>\n",
       "      <td>0.796036</td>\n",
       "      <td>4.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>6.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>gender</td>\n",
       "      <td>-0.001360</td>\n",
       "      <td>0.004510</td>\n",
       "      <td>6.837222</td>\n",
       "      <td>11.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>education_level</td>\n",
       "      <td>-0.001471</td>\n",
       "      <td>0.005205</td>\n",
       "      <td>7.715211</td>\n",
       "      <td>12.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>6.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>family_history_mental_illness</td>\n",
       "      <td>0.015438</td>\n",
       "      <td>0.008452</td>\n",
       "      <td>0.566916</td>\n",
       "      <td>2.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>employment_status</td>\n",
       "      <td>-0.003181</td>\n",
       "      <td>0.005398</td>\n",
       "      <td>6.235602</td>\n",
       "      <td>13.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>stress_level</td>\n",
       "      <td>0.009603</td>\n",
       "      <td>0.007648</td>\n",
       "      <td>0.214637</td>\n",
       "      <td>5.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>9.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>medication_use</td>\n",
       "      <td>-0.006873</td>\n",
       "      <td>0.003579</td>\n",
       "      <td>3.507893</td>\n",
       "      <td>17.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>10.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>social_support_score</td>\n",
       "      <td>0.006093</td>\n",
       "      <td>0.005990</td>\n",
       "      <td>0.149936</td>\n",
       "      <td>6.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>11.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>loneliness_score</td>\n",
       "      <td>-0.000712</td>\n",
       "      <td>0.005621</td>\n",
       "      <td>0.385886</td>\n",
       "      <td>10.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>11.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>work_stress</td>\n",
       "      <td>-0.003359</td>\n",
       "      <td>0.009879</td>\n",
       "      <td>0.587184</td>\n",
       "      <td>14.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>12.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>physical_activity_hrs</td>\n",
       "      <td>-0.005766</td>\n",
       "      <td>0.008853</td>\n",
       "      <td>0.776957</td>\n",
       "      <td>16.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>13.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>sleep_hours</td>\n",
       "      <td>0.001652</td>\n",
       "      <td>0.006831</td>\n",
       "      <td>0.066059</td>\n",
       "      <td>8.0</td>\n",
       "      <td>19.0</td>\n",
       "      <td>13.5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                          feature  permutation_importance_mean  \\\n",
       "0                      meditation                     0.017952   \n",
       "1         life_satisfaction_score                     0.012538   \n",
       "2                   substance_use                     0.001832   \n",
       "3                financial_stress                     0.012181   \n",
       "4                          gender                    -0.001360   \n",
       "5                 education_level                    -0.001471   \n",
       "6   family_history_mental_illness                     0.015438   \n",
       "7               employment_status                    -0.003181   \n",
       "8                    stress_level                     0.009603   \n",
       "9                  medication_use                    -0.006873   \n",
       "10           social_support_score                     0.006093   \n",
       "11               loneliness_score                    -0.000712   \n",
       "12                    work_stress                    -0.003359   \n",
       "13          physical_activity_hrs                    -0.005766   \n",
       "14                    sleep_hours                     0.001652   \n",
       "\n",
       "    permutation_importance_std  processed_weight_importance  rank_permutation  \\\n",
       "0                     0.011408                     1.303386               1.0   \n",
       "1                     0.011454                     0.871859               3.0   \n",
       "2                     0.002341                     1.757793               7.0   \n",
       "3                     0.011527                     0.796036               4.0   \n",
       "4                     0.004510                     6.837222              11.0   \n",
       "5                     0.005205                     7.715211              12.0   \n",
       "6                     0.008452                     0.566916               2.0   \n",
       "7                     0.005398                     6.235602              13.0   \n",
       "8                     0.007648                     0.214637               5.0   \n",
       "9                     0.003579                     3.507893              17.0   \n",
       "10                    0.005990                     0.149936               6.0   \n",
       "11                    0.005621                     0.385886              10.0   \n",
       "12                    0.009879                     0.587184              14.0   \n",
       "13                    0.008853                     0.776957              16.0   \n",
       "14                    0.006831                     0.066059               8.0   \n",
       "\n",
       "    rank_weight  rank_mean  \n",
       "0           6.0        3.5  \n",
       "1           7.0        5.0  \n",
       "2           5.0        6.0  \n",
       "3           9.0        6.5  \n",
       "4           2.0        6.5  \n",
       "5           1.0        6.5  \n",
       "6          12.0        7.0  \n",
       "7           3.0        8.0  \n",
       "8          14.0        9.5  \n",
       "9           4.0       10.5  \n",
       "10         16.0       11.0  \n",
       "11         13.0       11.5  \n",
       "12         11.0       12.5  \n",
       "13         10.0       13.0  \n",
       "14         19.0       13.5  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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T2HfmfI+b+3bt5dbX9j7Rl+XRBC+4JAsIiL6ISUnJ6NChQqYN28e/P39SzocIiIiIiKi/0RMTAwaN26MLVu2oFOnTiUdDn1HOKctERERERERERERkRJh0ZaIiIiIiIiIiIhIibBoS0RERERERERERKREOKctERERERERERERkRLhSFsiIiIiIiIiIiIiJcKiLREREREREREREZESKVXSARD9iHJycvDgwQPo6OhAIpGUdDhERET0AUEQ8PLlS5ibm0NFhWMc6NvDXJOIiEh5FTXXZNGWqAQ8ePAAFhYWJR0GERERFeLu3bsoV65cSYdBVGzMNYmIiJTfp3JNFm2JSoCOjg6A3B9QXV3dEo6GiIiIPpSeng4LCwvx9zXRt4a5JhERkfIqaq7Joi1RCci7TU1XV5eJNBERkZLibeX0rWKuSUREpPw+lWtyki4iIiIiIiIiIiIiJcKiLREREREREREREZESYdGWiIiIiIiIiIiISImwaEtERERERERERESkRFi0JSIiIiIiIiIiIlIiLNoSERERERERERERKREWbYmIiIiIiIiIiIiUCIu2REREREREREREREqERVsiIiIiIiIiIiIiJcKiLREREREREREREZESYdGWiIiIiIiIiIiISImwaEtERERERERERESkRFi0JSIiIiIiIiIiIlIiLNoSERERERERERERKREWbYmIiIiIiIiIiIiUCIu2REREREREREREREqkVEkHQETKyWrc7pIOgYiI6JOSZ7cu6RCIlFa1KfuhItUq6TCIiIi+SSWdZ3KkLREREREREREREZESYdGWiIiIiIiIiIiISImwaEtERERERERERESkRFi0JSIiIiIiIiIiIlIiLNoSERERERERERERKREWbYmIiIiIiIiIiIiUCIu2REREREREREREREqERVsiIiIiIiIiIiIiJcKiLSklNzc3DB8+XFy2srJCcHDwVzlWeHg49PX1v0rfRERERN+jmJgYSCQSpKWllXQoXzVPzM/Heep/wc/PD56env/pMYmIiKhksWhL34S4uDj07dtXXJZIJIiIiCh2P/kl9V26dEFiYuK/jJCIiIiIvqaC/tD+cZ5IRERE9D0oVdIBEBWFsbHxV+tbU1MTmpqaX61/IiIiIvp6vmaeSERERFRSONKWisXNzQ1DhgzB8OHDUbp0aZiYmCA0NBSvXr1C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ypcvj23btiEiIgI1atTA77//LveQWSB3hOvSpUvx22+/oUaNGjh9+rTCH7x9fX0RHByMpUuXomrVqmjTpg1u3LgBIPeBsgsWLMCcOXNQrVo1rF+/HoGBgXL7169fH/3790eXLl1gbGyMuXPnKpyHRCLBX3/9hdKlS6NRo0Zwd3dHxYoVsWnTpi98xf5PWFgYfHx8MGrUKNjZ2cHT0xNxcXHiXWR5cXl7e+PChQvo1q2b3P5aWlo4cuQIypcvj44dO8Le3h69evXC27dvP3vkLREREX37JMLHk08R0VeXnp4OPT09vHjxQmmTcatxuz/diIiIqIQlz279xfv8Fn5PExUm7zNsMXwzVKRfdj5gIiKiH8XXyDOBoueaHGlLREREREREREREpERYtCUiIiIiIgKQkpICmUxW4CslJaWkQyQiIqIfRKmSDoCIiIiIiEgZmJubIz4+vtDtRERERP8FFm2JiIiIiIgAlCpVCtbW1iUdBhERERGnRyAiIiIiIiIiIiJSJizaEhERERERERERESkRFm2JiIiIiIiIiIiIlAiLtkRERERERERERERKhEVbIiIiIiIiIiIiIiVSqqQDICLllDy7dUmHQERERET/wuWpLaCrq1vSYRAREdFn4EhbIiIiIiIiIiIiIiXCoi0RERERERERERGREmHRloiIiIiIiIiIiEiJsGhLREREREREREREpERYtCUiIiIiIiIiIiJSIizaEhERERERERERESmRUiUdABEpJ6txu0s6BCIi+gzJs1uXdAhEpCSqTdkPFalWSYdBREQ/AOagXx5H2hIREREREREREREpERZtiYiIiIiIiIiIiJQIi7ZERERERERERERESoRFWyIiIiIiIiIiIiIlwqItERERERERERERkRJh0ZaIiIiIiIiIiIhIibBoS0RERERERERERKREWLQlIiIiIiIiIiIiUiIs2hIREREREREREREpkWIVbQVBQN++fWFgYACJRIL4+PivEpSfnx88PT3FZTc3NwwfPvyr9J0fKysrBAcHf5HjUeEkEgkiIiI+2S45OVnuMxcTEwOJRIK0tDQAQHh4OPT19b9anERERERE/1ZRvosQERERAUCp4jTet28fwsPDERMTg4oVK8LIyOirBBUSEgJBEL5K30URFxcHbW3tIrW1srLC8OHDv1hR+VuUnJyMChUq4Pz586hZ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8OLFC+jq6pZ0OPmyGre7pEMgIqLPkDy7aKMAqWDfwu9p+rJevXqFsmXLIigoCL169SrpcP61vM+wxfDNUJFqlXQ4RET0A2AOWnRFzTX/1YPISsrjx4+xceNG/PPPP+jRo0dJh/PFvHv3Dk+fPsXEiRPx008/sWBLRERERPQVnD9/HteuXUOdOnXw4sULTJs2DQDEO8aIiIiISto3WbQtU6YMjIyMsGLFCpQuXVpu24dPdP3Y3r17P/thAv+F2NhYNG7cGLa2tti6davctqNHj6Jly5YF7pv39Nlv1axZszBr1qx8tzVs2BB79+79jyMiIiIiou/Z/Pnzcf36dairq6NWrVo4evQojIyMSjosIiIiIgDfaNG2sBkd4uPjC9xWtmzZrxDNl+Pm5lbguTk7Oxd6bt+6/v37w8vLK99tyvLwMiIiIiL6Pjg6OuLs2bMlHQYRERFRgb7Jom1hrK2tSzqEr0JTU/O7PTcAMDAwgIGBQUmHQUREREREREREVOL4qHsiIiIiIiIiIiIiJcKiLREREREREREREZESYdGWiIiIiIiIiIiISImwaEtERERERERERESkRL67B5ER0ZeRPLt1SYdARERERP/C5aktoKurW9JhEBER0WfgSFsiIiIiIiIiIiIiJcKiLREREREREREREZESYdGWiIiIiIiIiIiISImwaEtERERERERERESkRFi0JSIiIiIiIiIiIlIiLNoSERERERERERERKREWbYmIiIiIiIiIiIiUSKmSDoCIlJPVuN0lHQIR0Sclz25d0iEQESmtalP2Q0WqVdJhEBHRF8Yc+MfAkbZERERERERERERESoRFWyIiIiIiIiIiIiIlwqItERERERERERERkRJh0ZaIiIiIiIiIiIhIibBoS0RERERERERERKREWLQlIiIiIiIiIiIiUiIs2hIREREREREREREpERZtiYiIiIiIiIiIiJTID1u0dXNzw/DhwwEAVlZWCA4OFrf9888/aNasGbS1taGvr18i8X1KTEwMJBIJ0tLSitQ+NjYWDg4OUFNTg6en51eLKyAgADVr1vxq/RMRERHR1/NxXkxEREREJeOHLdp+KC4uDn379hWXFy5ciNTUVMTHxyMxMbEEI8v1YYE5T/369ZGamgo9Pb0i9TFy5EjUrFkTt2/fRnh4+BeJSyKRICIiQm6dv78/oqOjv0j/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4EN1JRIJ/vrrL5QuXRqNGjWCu7s7KlasiE2bNim07dWrF7KysvKdGuFzfInz//nnn+Hh4YHGjRvD2NgYf/75Z6Ht9fX1ERoaChcXF1SvXh1RUVH4+++/YWhoCACYNm0akpOTUalSJfGhvJ+byxsYGGDdunXYs2cPHBwc8OeffyIgIEDc51PfIYiIiOj7JxE+nkyJiL669PR06Onp4cWLF0p7+5rVuN0lHQIR0Sclz25d0iHQd+hb+D39Odzc3FCzZk0EBwd/8b6nT5+OLVu2FOlhuPT15X2GLYZvhopUq6TDISKiL4w58LetqLkmR9oSEREREdFnycjIwOXLl7FkyRJxCi0iIiIi+vdYtP0CqlatCplMlu/rS83d+qNq2bJlgdd21qxZJR0eERER0Q9t8ODBqFWrFtzc3L7Y1Ahfy/r16wvMK6tWrVrS4RERERHJ4YPIvoA9e/bg3bt3+W771Jy3VLiVK1fizZs3+W7L74FsRERERJS/mJiYL95neHi43AO0lFm7du1Qt27dfLflPfOAiIiISFmwaPsF/Jsn+FLhypYtW9IhEBEREdF3QEdHBzo6OiUdBhEREVGRcHoEIiIiIiIiIiIiIiXCoi0RERERERERERGREmHRloiIiIiIiIiIiEiJsGhLREREREREREREpERYtCUiIiIiIiIiIiJSIqVKOgAiUk7Js1uXdAhERERE9C9cntoCurq6JR0GERERfQaOtCUiIiIiIiIiIiJSIizaEhERERERERERESkRFm2JiIiIiIiIiIiIlAiLtkRERERERERERERKhEVbIiIiIiIiIiIiIiXCoi0RERERERERERGREilV0gEQkXKyGre7pEMgoh9c8uzWJR0CEdE3rdqU/VCRapV0GETfPOYkRFQSONKWiIiIiIiIiIiISImwaEtERERERERERESkRFi0JSIiIiIiIiIiIlIiLNoSERERERERERERKREWbYmIiIiIiIiIiIiUCIu2REREREREREREREqERVsiIiIiIiIiIiIiJcKiLREREREREREREZESYdGWiIiIiIiIiIiISImwaPuNEQQBffv2hYGBASQSCfT19TF8+PCSDktOcnIyJBIJ4uPji7yPn58fPD09v1pMRERERFTy3Nzc5HJXKysrBAcHf9VjxsTEQCKRIC0t7aseh4iIiOhLKlXSAVDx7Nu3D+Hh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EtSrVw/Z2dkYO3as3MjfwnLgouauRERE9H1j0ZbypauriyNHjiA4OBjp6emwtLREUFAQWrZsCWdnZ8TExMDZ2RkZGRk4dOhQgaMAevfuDS0tLcybNw+jR4+GtrY2HBwcxIc66OjoYO7cubhx4wZUVVVRu3Zt7NmzByoqKtDX18fs2bMxcuRIZGdnw8HBAX///TcMDQ2LdS4SiQR79uzBhAkT0KNHDzx+/BimpqZo1KgRTExMxHY6Ojpo27YtNm/ejFWrVsn1YW5ujtjYWIwdOxbNmzdHZmYmLC0t4eHhARUVTg1NRERE36fCcsJ3797hwoUL8PHxQalSpTBixAiFUbYAMGrUKJw5cwZTp06Frq4uFixYgBYtWgDAJ/O9adOmoV+/fqhUqRIyMzMhCAImTpyIW7duoUWLFtDS0kLfvn3h6emJFy9eFOvctm3bBn9/f3h7e+PVq1ewtrbG7NmzAeSOxD18+DAmTJiAhg0bQhAEVKpUCV26dClS30FBQejRowcaNmwIc3NzhISE4OzZs+L2wnJgAEXKXYmIiOj7JhE+nmyJiL669PR06Onp4cWLF9DV1S3pcPJlNW53SYdARB9Int26pEMg+mF8C7+niQqT9xm2GL4ZKlKtkg6HPoG/44mIfixFzTU5RJCIiIiIiIiIiIhIibBoS9+co0ePQiaTFfgiIiIiIvpamIsSERHRf4Fz2tI3x9nZGfHx8SUdBhERERH9gJiLEhER0X+BRVv65mhqasLa2rqkwyAiIiKiHxBzUSIiIvovcHoEIiIiIiIiIiIiIiXCoi0RERERERERERGREmHRloiIiIiIiIiIiEiJsGhLREREREREREREpERYtCUiIiIiIiIiIiJSIqVKOgAiUk7Js1uXdAhERERE9C9cntoCurq6JR0GERERfQaOtCUiIiIiIiIiIiJSIizaEhERERERERERESkRFm2JiIiIiIiIiIiIlAiLtkRERERERERERERKhEVbIiIiIiIiIiIiIiXCoi0RERERERERERGREilV0gEQkXKyGre7pEOgb1zy7NYlHQIREdEPrdqU/VCRapV0GN8c5jBERKQMONKWiIiIiIiIiIiISImwaEtERERERERERESkRFi0JSIiIiIiIiIiIlIiLNoSERERERERERERKREWbYmIiIiIiIiIiIiUCIu2REREREREREREREqE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YGCAx48fQ19fX9nhFMpy8kFlh0AVXMqCnsoOgYjorVSEn9NExcn7GjbzC4ealq6yw6lwmMMQEVF5Km2uyZm2RERERERERERERCqERdsKZt68eZDL5YW+8pYEqExSU1OLHK9cLkdqaqqyQyQiIiIiIiIiInqv+CCyCmbMmDEYNGhQofve9uFl+XXs2BElrZjh5eUFLy+vdz5XadSuXRuxsbHF7iciIiIiIiIiIqpMWLStYKpVq4Zq1aopO4z/jIaGBqytrZUdBhERERERERER0X+GyyMQERERERERERERqRAWbYmIiIiIiIiIiIhUCIu2RERERERERERERCqERVsiIiIiIiIiIiIiFcIHkRFRoVIW9FR2CERERET0Dq7OdIO+vr6ywyAiIqK3wJm2RERERERERERERCqERVsiIiIiIiIiIiIiFcKiLREREREREREREZEKYdGWiIiIiIiIiIiISIWwaEtERERERERERESkQli0JSIiIiIiIiIiIlIhLNoSERERERERERERqRANZQdARKrJcvJBZYdQaikLeio7BCIiIiKV0zjoKNS0dJUdxnvDnI+IiD4knGlLREREREREREREpEJYtCUiIiIiIiIiIiJSISzaEhEREREREREREakQFm2JiIiIiIiIiIiIVAiLtkREREREREREREQqhEVbIiIiIiIiIiIiIhXCoi0RERERERERERGRCmHRloiIiIiIiIiIiEiFsGj7gbO0tMSyZcuUHQYRERFRpdKxY0f4+fkBKJhv3b17Fx9//DGqVq0KQ0NDpcRXklOnTkEmkyE9Pb1U7SMjI+Hg4IAqVaqgb9++5RbXjBkz0LRp03Lrn4iIiEhVsGhL74RFXyIiIqLiRUdHY9SoUdL7pUuXIi0tDbGxsbh27ZoSI3stf4E5T5s2bZCWlgYDA4NS9TFhwgQ0bdoUycnJCA0NfS9xyWQy7N27V2Gbv78/IiIi3kv/RERERKpMQ9kBEBERERFVZsbGxgrvb9y4gebNm8PGxkZJEZVMU1MTJiYmpW5/48YNjBkzBnXr1i3HqAC5XA65XF6u51CmrKwsVKlSRdlhEBERkQrgTNtK4KeffoKDgwN0dHRQvXp1uLq64tmzZ4XOmujbty+8vLwUtj19+hQeHh6oWrUq6tSpg1WrVkn7hBCYMWMGzM3NoaWlhdq1a8PX1xfA61kZN2/e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m2vyQWREREREREREREREKoRFW6p0zp49C7lcXuSLiIiIqCJp1KhRkXnN+1q79UPVvXv3Iq/tvHnzlB0eERERfcC4pi1VOi1atEBsbKyywyAiIiJ6Lw4dOoSsrKxC93E9/XezYcMGvHjxotB9hT2QjYiIiOi/wqItVTo6OjqwtrZWdhhERERE74WFhYWyQ6i06tSpo+wQiIiIiArF5RGIiIiIiIiIiIiIVAiLtkREREREREREREQqhEVbIiIiIiIiIiIiIhXCoi0RERERERERERGRCmHRloiIiIiIiIiIiEiFaCg7ACJSTSkLeio7BCIiIiJ6B1dnukFfX1/ZYRAREdFb4ExbIiIiIiIiIiIiIhXCoi0RERERERERERGRCmHRloiIiIiIiIiIiEiFsGhLREREREREREREpEJYtCUiIiIiIiIiIiJSISzaEhEREREREREREakQDWUHQESqyXLyQWWHUKSUBT2VHQIRERGRymscdBRqWrrKDuOdMO8jIqIPFWfaEhEREREREREREakQFm2JiIiIiIiIiIiIVAiLtkREREREREREREQqhEVbIiIiIiIiIiIiIhXCoi0RERERERERERGRCmHRloiIiIiIiIiIiEiFsGhLREREREREREREpEJYtCUiIiIiIiIiIiJSISzaEhEREREREREREakQFm2p1Ly8vNC3b19lh6HA0tISy5YtU3YYRERERFRBnDp1CjKZDOnp6coOhYiIiKhILNoSEREREVGl1bFjR/j5+Sk7DCIiIqIyYdGW6C28evVK2SEQERERkQrJyspSdghERERUibBoSwX89NNPcHBwgI6ODqpXrw5XV1c8e/asQLvc3FzMnz8fVlZW0NHRgaOjI3766SeFNlevXkX37t0hl8tRq1YtDB48GP/++6+0v2PHjvDx8YGPjw8MDAxQo0YNBAYGQghR6nifP3+O4cOHQ09PD+bm5li3bp3C/ri4OHTu3Fkaz6hRo5CRkaEQw5uzL/r27QsvLy/pvaWlJWbPno0hQ4ZAX18fo0aNwqtXr+Dj4wNTU1Noa2vDwsIC8+fPL3XcRERERFS+vLy8cPr0aQQHB0Mmk0EmkyElJQUAcPHiRbRo0QK6urpo06YNEhMTFY7dt28fnJycoK2tjXr16mHmzJnIzs6W9stkMqxZswa9e/dG1apVMXfuXOTk5MDb21vKj+3s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wcfHB2pq///r2WeffYbbt29j/fr1RT6AjIiIiCovFm1Jgb6+Ps6cOYMePXrA1tYW06ZNw+LFi9G9e/cCbWfPno3AwEDMnz8f9vb26NatGw4ePAgrKysAQO3atREZGYmcnBx07doVDg4O8PPzg6GhoUJCOmTIELx48QKtWrXCuHHjMH78eIwaNeq9jEdXVxdHjx7Fw4cP0bJlS3zyySfo0qULVq5cKbUZPnw4hg4diiFDhqBDhw6oV69eqWbZ6unpYeHChWjRogVatmyJlJQUHDp0SGFsRERERKRc/v7+UFdXR8OGDWFsbFxgfdnCuLm54cCBAzh27BhatmyJjz76CEuXLi32wbMAMHr0aPTv3x/u7u5o3bo1Hjx4oDDrNk+XLl1gY2OD9u3bw93dHb1798aMGTMU2hgYGGDAgAGQy+Xo27dvWYZMRERElYBMvLmYJ9F/qGPHjmjatCmWLVum7FD+U0+ePIGBgQEeP34MfX19ZYdTKMvJRa+bpmwpC3oqOwQiIqrEKsLPaaq4vLy8kJ6ejr1795bYtkuXLmjUqBGWL19epnPkfQ2b+YVDTUu35ANUGPM+IiKqbEqba3JNWyIiIiIiIhXy6NEjnDp1CqdOncLq1auVHQ4REREpAYu2pLLOnj1b6LIMeTIyMv7DaIiIiIiI/hvNmjXDo0eP8O2330oPzyUiIqIPC4u2pFSnTp0qcl+LFi0QGxv7n8VCRERERFTeQkNDS2yTkpJS7nEQERGRamPRllSWjo4OrK2tlR0GERERERERERHRf4qPuSciIiIiIiIiIiJSISzaEhEREREREREREakQFm2JiIiIiIiIiIiIVAiLtkREREREREREREQqhA8iI6JCpSzoqewQiIiIiOgdXJ3pBn19fWWHQURERG+BM22JiIiIiIiIiIiIVAiLtkREREREREREREQqhEVbIiIiIiIiIiIiIhXCoi0RERERERERERGRCmHRloiIiIiIiIiIiEiFsGhLREREREREREREpEJYtCUiIiIiIiIiIiJSIRrKDoCI/juWkw+Wum3Kgp7lGAkRERERlbfGQUehpqWr7DDeGvNRIiL6kHGmLREREREREREREZEKYdGWiIiIiIiIiIiISIWwaEtERERERERERESkQli0JSIiIiIiIiIiIlIhLNoSERERERERERERqRAWbYmIiIiIiIiIiIhUCIu2RERERERERERERCqERVsiIiIiIiIiIiIiFcKiLb2TlJQUyGQyxMbGKjsUIiIiInpHQgiMGjUK1apVg0wmg6GhIfz8/JQdloK3yT+9vLzQt2/fcouJiIiI6H3TUHYAVLGZmZkhLS0NNWrUKPUxHTt2RNOmTbFs2bLyC4yIiIiIyuzIkSMIDQ3FqVOnUK9ePaipqUFHR0fZYSl4m/zzffHy8kJ6ejr27t37n5+biIiIPiws2tI7UVdXh4mJibLD+E+9evUKmpqayg6DiIiI6L27ceMGTE1N0aZNG2WHUqSKkH9mZWWhSpUqyg6DiIiIKjAuj1DJHTlyBG3btoWhoSGqV6+O//3vf7hx4waA//9o2e7du9GpUyfo6urC0dER586dk44fPnw4mjRpgszMTACvC5bNmjXDkCFDFPrI//G0q1evonv37pDL5ahVqxYGDx6Mf//9F8Dr2QmnT59GcHAwZDIZZDIZkpOTYW1tje+++04h9tjYWMhkMly/fr3YMQohMGPGDJibm0NLSwu1a9eGr6+vtD8zMxMBAQEwMzODlpYWrK2tsXHjRmn/6dOn0apVK2hpacHU1BSTJ09Gdna2tL9jx47w8fGBn58fatSoATc3txLHSURERFTReHl54csvv0RqaipkMhksLS3RsWNHheURLC0tMW/ePAwfPhx6enowNzfHunXrFPoJCAiAra0tdHV1Ua9ePQQGBiIrK0vaP2PGDDRt2hQ//PADLC0tYWBggE8//RRPnz6V2uTm5mLhwoWwtraGlpYWzM3NMXfuXAAF88+cnBx4e3vDysoKOjo6sLOzQ3Bw8Ftfh59++gkODg7Q0dFB9erV4erqimfPnmHGjBnYvHkz9u3bJ+Wxp06dkuL58ccf0aFDB2hra2Pbtm0AgA0bNsDe3h7a2tpo0KABVq9eLZ3n1atX8PHxgampKbS1tWFhYYH58+cDKDm/JSIiosqPRdtK7tmzZ5gwYQJiYmIQEREBNTU19OvXD7m5uVKbqVOnwt/fH7GxsbC1tYWHh4dUtFy+fDmePXuGyZMnS23T09OxcuXKQs+Xnp6Ozp07o1mzZoiJicGRI0fwzz//YNCgQQCA4OBgODs7Y+TIkUhLS0NaWhrMzc0xfPhwhISEKPQVEhKC9u3bw9rautgx7tq1C0uXLsXatWuRlJSEvXv3wsHBQdo/ZMgQ7NixA8uXL0dCQgLWrl0LuVwOALhz5w569OiBli1b4vLly1izZg02btyIOXPmKJxj8+bN0NTURGRkJL7//vsSx0lERERU0QQHB2PWrFmoW7cu0tLSEB0dXWi7xYsXo0WLFrh06RLGjh2LL774AomJidJ+PT09hIaGIj4+HsHBwVi/fj2WLl2q0MeNGzewd+9eHDhwAAcOHMDp06exYMECaf+UKVOwYMECBAYGIj4+Htu3b0etWrUKjSc3Nxd169bFzp07ER8fj+nTp+Obb75BeHh4ma9BWloaPDw8MHz4cCQkJODUqVPo378/hBDw9/fHoEGD0K1bNymPzT8jefLkyRg/fjwSEhLg5uaGbdu2Yfr06Zg7dy4SEhIwb948BAYGYvPmzQBe59n79+9HeHg4EhMTsW3bNlhaWgIoOb8lIiKiyo/LI1RyAwYMUHi/adMmGBsbIz4+Xipc+vv7o2fPngCAmTNnolGjRrh+/ToaNGgAuVyOrVu3okOHDtDT08OyZctw8uRJ6OvrF3q+lStXolmzZpg3b57COc3MzHDt2jXY2tpCU1MTurq6Ch9r8/LywvTp03HhwgW0atUKWVlZ2L59e4HZt4VJTU2FiYkJXF1dUaVKFZibm6NVq1YAgGvXriE8PBzHjx+Hq6srAKBevXrSsatXr4aZmRlWrlwJmUyGBg0a4O+//0ZAQACmT58ONbXXf9ewsbHBwoULpePmzJlT4jjzy8zMlGYrA8CTJ09KHBcRERHRf8nAwAB6enolLj/Qo0cPjB07FsDrWbVLly7FyZMnYWdnBwCYNm2a1NbS0hL+/v4ICwvD119/LW3Pzc1FaGgo9PT0AACDBw9GREQE5s6di6dPnyI4OBgrV67E0KFDAQD169dH27ZtC42nSpUqmDlzpvTeysoK586dQ3h4eJn/oJ6Wlobs7Gz0798fFhYWAKBQLNXR0UFmZmah18fPzw/9+/eX3gcFBWHx4sXSNisrK8THx2Pt2rUYOnQoUlNTYWNjg7Zt20Imk0nnA4rPbwvDXJOIiKjy4UzbSi4pKQkeHh6oV68e9PX1pb/ep6amSm2aNGki/dvU1BQAcO/ePWmbs7Mz/P39MXv2bEycOLHIhBkALl++jJMnT0Iul0uvBg0aAIC0LENhateujZ49e2LTpk0AgJ9//hmZmZkYOHBgiWMcOHAgXrx4gXr16mHkyJHYs2ePNFM4NjYW6urq6NChQ6HHJiQkwNnZGTKZTNrm4uKCjIwM3L59W9rWvHnzdxrn/PnzYWBgIL3MzMxKHBcRERGRKsqfO8pkMpiYmCjkjj/++CNcXFxgYmICuVyOadOmKeSewOtibl7BFnidg+b1kZCQgMzMTHTp0qXUMa1atQrNmzeHsbEx5HI51q1bV+CcpeHo6IguXbrAwcEBAwcOxPr16/Ho0aNSHduiRQvp38+ePcONGzfg7e2tkC/OmTNHyhW9vLwQGxsLOzs7+Pr64tixY9LxxeW3hWGuSUREVPmwaFvJ9erVCw8fPsT69esRFRWFqKgoAK/X0MqT/yEJecXL/Msn5ObmIjIyEurq6iWuL5uRkYFevXohNjZW4ZWUlIT27dsXe+yIESMQFhaGFy9eICQkBO7u7tDV1S1xjGZmZkhMTMTq1auho6ODsWPHon379sjKynpvTzuuWrWqwvuyjnPKlCl4/Pix9Lp169Z7iYuIiIjov/bmA7ZkMpmUO547dw6enp7o0aMHDhw4gEuXLmHq1KkKuWdJfZQ1fwsLC4O/vz+8vb1x7NgxxMbGYtiwYQXOWRrq6uo4fvw4Dh8+jIYNG2LFihWws7NDcnJyicfmzxczMjIAAOvXr1fIFa9evYrz588DAJycnJCcnIzZs2fjxYsXGDRoED755BMAxee3hWGuSUREVPlweYRK7MGDB0hMTMT69evRrl07AMCvv/5a5n4WLVqEP//8E6dPn4abmxtCQkIwbNiwQts6OTlh165dsLS0hIZG4V9empqayMnJKbC9R48eqFq1KtasWYMjR47gzJkzpY5RR0cHvXr1Qq9evTBu3Dg0aNAAcXFxcHBwQG5uLk6fPi0tj5Cfvb09du3aBSGEVLCOjIyEnp4e6tatW+T5SjPO/LS0tKClpVXq8RARERFVRL/99hssLCwwdepUadvNmzfL1IeNjQ10dHQQERGBESNGlNg+MjISbdq0kZZsAIr/hFdJZDIZXFxc4OLigunTp8PCwgJ79uzBhAkTisxj31SrVi3Url0bf/31Fzw9PYtsp6+vD3d3d7i7u+OTTz5Bt27d8PDhQ1SrVq3I/NbJyalAP8w1iYiIKh/OtK3EjIyMUL16daxbtw7Xr1/HL7/8ggkTJpSpj0uXLmH69OnYsGEDXFxcsGTJEowfPx5//fVXoe3HjRuHhw8fwsPDA9HR0bhx4waOHj2KYcOGSQmupaUloqKikJKSgn///VeaVaGurg4vLy9MmTIFNjY2cHZ2LlWMoaGh2LhxI65evYq//voLW7duhY6ODiwsLGBpaYmhQ4di+PDh2Lt3L5KTk3Hq1CnpwRRjx47FrVu38OWXX+LPP//Evn37EBQUhAkTJkjr2b7tOImIiIg+NDY2NkhNTUVYWBhu3LiB5cuXY8+ePWXqQ1tbGwEBAfj666+xZcsW3LhxA+fPn8fGjRuLPGdMTAyOHj2Ka9euITAwsMiHqJUkKioK8+bNQ0xMDFJTU7F7927cv38f9vb2AF7nsVeuXEFiYiL+/fffIme+Aq+fFTF//nwsX74c165dQ1xcHEJCQrBkyRIAwJIlS7Bjxw78+eefuHbtGnbu3AkTExMYGhoWm98SERHRh4FF20pMTU0NYWFhuHjxIho3boyvvvoKixYtKvXxL1++xOeffw4vLy/06tULADBq1Ch06tQJgwcPLrQ4Wbt2bURGRiInJwddu3aFg4MD/Pz8YGhoKBVB/f39oa6ujoYNG8LY2FhhvTFvb2+8evWqyJm8hTE0NMT69evh4uKCJk2a4MSJE/j5559RvXp1AMCaNWvwySefYOzYsWjQoAFGjhyJZ8+eAQDq1KmDQ4cO4cKFC3B0dMSYMWPg7e2t8ACNwpRmnEREREQfmt69e+Orr76Cj48PmjZtit9++w2BgYFl7icwMBATJ07E9OnTYW9vD3d3d4V1c/MbPXo0+vfvD3d3d7Ru3RoPHjxQmHVbFvr6+jhz5gx69OgBW1tbTJs2DYsXL0b37t0BACNHjoSdnR1atGgBY2NjREZGFtnXiBEjsGHDBoSEhMDBwQEdOnRAaGgorKysAAB6enpYuHAhWrRogZYtWyIlJQWHDh2CmppaifktERERVX4yIYRQdhBEec6ePYsuXbrg1q1bqFWrlrLDKTdPnjyBgYEBHj9+DH19/f/svJaTD5a6bcqCnuUYCRERkepS1s9povcl72vYzC8calolPyNCVTEfJSKiyqi0uSbXtCWVkJmZifv372PGjBkYOHBgpS7YEhERERERERERFYef4yaVsGPHDlhYWCA9PR0LFy5U2Ldt2zbI5fJCX40aNVJSxERERERU0aSmphaZV8rlcoVlu4iIiIiUiTNtSSV4eXnBy8ur0H29e/dG69atC91XpUqVcoyKiIiIiCqT2rVrIzY2ttj9RERERKqARVtSeXp6etDT01N2GERERERUwWloaMDa2lrZYRARERGViMsjEBEREREREREREakQFm2JiIiIiIiIiIiIVAiLtkREREREREREREQqhEVbIiIiIiIiIiIiIhXCoi0RERERERERERGRCtFQdgBE9N9JWdBT2SEQERER0X/k6kw36OvrKzsMIiIiegucaUtERERERERERESkQli0JSIiIiIiIiIiIlIhLNoSERERERERERERqRAWbYmIiIiIiIiIiIhUCIu2RERERERERERERCqERVsiIiIiIiIiIiIiFaKh7ACI6P2znHzwnftIWdDzPURCRERERMrSOOgo1LR0lR1GmTEPJSIi4kxbIiIiIiIiIiIiIpXCoi0RERERERERERGRCmHRloiIiIiIiIiIiEiFsGhLREREREREREREpEJYtCUiIiIiIiIiIiJSISzaEhEREREREREREakQFm2JiIiIiIiIiIiIVAiLtkREREREREREREQqhEVbIiIiIiIiIiIiIhXCoq2K6tixI/z8/P6z86WkpEAmkyE2NhYAcOrUKchkMqSnp/9nMRARERHR/7O0tMSyZcvKrf/3nW96eXmhb9++762/tyGTybB3795Sty/va8ycmoiIiN6WhrIDINXUpk0bpKWlwcDAQNmhEBEREVE52L17N6pUqaLsMN7KjBkzsHfvXmnCQZ60tDQYGRmVup/o6GhUrVpVei+TybBnzx6lF5+JiIiIWLSlQmlqasLExETZYaicV69eQVNTU9lhEBEREb2zatWqKTuE966s+auxsXE5RfL2mG8SERERwOURKoRHjx5hyJAhMDIygq6uLrp3746kpCRpf2hoKAwNDXH06FHY29tDLpejW7duSEtLU+hnw4YNsLe3h7a2Nho0aIDVq1cXec43P8r1Ps7x6tUr+Pj4wNTUFNra2rCwsMD8+fMBAEIIzJgxA+bm5tDS0kLt2rXh6+tbquuzevVq2NjYQFtbG7Vq1cInn3wi7cvNzcXChQthbW0NLS0tmJubY+7cudL+uLg4dO7cGTo6OqhevTpGjRqFjIwMaX/ex/zmzp2L2rVrw87ODgBw69YtDBo0CIaGhqhWrRr69OmDlJSUUsVLREREBLxensDHxwc+Pj4wMDBAjRo1EBgYCCGE1Ob58+cYPnw4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xJw5c5QdDhEREX0guDwCqbSzZ89CLpcX+SIiIiL6UEVGRsLU1BTR0dH4/vvvlR2OJDU1tdj8LTU1VdkhlomPjw+aN2+Ojh07FlgaYcyYMUWOc8yYMUqKmIiIiCoDLo9AKu3Fixe4c+dOkfutra3/w2jeHy6PQEREpLr+q+URKqvs7GykpKQUud/S0hIaGpXjA3/37t3DkydPCt2nr6+PmjVr/scRvcblEYiIiFQXl0egSkFHR6fCFmaJiIiIPkQaGhofTP5Ws2ZNpRVmiYiIqHLj8ghEREREREREREREKoRFWyIiIiIiIiIiIiIVwqItERERERERERERkQph0ZaIiIiIiIiIiIhIhfBBZESVEJ+4S0RERERXZ7oV+1RqIiIiUl2caUtERERERERERESkQli0JSIiIiIiIiIiIlIhLNoSERERERERERERqRAWbYmIiIiIiIiIiIhUCIu2RERERERERERERCqERVsiIiIiIiIiIiIiFcKiLREREREREREREZEKYdGWiIiIiIiIiIiISIWwaEtERERERERERESkQli0JSIiIiIiIiIiIlIhLNoSERERERERERERqRAWbYmIiIiIiIiIiIhUCIu2RERERERERERERCqERVsiIiIiIiIiIiIiFcKiLREREREREREREZEKYdGWiIiIiIiIiIiISIWwaEtERERERERERESkQjSUHQDRh0gIAQB48uSJkiMhIiKiN+X9fM77eU1U0TDXJCIiUl2lzTVZtCVSgqdPnwIAzMzMlBwJERERFeXp06cwMDBQdhhEZfbgwQMAzDWJiIhUWUm5pkxwCgHRfy43Nxd///039PT0IJPJlB1OAU+ePIGZmRlu3boFfX19ZYdTrj6ksQIcb2X2IY0V+LDG+yGNFVCN8Qoh8PTpU9SuXRtqalxNjCqe9PR0GBkZITU19YP5w4Mq/L/jv/ShjRf48Mb8oY0X+PDGzPFWfkWNubS5JmfaEimBmpoa6tatq+wwSqSvr//B/M/0QxorwPFWZh/SWIEPa7wf0lgB5Y/3Qyl0UeWU9wuggYHBB/X/DUD5/+/4r31o4wU+vDF/aOMFPrwxc7yVX2FjLk2uyakDRERERERERERERCqERVsiIiIiIiIiIiIiFcKiLREVoKWlhaCgIGhpaSk7lHL3IY0V4Hgrsw9prMCHNd4PaazAhzdeovLwIX4f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",
      "text/plain": [
       "<Figure size 1400x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "importance_compare = (\n",
    "    perm_importance_df.merge(weight_importance_agg, on=\"feature\", how=\"outer\")\n",
    "    .fillna(0.0)\n",
    ")\n",
    "\n",
    "importance_compare[\"rank_permutation\"] = (\n",
    "    importance_compare[\"permutation_importance_mean\"]\n",
    "    .rank(ascending=False, method=\"min\")\n",
    ")\n",
    "\n",
    "importance_compare[\"rank_weight\"] = (\n",
    "    importance_compare[\"processed_weight_importance\"]\n",
    "    .rank(ascending=False, method=\"min\")\n",
    ")\n",
    "\n",
    "importance_compare[\"rank_mean\"] = (\n",
    "    importance_compare[[\"rank_permutation\", \"rank_weight\"]].mean(axis=1)\n",
    ")\n",
    "\n",
    "importance_compare = importance_compare.sort_values(\n",
    "    [\"rank_mean\", \"permutation_importance_mean\", \"processed_weight_importance\"],\n",
    "    ascending=[True, False, False]\n",
    ").reset_index(drop=True)\n",
    "\n",
    "top_features = importance_compare.head(10)[\"feature\"].tolist()\n",
    "\n",
    "display(importance_compare.head(15))\n",
    "\n",
    "fig, axes = plt.subplots(1, 2, figsize=(14, 5))\n",
    "\n",
    "top_perm = perm_importance_df.head(10).sort_values(\"permutation_importance_mean\")\n",
    "axes[0].barh(top_perm[\"feature\"], top_perm[\"permutation_importance_mean\"])\n",
    "axes[0].set_title(\"Топ-10: перестановочная важность\")\n",
    "axes[0].set_xlabel(\"Среднее снижение метрики R²\")\n",
    "\n",
    "top_weight = weight_importance_agg.head(10).sort_values(\"processed_weight_importance\")\n",
    "axes[1].barh(top_weight[\"feature\"], top_weight[\"processed_weight_importance\"])\n",
    "axes[1].set_title(\"Топ-10: весовая важность нейросети\")\n",
    "axes[1].set_xlabel(\"Агрегированная абсолютная важность\")\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "450676e0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=== КЛЮЧЕВАЯ ИНФОРМАЦИЯ ДЛЯ ВЫВОДА ===\n",
      "Зависимая переменная: depression_score\n",
      "\n",
      "Число исходных признаков: 20\n",
      "Число признаков после кодирования: 32\n",
      "Архитектура нейросети: (64, 32)\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>split</th>\n",
       "      <th>r2</th>\n",
       "      <th>rmse</th>\n",
       "      <th>mae</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>train</td>\n",
       "      <td>-0.011625</td>\n",
       "      <td>5.737110</td>\n",
       "      <td>4.905400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>validation</td>\n",
       "      <td>-0.088167</td>\n",
       "      <td>5.904761</td>\n",
       "      <td>5.049380</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>test</td>\n",
       "      <td>-0.046700</td>\n",
       "      <td>5.474208</td>\n",
       "      <td>4.622321</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        split        r2      rmse       mae\n",
       "0       train -0.011625  5.737110  4.905400\n",
       "1  validation -0.088167  5.904761  5.049380\n",
       "2        test -0.046700  5.474208  4.622321"
      ]
     },
     "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>feature</th>\n",
       "      <th>permutation_importance_mean</th>\n",
       "      <th>permutation_importance_std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>meditation</td>\n",
       "      <td>0.017952</td>\n",
       "      <td>0.011408</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>family_history_mental_illness</td>\n",
       "      <td>0.015438</td>\n",
       "      <td>0.008452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>life_satisfaction_score</td>\n",
       "      <td>0.012538</td>\n",
       "      <td>0.011454</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>financial_stress</td>\n",
       "      <td>0.012181</td>\n",
       "      <td>0.011527</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>stress_level</td>\n",
       "      <td>0.009603</td>\n",
       "      <td>0.007648</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>social_support_score</td>\n",
       "      <td>0.006093</td>\n",
       "      <td>0.005990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>substance_use</td>\n",
       "      <td>0.001832</td>\n",
       "      <td>0.002341</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>sleep_hours</td>\n",
       "      <td>0.001652</td>\n",
       "      <td>0.006831</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>anxiety_score</td>\n",
       "      <td>-0.000449</td>\n",
       "      <td>0.005026</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>loneliness_score</td>\n",
       "      <td>-0.000712</td>\n",
       "      <td>0.005621</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                         feature  permutation_importance_mean  \\\n",
       "0                     meditation                     0.017952   \n",
       "1  family_history_mental_illness                     0.015438   \n",
       "2        life_satisfaction_score                     0.012538   \n",
       "3               financial_stress                     0.012181   \n",
       "4                   stress_level                     0.009603   \n",
       "5           social_support_score                     0.006093   \n",
       "6                  substance_use                     0.001832   \n",
       "7                    sleep_hours                     0.001652   \n",
       "8                  anxiety_score                    -0.000449   \n",
       "9               loneliness_score                    -0.000712   \n",
       "\n",
       "   permutation_importance_std  \n",
       "0                    0.011408  \n",
       "1                    0.008452  \n",
       "2                    0.011454  \n",
       "3                    0.011527  \n",
       "4                    0.007648  \n",
       "5                    0.005990  \n",
       "6                    0.002341  \n",
       "7                    0.006831  \n",
       "8                    0.005026  \n",
       "9                    0.005621  "
      ]
     },
     "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>feature</th>\n",
       "      <th>processed_weight_importance</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>education_level</td>\n",
       "      <td>7.715211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>gender</td>\n",
       "      <td>6.837222</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>employment_status</td>\n",
       "      <td>6.235602</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>medication_use</td>\n",
       "      <td>3.507893</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>substance_use</td>\n",
       "      <td>1.757793</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>meditation</td>\n",
       "      <td>1.303386</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>life_satisfaction_score</td>\n",
       "      <td>0.871859</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>therapy</td>\n",
       "      <td>0.816672</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>financial_stress</td>\n",
       "      <td>0.796036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>physical_activity_hrs</td>\n",
       "      <td>0.776957</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   feature  processed_weight_importance\n",
       "0          education_level                     7.715211\n",
       "1                   gender                     6.837222\n",
       "2        employment_status                     6.235602\n",
       "3           medication_use                     3.507893\n",
       "4            substance_use                     1.757793\n",
       "5               meditation                     1.303386\n",
       "6  life_satisfaction_score                     0.871859\n",
       "7                  therapy                     0.816672\n",
       "8         financial_stress                     0.796036\n",
       "9    physical_activity_hrs                     0.776957"
      ]
     },
     "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>feature</th>\n",
       "      <th>permutation_importance_mean</th>\n",
       "      <th>permutation_importance_std</th>\n",
       "      <th>processed_weight_importance</th>\n",
       "      <th>rank_permutation</th>\n",
       "      <th>rank_weight</th>\n",
       "      <th>rank_mean</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>meditation</td>\n",
       "      <td>0.017952</td>\n",
       "      <td>0.011408</td>\n",
       "      <td>1.303386</td>\n",
       "      <td>1.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>3.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>life_satisfaction_score</td>\n",
       "      <td>0.012538</td>\n",
       "      <td>0.011454</td>\n",
       "      <td>0.871859</td>\n",
       "      <td>3.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>substance_use</td>\n",
       "      <td>0.001832</td>\n",
       "      <td>0.002341</td>\n",
       "      <td>1.757793</td>\n",
       "      <td>7.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>financial_stress</td>\n",
       "      <td>0.012181</td>\n",
       "      <td>0.011527</td>\n",
       "      <td>0.796036</td>\n",
       "      <td>4.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>6.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>gender</td>\n",
       "      <td>-0.001360</td>\n",
       "      <td>0.004510</td>\n",
       "      <td>6.837222</td>\n",
       "      <td>11.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>education_level</td>\n",
       "      <td>-0.001471</td>\n",
       "      <td>0.005205</td>\n",
       "      <td>7.715211</td>\n",
       "      <td>12.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>6.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>family_history_mental_illness</td>\n",
       "      <td>0.015438</td>\n",
       "      <td>0.008452</td>\n",
       "      <td>0.566916</td>\n",
       "      <td>2.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>employment_status</td>\n",
       "      <td>-0.003181</td>\n",
       "      <td>0.005398</td>\n",
       "      <td>6.235602</td>\n",
       "      <td>13.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>8.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>stress_level</td>\n",
       "      <td>0.009603</td>\n",
       "      <td>0.007648</td>\n",
       "      <td>0.214637</td>\n",
       "      <td>5.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>9.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>medication_use</td>\n",
       "      <td>-0.006873</td>\n",
       "      <td>0.003579</td>\n",
       "      <td>3.507893</td>\n",
       "      <td>17.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>10.5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                         feature  permutation_importance_mean  \\\n",
       "0                     meditation                     0.017952   \n",
       "1        life_satisfaction_score                     0.012538   \n",
       "2                  substance_use                     0.001832   \n",
       "3               financial_stress                     0.012181   \n",
       "4                         gender                    -0.001360   \n",
       "5                education_level                    -0.001471   \n",
       "6  family_history_mental_illness                     0.015438   \n",
       "7              employment_status                    -0.003181   \n",
       "8                   stress_level                     0.009603   \n",
       "9                 medication_use                    -0.006873   \n",
       "\n",
       "   permutation_importance_std  processed_weight_importance  rank_permutation  \\\n",
       "0                    0.011408                     1.303386               1.0   \n",
       "1                    0.011454                     0.871859               3.0   \n",
       "2                    0.002341                     1.757793               7.0   \n",
       "3                    0.011527                     0.796036               4.0   \n",
       "4                    0.004510                     6.837222              11.0   \n",
       "5                    0.005205                     7.715211              12.0   \n",
       "6                    0.008452                     0.566916               2.0   \n",
       "7                    0.005398                     6.235602              13.0   \n",
       "8                    0.007648                     0.214637               5.0   \n",
       "9                    0.003579                     3.507893              17.0   \n",
       "\n",
       "   rank_weight  rank_mean  \n",
       "0          6.0        3.5  \n",
       "1          7.0        5.0  \n",
       "2          5.0        6.0  \n",
       "3          9.0        6.5  \n",
       "4          2.0        6.5  \n",
       "5          1.0        6.5  \n",
       "6         12.0        7.0  \n",
       "7          3.0        8.0  \n",
       "8         14.0        9.5  \n",
       "9          4.0       10.5  "
      ]
     },
     "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",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>22</td>\n",
       "      <td>13.813608</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>23</td>\n",
       "      <td>13.657418</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>24</td>\n",
       "      <td>13.657630</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>25</td>\n",
       "      <td>13.459483</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>26</td>\n",
       "      <td>13.259018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>27</td>\n",
       "      <td>13.132136</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>28</td>\n",
       "      <td>12.918105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>29</td>\n",
       "      <td>12.711038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>30</td>\n",
       "      <td>12.525272</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>31</td>\n",
       "      <td>12.360238</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    epoch  train_loss\n",
       "21     22   13.813608\n",
       "22     23   13.657418\n",
       "23     24   13.657630\n",
       "24     25   13.459483\n",
       "25     26   13.259018\n",
       "26     27   13.132136\n",
       "27     28   12.918105\n",
       "28     29   12.711038\n",
       "29     30   12.525272\n",
       "30     31   12.360238"
      ]
     },
     "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</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>16.0</td>\n",
       "      <td>10.370736</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>17.0</td>\n",
       "      <td>11.900883</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>11.591006</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>20.0</td>\n",
       "      <td>11.666864</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>9.0</td>\n",
       "      <td>12.241227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>8.0</td>\n",
       "      <td>9.811409</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>4.0</td>\n",
       "      <td>13.755549</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>6.0</td>\n",
       "      <td>11.803514</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>10.0</td>\n",
       "      <td>12.980543</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>12.0</td>\n",
       "      <td>8.291951</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   y_true     y_pred\n",
       "0    16.0  10.370736\n",
       "1    17.0  11.900883\n",
       "2     1.0  11.591006\n",
       "3    20.0  11.666864\n",
       "4     9.0  12.241227\n",
       "5     8.0   9.811409\n",
       "6     4.0  13.755549\n",
       "7     6.0  11.803514\n",
       "8    10.0  12.980543\n",
       "9    12.0   8.291951"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pred_example_df = pd.DataFrame({\n",
    "    \"y_true\": y_test.reset_index(drop=True).head(10),\n",
    "    \"y_pred\": pd.Series(pred_test).head(10)\n",
    "})\n",
    "\n",
    "summary_metrics = metrics_df.set_index(\"split\").copy()\n",
    "\n",
    "print(\"=== КЛЮЧЕВАЯ ИНФОРМАЦИЯ ДЛЯ ВЫВОДА ===\")\n",
    "print(f\"Зависимая переменная: {target_col}\")\n",
    "print()\n",
    "print(f\"Число исходных признаков: {len(feature_cols)}\")\n",
    "print(f\"Число признаков после кодирования: {X_train_processed.shape[1]}\")\n",
    "print(\"Архитектура нейросети:\", model.named_steps[\"regressor\"].hidden_layer_sizes)\n",
    "print()\n",
    "\n",
    "print(\"Метрики модели:\")\n",
    "display(metrics_df)\n",
    "\n",
    "print(\"Топ-10 признаков по перестановочной важности:\")\n",
    "display(perm_importance_df.head(10))\n",
    "\n",
    "print(\"Топ-10 признаков по весовой важности нейросети:\")\n",
    "display(weight_importance_agg.head(10))\n",
    "\n",
    "print(\"Сводный рейтинг важности признаков:\")\n",
    "display(importance_compare.head(10))\n",
    "\n",
    "print(\"Последние эпохи обучения:\")\n",
    "display(loss_curve.tail(10))\n",
    "\n",
    "print(\"Первые 10 фактических и предсказанных значений на тесте:\")\n",
    "display(pred_example_df)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4c728a5e",
   "metadata": {},
   "source": [
    "Итог\n",
    "\n",
    "Зависимой переменной выбрана depression_score. Построена нейросеть с архитектурой (64, 32), однако качество регрессии низкое: на тестовой выборке R² = -0.047, RMSE ≈ 5.47, MAE ≈ 4.62, то есть модель слабо описывает вариацию целевой переменной.\n",
    "\n",
    "По перестановочной важности наиболее значимыми признаками оказались meditation, family_history_mental_illness, life_satisfaction_score, financial_stress, stress_level. По весовой важности нейросети лидируют education_level, gender, employment_status, medication_use, substance_use. Сводный рейтинг выделяет прежде всего meditation, life_satisfaction_score, substance_use, financial_stress, gender, education_level.\n",
    "\n",
    "Следовательно, наиболее важный вклад в прогноз вносят поведенческие, социальные и демографические признаки, однако сама регрессионная модель имеет низкое качество, поэтому интерпретацию важности признаков следует считать ориентировочной."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
