1122 lines
191 KiB
Plaintext
1122 lines
191 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Вариант 4. Данные по инсультам"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Index(['id', 'gender', 'age', 'hypertension', 'heart_disease', 'ever_married',\n",
|
||
" 'work_type', 'Residence_type', 'avg_glucose_level', 'bmi',\n",
|
||
" 'smoking_status', 'stroke'],\n",
|
||
" dtype='object')\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>id</th>\n",
|
||
" <th>gender</th>\n",
|
||
" <th>age</th>\n",
|
||
" <th>hypertension</th>\n",
|
||
" <th>heart_disease</th>\n",
|
||
" <th>ever_married</th>\n",
|
||
" <th>work_type</th>\n",
|
||
" <th>Residence_type</th>\n",
|
||
" <th>avg_glucose_level</th>\n",
|
||
" <th>bmi</th>\n",
|
||
" <th>smoking_status</th>\n",
|
||
" <th>stroke</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>9046</td>\n",
|
||
" <td>Male</td>\n",
|
||
" <td>67.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>Yes</td>\n",
|
||
" <td>Private</td>\n",
|
||
" <td>Urban</td>\n",
|
||
" <td>228.69</td>\n",
|
||
" <td>36.6</td>\n",
|
||
" <td>formerly smoked</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>51676</td>\n",
|
||
" <td>Female</td>\n",
|
||
" <td>61.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>Yes</td>\n",
|
||
" <td>Self-employed</td>\n",
|
||
" <td>Rural</td>\n",
|
||
" <td>202.21</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>never smoked</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>31112</td>\n",
|
||
" <td>Male</td>\n",
|
||
" <td>80.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>Yes</td>\n",
|
||
" <td>Private</td>\n",
|
||
" <td>Rural</td>\n",
|
||
" <td>105.92</td>\n",
|
||
" <td>32.5</td>\n",
|
||
" <td>never smoked</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>60182</td>\n",
|
||
" <td>Female</td>\n",
|
||
" <td>49.0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>Yes</td>\n",
|
||
" <td>Private</td>\n",
|
||
" <td>Urban</td>\n",
|
||
" <td>171.23</td>\n",
|
||
" <td>34.4</td>\n",
|
||
" <td>smokes</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>1665</td>\n",
|
||
" <td>Female</td>\n",
|
||
" <td>79.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>Yes</td>\n",
|
||
" <td>Self-employed</td>\n",
|
||
" <td>Rural</td>\n",
|
||
" <td>174.12</td>\n",
|
||
" <td>24.0</td>\n",
|
||
" <td>never smoked</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" id gender age hypertension heart_disease ever_married \\\n",
|
||
"0 9046 Male 67.0 0 1 Yes \n",
|
||
"1 51676 Female 61.0 0 0 Yes \n",
|
||
"2 31112 Male 80.0 0 1 Yes \n",
|
||
"3 60182 Female 49.0 0 0 Yes \n",
|
||
"4 1665 Female 79.0 1 0 Yes \n",
|
||
"\n",
|
||
" work_type Residence_type avg_glucose_level bmi smoking_status \\\n",
|
||
"0 Private Urban 228.69 36.6 formerly smoked \n",
|
||
"1 Self-employed Rural 202.21 NaN never smoked \n",
|
||
"2 Private Rural 105.92 32.5 never smoked \n",
|
||
"3 Private Urban 171.23 34.4 smokes \n",
|
||
"4 Self-employed Rural 174.12 24.0 never smoked \n",
|
||
"\n",
|
||
" stroke \n",
|
||
"0 1 \n",
|
||
"1 1 \n",
|
||
"2 1 \n",
|
||
"3 1 \n",
|
||
"4 1 "
|
||
]
|
||
},
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import seaborn as sns\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"from imblearn.over_sampling import RandomOverSampler\n",
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"import featuretools as ft\n",
|
||
"import time\n",
|
||
"from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score\n",
|
||
"from sklearn.ensemble import RandomForestClassifier\n",
|
||
"from sklearn.model_selection import cross_val_score\n",
|
||
"\n",
|
||
"df = pd.read_csv(\"../data/healthcare-dataset-stroke-data.csv\")\n",
|
||
"\n",
|
||
"print(df.columns)\n",
|
||
"df.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Бизнес цели и цели технического проекта.\n",
|
||
"## Бизнес цели:\n",
|
||
"### 1. Предсказание инсульта: Разработать систему, которая сможет предсказать вероятность инсульта у пациентов на основе их медицинских и социальных данных. Это может помочь медицинским учреждениям и специалистам в более раннем выявлении пациентов с высоким риском.\n",
|
||
"### 2. Снижение затрат на лечение: Предупреждение инсультов у пациентов позволит снизить затраты на лечение и реабилитацию. Это также поможет улучшить качество медицинских услуг и повысить удовлетворенность пациентов.\n",
|
||
"### 3. Повышение эффективности профилактики: Выявление факторов риска инсульта на ранней стадии может способствовать более эффективному проведению профилактических мероприятий.\n",
|
||
"## Цели технического проекта:\n",
|
||
"### 1. Создание и обучение модели машинного обучения: Разработка модели, способной предсказать вероятность инсульта на основе данных о пациентах (например, возраст, уровень глюкозы, наличие сердечно-сосудистых заболеваний, тип работы, индекс массы тела и т.д.).\n",
|
||
"### 2. Анализ и обработка данных: Провести предобработку данных (очистка, заполнение пропущенных значений, кодирование категориальных признаков), чтобы улучшить качество и надежность модели.\n",
|
||
"### 3. Оценка модели: Использовать метрики, такие как точность, полнота и F1-мера, чтобы оценить эффективность модели и минимизировать риск ложных положительных и ложных отрицательных предсказаний."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"id 0\n",
|
||
"gender 0\n",
|
||
"age 0\n",
|
||
"hypertension 0\n",
|
||
"heart_disease 0\n",
|
||
"ever_married 0\n",
|
||
"work_type 0\n",
|
||
"Residence_type 0\n",
|
||
"avg_glucose_level 0\n",
|
||
"bmi 201\n",
|
||
"smoking_status 0\n",
|
||
"stroke 0\n",
|
||
"dtype: int64\n",
|
||
"\n",
|
||
"id False\n",
|
||
"gender False\n",
|
||
"age False\n",
|
||
"hypertension False\n",
|
||
"heart_disease False\n",
|
||
"ever_married False\n",
|
||
"work_type False\n",
|
||
"Residence_type False\n",
|
||
"avg_glucose_level False\n",
|
||
"bmi True\n",
|
||
"smoking_status False\n",
|
||
"stroke False\n",
|
||
"dtype: bool\n",
|
||
"\n",
|
||
"bmi процент пустых значений: %3.93\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(df.isnull().sum())\n",
|
||
"print()\n",
|
||
"\n",
|
||
"print(df.isnull().any())\n",
|
||
"print()\n",
|
||
"\n",
|
||
"for i in df.columns:\n",
|
||
" null_rate = df[i].isnull().sum() / len(df) * 100\n",
|
||
" if null_rate > 0:\n",
|
||
" print(f\"{i} процент пустых значений: %{null_rate:.2f}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Видим пустые значения в bmi, заменяем их"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Количество пустых значений в каждом столбце после замены:\n",
|
||
"id 0\n",
|
||
"gender 0\n",
|
||
"age 0\n",
|
||
"hypertension 0\n",
|
||
"heart_disease 0\n",
|
||
"ever_married 0\n",
|
||
"work_type 0\n",
|
||
"Residence_type 0\n",
|
||
"avg_glucose_level 0\n",
|
||
"bmi 0\n",
|
||
"smoking_status 0\n",
|
||
"stroke 0\n",
|
||
"dtype: int64\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"df[\"bmi\"] = df[\"bmi\"].fillna(df[\"bmi\"].median())\n",
|
||
"\n",
|
||
"missing_values = df.isnull().sum()\n",
|
||
"\n",
|
||
"print(\"Количество пустых значений в каждом столбце после замены:\")\n",
|
||
"print(missing_values)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Index(['gender', 'age', 'hypertension', 'heart_disease', 'ever_married',\n",
|
||
" 'work_type', 'Residence_type', 'avg_glucose_level', 'bmi',\n",
|
||
" 'smoking_status', 'stroke'],\n",
|
||
" dtype='object')\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"df = df.drop('id', axis = 1)\n",
|
||
"print(df.columns)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Создаем выборки"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Размер обучающей выборки: (2503, 10)\n",
|
||
"Размер контрольной выборки: (1074, 10)\n",
|
||
"Размер тестовой выборки: (1533, 10)\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Разделим данные на признак (X) и переменую (Y)\n",
|
||
"# Начнем со stroke\n",
|
||
"X = df.drop(columns=['stroke'])\n",
|
||
"y = df['stroke']\n",
|
||
"\n",
|
||
"# Разбиваем на обучающую и тестовую выборки\n",
|
||
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)\n",
|
||
"\n",
|
||
"# Разбиваем на обучающую и контрольную выборки\n",
|
||
"X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.3)\n",
|
||
"\n",
|
||
"print(\"Размер обучающей выборки: \", X_train.shape)\n",
|
||
"print(\"Размер контрольной выборки: \", X_val.shape)\n",
|
||
"print(\"Размер тестовой выборки: \", X_test.shape)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Оценим сбалансированность сборок"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Распределение классов в обучающей выборке:\n",
|
||
"stroke\n",
|
||
"0 0.951658\n",
|
||
"1 0.048342\n",
|
||
"Name: proportion, dtype: float64\n",
|
||
"\n",
|
||
"Распределение классов в контрольной выборке:\n",
|
||
"stroke\n",
|
||
"0 0.947858\n",
|
||
"1 0.052142\n",
|
||
"Name: proportion, dtype: float64\n",
|
||
"\n",
|
||
"Распределение классов в тестовой выборке:\n",
|
||
"stroke\n",
|
||
"0 0.953033\n",
|
||
"1 0.046967\n",
|
||
"Name: proportion, dtype: float64\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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yx8+fNipdi8vL7Vv3z7P7d57773y8vLSqFGjnOo3xujIkSP22xcuXNCnn36qBg0a5DlFRpcuXZSdna0XXnjB6b4LFy7Ypz+5FikpKfr888/1yiuv5Bpid+nSRfv379f06dOd7jt79qxOnz591ds9e/asJDlM/5CbCxcuaOrUqfbbWVlZmjp1qkJCQhQTEyNJ9rPnL33M165dq5SUlCuuPz093amWzz//XGfPnnUKU13Jzs7W8OHD1b1791y/HZDD399fDRs2VFxcnOLi4pym1bgRcr6t4OobBdLF/4U5c+bolVde0TPPPKOuXbvqueeeswfAVyu/z2VedbVs2VK+vr568803Hb7xMXv2bKWlpdn/7+rVq6fQ0FBNmTLFYXtfffWVtm3bpoSEBKd1X/raYozRpEmT5O3t7TSVSGxsrKSLU+WMGTNGs2bN0tKlS+33e3l5ycPDw2Eapt27d7v8EOlGP8YAAADuxhndAADgH6t9+/YaPXq0evfurcaNG2vz5s2aPXu2U7DXs2dPffDBBxoyZIjWrVun2NhYnT59WsuXL1f//v3VsWPHa9p+8eLFdeedd6p3795KS0vT+PHjVbFiRfXp00fSxbl733nnHbVt21bVq1dX7969VapUKe3fv18rV65UkSJF9MUXX+j06dOaPHmy3nzzTVWuXFmrVq2ybyMnIP/ll1+UkpKiRo0aqUKFCnrxxRc1bNgw7d69W506dVLhwoWVmpqq+fPnq2/fvvrPf/6j5cuX6/nnn9cvv/yiL774Is99adq0qfr166fk5GRt2rRJrVu3lre3t3bs2KG5c+dqwoQJuu+++67pcVq6dKlatWqV51ntDzzwgD755BM98sgjWrlypZo0aaLs7Gz99ttv+uSTT7RkyZIrnumelpZmnxokPT1dU6dOVaFCha74wYH0/8Hj7t27VblyZc2ZM0ebNm3StGnT7N8CaN++vT777DPdc889SkhIUGpqqqZMmaJq1ao5fJAxevRo7d+/XzVq1JCvr682btyomTNnqlatWqpVq5bOnDmjpKQkvfXWW2rcuLFat259xfr27dsnHx8f+4VOb7bt27dr8eLFstls2rp1q8aOHav69evbLwx7qUOHDunRRx9V8+bN7VOjTJo0SStXrlSvXr303XffXXF6jV27dtmfy/3792vSpEkqUqSIU3B8NXUVL15czz33nJ5//nnFx8erY8eO2rVrlyZNmqTatWvr4YcflnRxjvsxY8aod+/eatq0qbp166a0tDRNmDBBUVFRGjx4sMN6/fz8tHjxYiUmJqphw4b66quvtHDhQg0fPjzPeez79u2rjz76SI888oi2bNmigIAAJSQkaNy4cWrTpo26d++uQ4cOafLkyapYsaJ++eWXG/oYAwAAFDgGAADgFjNz5kwjyfz444959jt37px58sknTUREhPH39zdNmjQxKSkppmnTpqZp06YOfc+cOWOeffZZU65cOePt7W3Cw8PNfffdZ3bu3GmMMSY1NdVIMmPHjnXaTvXq1R3Wt3LlSiPJ/Pe//zXDhg0zoaGhxt/f3yQkJJg///zTafmffvrJ3HvvvaZEiRLG19fXREZGmi5dupgVK1Y4bPtKP4mJiQ7r/fTTT82dd95pAgMDTWBgoImOjjYDBgww27dvN8YY89hjj5m77rrLLF682KmmpKQk4+pQctq0aSYmJsb4+/ubwoULm5o1a5qnnnrK/PXXX/Y+kZGRJiEhwWnZAQMGOK1TkvHw8DAbNmxwaHf1HGVlZZkxY8aY6tWrG19fX3PbbbeZmJgYM2rUKHPixAmn7V2+vksfq2LFipkmTZqYRYsW5blczrLVq1c369evN40aNTJ+fn4mMjLSTJo0yaGfzWYzL7/8somMjDS+vr6mbt265ssvvzSJiYkmMjLS3m/evHmmfv36pkiRIsbf399UrFjRPPnkk+bw4cPGGGP27dtnypQpYwYNGuRyvySZpKQk++3ExEQjyTzxxBMO/XL+T1JTU/PcP1fPtSQzYMAAp74JCQkO+3L536anp6cpXbq0SUxMNPv27XO5/nvvvdcULlzY7N6922Hdn3/+uZFkxowZk2e9kZGRDtsMDg42rVu3NikpKddVV47Jkyeb6Oho4+3tbcLCwky/fv3MkSNHnPrNmTPH1K1b1/j6+prixYubHj162NedIzEx0QQGBpqdO3ea1q1bm4CAABMWFmaSkpJMdna2U70zZ850WH779u3Gz8/PDB482N727rvvmkqVKhlfX18THR1tZs6cecMfYwAAgILIw5jr+L4tAAAArtqqVavUvHlzzZ0795rPcr7U7t27Va5cOaWmpjrN6Ztj5MiR2r17t8sLEOL6NGvWTOnp6dqyZYu7S4HF9OrVS/PmzXM5NREAAACuDt9HAwAAAAAAAABYGnN0AwAAWFxQUJB69OiR58Uia9WqpZIlS97EqgAAAADg5iHoBgAAsLjg4GD7hfdyc++9996kagAAAADg5mOObgAAAAAAAACApTFHNwAAAAAAAADA0gi6AQAAAAAAAACWRtANAAAAAAAAALA0gm4AAAAAAAAAgKURdAMAAAAAAAAALI2gGwAAAAAAAABgaQTdAAAAAAAAAABLI+gGAAAAAAAAAFgaQTcg6fTp09q7d6+OHTvm7lJwA/G8AgBgXcYYHT16VDt27HB3KQAA3JJsNpvS09O1a9cud5cC3BAE3fjHmjt3rlq2bKnChQsrKChIZcuW1auvvurusnCdeF4BALCukydP6rnnnlOVKlXk4+OjEiVKqHLlytq+fbu7SwMA4JZw8OBBDRo0SJGRkfLx8VFISIiqVaumjIwMd5cGXLdC7i4AuBF+/fVXJScna+XKlUpPT1eJEiXUvHlzDR8+XNWrV3fq/8wzz2jMmDHq2LGjpk+fruDgYHl4eKhy5cpuqB43Cs8rALjfe++9p969e+vHH39UvXr1HO6bPn26+vbtq44dO+rTTz+Vl5eXm6pEQXTkyBE1bdpUe/bs0WOPPaYmTZrIx8dH3t7eioqKcnd5AIDLeHh45KvfypUr1axZs7+3GOTLH3/8oebNm+v8+fN6/PHHdfvtt6tQoULy9/dXYGCgu8sDrhtBNyzvs88+U7du3VS8eHE99NBDKleunHbv3q13331X8+bN08cff6x77rnH3v+bb77RmDFjlJycrGeeecaNleNG4nkFgIJt/vz5evTRRxUbG6uPP/6YkBtOhg4dqgMHDiglJcXliQoAgILlww8/dLj9wQcfaNmyZU7tVatWvZllIQ/9+vWTj4+PfvjhB5UqVcrd5QA3nIcxxri7COBa7dy5U7Vq1VLZsmX17bffKiQkxH5fenq6YmNjtXfvXv3yyy8qX768JOnuu+/W0aNHtWbNGneVjb8BzysAFAyuzuhetWqV2rRpo8qVK2v16tUqWrSom6tEQXPo0CFFRERoypQp6tOnj7vLAQBcg4EDB2ry5MkiZiqYNmzYoHr16mnp0qVq1aqVu8sB/hbM0Q1LGzt2rM6cOaNp06Y5hNySFBwcrKlTp+r06dMOczT/8MMPqlGjhrp27arixYvL399f9evX14IFC+x9Tp06pcDAQD3xxBNO29y3b5+8vLyUnJwsSerVq5fLr9N6eHho5MiR9tt//vmn+vfvrypVqsjf318lSpRQ586dtXv3boflVq1aJQ8PD61atcre9uOPP6pVq1YqXLiwAgMD1axZM61evdphuffee08eHh5av369vS09Pd2pDklq3769U82rV69W586dVbZsWfn6+qpMmTIaPHiwzp4967Rv8+bNU7169VS4cGF5eHjYf1577TWnvq5qzPkJCAhQzZo19c477zj069Wrl4KCgvJc1+X7lZ/nNcehQ4f00EMPKSwsTH5+fqpdu7bef/99hz67d++279Mbb7yhyMhI+fv7q2nTptqyZYtTvZc/nrNmzZKnp6deeeUVe9svv/yiXr16qXz58vLz81N4eLgefPBBHTlyJM99BQAr27Rpkzp27KiIiAgtWbLEZcg9d+5cxcTEyN/fX8HBwfr3v/+t/fv3O/TJbWyYN2+ew7jZrFkzh7HG1U8ODw8PDRw4ULNnz1aVKlXk5+enmJgYffvtt07b+emnn9S2bVsVKVJEQUFBatmypX744QeX+5xbDe+9955Dnxo1alzx8cup8XKuxvLXXntNjRs3VokSJeTv76+YmBjNmzfPadlTp07pySefVPny5eXt7e1QY3p6ep71XL5vwcHBSkhIcBobc6s7R84xQc5x0I8//iibzaasrCzVq1dPfn5+KlGihLp166Y9e/Y4Lf/1118rNjZWgYGBKlasmDp27Kht27Y59Bk5cqQ8PDz022+/qUuXLipSpIhKlCihJ554QufOnXOq99LjigsXLqhdu3YqXry4tm7dam+fOXOmWrRoodDQUPn6+qpatWp6++2383zMAAAXZWZmKikpSRUrVrS/53zqqaeUmZnp1HfWrFlq0KCBAgICdNttt+muu+7S0qVLJUlRUVF5jvOXjo+nT5/Wk08+qTJlysjX11dVqlTRa6+95hTGX7q8l5eXSpUqpb59++r48eP2PllZWRoxYoRiYmJUtGhRBQYGKjY2VitXrnSqP+c9Z9myZeXl5WVf95Xe516+f56engoPD9f999/vMB5e+n41NznjYI4ffvhBfn5+2rlzp6pXry5fX1+Fh4erX79+Onr0qNPyV3N8tmvXLsXHxyswMFAlS5bU6NGjHR7jnHovPRY6efKkYmJiVK5cOR04cMDent/jGcAVpi6BpX3xxReKiopSbGys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LpjMzEyHPseOHTNhYWHmwQcftLedPXvWeHp6mn79+jn0zc/7XGOMiYyMNImJiQ5t3bt3NwEBAfbb+XkPnjMOXn67ZcuW5sKFC/b2nDF44sSJxpirPz6TZB577DF7m81mMwkJCcbHx8d+XHHpsZDNZjM9evQwAQEBZu3atU515/d4BnCFqUtgWSdPnpQkFS5cOM9+OfdnZGTY2+rXr6+mTZvab/v7+6t///46ePCg/RPWuLg4lSxZUrNnz7b327Jli3755Rf9+9//treFhobq0KFDysrKyrMOf39/++/nz5/XkSNHVLFiRRUrVszlp7onTpzQoUOHtGzZMsXHxztclKlEiRLq1auXNmzYoLS0tDy3m1+X1nf69Gmlp6ercePGMsbop59+st938uRJeXp6XvUZdpc6duyY0tPTtWvXLr3xxhvy8vJyeD5ypKenKz093enrxbnJz/O6aNEihYeH28/wliRvb289/vjjOnXqlL755huHdXbq1MnhIh0NGjRQw4YNtWjRIqft79q1SwkJCapTp44+/PBDeXo6vsRe+hifO3dO6enpuuOOOyQp35/sA4BV9OrVS3v37lX37t21dOlSh28H5Vi/fr0OHTqk/v37y8/Pz96ekJCg6Ohoh29k5cgZG3J+co4HrlWjRo0UExNjv122bFl17NhRS5YsUXZ2trKzs7V06VJ16tTJfr0PSYqIiFD37t313XffORxjSBe/2pxzRlResrOz7fuR13FEzphx6c/58+ed+l06zhw7dkwnTpxQbGys0xhz8uRJlShR4or15eb8+fNKT0/X4cOHlZKSovnz56tWrVr2M64vr/vIkSOy2Wz5WveAAQMc9qNZs2aKiYmx/y0cOHBAmzZtUq9evVS8eHF7v1q1aqlVq1Yux+fLz7R+7LHHJMll30mTJik5OVlvvvmmOnbs6HT/pbWdOHFC6enpatq0qXbt2qUTJ07kax8B4J9o7ty5qlq1qqKjox3GsxYtWkiSffqPBQsWyGazacSIEU7vp672G7CLFi2Sl5eXHn/8cYf2J598UsYYffXVVw7tZ86cUXp6ug4ePKhPP/1UP//8s1q2bGm/38vLSz4+PpIunqF+9OhRXbhwQfXq1XMYa0+fPi2bzXZdY21mZqbS09PtmcDXX3/tUMvlNR87dizfc6MPGTLE4VvrDzzwgMLCwuxj7bUcn106XVnO9GVZWVlavny5U9+hQ4dq9uzZ+uSTT9SgQQOn+/N7PAO4QtANy8oJsK/0BtdVIB4dHe3UL+drTjlzRXp6eqpHjx5asGCBzpw5I0maPXu2/Pz81LlzZ/tyjRs31rlz5/Tcc89p37599gH7cmfPntWIESPsc4MFBwcrJCREx48fd/nGqFOnTgoLC1NGRoaqVKlyxXqv1549e+xvGoOCghQSEmIPjS+tr1GjRrLZbHriiSe0c+dO+6B6NW6//XaFhISoQoUKmjFjhiZNmuQ0wJ0+fVohISEKCQmRv7+/ypYtqwkTJuS53vw8r3/++acqVarkdNCU0+/PP/90aK9UqZLTOitXruz0uJ8+fVrx8fFKS0vT0aNHXR6EHT16VE888YTCwsLk7++vkJAQlStXTpJ4cwzglnP06FHNmjVL77//vurUqaMnnnjC6bUu5zXX1TgXHR3t9Jp86diQ8/Pggw9eV525vc6fOXNGhw8f1uHDh3XmzJlcx2Kbzaa9e/c6tB8/fjxfc3D+9ttvDmNdlSpV9NFHHzn1e/fdd532O2ee0kt9+eWXuuOOO+Tn56fixYsrJCREb7/9ttPj3qhRI82fP1/z5s3TgQMHlJ6ebj/WyY/vv/9eISEhCg0NVePGjXXhwgXNnTvXaezLqTs4OFj+/v666667HK4lcqmcZXMbyy8dxyXXfzNVq1ZVenq6Tp8+7dB++XNcoUIFeXp6Oo3lX331lX0KM1dzlUrSmjVrFBcXZ58bPCQkRMOHD5fEWA4AedmxY4d+/fVXp/GscuXKki7OaS1dnPbM09PTYdqoa/Xnn3+qZMmSTifH5fbeb+zYsQoJCVFERITuu+8+xcbGasyYMQ593n//fdWqVct+LYmQkBAtXLjQYQwoUaKEKlWqpHfeeUdLly7VoUOHlJ6e7nIu8tx8/PHHCgkJUVhYmFq3bq0yZco4XdtKkpKSkhQSEqLixYsrICBACQkJ2rFjh8t15jbWenl5qVKlSvkaa10dn3l6ejqcDCDJ/rxePtZOnTpVr7/+uiTlmiPk93gGcIU5umFZRYsWVUREhH755Zc8+/3yyy8qVaqUihQpIsnx08Er6dmzp8aOHasFCxaoW7du+uijj9S+fXuHC2l16NBBDz74oMaOHauxY8fmuq7HHntMM2fO1KBBg9SoUSMVLVpUHh4e6tq1q8uznF577TVVqlTJ5dlEN1p2drZatWqlo0eP6umnn1Z0dLQCAwO1f/9+9erVy6G+rl27auPGjZo4caKmTZt2TdubNWuWwsLCdO7cOX399dcaMGCA/Pz81KtXL3sfPz8/ffHFF5IuflgxY8YMDRo0SBEREerSpYvTOq/mef07pKenKzAwUF988YU6deqk5ORkJSUlOfTp0qWLvv/+ew0dOlR16tRRUFCQbDab2rRpk+8z3QDAKsaOHWv/YHjatGm64447NGzYML311lvXvM5Lx4Ycq1evznX+R3c5ePCg4uPjr9gvKipK06dPl3Rx3sw333xTDzzwgMqXL2//xo8kdezY0enCjs8995wOHjxov7169Wp16NBBd911l9566y1FRETI29tbM2fOdArPp02bpm7dujl8cH81atWqZX+TmjOPdrNmzbRx40aFh4c71W2MUWpqqkaPHq327du7fAN+M8fx3M4IXLdunfr06aPAwEC9+OKL6ty5s8Ob/J07d6ply5aKjo7WuHHjVKZMGfn4+GjRokV64403GMsBIA82m001a9bUuHHjXN5fpkyZm1yRswceeEA9e/aUzWbTrl279MILL6h9+/Zavny5PDw8NGvWLPXq1UudOnXS0KFDFRoaKi8vLyUnJ2vnzp0O65ozZ4569OjhdDwQGBiYr1pat26toUOHSpL27dunMWPGqHnz5lq/fr3DmNm3b1917txZ2dnZ2rZtm0aOHKlOnTrp119/dVqnu98zSxcviPnSSy/pxx9/1ODBg9WmTRuHb4RdzfEM4ApBNyytffv2mj59ur777jvdeeedTvevXr1au3fvVr9+/ext5cqV0/bt2536/vbbb5LkcAGjGjVqqG7dupo9e7ZKly6tPXv2aOLEiU7LvvvuuxoxYoR27txpf5PTqlUrhz7z5s1TYmKi/Y2hdPErvZdexflSMTExatq0qYKCgvJd77XavHmzfv/9d73//vvq2bOnvX3ZsmVOfT09PfXaa69p8+bNSk1N1VtvvaW0tDSH6VyupEmTJva627dvr19//VXJyckOQbeXl5fDxSkTEhJUvHhxLV682GXQnd/nNTIyUr/88otsNpvDWd05/SIjIx2Wd/Vm/Pfff3d63AMCArR48WJFR0dr8ODBevnll9WlSxf72QLHjh3TihUrNGrUKI0YMSLP9QPAreDSiyXXr19fAwYM0OTJk9WzZ097iJvzmrt9+3b7V5dzbN++3ek1+fKxQVKu42h+5fY6HxAQoJCQEEkXX+NzG2M8PT0d3pzv27dPJ0+etL/+5yUwMNBhf2JjY1WqVCktXbrUIeguXbq0036PHz/eIej+9NNP5efnpyVLljhMmzJz5kyn7UZFRWnWrFmqWbOmHnzwQXXq1EkffPCB/WJbV3Lbbbc51NOsWTOVLFlSM2fO1LBhw3KtOygoSD169HCYEi1HzjecXP0t/Pbbbw7jeE6/y/32228KDg52ChF27NhhX7908ULfNpvNaSxv1aqV3n77bZ07d04LFixQ3759tWrVKnsw/sUXXygzM1P/+9//VLZsWftyOV+3BwDkrkKFCvapQPKagqRChQqy2WzaunWrw8Udr0VkZKSWL1+ukydPOpzVndt7v/LlyzuMW0WLFlX37t31ww8/qFGjRpo3b57Kly+vzz77zGEfLj/BSZLq1q2r6dOnKzY2VqNHj9Ydd9yhsWPHas2aNfmqPSIiwqGWKlWqqHHjxvaT8HJUqlTJ3i8+Pl5nzpzRs88+6/IC0ZeOtZeegW2z2bRjxw7VrVvX4XHJ7/FZzgcDOWdxSxePpSTnvOLBBx/U8OHD9ddff6latWoaPHiww/HH1RzPAK4wdQksbejQofL391e/fv105MgRh/uOHj2qRx55RAEBAfZPQiWpXbt2Wrdunb7//nt727lz5/T2228rPDzcYZ5O6eKnukuXLtX48eNVokQJtW3b1mUtkZGRatGiheLi4pzejEoX35xfPmfWxIkTlZ2dnev+eXh4qHXr1lqyZIm2bdvmsG/vv/++6tWrp7CwsFyXz6+c+bkurc8Yk+tUIRMnTtTXX3+t2bNnKy4uTk2aNLmu7Z89e/aKX+PKqe3SucQuld/ntV27djp48KDmzJlj73fhwgVNnDhRQUFBTnOFL1iwQPv377ffXrdundauXev0dxASEmL/Ctjo0aNVunRp9enTx6nuy/8Gxo8fn+d+A8Ct4qWXXlJERIT69u2rCxcuSJLq1aun0NBQTZkyxWEc+Oqrr7Rt2zYlJCT87XWlpKQ4zPm4d+9eff7552rdurW8vLzk5eWl1q1b6/PPP3f4+m1aWpo++ugj3XnnnfZvjUkXv2osyemNYX7kfFie21iXFy8vL3l4eDgcV+zevVsLFixw6nvhwgX16NFD1atX1xtvvKG4uDinrxxfjbNnz0rSFcfyvPavbt26Cg8Pd/pbWL16tdavX6/27dtLuvjGv06dOnr//fcdPuTYsmWLli5dqnbt2jmte/LkyQ63c05auHwsb9y4sby8vBQYGKgpU6bo22+/tZ9xf2ndl47lJ06c4M03AORDly5dtH//fofX1Rxnz561TzvVqVMneXp6avTo0U7flMnvHNQ52rVrp+zsbE2aNMmh/Y033pCHh0eu7+0vrUv6//HN1Tiwdu1apaSkOC2bkZGhBx54QB06dNBzzz2nuLg4RUREXFX9edWSm7zG2pYtW8rX11dvvvmmw2M7e/ZspaWl2cfaazk+u/QxNsZo0qRJ8vb2dppXPDY2VpJUsmRJjRkzRrNmzXKYju1qjmcAVzijG5ZWqVIlvf/+++rRo4dq1qyphx56SOXKldPu3bv17rvvKj09Xf/9739VoUIF+zJPPfWUZs+erbZt2+rxxx9XcHCwZs2apa1bt2r27NkqVMjx36J79+566qmnNH/+fD366KPy9va+plrbt2+vDz/8UEWLFlW1atWUkpKi5cuXX/ECFS+88IKWLFmipk2b6rHHHlNAQICmT5+u48ePa968eU79U1JS7HOE51wc648//tDixYvtfQ4fPqyzZ89q8eLFatOmjaKjo1WhQgX95z//0f79+1WkSBF9+umnLufM+vXXX/XUU09p5MiRql+//jU9FgsWLFBwcLB96pLVq1dr0KBBDn2ys7PtNZ88eVIzZ87U6dOn1alTJ5frzO/z2rdvX02dOtV+Mc+oqCjNmzdPa9as0fjx453mb6tYsaLuvPNOPfroo8rMzLR/4PHUU0/lun/+/v6aNm2a4uLi9Pbbb6t///4qUqSI7rrrLr366qs6f/68/Yy91NTUa3oMAcBqChcurIkTJ+ree+/V66+/rqefflre3t4aM2aMevfuraZNm6pbt25KS0vThAkTFBUVpcGDB//tddWoUUPx8fF6/PHH5evra59aZdSoUfY+L774opYtW6Y777xT/fv3V6FChTR16lRlZmbq1VdflXQx+E5KStI777yjrl27upxr+nKnTp2yj3VHjx7Vm2++KW9v72sK+BMSEjRu3Di1adNG3bt316FDhzR58mRVrFjRaZq3UaNGafPmzfrpp5+u6bgmLS1Ns2bNknRx6q6pU6eqUKFC9jfIOfbs2aPFixfbpy556aWXFBkZqbp16zqdSV+oUCG9+uqr6tmzp2JjY9WjRw/7tCilS5fW008/be87duxYtW3bVo0aNdJDDz2ks2fPauLEiSpatKhGjhzpVG9qaqo6dOigNm3aKCUlRbNmzVL37t1Vu3btXPcxPj5e//73v/XUU0/p7rvvVkREhFq3bi0fHx/dfffd6tevn06dOqXp06crNDRUBw4cuOrHEQD+SR544AF98skneuSRR7Ry5Uo1adJE2dnZ+u233/TJJ59oyZIlqlevnipWrKhnn31WL7zwgmJjY3XvvffK19dXP/74o0qWLKnk5OR8b/Puu+9W8+bN9eyzz2r37t2qXbu2li5dqs8//1yDBg1yyAmki9Oezpo1S8YY7dy50z4G1atXT9LF9/SfffaZ7rnnHiUkJCg1NVVTpkxRtWrVdOrUKYd1DRgwQGfPnnU5r3Z+7Nq1yz7W7t+/X5MmTVKRIkWcguPt27dr8eLF9rPgx44dq/r166tUqVJO6yxevLiee+45Pf/884qPj1fHjh21a9cuTZo0SbVr19bDDz8sSVd9fObn56fFixcrMTFRDRs21FdffaWFCxdq+PDh9m/HudK3b1999NFHeuSRR7Rlyxb7HOP5PZ4BXDLALeCXX34x3bp1MxEREcbb29uEh4ebbt26mc2bN7vsv3PnTnPfffeZokWLGj8/P1O/fn2zYMGCXNffrl07I8l8//33+a5JkklKSrLfPnbsmOndu7cJDg42QUFBJj4+3vz2228mMjLSJCYm2vutXLnSSDIrV660t23YsMG0bt3aBAUFmYCAAHPXXXeZb775xmF7M2fONJKu+ifH1q1bTVxcnAkKCjLBwcGmT58+5ueffzaSzMyZM40xxpw7d87UqlXL3HnnnebChQv2ZVNTU40kM3bs2Dwfk8tr9PHxMRUrVjQjRoww586ds/dLTEx06BcUFGRuv/128+GHH+b6+BqT/+c1LS3N/lz4+PiYmjVr2vfR1T69/vrrpkyZMsbX19fExsaan3/+2aFvYmKiiYyMdNpO7969TZEiRcy+ffuMMcbs27fP3HPPPaZYsWKmaNGipnPnzuavv/5yuS8AYFU5r/U//vijy/s7duxoAgICzK5du+xtc+bMMXXr1jW+vr6mePHipkePHvbXzhyJiYkmMDDQaX1z5851Gjdz5LyWX/4an0OSGTBggJk1a5apVKmS8fX1NXXr1nW5ro0bN5r4+Hj7WNy8eXOH44I1a9aYihUrmpEjR5rMzMwr1tG0aVOHsa5YsWKmSZMm5quvvnJZ4+USEhKcxp53333Xvh/R0dFm5syZJikpyWG8X716tfHy8jJTp051WDan3+HDh10+Vleqe9GiRU515/x4eHiY8PBwc++995pt27YZY/7/7yQ1NdVhuU8++cThb6Fbt27mzz//dKpj+fLlpkmTJsbf398UKVLE3H333Wbr1q0u92nr1q3mvvvuM4ULFza33XabGThwoDl79qxTvZePxenp6SYkJMTcc8899rb//e9/platWsbPz89ERUWZMWPGmBkzZrjcFwD4pxkwYIDDmHO5rKwsM2bMGFO9enXj6+trbrvtNhMTE2NGjRplTpw44dB3xowZ9vHgtttuM02bNjXLli1zWqer98+XOnnypBk8eLApWbKk8fb2NpUqVTJjx441NpvNod+Vxi1jjLHZbObll182kZGR9mOGL7/80un94H//+1/j4eFhFi9e7LCN3I5lLhcZGelQT3BwsGndurVJSUmx98k5tsj58fT0NKVLlzaJiYn2Y6jLjwFyTJ482URHRxtvb28TFhZm+vXrZ44cOeLU72qOz3bu3Glat25tAgICTFhYmElKSjLZ2dlO9V5+TLZ9+3bj5+dnBg8ebG/Lz/EMkBsPY67yux/AP9A999yjzZs3648//nB3KTfM7t27Va5cuav++tc/Rc7jM3bsWP3nP/9xdzkAgL+Bh4eHBgwY4PSVZtwaRo4cqVGjRunw4cMOF7oCAAA3Rq9evTRv3jynM9oBd2GObuAKDhw4oIULF+qBBx5wdykAAAAAAAAAXGCObiAXqampWrNmjd555x15e3urX79+7i7phvL391d8fLy7ywAAAAAAAACuG2d0A7n45ptv9MADDyg1NVXvv/++wsPD3V3SDRUWFuZwgUoAAAAAAADAqtw6R/e3336rsWPHasOGDTpw4IDmz5+vTp065bnMqlWrNGTIEP36668qU6aMnnvuOfXq1eum1AsAAAAAAAAAKHjcekb36dOnVbt2bU2ePDlf/VNTU5WQkKDmzZtr06ZNGjRokB5++GEtWbLkb64UAAAAAAAAAFBQufWM7kt5eHhc8Yzup59+WgsXLtSWLVvsbV27dtXx48eZggEAAAAAAAAA/qEsdTHKlJQU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",
|
||
"text/plain": [
|
||
"<Figure size 1800x500 with 3 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"from locale import normalize\n",
|
||
"\n",
|
||
"\n",
|
||
"def analyze_balance(y_train, y_val, y_test, y_name):\n",
|
||
" print(\"Распределение классов в обучающей выборке:\")\n",
|
||
" print(y_train.value_counts(normalize=True))\n",
|
||
"\n",
|
||
" print(\"\\nРаспределение классов в контрольной выборке:\")\n",
|
||
" print(y_val.value_counts(normalize=True))\n",
|
||
"\n",
|
||
" print(\"\\nРаспределение классов в тестовой выборке:\")\n",
|
||
" print(y_test.value_counts(normalize=True))\n",
|
||
"\n",
|
||
" fig, axes = plt.subplots(1, 3, figsize=(18,5), sharey=True)\n",
|
||
" fig.suptitle('Распределение в различных выборках')\n",
|
||
"\n",
|
||
" sns.barplot(x=y_train.value_counts().index, y=y_train.value_counts(normalize=True), ax=axes[0])\n",
|
||
" axes[0].set_title('Обучающая выборка')\n",
|
||
" axes[0].set_xlabel(y_name)\n",
|
||
" axes[0].set_ylabel('Доля')\n",
|
||
"\n",
|
||
" sns.barplot(x=y_val.value_counts().index, y=y_val.value_counts(normalize=True), ax=axes[1])\n",
|
||
" axes[1].set_title('Контрольная выборка')\n",
|
||
" axes[1].set_xlabel(y_name)\n",
|
||
"\n",
|
||
" sns.barplot(x=y_test.value_counts().index, y=y_test.value_counts(normalize=True), ax=axes[2])\n",
|
||
" axes[2].set_title('Тестовая выборка')\n",
|
||
" axes[2].set_xlabel(y_name)\n",
|
||
"\n",
|
||
" plt.show()\n",
|
||
"\n",
|
||
"analyze_balance(y_train, y_val, y_test, 'stroke')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Заметим, что выборки не сбалансированы. Для балансировки будем использовать RandomOverSampler"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Распределение классов в обучающей выборке:\n",
|
||
"stroke\n",
|
||
"0 0.5\n",
|
||
"1 0.5\n",
|
||
"Name: proportion, dtype: float64\n",
|
||
"\n",
|
||
"Распределение классов в контрольной выборке:\n",
|
||
"stroke\n",
|
||
"0 0.5\n",
|
||
"1 0.5\n",
|
||
"Name: proportion, dtype: float64\n",
|
||
"\n",
|
||
"Распределение классов в тестовой выборке:\n",
|
||
"stroke\n",
|
||
"0 0.953033\n",
|
||
"1 0.046967\n",
|
||
"Name: proportion, dtype: float64\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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+UOHDjnV7uXlpXbt2l12u/fee6+8vLw0cuRIp/qNMTp8+LD99vnz5/Xpp5+qfv36l50io3PnzsrJydELL7zgdN/58+ft059ci9TUVH3++ed65ZVX8gyxO3furH379mnatGlO9505c0anTp266u2eOXNGkhymf8jL+fPnNWXKFPvt7OxsTZkyRaGhoYqNjZUk+9nzFz/ma9asUWpq6hXXn5GR4VTL559/rjNnzjiFqa7k5ORo2LBh6tatW57fDsjl7++vBg0aKD4+XvHx8U7TatwIud9WcPWNAunCa2H27Nl65ZVX9Mwzz6hLly567rnn7AHw1crvc3m5ulq0aCFfX1+9+eabDt/4mDVrltLT0+2vu7p16yosLEyTJ0922N5XX32lrVu3KjEx0WndF7+3GGM0ceJEeXt7O00lEhcXJ+nCVDmjR4/WzJkztWTJEvv9Xl5e8vDwcJiGadeuXS7/iXSjH2MAAAB344xuAADwj9WuXTuNGjVKvXr1UqNGjbRp0ybNmjXLKdjr0aOHPvjgAw0ePFhr165VXFycTp06pWXLlqlfv37q0KHDNW2/WLFiuvPOO9WrVy+lp6dr3LhxqlChgnr37i3pwty977zzjtq0aaNq1aqpV69eKlmypPbt26cVK1YoODhYX3zxhU6dOqVJkybpzTffVKVKlbRy5Ur7NnID8l9++UWpqalq2LChypcvrxdffFFDhw7Vrl271LFjRxUuXFhpaWmaN2+e+vTpo//85z9atmyZnn/+ef3yyy/64osvLrsvTZo0Ud++fZWSkqKNGzeqVatW8vb21vbt2zVnzhyNHz9e99133zU9TkuWLFHLli0ve1b7Aw88oE8++USPPPKIVqxYocaNGysnJ0e//fabPvnkEy1evPiKZ7qnp6fbpwbJyMjQlClTVKhQoSv+40D6/+Bx165dqlSpkmbPnq2NGzdq6tSp9m8BtGvXTp999pnuueceJSYmKi0tTZMnT1bVqlUd/pExatQo7du3T9WrV5evr682bNigGTNmqGbNmqpZs6ZOnz6t5ORkvfXWW2rUqJFatWp1xfr27t0rHx8f+4VOb7Zt27Zp0aJFstls2rJli8aMGaN69erZLwx7sYMHD+rRRx9Vs2bN7FOjTJw4UStWrFDPnj313XffXXF6jZ07d9qfy3379mnixIkKDg52Co6vpq5ixYrpueee0/PPP6+EhAR16NBBO3fu1MSJE1WrVi09/PDDki7McT969Gj16tVLTZo0UdeuXZWenq7x48crOjpagwYNclivn5+fFi1apKSkJDVo0EBfffWVFixYoGHDhl12Hvs+ffroo48+0iOPPKLNmzcrICBAiYmJGjt2rFq3bq1u3brp4MGDmjRpkipUqKBffvnlhj7GAAAABY4BAAC4xcyYMcNIMj/++ONl+509e9Y8+eSTJjIy0vj7+5vGjRub1NRU06RJE9OkSROHvqdPnzbPPvusKVu2rPH29jYRERHmvvvuMzt27DDGGJOWlmYkmTFjxjhtp1q1ag7rW7FihZFk/vvf/5qhQ4easLAw4+/vbxITE82ff/7ptPxPP/1k7r33XlO8eHHj6+troqKiTOfOnc3y5csdtn2ln6SkJIf1fvrpp+bOO+80gYGBJjAw0MTExJj+/fubbdu2GWOMeeyxx8xdd91lFi1a5FRTcnKycXUoOXXqVBMbG2v8/f1N4cKFTY0aNcxTTz1l/vrrL3ufqKgok5iY6LRs//79ndYpyXh4eJj169c7tLt6jrKzs83o0aNNtWrVjK+vr7nttttMbGysGTlypDl+/LjT9i5d38WPVdGiRU3jxo3NwoULL7tc7rLVqlUz69atMw0bNjR+fn4mKirKTJw40aGfzWYzL7/8somKijK+vr6mTp065ssvvzRJSUkmKirK3m/u3LmmXr16Jjg42Pj7+5sKFSqYJ5980hw6dMgYY8zevXtN6dKlzcCBA13ulySTnJxsv52UlGQkmSeeeMKhX+7rJC0t7bL75+q5lmT69+/v1DcxMdFhXy792/T09DSlSpUySUlJZu/evS7Xf++995rChQubXbt2Oaz7888/N5LM6NGjL1tvVFSUwzZDQkJMq1atTGpq6nXVlWvSpEkmJibGeHt7m/DwcNO3b19z+PBhp36zZ882derUMb6+vqZYsWKme/fu9nXnSkpKMoGBgWbHjh2mVatWJiAgwISHh5vk5GSTk5PjVO+MGTMclt+2bZvx8/MzgwYNsre9++67pmLFisbX19fExMSYGTNm3PDHGAAAoCDyMOY6vm8LAACAq7Zy5Uo1a9ZMc+bMueaznC+2a9culS1bVmlpaU5z+uYaMWKEdu3a5fIChLg+TZs2VUZGhjZv3uzuUmAxPXv21Ny5c11OTQQAAICrw/fRAAAAAAAAAACWxhzdAAAAFhcUFKTu3btf9mKRNWvWVIkSJW5iVQAAAABw8xB0AwAAWFxISIj9wnt5uffee29SNQAAAABw8zFHNwAAAAAAAADA0pijGwAAAAAAAABgaQTdAAAAAAAAAABLI+gGAAAAAAAAAFgaQTcAAAAAAAAAwNIIugEAAAAAAAAAlkbQDQAAAAAAAACwNIJuAAAAAAAAAIClEXQDAAAAAAAAACyNoBuQdOrUKe3Zs0dHjx51dym4gXheAQCwLmOMjhw5ou3bt7u7FAAAbkk2m00ZGRnauXOnu0sBbgiCbvxjzZkzRy1atFDhwoUVFBSkMmXK6NVXX3V3WbhOPK8AAFjXiRMn9Nxzz6ly5cry8fFR8eLFValSJW3bts3dpQEAcEs4cOCABg4cqKioKPn4+Cg0NFRVq1ZVZmamu0sDrlshdxcA3Ai//vqrUlJStGLFCmVkZKh48eJq1qyZhg0bpmrVqjn1f+aZZzR69Gh16NBB06ZNU0hIiDw8PFSpUiU3VI8bhecVANzvvffeU69evfTjjz+qbt26DvdNmzZNffr0UYcOHfTpp5/Ky8vLTVWiIDp8+LCaNGmi3bt367HHHlPjxo3l4+Mjb29vRUdHu7s8AMAlPDw88tVvxYoVatq06d9bDPLljz/+ULNmzXTu3Dk9/vjjuv3221WoUCH5+/srMDDQ3eUB142gG5b32WefqWvXripWrJgeeughlS1bVrt27dK7776ruXPn6uOPP9Y999xj7//NN99o9OjRSklJ0TPPPOPGynEj8bwCQME2b948Pfroo4qLi9PHH39MyA0nQ4YM0f79+5WamuryRAUAQMHy4YcfOtz+4IMPtHTpUqf2KlWq3MyycBl9+/aVj4+PfvjhB5UsWdLd5QA3nIcxxri7COBa7dixQzVr1lSZMmX07bffKjQ01H5fRkaG4uLitGfPHv3yyy8qV66cJOnuu+/WkSNHtHr1aneVjb8BzysAFAyuzuheuXKlWrdurUqVKmnVqlUqUqSIm6tEQXPw4EFFRkZq8uTJ6t27t7vLAQBcgwEDBmjSpEkiZiqY1q9fr7p162rJkiVq2bKlu8sB/hbM0Q1LGzNmjE6fPq2pU6c6hNySFBISoilTpujUqVMOczT/8MMPql69urp06aJixYrJ399f9erV0/z58+19Tp48qcDAQD3xxBNO29y7d6+8vLyUkpIiSerZs6fLr9N6eHhoxIgR9tt//vmn+vXrp8qVK8vf31/FixdXp06dtGvXLoflVq5cKQ8PD61cudLe9uOPP6ply5YqXLiwAgMD1bRpU61atcphuffee08eHh5at26dvS0jI8OpDklq166dU82rVq1Sp06dVKZMGfn6+qp06dIaNGiQzpw547Rvc+fOVd26dVW4cGF5eHjYf1577TWnvq5qzP0JCAhQjRo19M477zj069mzp4KCgi67rkv3Kz/Pa66DBw/qoYceUnh4uPz8/FSrVi29//77Dn127dpl36c33nhDUVFR8vf3V5MmTbR582anei99PGfOnClPT0+98sor9rZffvlFPXv2VLly5eTn56eIiAg9+OCDOnz48GX3FQCsbOPGjerQoYMiIyO1ePFilyH3nDlzFBsbK39/f4WEhOjf//639u3b59Anr7Fh7ty5DuNm06ZNHcYaVz+5PDw8NGDAAM2aNUuVK1eWn5+fYmNj9e233zpt56efflKbNm0UHBysoKAgtWjRQj/88IPLfc6rhvfee8+hT/Xq1a/4+OXWeClXY/lrr72mRo0aqXjx4vL391dsbKzmzp3rtOzJkyf15JNPqly5cvL29naoMSMj47L1XLpvISEhSkxMdBob86o7V+4xQe5x0I8//iibzabs7GzVrVtXfn5+Kl68uLp27ardu3c7Lf/1118rLi5OgYGBKlq0qDp06KCtW7c69BkxYoQ8PDz022+/qXPnzgoODlbx4sX1xBNP6OzZs071Xnxccf78ebVt21bFihXTli1b7O0zZsxQ8+bNFRYWJl9fX1WtWlVvv/32ZR8zAMAFWVlZSk5OVoUKFeyfOZ966illZWU59Z05c6bq16+vgIAA3Xbbbbrrrru0ZMkSSVJ0dPRlx/mLx8dTp07pySefVOnSpeXr66vKlSvrtddecwrjL17ey8tLJUuWVJ8+fXTs2DF7n+zsbA0fPlyxsbEqUqSIAgMDFRcXpxUrVjjVn/uZs0yZMvLy8rKv+0qfcy/dP09PT0VEROj+++93GA8v/ryal9xxMNcPP/wgPz8/7dixQ9WqVZOvr68iIiLUt29fHTlyxGn5qzk+27lzpxISEhQYGKgSJUpo1KhRDo9xbr0XHwudOHFCsbGxKlu2rPbv329vz+/xDOAKU5fA0r744gtFR0crLi7O5f133XWXoqOjtWDBAnvb4cOHNXXqVAUFBenxxx9XaGioZs6cqXvvvVezZs1S165dFRQUpHvuuUezZ8/W2LFjHb5e/d///lfGGHXv3v2qav3xxx/1/fffq0uXLipVqpR27dqlt99+W02bNtWWLVsUEBDgcrk//vhDTZs2VUBAgIYMGaKAgABNmzZN8fHxWrp0qe66666rqiMvc+bM0enTp/Xoo4+qePHiWrt2rSZMmKC9e/dqzpw59n6pqanq3LmzatWqpVdeeUVFihRRRkaGBg0alO9tvfHGGwoJCVFmZqamT5+u3r17Kzo6WvHx8ddcf36eV0k6c+aMmjZtqj/++EMDBgxQ2bJlNWfOHPXs2VPHjh1z+ufGBx98oBMnTqh///46e/asxo8fr+bNm2vTpk0KDw93WcuSJUv04IMPasCAAQ7TqCxdulQ7d+5Ur169FBERoV9//VVTp07Vr7/+qh9++CHfc9wBgFXs2LFDrVu3lq+vrxYvXqzIyEinPrlngNerV08pKSlKT0/X+PHjtXr1av30008qWrToVW3z2Wef1cMPPyxJ9vGpT58+eR4rfPPNN5o9e7Yef/xx+fr66q233lLr1q21du1aexD966+/Ki4uTsHBwXrqqafk7e2tKVOmqGnTpvrmm2/UoEEDp/XGxMTo2Wefdajj7zZ+/Hi1b99e3bt3V3Z2tj7++GN16tRJX375pRITE+39hgwZosmTJ+uhhx5S48aN5e3trc8++0zz5s3L13Zy980Yox07dmjs2LFq27aty0A6v3L/6TtgwADFxsbqlVde0aFDh/Tmm2/qu+++008//aSQkBBJ0rJly9SmTRuVK1dOI0aM0JkzZzRhwgQ1btxYGzZscPoHQOfOnRUdHa2UlBT98MMPevPNN3X06FF98MEHedbz8MMPa+XKlVq6dKmqVq1qb3/77bdVrVo1tW/fXoUKFdIXX3yhfv36yWazqX///te8/wBwq7PZbGrfvr2+++479enTR1WqVNGmTZv0xhtv6Pfff3c4QWnkyJEaMWKEGjVqpFGjRsnHx0dr1qzR119/rVatWmncuHE6efKkJGnr1q16+eWXNWzYMPsUKblhsjFG7du314oVK/TQQw+pdu3aWrx4sYYMGaJ9+/bpjTfecKjxnnvu0b333qvz588rNTVVU6dO1ZkzZ+xTsWRmZuqdd95R165d1bt3b504cULvvvuuEhIStHbtWtWuXdu+rqSkJC1btkyPPfaYatWqJS8vL02dOlUbNmzI1+MVFxenPn36yGazafPmzRo3bpz++usvpxPersbhw4d19uxZPfroo2revLkeeeQR7dixQ5MmTdKaNWu0Zs0a+fr6Srq647OcnBy1bt1ad9xxh1599VUtWrRIycnJOn/+vEaNGuWylnPnzulf//qXdu/erdWrVzscI+b3eAZwyQAWdezYMSPJdOjQ4bL92rdvbySZzMxMY4wxkowks3LlSnuf06dPmypVqpiIiAiTnZ1tjDFm8eLFRpL56quvHNZXs2ZN06RJE/vtXr16mTJlyjhtV5JJTk522MalUlNTjSTzwQcf2NtWrFhhJJkVK1YYY4z517/+Zby8vMzmzZvtfTIyMkzx4sVNbGysvW3GjBlGkvnxxx/tbYcOHXKqwxhjEhMTTVRUlEObq/pSUlKMh4eH+fPPP+1tQ4cONZLM/v377W1paWlGkhkzZozTOi6WW2NaWpq97ffffzeSzKuvvmpvS0pKMoGBgZdd16X7ld/nddy4cUaSmTlzpr1fdna2adiwoQkKCrL/neTuk7+/v9m7d6+975o1a4wkM2jQIId6cx/PdevWmaCgINOpUyeTk5PjULOrx/i///2vkWS+/fbby+4vAFhF7nv9l19+acqXL28kmVatWrnsm52dbcLCwkz16tXNmTNn7O1ffvmlkWSGDx9ub8trbJgzZ47DuHmx3PfyGTNmuNx+7tixbt06e9uff/5p/Pz8zD333GNv69ixo/Hx8TE7duywt/3111+mcOHC5q677nJab+PGjU2zZs0uW0eTJk1MtWrVXNZ1aY39+/d3as/PWJ6dnW2qV69umjdv7tAeGRlpEhISHNqSk5ONJHPo0KHL1tOkSROH4yBjjBk2bJiRZA4ePHjFunNdekyQe7tq1aoO+5F7XPTkk0/a22rXrm3CwsLM4cOH7W0///yz8fT0ND169HDap/bt2ztsu1+/fkaS+fnnnx3qzT2uGDp0qPHy8jLz5893qtvVWJ6QkGDKlSuX574CwD9F//79TV4x04cffmg8PT3NqlWrHNonT55sJJnVq1cbY4zZvn278fT0NPfcc4/T5ymbzea03ks/P19s/vz5RpJ58cUXHdrvu+8+4+HhYf744w97m6vPzY0aNTJVq1a13z5/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pooVK7o8m+hGy8nJUcuWLXXkyBE9/fTTiomJUWBgoPbt26eePXs61NelSxdt2LBBEyZM0NSpU69pezNnzlR4eLjOnj2rr7/+Wv3795efn5969uxp7+Pn56cvvvhC0oV/VkyfPl0DBw5UZGSkOnfu7LTOq3le/w4ZGRkKDAzUF198oY4dOyolJUXJyckOfTp37qzvv/9eQ4YMUe3atRUUFCSbzabWrVvn+0w3ALCKMWPG2P8xPHXqVN1xxx0aOnSo3nrrrWte58VjQ65Vq1blOf+juxw4cEAJCQlX7BcdHa1p06ZJujBv5ptvvqkHHnhA5cqVs3/jR5I6dOjgdGHH5557TgcOHLDfXrVqldq3b6+77rpLb731liIjI+Xt7a0ZM2Y4hedTp05V165dHf5xfzVq1qxp/5CaO49206ZNtWHDBkVERDjVbYxRWlqaRo0apXbt2rn8AH4zx/G8zghcu3atevfurcDAQL344ovq1KmTw4f8HTt2qEWLFoqJidHYsWNVunRp+fj4aOHChXrjjTcYywHgMmw2m2rUqKGxY8e6vL906dI3uSJnDzzwgHr06CGbzaadO3fqhRdeULt27bRs2TJ5eHho5syZ6tmzpzp27KghQ4YoLCxMXl5eSklJ0Y4dOxzWNXv2bHXv3t3peCAwMDBftbRq1UpDhgyRJO3du1ejR49Ws2bNtG7dOocxs0+fPurUqZNycnK0detWjRgxQh07dtSvv/7qtE53f2aWLlwQ86WXXtKPP/6oQYMGqXXr1g7fCLua4xnAFYJuWFq7du00bdo0fffdd7rzzjud7l+1apV27dqlvn372tvKli2rbdu2OfX97bffJMnhAkbVq1dXnTp1NGvWLJUqVUq7d+/WhAkTnJZ99913NXz4cO3YscP+Iadly5YOfebOnaukpCT7B0Ppwld6L76K88ViY2PVpEkTBQUF5bvea7Vp0yb9/vvvev/999WjRw97+9KlS536enp66rXXXtOmTZuUlpamt956S+np6Q7TuVxJ48aN7XW3a9dOv/76q1JSUhyCbi8vL4eLUyYmJqpYsWJatGiRy6A7v89rVFSUfvnlF9lsNoezunP7RUVFOSzv6sP477//7vS4BwQEaNGiRYqJidGgQYP08ssvq3PnzvazBY4eParly5dr5MiRGj58+GXXDwC3gosvllyvXj31799fkyZNUo8ePewhbu577rZt2+xfXc61bds2p/fkS8cGSXmOo/mV1/t8QECAQkNDJV14j89rjPH09HT4cL53716dOHHC/v5/OYGBgQ77ExcXp5IlS2rJkiUOQXepUqWc9nvcuHEOQfenn34qPz8/LV682GHalBkzZjhtNzo6WjNnzlSNGjX04IMPqmPHjvrggw/sF9u6kttuu82hnqZNm6pEiRKaMWOGhg4dmmfdQUFB6t69u8OUaLlyv+Hk6m/ht99+cxjHc/td6rffflNISIhTiLB9+3b7+qULF/q22WxOY3nLli319ttv6+zZs5o/f7769OmjlStX2oPxL774QllZWfrf//6nMmXK2JfL/bo9ACBv5cuXt08FcrkpSMqXLy+bzaYtW7Y4XNzxWkRFRWnZsmU6ceKEw1ndeX32K1eunMO4VaRIEXXr1k0//PCDGjZsqLlz56pcuXL67LPPHPbh0hOcJKlOnTqaNm2a4uLiNGrUKN1xxx0aM2aMVq9ena/aIyMjHWqpXLmyGjVqZD8JL1fFihXt/RISEnT69Gk9++yzLi8QffFYe/EZ2DabTdu3b1edOnUcHpf8Hp/l/mMg9yxu6cKxlOScVzz44IMaNmyY/vrrL1WtWlWDBg1yOP64muMZwBWmLoGlDRkyRP7+/urbt68OHz7scN+RI0f0yCOPKCAgwP6fUElq27at1q5dq++//97edvbsWb399tuKiIhwmKdTuvBf3SVLlmjcuHEqXry42rRp47KWqKgoNW/eXPHx8U4fRqULH84vnTNrwoQJysnJyXP/PDw81KpVKy1evFhbt2512Lf3339fdevWVXh4eJ7L51fu/FwX12eMyXOqkAkTJujrr7/WrFmzFB8fr8aNG1/X9s+cOXPFr3Hl1nbxXGIXy+/z2rZtWx04cECzZ8+29zt//rwmTJigoKAgp7nC58+fr3379tlvr127VmvWrHH6OwgNDbV/BWzUqFEqVaqUevfu7VT3pX8D48aNu+x+A8Ct4qWXXlJkZKT69Omj8+fPS5Lq1q2rsLAwTZ482WEc+Oqrr7R161YlJib+7XWlpqY6zPm4Z88eff7552rVqpW8vLzk5eWlVq1a6fPPP3f4+m16ero++ugj3XnnnfZvjUkXvmosyemDYX7k/rM8r7Hucry8vOTh4eFwXLFr1y7Nnz/fqe/58+fVvXt3VatWTW+88Ybi4+OdvnJ8Nc6cOSNJVxzLL7d/derUUUREhNPfwqpVq7Ru3Tq1a9dO0oUP/rVr19b777/v8E+OzZs3a8mSJWrbtq3TuidNmuRwO/ekhUvH8kaNGsnLy0uBgYGaPHmyvv32W/sZ9xfXffFYfvz4cT58A0A+dO7cWfv27XN4X8115swZ+7RTHTt2lKenp0aNGuX0TZn8zkGdq23btsrJydHEiRMd2t944w15eHjk+dn+4rqk/x/fXI0Da9asUWpqqtOymZmZeuCBB9S+fXs999xzio+PV2Rk5FXVf7la8nK5sbZFixby9fXVm2++6fDYzpo1S+np6fax9lqOzy5+jI0xmjhxory9vZ3mFY+Li5MklShRQqNHj9bMmTMdpmO7muMZwBXO6IalVaxYUe+//766d++uGjVq6KGHHlLZsmW1a9cuvfvuu8rIyNB///tflS9f3r7MU089pVmzZqlNmzZ6/PHHFRISopkzZ2rLli2aNWuWChVyfFl069ZNTz31lObNm6dHH31U3t7e11Rru3bt9OGHH6pIkSKqWrWqUlNTtWzZsiteoOKFF17Q4sWL1aRJEz322GMKCAjQtGnTdOzYMc2dO9epf2pqqn2O8NyLY/3xxx9atGiRvc+hQ4d05swZLVq0SK1bt1ZMTIzKly+v//znP9q3b5+Cg4P16aefupwz69dff9VTTz2lESNGqF69etf0WMyfP18hISH2qUtWrVqlgQMHOvTJycmx13zixAnNmDFDp06dUseOHV2uM7/Pa58+fTRlyhT7xTyjo6M1d+5crV69WuPGjXOav61ChQq688479eijjyorK8v+D4+nnnoqz/3z9/fX1KlTFR8fr7ffflv9+vVTcHCw7rrrLr366qs6d+6c/Yy9tLS0a3oMAcBqChcurAkTJujee+/V66+/rqefflre3t4aPXq0evXqpSZNmqhr165KT0/X+PHjFR0drUGDBv3tdVWvXl0JCQl6/PHH5evra59aZeTIkfY+L774opYuXao777xT/fr1U6FChTRlyhRlZWXp1VdflXQh+E5OTtY777yjLl26uJxr+lInT560j3VHjhzRm2++KW9v72sK+BMTEzV27Fi1bt1a3bp108GDBzVp0iRVqFDBaZq3kSNHatOmTfrpp5+u6bgmPT1dM2fOlHRh6q4pU6aoUKFC9g/IuXbv3q1FixbZ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XLlyGjlypM6fP3+zHgYAAAo0xmsAAAo+xmvAGgq5uwAAN97+/fvVtWtXvfrqq7rnnnt04sQJrVq1Sj169NDu3buVmZmpGTNmSJKKFSumv/76S5L0zDPP6PXXX1edOnXk5+en8ePH6/XXX9eUKVNUp04dTZ8+Xe3bt9evv/6qihUrOmwzKytLXbt21a5du7Rq1SqFhobat/nmm28qLi5OO3bsUJ8+fSRJycnJN/dBAQCggGG8BgCg4GO8BizEALjlrF+/3kgyu3btcrovKSnJdOjQwaEtLS3NSDLjxo1zaC9RooR56aWXHNrq1atn+vXr57DcqlWrTIsWLcydd95pjh07Zu/bokUL8/LLLzss/+GHH5rIyMjr2T0AAG4JjNcAABR8jNeAdXBGN3ALqlWrllq0aKEaNWooISFBrVq10n333afbbrvtssvVrVvX/ntmZqb++usvNW7c2KFP48aN9fPPPzu0de3aVaVKldLXX38tf39/e/vPP/+s1atX66WXXrK35eTk6OzZszp9+rQCAgKuZzcBALA0xmsAAAo+xmvAOpijG7gFeXl5aenSpfrqq69UtWpVTZgwQZUrV1ZaWtpllwsMDLym7bVt21a//PKLUlNTHdpPnjypkSNHauPGjfafTZs2afv27fLz87umbQEAcKtgvAYAoOBjvAasgzO6gVuUh4eHGjdurMaNG2v48OGKiorSvHnz5OPjo5ycnCsuHxwcrBIlSmj16tVq0qSJvX316tWqX7++Q99HH31U1atXV/v27bVgwQJ7/9tvv13btm1ThQoVbuzOAQBwi2C8BgCg4GO8BqyBoBu4Ba1Zs0bLly9Xq1atFBYWpjVr1ujQoUOqUqWKzp49q8WLF2vbtm0qXry4ihQpkud6hgwZouTkZJUvX161a9fWjBkztHHjRs2aNcup72OPPaacnBy1a9dOX331le68804NHz5c7dq1U5kyZXTffffJ09NTP//8szZv3qwXX3zx73wIAAAo8BivAQAo+BivAesg6AZuQcHBwfr22281btw4ZWZmKioqSq+//rratGmjunXrauXKlapbt65OnjypFStWKDo62uV6Hn/8cR0/flxPPvmkDh48qKpVq+p///uf0xWhcw0cOFA2m01t27bVokWLlJCQoC+//FKjRo3S6NGj5e3trZiYGD388MN/494DAGANjNcAABR8jNeAdXgYY4y7iwAAAAAAAAAA4FpxMUoAAAAAAAAAgKURdAMAAAAAAAAALI2gGwAAAAAAAABgaQTdAAAAAAAAAABLI+gGAAAAAAAAAFgaQTcAAAAAAAAAwNIIugEAAAAAAAAAlkbQDQAAAAAAAACwNIJuAAAAAAAAAIClEXQDAAAAAAAAACyNoBsAAAAAAAAAYGkE3QAAAAAAAAAAS/s/SMcl2Xbg5h0AAAAASUVORK5CYII=",
|
||
"text/plain": [
|
||
"<Figure size 1800x500 with 3 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"randoversamp = RandomOverSampler(random_state=42)\n",
|
||
"\n",
|
||
"# Применение RandomOverSampler для балансировки выборок\n",
|
||
"X_train_resampled, y_train_resampled = randoversamp.fit_resample(X_train, y_train)\n",
|
||
"X_val_resampled, y_val_resampled = randoversamp.fit_resample(X_val, y_val)\n",
|
||
"\n",
|
||
"# Проверка сбалансированности после RandomOverSampler\n",
|
||
"analyze_balance(y_train_resampled, y_val_resampled, y_test, \"stroke\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Выборки сбалансированы"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Применим унитарное кодирование категориальных признаков (one-hot encoding), переведя их в бинарные вектора."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" age hypertension heart_disease avg_glucose_level bmi gender_Male \\\n",
|
||
"0 31.0 0 0 80.88 29.3 False \n",
|
||
"1 63.0 1 0 81.54 24.2 False \n",
|
||
"2 33.0 0 0 86.97 42.2 False \n",
|
||
"3 7.0 0 0 61.42 20.8 False \n",
|
||
"4 62.0 0 0 163.17 25.6 False \n",
|
||
"\n",
|
||
" gender_Other ever_married_Yes work_type_Never_worked work_type_Private \\\n",
|
||
"0 False False False False \n",
|
||
"1 False True False True \n",
|
||
"2 False True False True \n",
|
||
"3 False False False False \n",
|
||
"4 False True False False \n",
|
||
"\n",
|
||
" work_type_Self-employed work_type_children Residence_type_Urban \\\n",
|
||
"0 False False True \n",
|
||
"1 False False True \n",
|
||
"2 False False False \n",
|
||
"3 False True True \n",
|
||
"4 False False True \n",
|
||
"\n",
|
||
" smoking_status_formerly smoked smoking_status_never smoked \\\n",
|
||
"0 True False \n",
|
||
"1 False True \n",
|
||
"2 False True \n",
|
||
"3 False False \n",
|
||
"4 False True \n",
|
||
"\n",
|
||
" smoking_status_smokes \n",
|
||
"0 False \n",
|
||
"1 False \n",
|
||
"2 False \n",
|
||
"3 False \n",
|
||
"4 False \n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Определение категориальных признаков\n",
|
||
"categorical_features = [\n",
|
||
" \"gender\",\n",
|
||
" \"ever_married\",\n",
|
||
" \"work_type\",\n",
|
||
" \"Residence_type\",\n",
|
||
" \"smoking_status\",\n",
|
||
"]\n",
|
||
"\n",
|
||
"# Применение one-hot encoding к обучающей выборке\n",
|
||
"X_train_encoded = pd.get_dummies(\n",
|
||
" X_train_resampled, columns=categorical_features, drop_first=True\n",
|
||
")\n",
|
||
"\n",
|
||
"# Применение one-hot encoding к контрольной выборке\n",
|
||
"X_val_encoded = pd.get_dummies(\n",
|
||
" X_val_resampled, columns=categorical_features, drop_first=True\n",
|
||
")\n",
|
||
"\n",
|
||
"# Применение one-hot encoding к тестовой выборке\n",
|
||
"X_test_encoded = pd.get_dummies(X_test, columns=categorical_features, drop_first=True)\n",
|
||
"\n",
|
||
"print(X_train_encoded.head())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Перейдем к числовым признакам, а именно к колонке age, применим дискретизацию (позволяет преобразовать данные из числового представления в категориальное):"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" hypertension heart_disease avg_glucose_level bmi gender_Male \\\n",
|
||
"0 0 0 80.88 29.3 False \n",
|
||
"1 1 0 81.54 24.2 False \n",
|
||
"2 0 0 86.97 42.2 False \n",
|
||
"3 0 0 61.42 20.8 False \n",
|
||
"4 0 0 163.17 25.6 False \n",
|
||
"\n",
|
||
" gender_Other ever_married_Yes work_type_Never_worked work_type_Private \\\n",
|
||
"0 False False False False \n",
|
||
"1 False True False True \n",
|
||
"2 False True False True \n",
|
||
"3 False False False False \n",
|
||
"4 False True False False \n",
|
||
"\n",
|
||
" work_type_Self-employed work_type_children Residence_type_Urban \\\n",
|
||
"0 False False True \n",
|
||
"1 False False True \n",
|
||
"2 False False False \n",
|
||
"3 False True True \n",
|
||
"4 False False True \n",
|
||
"\n",
|
||
" smoking_status_formerly smoked smoking_status_never smoked \\\n",
|
||
"0 True False \n",
|
||
"1 False True \n",
|
||
"2 False True \n",
|
||
"3 False False \n",
|
||
"4 False True \n",
|
||
"\n",
|
||
" smoking_status_smokes age_bin \n",
|
||
"0 False middle-aged \n",
|
||
"1 False old \n",
|
||
"2 False middle-aged \n",
|
||
"3 False young \n",
|
||
"4 False old \n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Определение числовых признаков для дискретизации\n",
|
||
"numerical_features = [\"age\"]\n",
|
||
"\n",
|
||
"\n",
|
||
"# Функция для дискретизации числовых признаков\n",
|
||
"def discretize_features(df, features, bins, labels):\n",
|
||
" for feature in features:\n",
|
||
" df[f\"{feature}_bin\"] = pd.cut(df[feature], bins=bins, labels=labels)\n",
|
||
" df.drop(columns=[feature], inplace=True)\n",
|
||
" return df\n",
|
||
"\n",
|
||
"\n",
|
||
"# Заданные интервалы и метки\n",
|
||
"age_bins = [0, 25, 55, 100]\n",
|
||
"age_labels = [\"young\", \"middle-aged\", \"old\"]\n",
|
||
"\n",
|
||
"# Применение дискретизации к обучающей, контрольной и тестовой выборкам\n",
|
||
"X_train_encoded = discretize_features(\n",
|
||
" X_train_encoded, numerical_features, bins=age_bins, labels=age_labels\n",
|
||
")\n",
|
||
"X_val_encoded = discretize_features(\n",
|
||
" X_val_encoded, numerical_features, bins=age_bins, labels=age_labels\n",
|
||
")\n",
|
||
"X_test_encoded = discretize_features(\n",
|
||
" X_test_encoded, numerical_features, bins=age_bins, labels=age_labels\n",
|
||
")\n",
|
||
"\n",
|
||
"print(X_train_encoded.head())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Применим ручной синтез признаков. Например, в этом случае создадим признак, в котором вычисляется отклонение уровня глюкозы от среднего для определенной возрастной группы. Вышеуказанный признак может быть полезен для определения пациентов с аномальными данными."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" hypertension heart_disease avg_glucose_level bmi gender_Male \\\n",
|
||
"0 0 0 80.88 29.3 False \n",
|
||
"1 1 0 81.54 24.2 False \n",
|
||
"2 0 0 86.97 42.2 False \n",
|
||
"3 0 0 61.42 20.8 False \n",
|
||
"4 0 0 163.17 25.6 False \n",
|
||
"\n",
|
||
" gender_Other ever_married_Yes work_type_Never_worked work_type_Private \\\n",
|
||
"0 False False False False \n",
|
||
"1 False True False True \n",
|
||
"2 False True False True \n",
|
||
"3 False False False False \n",
|
||
"4 False True False False \n",
|
||
"\n",
|
||
" work_type_Self-employed work_type_children Residence_type_Urban \\\n",
|
||
"0 False False True \n",
|
||
"1 False False True \n",
|
||
"2 False False False \n",
|
||
"3 False True True \n",
|
||
"4 False False True \n",
|
||
"\n",
|
||
" smoking_status_formerly smoked smoking_status_never smoked \\\n",
|
||
"0 True False \n",
|
||
"1 False True \n",
|
||
"2 False True \n",
|
||
"3 False False \n",
|
||
"4 False True \n",
|
||
"\n",
|
||
" smoking_status_smokes age_bin glucose_age_deviation \n",
|
||
"0 False middle-aged -22.997954 \n",
|
||
"1 False old -54.147764 \n",
|
||
"2 False middle-aged -16.907954 \n",
|
||
"3 False young -32.619531 \n",
|
||
"4 False old 27.482236 \n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"age_glucose_mean = X_train_encoded.groupby(\"age_bin\", observed=False)[\n",
|
||
" \"avg_glucose_level\"\n",
|
||
"].transform(\"mean\")\n",
|
||
"X_train_encoded[\"glucose_age_deviation\"] = (\n",
|
||
" X_train_encoded[\"avg_glucose_level\"] - age_glucose_mean\n",
|
||
")\n",
|
||
"\n",
|
||
"age_glucose_mean = X_val_encoded.groupby(\"age_bin\", observed=False)[\n",
|
||
" \"avg_glucose_level\"\n",
|
||
"].transform(\"mean\")\n",
|
||
"X_val_encoded[\"glucose_age_deviation\"] = (\n",
|
||
" X_val_encoded[\"avg_glucose_level\"] - age_glucose_mean\n",
|
||
")\n",
|
||
"\n",
|
||
"age_glucose_mean = X_test_encoded.groupby(\"age_bin\", observed=False)[\n",
|
||
" \"avg_glucose_level\"\n",
|
||
"].transform(\"mean\")\n",
|
||
"X_test_encoded[\"glucose_age_deviation\"] = (\n",
|
||
" X_test_encoded[\"avg_glucose_level\"] - age_glucose_mean\n",
|
||
")\n",
|
||
"\n",
|
||
"print(X_train_encoded.head())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Используем масштабирование признаков, для приведения всех числовых признаков к одинаковым или очень похожим диапазонам значений/распределениям. \n",
|
||
"### Масштабирование признаков позволяет получить более качественную модель за счет снижения доминирования одних признаков над другими."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" hypertension heart_disease avg_glucose_level bmi gender_Male \\\n",
|
||
"0 0 0 -0.696288 -0.031658 False \n",
|
||
"1 1 0 -0.684615 -0.785297 False \n",
|
||
"2 0 0 -0.588575 1.874608 False \n",
|
||
"3 0 0 -1.040476 -1.287724 False \n",
|
||
"4 0 0 0.759172 -0.578416 False \n",
|
||
"\n",
|
||
" gender_Other ever_married_Yes work_type_Never_worked work_type_Private \\\n",
|
||
"0 False False False False \n",
|
||
"1 False True False True \n",
|
||
"2 False True False True \n",
|
||
"3 False False False False \n",
|
||
"4 False True False False \n",
|
||
"\n",
|
||
" work_type_Self-employed work_type_children Residence_type_Urban \\\n",
|
||
"0 False False True \n",
|
||
"1 False False True \n",
|
||
"2 False False False \n",
|
||
"3 False True True \n",
|
||
"4 False False True \n",
|
||
"\n",
|
||
" smoking_status_formerly smoked smoking_status_never smoked \\\n",
|
||
"0 True False \n",
|
||
"1 False True \n",
|
||
"2 False True \n",
|
||
"3 False False \n",
|
||
"4 False True \n",
|
||
"\n",
|
||
" smoking_status_smokes age_bin glucose_age_deviation \n",
|
||
"0 False middle-aged -0.428019 \n",
|
||
"1 False old -1.007754 \n",
|
||
"2 False middle-aged -0.314677 \n",
|
||
"3 False young -0.607088 \n",
|
||
"4 False old 0.511477 \n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"numerical_features = [\"avg_glucose_level\", \"bmi\", \"glucose_age_deviation\"]\n",
|
||
"\n",
|
||
"scaler = StandardScaler()\n",
|
||
"X_train_encoded[numerical_features] = scaler.fit_transform(\n",
|
||
" X_train_encoded[numerical_features]\n",
|
||
")\n",
|
||
"X_val_encoded[numerical_features] = scaler.transform(X_val_encoded[numerical_features])\n",
|
||
"X_test_encoded[numerical_features] = scaler.transform(\n",
|
||
" X_test_encoded[numerical_features]\n",
|
||
")\n",
|
||
"\n",
|
||
"print(X_train_encoded.head())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Сконструируем признаки, используя фреймворк Featuretools:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" hypertension heart_disease avg_glucose_level bmi gender_Male \\\n",
|
||
"index \n",
|
||
"0 0 0 -0.696288 -0.031658 False \n",
|
||
"1 1 0 -0.684615 -0.785297 False \n",
|
||
"2 0 0 -0.588575 1.874608 False \n",
|
||
"3 0 0 -1.040476 -1.287724 False \n",
|
||
"4 0 0 0.759172 -0.578416 False \n",
|
||
"\n",
|
||
" gender_Other ever_married_Yes work_type_Never_worked \\\n",
|
||
"index \n",
|
||
"0 False False False \n",
|
||
"1 False True False \n",
|
||
"2 False True False \n",
|
||
"3 False False False \n",
|
||
"4 False True False \n",
|
||
"\n",
|
||
" work_type_Private work_type_Self-employed work_type_children \\\n",
|
||
"index \n",
|
||
"0 False False False \n",
|
||
"1 True False False \n",
|
||
"2 True False False \n",
|
||
"3 False False True \n",
|
||
"4 False False False \n",
|
||
"\n",
|
||
" Residence_type_Urban smoking_status_formerly smoked \\\n",
|
||
"index \n",
|
||
"0 True True \n",
|
||
"1 True False \n",
|
||
"2 False False \n",
|
||
"3 True False \n",
|
||
"4 True False \n",
|
||
"\n",
|
||
" smoking_status_never smoked smoking_status_smokes age_bin \\\n",
|
||
"index \n",
|
||
"0 False False middle-aged \n",
|
||
"1 True False old \n",
|
||
"2 True False middle-aged \n",
|
||
"3 False False young \n",
|
||
"4 True False old \n",
|
||
"\n",
|
||
" glucose_age_deviation \n",
|
||
"index \n",
|
||
"0 -0.428019 \n",
|
||
"1 -1.007754 \n",
|
||
"2 -0.314677 \n",
|
||
"3 -0.607088 \n",
|
||
"4 0.511477 \n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\bocchanskyy\\source\\repos\\MAI_PIbd-33_Volkov_NA\\.venv\\Lib\\site-packages\\woodwork\\type_sys\\utils.py:33: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n",
|
||
" pd.to_datetime(\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"data = X_train_encoded.copy() # Используем предобработанные данные\n",
|
||
"\n",
|
||
"es = ft.EntitySet(id=\"patients\")\n",
|
||
"\n",
|
||
"es = es.add_dataframe(\n",
|
||
" dataframe_name=\"strokes_data\", dataframe=data, index=\"index\", make_index=True\n",
|
||
")\n",
|
||
"\n",
|
||
"feature_matrix, feature_defs = ft.dfs(\n",
|
||
" entityset=es, target_dataframe_name=\"strokes_data\", max_depth=1\n",
|
||
")\n",
|
||
"\n",
|
||
"print(feature_matrix.head())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Оценим качество набора признаков.\n",
|
||
"\n",
|
||
"1. Предсказательная способность (для задачи классификации)\n",
|
||
" - Метрики: Accuracy, Precision, Recall, F1-Score, ROC AUC\n",
|
||
" - Методы: Обучение модели на обучающей выборке и оценка на валидационной и тестовой выборках.\n",
|
||
"\n",
|
||
"2. Вычислительная эффективность\n",
|
||
" - Методы: Измерение времени, затраченного на генерацию признаков и обучение модели.\n",
|
||
"\n",
|
||
"3. Надежность\n",
|
||
" - Методы: Кросс-валидация и анализ чувствительности модели к изменениям в данных.\n",
|
||
"\n",
|
||
"4. Корреляция\n",
|
||
" - Методы: Анализ корреляционной матрицы признаков и исключение мультиколлинеарных признаков.\n",
|
||
"\n",
|
||
"5. Логическая согласованность\n",
|
||
" - Методы: Проверка логической связи признаков с целевой переменной и интерпретация результатов модели."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Время обучения модели: 0.33 секунд\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"X_train_encoded = pd.get_dummies(X_train_encoded, drop_first=True)\n",
|
||
"X_val_encoded = pd.get_dummies(X_val_encoded, drop_first=True)\n",
|
||
"X_test_encoded = pd.get_dummies(X_test_encoded, drop_first=True)\n",
|
||
"\n",
|
||
"all_columns = X_train_encoded.columns\n",
|
||
"X_train_encoded = X_train_encoded.reindex(columns=all_columns, fill_value=0)\n",
|
||
"X_val_encoded = X_val_encoded.reindex(columns=all_columns, fill_value=0)\n",
|
||
"X_test_encoded = X_test_encoded.reindex(columns=all_columns, fill_value=0)\n",
|
||
"\n",
|
||
"# Выбор модели\n",
|
||
"model = RandomForestClassifier(n_estimators=100, random_state=42)\n",
|
||
"\n",
|
||
"# Начинаем отсчет времени\n",
|
||
"start_time = time.time()\n",
|
||
"model.fit(X_train_encoded, y_train_resampled)\n",
|
||
"\n",
|
||
"# Время обучения модели\n",
|
||
"train_time = time.time() - start_time\n",
|
||
"\n",
|
||
"print(f\"Время обучения модели: {train_time:.2f} секунд\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Feature Importance:\n",
|
||
" feature importance\n",
|
||
"3 bmi 1.937437e-01\n",
|
||
"2 avg_glucose_level 1.902965e-01\n",
|
||
"15 glucose_age_deviation 1.742016e-01\n",
|
||
"17 age_bin_old 1.676844e-01\n",
|
||
"0 hypertension 3.892436e-02\n",
|
||
"6 ever_married_Yes 3.224085e-02\n",
|
||
"4 gender_Male 2.826243e-02\n",
|
||
"16 age_bin_middle-aged 2.826115e-02\n",
|
||
"11 Residence_type_Urban 2.391783e-02\n",
|
||
"13 smoking_status_never smoked 2.307375e-02\n",
|
||
"8 work_type_Private 2.125517e-02\n",
|
||
"9 work_type_Self-employed 1.917397e-02\n",
|
||
"1 heart_disease 1.690222e-02\n",
|
||
"12 smoking_status_formerly smoked 1.681537e-02\n",
|
||
"14 smoking_status_smokes 1.665569e-02\n",
|
||
"10 work_type_children 8.476756e-03\n",
|
||
"7 work_type_Never_worked 1.141679e-04\n",
|
||
"5 gender_Other 5.572087e-08\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Получение важности признаков\n",
|
||
"importances = model.feature_importances_\n",
|
||
"feature_names = X_train_encoded.columns\n",
|
||
"\n",
|
||
"# Сортировка признаков по важности\n",
|
||
"feature_importance = pd.DataFrame({\"feature\": feature_names, \"importance\": importances})\n",
|
||
"feature_importance = feature_importance.sort_values(by=\"importance\", ascending=False)\n",
|
||
"\n",
|
||
"print(\"Feature Importance:\")\n",
|
||
"print(feature_importance)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Accuracy: 0.9406392694063926\n",
|
||
"Precision: 0.047619047619047616\n",
|
||
"Recall: 0.013888888888888888\n",
|
||
"F1 Score: 0.021505376344086023\n",
|
||
"ROC AUC: 0.5000998174766141\n",
|
||
"Cross-validated Accuracy: 0.9930740606840847\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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IiIiFqXkhMhDpmnTpgwaNKhA+4yOjsbV1bVA+xQREREREckrJSdEhOeee46TJ09aOgwREREREfmPsrF0ACJiefb29tjb21s6DBERERER+Y/SzAmRh1BGRgb9+vXDxcWF4sWLM3LkSLKzswHw9vZm/PjxhIWF4ejoSNmyZVm1ahW//fYb7du3x9HRkapVq7Jv3z6jPy3rEBERERERS1JyQuQh9OGHH2JjY8PevXuZNWsWb7/9NosWLTLqZ8yYQcOGDTlw4ABPPfUUL7zwAmFhYXTr1o1vv/2W8uXLExYWZiQ08iI9PZ3U1FSzl4iIiIiISEFQckLkIeTl5cWMGTPw9/cnNDSU/v37M2PGDKO+TZs2vPjii/j6+jJq1ChSU1OpXbs2nTt3xs/Pj+HDh3Ps2DF+/fXXPN9z0qRJuLi4GC8vL69/YmgiIiIiIvIfpOSEyEOoXr16mEwm4339+vU5deoUmZmZAFStWtWoK1myJACBgYE5ys6fP5/ne44YMYKUlBTjde7cufsag4iIiIiIyC3aEFPkEVSoUCHj51tJjNzKsrKy8tynra0ttra2BRShiIiIiIjI/9HMCZGH0J49e8zef/PNN/j6+mJtbW2hiERERERERPJPyQmRh1BSUhJDhgzhxIkTLF26lDlz5jBw4EBLhyUiIiIiIpIvWtYh8hAKCwvjzz//pE6dOlhbWzNw4ED69Olj6bBERERERETyxZR9L2cJioj8f6mpqbi4uFCt/wKsbe0tHY6IiIiIyH/G/qlhlg7BzK3vBikpKTg7O+erDy3rEBERERERERGLUnJCRERERERERCxKyQkRERERERERsShtiCki92X7+K75XlcmIiIiIiICmjkhIiIiIiIiIham5ISIiIiIiIiIWJSSEyIiIiIiIiJiUUpOiIiIiIiIiIhFaUNMEbkvjd9cirWtvaXDEBERERF5KO2fGmbpEP4VNHNCRERERERERCxKyQkRERERERERsSglJ0RERERERETEopScEBERERERERGLUnJCHgmJiYmYTCYOHjxo6VAKRNOmTRk0aNADvWd4eDgdOnR4oPcUEREREREBJSdERERERERExMKUnBARERERERERi1JyQvJk/fr1NGrUCFdXV4oVK0bbtm05c+YMAA0aNGD48OFm7X/77TcKFSrE9u3bAUhOTuapp57C3t4eHx8flixZ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QjMn5JHTrl07ypYty8KFC/H09CQrK4sqVapw/fr1PF2flpZGu3bteOutt3LUeXh4FHS4hkKFCpm9N5lMZGVl/WP3u1e2trbY2tpaOgwREREREXkEKTkhj5Q//viDEydOsHDhQoKDgwHYuXOnUe/v78/HH39Menq68UU7Pj7erI+goCA+//xzvL29sbHJ338ie/bsMXv/zTff4Ovri7W1db76u5OAgAA+//xzsrOzjdkTcXFxODk58dhjj+VoX7FiRTIyMti/f7+xrOPEiRNcunSpwGMTERERERHJCy3rkEdK0aJFKVasGO+99x6nT59my5YtDBkyxKh//vnnycrKok+fPhw7dowNGzYwbdo0AOOL/csvv8yFCxfo2rUr8fHxnDlzhg0bNtCjR487Lsv4q6SkJIYMGcKJEydYunQpc+bMYeDAgQU/YOB///sf586do3///hw/fpwvv/yS0aNHM2TIkBz7TcDNBE2rVq148cUX2bNnD/v37yciIgJ7e/t/JD4REREREZG7UXJCHilWVlYsW7aM/fv3U6VKFQYPHszUqVONemdnZ7766isOHjxI9erVeeONNxg1ahSAsQ+Fp6cncXFxZGZm8uSTTxIYGMigQYNwdXXN9ct+bsLCwvjzzz+pU6cOL7/8MgMHDqRPnz4FP2CgdOnSrF27lr1791KtWjX69u1Lr169ePPNN297TVRUFJ6enjRp0oROnTrRp08fSpQo8Y/EJyIiIiIicjem7OzsbEsHIWJJMTEx9OjRg5SUFM0euAepqam4uLhQrf8CrG313EREREQedfunhlk6BPmXuvXdICUlBWdn53z1oT0n5D9n8eLFlCtXjtKlS5OQkMDw4cMJCQlRYkJERERERMRCtKxD/nN++eUXunXrRkBAAIMHD6Zz58689957ebo2KSnJ7IjRv7+SkpIKPN6+ffve9n59+/Yt8PuJiIiIiIg8aFrWIXIPMjIySExMvG39/ZzwcTvnz58nNTU11zpnZ2eL7RWhZR0iIiIi/y1a1iG3UxDLOpScEJF8KYh/gERERERE5OFXEN8NtKxDRERERERERCxKyQkRERERERERsSglJ0RERERERETEopScEBERERERERGLKthjBUTkP6fxm0t1WocUCO0ALiIiIvLfpZkTIiIiIiIiImJRSk6IiIiIiIiIiEUpOSEiIiIiIiIiFqXkhIiIiIiIiIhYlJIT8lBp2rQpgwYNsnQY/yp6JiIiIiIi8rDTaR0iBSQ8PJxLly6xcuXKB3rfL774gkKFCj3Qe4qIiIiIiBQkJSdE7lNmZiYmk8li93dzc7PYvUVERERERAqClnXIQycrK4thw4bh5uZGqVKlGDNmDAA9e/akbdu2Zm1v3LhBiRIleP/994GbSyD69etHv379cHFxoXjx4owcOZLs7GzjmvT0dIYOHUrp0qVxcHCgbt26xMbGGvXR0dG4urqyatUqKlWqhK2tLT179uTDDz/kyy+/xGQyYTKZjGvOnTtHSEgIrq6uuLm50b59exITE43+wsPD6dChA9OmTcPDw4NixYrx8ssvc+PGDaPNvHnz8PX1xc7OjpIlS/Lss88adX9f1nHx4kXCwsIoWrQoRYoUoXXr1pw6dSpH/Bs2bCAgIABHR0datWpFcnJyfj8SERERERGR+6LkhDx0PvzwQxwcHNizZw9Tpkxh7NixbNy4kYiICNavX2/2JXv16tVcvXqV5557zux6Gxsb9u7dy6xZs3j77bdZtGiRUd+vXz92797NsmXLOHToEJ07d6ZVq1ZmX/CvXr3KW2+9xaJFizhy5AizZ88mJCTE+JKfnJxMgwYNuHHjBi1btsTJyYkdO3YQFxdnJAOuX79u9Ld161bOnDnD1q1b+fDDD4mOjiY6OhqAffv2MWDAAMaOHcuJEydYv349jRs3vu3zCQ8PZ9++faxatYrdu3eTnZ1NmzZtzJIdV69eZdq0aXz00Uds376dpKQkhg4desfnnp6eTmpqqtlLRERERESkIGhZhzx0qlatyujRowHw9fVl7ty5bN68mcmTJ+Pv789HH33EsGHDAIiKiqJz5844Ojoa13t5eTFjxgxMJhP+/v4cPnyYGTNm0Lt3b5KSkoiKiiIpKQlPT08Ahg4dyvr164mKimLixInAzRkZ8+bNo1q1aka/9vb2pKenU6pUKaPs448/Jisri0WLFhlLP6KionB1dSU2NpYnn3wSgKJFizJ37lysra2pWLEiTz31FJs3bzZicnBwoG3btjg5OVG2bFlq1KiR67M5deoUq1atIi4ujgYNGgAQExODl5cXK1eupHPnzkb8CxYsoHz58sDNhMzYsWPv+NwnTZpEZGRkXj4iERERERGRe6KZE/LQqVq1qtl7Dw8Pzp8/D0BERARRUVEA/Prrr6xbt46ePXuata9Xr57ZHhH169fn1KlTZGZmcvjwYTIzM/Hz88PR0dF4bdu2jTNnzhjXFC5cOEccuUlISOD06dM4OTkZfbm5uXHt2jWz/ipXroy1tXWuY3riiScoW7Ys5cqV44UXXiAmJoarV6/mer9jx45hY2ND3bp1jbJixYrh7+/PsWPHjLIiRYoYiYm/3+92RowYQUpKivE6d+7cXccvIiIiIiKSF5o5IQ+dv59MYTKZyMrKAiAsLIzXXnuN3bt3s2vXLnx8fAgODs5z32lpaVhbW7N//36zZAFgNvvC3t4+T5tgpqWlUbNmTWJiYnLUubu752lMTk5OfPvtt8TGxvL1118zatQoxowZQ3x8PK6urnke21/ldr+/7ruRG1tbW2xtbfN1PxERERERkTtRckIeKcWKFaNDhw5ERUWxe/duevTokaPNnj17zN5/8803+Pr6Ym1tTY0aNcjMzOT8+fP3lNSAm7MpMjMzzcqCgoL45JNPKFGiBM7Ozvc+oP/PxsaGFi1a0KJFC0aPHo2rqytbtmyhU6dOZu0CAgLIyMhgz549xrKOP/74gxMnTlCpUqV8319EREREROSfpGUd8siJiIjgww8/5NixY3Tv3j1HfVJSEkOGDOHEiRMsXbqUOXPmMHDgQAD8/PwIDQ0lLCyML774grNnz7J3714mTZrEmjVr7nhfb29vDh06xIkTJ/j999+5ceMGoaGhFC9enPbt27Njxw7Onj1LbGwsAwYM4Mcff8zTeFavXs3s2bM5ePAgP/zwA4sXLyYrKwt/f/8cbX19fWnfvj29e/dm586dJCQk0K1bN0qXLk379u3zdD8REREREZEHTckJeeS0aNECDw8PWrZsaWxq+VdhYWH8+eef1KlTh5dffpmBAwfSp08foz4qKoqwsDBeeeUV/P396dChA/Hx8ZQpU+aO9+3duzf+/v7UqlULd3d34uLiKFKkCNu3b6dMmTJ06tSJgIAAevXqxbVr1/I8k8LV1ZUvvviCZs2aERAQwIIFC1i6dCmVK1fOtX1UVBQ1a9akbdu21K9fn+zsbNauXZtjKYeIiIiIiMi/hSn7bgvNRR4yaWlplC5dmqioqBzLHpo2bUr16tWZOXOmZYJ7hKSmpuLi4kK1/guwtrW3dDjyCNg/NczSIYiIiIhIPtz6bpCSkpLv5ezac0IeGVlZWfz+++9Mnz4dV1dXnn76aUuHJCIiIiIiInmg5IQ8MpKSkvDx8eGxxx4jOjoaGxv9eouIiIiIiDwM9O1NHhne3t53PQ4zNjb2wQQjIiIiIiIieabkhIjcl+3ju97XMakiIiIiIiI6rUNERERERERELErJCRERERERERGxKCUnRERERERERMSilJwQEREREREREYtSckJERERERERELEqndYjIfWn85lKsbe0tHYb8w/ZPDbN0CCIiIiLyCNPMCRERERERERGxKCUnRERERERERMSilJwQEREREREREYtSckJERERERERELErJCZECFB0djaur6333YzKZWLly5X33IyIiIiIi8jBQckKkAD333HOcPHnygdzr5MmTFClShCVLlpiVZ2Vl0aBBA5599tkHEoeIiIiIiMj9UnJCHgrXr1+3dAiG28Vy48YN7O3tKVGixAOJw8/Pj8mTJ9O/f3+Sk5ON8unTp/P999+zYMGCBxKHiIiIiIjI/VJyQvIlKyuLSZMm4ePjg729PdWqVWP58uVkZWXx2GOPMX/+fLP2Bw4cwMrKih9++AGAS5cuERERgbu7O87OzjRr1oyEhASj/ZgxY6hevTqLFi3Cx8cHOzu7u8bUtGlT+vfvz6BBgyhatCglS5Zk4cKFXLlyhR49euDk5ESFChVYt26dcU1mZia9evUyxuHv78+sWbPM+g0PD6dDhw5MmDABT09P/P39SUxMxGQy8cknn9CkSRPs7OyIiYnJdVnHl19+SVBQEHZ2dpQrV47IyEgyMjKM+lOnTtG4cWPs7OyoVKkSGzduzPPn0L9/f6pVq0bv3r0BOH78OKNGjeK9996jePHiLFq0iICAAOzs7KhYsSLz5s0zrr1+/Tr9+vXDw8MDOzs7ypYty6RJk/J8bxERERERkYJiY+kA5OE0adIkPv74YxYsWICvry/bt2+nW7dubNiwga5du7JkyRJeeuklo31MTAwNGzakbNmyAHTu3Bl7e3vWrVuHi4sL7777Ls2bN+fkyZO4ubkBcPr0aT7//HO++OILrK2t8xTXhx9+yLBhw9i7dy+ffPIJL730EitWrKBjx468/vrrzJgxgxdeeIGkpCSKFCliJFM+++wzihUrxq5du+jTpw8eHh6EhIQY/W7evBlnZ+cciYPXXnuN6dOnU6NGDezs7NiwYYNZ/Y4dOwgLC2P27NkEBwdz5swZ+vTpA8Do0aPJysqiU6dOlCxZkj179pCSksKgQYPy/DmYTCaioqKoWrUqCxcu5P3336dLly48/fTTxMTEMGrUKObOnUuNGjU4cOAAvXv3xsHBge7duzN79mxWrVrFp59+SpkyZTh37hznzp277b3S09NJT0833qempuY5ThERERERkTsxZWdnZ1s6CHm4pKen4+bmxqZNm6hfv75RHhERwdWrVxk2bBhBQUEkJiZSpkwZsrKyKFOmDG+++SZ9+/Zl586dPPXUU5w/fx5bW1vj+goVKjBs2DD69OnDmDFjmDhxIj/99BPu7u55iqtp06ZkZmayY8cO4OasCBcXFzp16sTixYsB+OWXX/Dw8GD37t3Uq1cv13769evHL7/8wvLly4GbMyfWr19PUlIShQsXBiAxMREfHx9mzpzJwIEDjWujo6MZNGgQly5dAqBFixY0b96cESNGGG0+/vhjhg0bxs8//8zXX3/NU089xQ8//ICnpycA69evp3Xr1qxYsYIOHTrkaexRUVFERETw2GOPcfjwYZydnalQoQLjxo2ja9euRrvx48ezdu1adu3axYABAzhy5AibNm3CZDLd9R5jxowhMjIyR3m1/guwtrXPU5zy8No/NczSIYiIiIjIv1RqaiouLi6kpKTg7Oycrz40c0Lu2enTp7l69SpPPPGEWfn169epUaMG1atXJyAggCVLlvDaa6+xbds2zp8/T+fOnQFISEggLS2NYsWKmV3/559/cubMGeN92bJl85yYuKVq1arGz9bW1hQrVozAwECjrGTJkgCcP3/eKHvnnXf44IMPSEpK4s8//+T69etUr17drN/AwEAjMfFXtWrVumM8CQkJxMXFMWHCBKMsMzOTa9eucfXqVY4dO4aXl5eRmADMEj551aNHD0aOHEn//v1xdnbmypUrnDlzhl69ehlLPgAyMjJwcXEBbiZdnnjiCfz9/WnVqhVt27blySefvO09RowYwZAhQ4z3qampeHl53XOsIiIiIiIif6fkhNyztLQ0ANasWUPp0qXN6m7NhAgNDTWSE0uWLKFVq1ZGMiItLQ0PDw9iY2Nz9P3X/RocHBzuObZChQqZvTeZTGZlt2YIZGVlAbBs2TKGDh3K9OnTqV+/Pk5OTkydOpU9e/aY9XO7WO4WY1paGpGRkXTq1ClHXV720bgXNjY22NjYGPcFWLhw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rRotWrTgypUr7Nixg+LFi1s6rLuqXLkyjo6Oub5iYmIsHZ6IiIiIiMgDpZkT8tCqUaMG+/fvt3QY+bJ27Vpu3LiRa532fBARERERkf8a7TkhIvlSEOvKRERERETk4VcQ3w20rENERERERERELErJCRERERERERGxKCUnRERERERERMSilJwQEREREREREYvSaR0icl8av7kUa1t7S4chebB/apilQxARERERyZVmToiIiIiIiIiIRSk5ISIiIiIiIiIWpeSEiIiIiIiIiFiUkhMiIiIiIiIiYlFKTkiBadq0KYMGDbpjG29vb2bOnPlA4rmdgorTZDKxcuVKABITEzGZTBw8eLBAYrSEf8NnIyIiIiIi/006rUMeqPj4eBwcHCwawxdffEGhQoUsGoOIiIiIiIj8HyUn5IFyd3e3dAi4ublZOgQRERERERH5Cy3reISsX7+eRo0a4erqSrFixWjbti1nzpwx6nft2kX16tWxs7OjVq1arFy5MsdShO+++47WrVvj6OhIyZIleeGFF/j999/zHENGRgb9+vXDxcWF4sWLM3LkSLKzs436vy8dMJlMLFq0iI4dO1KkSBF8fX1ZtWpVnu4VGxuLyWRiw4YN1KhRA3t7e5o1a8b58+dZt24dAQEBODs78/zzz3P16lXjur8v6zh//jzt2rXD3t4eHx8fYmJictzr1KlTNG7cGDs7OypVqsTGjRvvGl9+nuVHH31ErVq1cHJyolSpUjz//POcP3/erM2qVavw9fXFzs6Oxx9/nA8//BCTycSlS5eMNjt37iQ4OBh7e3u8vLwYMGAAV65cuacxi4iIiIiIPChKTjxCrly5wpAhQ9i3bx+bN2/GysqKjh07kpWVRWpqKu3atSMwMJBvv/2WcePGMXz4cLPrL126RLNmzahRowb79u1j/fr1/Prrr4SEhOQ5hg8//BAbGxv27t3LrFmzePvtt1m0aNEdr4mMjCQkJIRDhw7Rpk0bQkNDuXDhQp7vOWbMGObOncuuXbs4d+4cISEhzJw5kyVLlrBmzRq+/vpr5syZc9vrw8PDOXfuHFu3bmX58uXMmzfPLCGQlZVFp06dKFy4MHv27GHBggU5nt3f5fdZ3rhxg3HjxpGQkMDKlStJTEwkPDzcqD979izPPvssHTp0ICEhgRdffJE33njDrI8zZ87QqlUrnnnmGQ4dOsQn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ndjb29OuXTtmz55NbGwsu3fv5vDhw8DNWQCZmZlm7ePi4mjfvj3dunWjWrVqlCtXjpMnT5q1ye06d3d3Ll++bPZ8Dh48mCMePz8/Bg8ezNdff02nTp1ybDqaHyVLlsTT05Pvv/+eChUqmL18fHyMdu3bt+fatWusX7+eJUuWGLMmAGrUqEFmZibnz5/P0ce9Ll+Bm8+je/fufPzxx8ycOZP33nsv3+NzdnbG09OTuLg4s/K4uDgqVapkVvbSSy8xefJknn76abZt22aUBwUFceLEiRxjq1ChAlZWVgQEBHDu3DmzTUb/mtgRERERERF5kPK158TixYt57733aN68OX379jXKq1WrxvHjxwssuLzas2cPmzdv5sknn6REiRLs2bOH3377jYCAgHz3GRoayujRo+nevTtjxozht99+o3///rzwwgtm+00AlChRgi1btvD444/TtWtXli1bho3NvT/aihUr0qJFC/r06cP8+fMpVKgQr7zySp7+eg83T5fIzMykbt26FClShI8//hh7e3tjHw5vb2+2b99Oly5dsLW1pXjx4vj6+rJ8+XJ27dpF0aJFefvtt/n111/NvgR7e3uzZ88eEhMTcXR0xM3NzbjH66+/zoABA9izZ4/Zngl//vknr776Ks8++yw+Pj78+OOPxMfH88wzz9zzc8lNZGQkAwYMwMXFhVatWpGens6+ffu4ePEiQ4YMAcDBwYEOHTowcuRIjh07RteuXY3r/fz8CA0NJSwsjOnTp1OjRg1+++03Nm/eTNWqVXnqqafyHMuoUaOoWbMmlStXJj09ndWrV9/X7x7Aq6++yujRoylfvjzVq1cnKiqKgwcPGstU/qp///5kZmbStm1b1q1bR6NGjRg1ahRt27alTJkyPPvss1hZWZGQkMB3333H+PHjadGiBX5+fnTv3p2pU6eSmprKG2+8cV8xi4iIiIiI5Fe+Zk789NNPVKhQIUd5VlbWfc0cyC9nZ2e2b99OmzZt8PPz480332T69Ol33NzvbooUKcKGDRu4cOECtWvX5tlnn6V58+bMnTs31/alSpViy5YtHD58mNDQ0BwzDfJq8eLFlCxZksaNG9OxY0d69+6Nk5NTnqbiu7q6snDhQho2bEjVqlXZtGkTX331FcWKFQNg7NixJCYmUr58eePEjTfffJOgoCBatmxJ06ZNKVWqFB06dDDrd+jQoVhbW1OpUiXc3d1JSkrCzc2Njz/+mLVr1xrHj44ZM8a4xtramj/++IOwsDD8/PwICQmhdevWBbahYkREBIsWLSIqKorAwECaNGlCdHS02cwJuJlkSkhIIDg4mDJlypjVRUVFERYWxiuvvIK/vz8dOnQgPj4+R7u7KVy4MCNGjKBq1ao0btwYa2trli1bdl/jGzBgAEOGDOGVV14hMDCQ9evXs2rVqttuKjpo0CAiIyNp06YNu3btomXLlqxevZqvv/6a2rVrU69ePWbMmGEkqqysrFixYgV//vknderUISIiggkTJtxXzCIiIiIiIvllyv77xgF5ULNmTQYPHky3bt1wcnIiISGBcuXKMXbsWDZu3MiOHTv+iVj/k3788Ue8vLzYtGkTzZs3t3Q4IobU1FRcXFyo1n8B1rb2lg7nkbR/apilQxARERERuatb3w1SUlLyvTddvpZ1jBo1iu7du/PTTz+RlZXFF198wYkTJ1i8eDGrV6/OVyBy05YtW0hLSyMwMJDk5GSGDRuGt7c3jRs3tnRoIiIiIiIiIv+Ie1rW8f3335OdnU379u356quv2LRpEw4ODowaNYpjx47x1Vdf8cQTT/xTsf4n3Lhxg9dff53KlSvTsWNH3N3diY2NpVChQsTExJgdDfnXV+XKlS0dep61bt36tuOYOHGipcMTERERERGRB+yeZk74+vqSnJxMiRIlCA4Oxs3NjcOHD+fYIFLyr2XLlrRs2TLXuqeffpq6devmWvf3ozf/zRYtWsSff/6Za52bm9sDjkZEREREREQs7Z6SE3/fnmLdunVmR0nKP8vJyQknJydLh3HfSpcubekQpABtH9813+vKREREREREIJ+nddySj700RURERERERETM3FNywmQyYTKZcpSJiIiIiIiIiOTXPS/rCA8Px9bWFoBr167Rt29fHBwczNp98cUXBRehiIiIiIiIiDzS7ik50b17d7P33bp1K9BgREREREREROS/x5StjSNEJB9SU1NxcXGhWv8FWNvaWzqch9b+qWGWDkFERERE5L7c+m6QkpKS783y72tDTBERERERERGR+6XkhIiIiIiIiIhYlJITIiIiIiIiImJRSk6IiIiIiIiIiEUpOSEWlZiYiMlk4uDBg5YO5V/BZDKxcuVKS4chIiIiIiLyQCk5IQ+1f+uX+aZNm2IymTCZTNjZ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62jUqNFdr/H29mbz5s00bNgQW1tbihYtCtxMltSrV4/hw4fTs2dP7O3tc1w7duxYihUrRsmSJXnjjTcoXrw4HTp0AGD48OHUq1ePfv36ERERgYODA0ePHmXjxo3Gc3gQHBwc6NChAyNHjuTYsWN07drVqCtTpgyFCxdmzpw59O3bl++++45x48aZXV+2bFlMJhOrV6+mTZs22Nvb4+TkxNChQxk8eDBZWVk0atSIlJQU4uLicHZ2pnv37g9sfCIiIiIiIqA9JyQPmjRpQmZmJk2bNgVu7s9QqVIlSpUqZWzkGBQUxKeffsqyZcuoUqUKo0aNYuzYscbJEXk1aNAgIiMjadOmDbt27bpr++nTp7Nx40a8vLyoUaOGWV2vXr24fv06PXv2zPXayZMnM3DgQGrWrMkvv/zCV199Zcw0qFq1Ktu2bePkyZMEBwdTo0YNRo0ahaen5z2NpyCEhoaSkJBAcHCw2ZISd3d3oqOj+eyzz6hUqRKTJ09m2rRpZteWLl2ayMhIXnvtNUqWLGmcNjJu3DhGjhzJpEmTCAgIoFWrVqxZswYfH58HOjYREREREREAU/ZfzykUeYSMGzeOzz77jEOHDpmVx8bG8vjjj3Px4kVcXV0tE9wjIDU1FRcXF6r1X4C1bc6ZKZI3+6eG3b2RiIiIiMi/2K3vBikpKTg7O+erD82ckEdOWloa3333HXPnzqV///6WDkdERERERETuQskJ+deKiYkxO+ryr6/KlSvf9rp+/fpRs2ZNmjZtetslHfdjx44dt43L0dGxwO8nIiIiIiLyqNOyDvnXunz5Mr/++muudYUKFaJs2bIPOKKb/vzzT3766afb1t/vCR0PCy3rKBha1iEiIiIiD7uCWNah5ISI5EtB/AMkIiIiIiIPP+05ISIiIiIiIiIPPSUnRERERERERMSilJwQEREREREREYtSckJERERERERELErJCRERERERERGxKBtLByAiD7fGby7VUaJ3oKNCRURERETuTjMnRERERERERMSilJwQEREREREREYtSckJERERERERELErJCRERERERERGxKCUnHlKJiYmYTCYOHjxo6VD+dcLDw+nQoYPxPjs7mz59+uDm5vavfGZNmzZl0KBBlg4jx3MTERERERF5UJSc+I8ymUysXLnS0mHkcPbsWZ5//nk8PT2xs7Pjscceo3379hw/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Zs2ayTus57K2toampmaNrycf7UlERERERPSu47IOokZy5coVlJWV1XjOwMAAWlparziihsVlHUREREREBHBZB9FrzcTERN4hEBERERERvRG4rIOIiIiIiIiI5IozJ4ioXqpWhN29e1fOkRARERERkTxVfSd4mV0jmJwgonq5efMmAKB169ZyjoSIiIiIiF4H9+7dg46OTr2uZXKCiOpFT08PAJCfn1/vX0BUP3fv3kXr1q1x9epVbkYqBxx/+eHYyw/HXn449vLDsZcvjr/81GfsBUHAvXv3YGxsXO92mZwgonpRUHi8ZY2Ojg7/gyEn2traHHs54vjLD8defjj28sOxlx+OvXxx/OXnRcf+Zf/BkhtiEhEREREREZFcMTlBRERERERERHLF5AQR1YuKigrmzp0LFRUVeYfyzuHYyxfHX3449vLDsZcfjr38cOzli+MvP/Iae4nwMs/6ICIiIiIiIiJ6SZw5QURERERERERyxeQEEREREREREckVkxNEREREREREJFdMThARERERERGRXDE5QfSO+u9//wtTU1OoqqrCyckJf/zxxzPLb9++HZaWllBVVYWNjQ327dsnc14QBMyZMwdGRkZQU1ODu7s7Lly4IFPm1q1b8PX1hba2NnR1dTFmzBgUFxc3eN9edw059mVlZZgxYwZsbGygoaEBY2Nj+Pn54e+//5apw9TUFBKJROYVGRnZKP173TX0ve/v719tbD09PWXK8N5/rKHH/ulxr3otXLhQLMN7/7EXGftz587ho48+Esdu6dKl9arz4cOH+PLLL6Gvrw9NTU189NFHuHHjRkN2643Q0GMfERGB999/H1paWmjRogW8vLyQk5MjU8bV1bXaff/ZZ581dNfeCA09/iEhIdXG1tLSUqYM7/3HGnrsa/p9LpFI8OWXX4pleO8/9iJjv3r1avTs2RNNmzZF06ZN4e7uXq38K/s7XyCid86WLVsEZWVlYe3atcK5c+eEsWPHCrq6usKNGzdqLJ+SkiIoKioKCxYsELKysoRZs2YJSkpKwpkzZ8QykZGRgo6OjrBnzx4hMzNT+PDDD4W2bdsKDx48EMt4enoKdnZ2wvHjx4WkpCShQ4cOwogRIxq9v6+Thh77O3fuCO7u7sLWrVuF8+fPC8eOHRO6dOkiODo6ytRjYmIihIWFCQUFBeKruLi40fv7ummMe3/U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WVlCYGCgoKurK1y/fl0QBEEYOXKk8NVXX4nlU1JShCZNmgiLFi0SsrOzhblz59b4KFFdXV1h7969wunTp4VBgwbV+Ighe3t74cSJE0JycrJgZmb2Tj5OsSHHvrS0VPjwww+FVq1aCRkZGTKPznr06JEgCIJw9OhRYcmSJUJGRoaQl5cnbNiwQWjevLng5+f36gdAzhp6/O/duycEBwcLx44dEy5duiQcPnxYcHBwEMzMzISHDx+K9fDeb5zfO4IgCEVFRYK6urrwww8/VGuT9/5jLzr2jx49EtLT04X09HTByMhICA4OFtLT04ULFy7UuU5BePw4xTZt2gjx8fHCyZMnhW7dugndunV7dR1/DTTG2H/++eeCjo6OIJVKZX7n379/XxAEQbh48aIQFhYmnDx5Urh06ZKwd+9eoV27doKzs/Or7fxroDHGf+rUqYJUKhUuXbokpKSkCO7u7kKzZs2EwsJCsQzv/cYZe0F4/OSJNm3aCDNmzKjWJu/9x1507CMjIwVlZWVhx44dMr9T7t27J1PmVfydz+QE0Tvq+++/F9q0aSMoKysLXbp0EY4fPy6ec3FxEUaNGiVTftu2bYK5ubmgrKwsWFtbC7GxsTLnKysrhdmzZwsGBgaCioqK4ObmJuTk5MiUuXnzpjBixAhBU1NT0NbWFj799FOZX3zvioYc+0uXLgkAanxVPfc7LS1NcHJyEnR0dARVVVXByspKmD9/vsyX53dJQ47//fv3hf/85z9C8+bNBSUlJcHExEQYO3aszBc0QeC9X6Whf+8IgiCsWrVKUFNTE+7cuVPtHO/9//ciY1/b7xUXF5c61ykIgvDgwQPhiy++EJo2bSqoq6sLgwcPFgoKChqzm6+lhh772n7nR0dHC4IgCPn5+YKzs7Ogp6cnqKioCB06dBCmTZsmFBUVvaIev14aevyHDRsmGBkZCcrKykLLli2FYcOGCRcvXpRpk/f+Y43xe+fAgQMCgGp/YwoC7/0nvcjYm5iY1Dj2c+fOFcu8qr/zJYIgCHWfZ0FERERERERE1LC45wQRERERERERyRWTE0REREREREQkV0xOEBEREREREZFcMTlBRERERERERHLF5AQRERERERERyRWTE0REREREREQkV0xOEBEREREREZFcMTlBRERERERERHLF5AQRERERERERyRWTE0RERERvAH9/f3h5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",
|
||
"text/plain": [
|
||
"<Figure size 1000x600 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Train Accuracy: 1.0\n",
|
||
"Train Precision: 1.0\n",
|
||
"Train Recall: 1.0\n",
|
||
"Train F1 Score: 1.0\n",
|
||
"Train ROC AUC: 1.0\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Предсказание и оценка\n",
|
||
"y_pred = model.predict(X_test_encoded)\n",
|
||
"\n",
|
||
"accuracy = accuracy_score(y_test, y_pred)\n",
|
||
"precision = precision_score(y_test, y_pred)\n",
|
||
"recall = recall_score(y_test, y_pred)\n",
|
||
"f1 = f1_score(y_test, y_pred)\n",
|
||
"roc_auc = roc_auc_score(y_test, y_pred)\n",
|
||
"\n",
|
||
"print(f\"Accuracy: {accuracy}\")\n",
|
||
"print(f\"Precision: {precision}\")\n",
|
||
"print(f\"Recall: {recall}\")\n",
|
||
"print(f\"F1 Score: {f1}\")\n",
|
||
"print(f\"ROC AUC: {roc_auc}\")\n",
|
||
"\n",
|
||
"# Кросс-валидация\n",
|
||
"scores = cross_val_score(\n",
|
||
" model, X_train_encoded, y_train_resampled, cv=5, scoring=\"accuracy\"\n",
|
||
")\n",
|
||
"accuracy_cv = scores.mean()\n",
|
||
"print(f\"Cross-validated Accuracy: {accuracy_cv}\")\n",
|
||
"\n",
|
||
"# Анализ важности признаков\n",
|
||
"feature_importances = model.feature_importances_\n",
|
||
"feature_names = X_train_encoded.columns\n",
|
||
"\n",
|
||
"importance_df = pd.DataFrame(\n",
|
||
" {\"Feature\": feature_names, \"Importance\": feature_importances}\n",
|
||
")\n",
|
||
"importance_df = importance_df.sort_values(by=\"Importance\", ascending=False)\n",
|
||
"\n",
|
||
"plt.figure(figsize=(10, 6))\n",
|
||
"sns.barplot(x=\"Importance\", y=\"Feature\", data=importance_df)\n",
|
||
"plt.title(\"Feature Importance\")\n",
|
||
"plt.show()\n",
|
||
"\n",
|
||
"# Проверка на переобучение\n",
|
||
"y_train_pred = model.predict(X_train_encoded)\n",
|
||
"\n",
|
||
"accuracy_train = accuracy_score(y_train_resampled, y_train_pred)\n",
|
||
"precision_train = precision_score(y_train_resampled, y_train_pred)\n",
|
||
"recall_train = recall_score(y_train_resampled, y_train_pred)\n",
|
||
"f1_train = f1_score(y_train_resampled, y_train_pred)\n",
|
||
"roc_auc_train = roc_auc_score(y_train_resampled, y_train_pred)\n",
|
||
"\n",
|
||
"print(f\"Train Accuracy: {accuracy_train}\")\n",
|
||
"print(f\"Train Precision: {precision_train}\")\n",
|
||
"print(f\"Train Recall: {recall_train}\")\n",
|
||
"print(f\"Train F1 Score: {f1_train}\")\n",
|
||
"print(f\"Train ROC AUC: {roc_auc_train}\")"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": ".venv",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.12.6"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|