AIM-PIbd-31-Potapov-N-S/lab_3/lab3.ipynb

2457 lines
469 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Вариант 2. Показатели сердечных заболеваний"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Этот датасет представляет собой данные, собранные в ходе ежегодного опроса CDC о состоянии здоровья более 400 тысяч взрослых в США. Он включает информацию о различных факторах риска сердечных заболеваний, таких как гипертония, высокий уровень холестерина, курение, диабет, ожирение, недостаток физической активности и злоупотребление алкоголем. Также содержатся данные о состоянии здоровья респондентов, наличии хронических заболеваний (например, диабет, артрит, астма), уровне физической активности, психологическом здоровье, а также о социальных и демографических характеристиках, таких как пол, возраст, этническая принадлежность и место проживания. Датасет предоставляет информацию, которая может быть использована для анализа и предсказания риска сердечных заболеваний, а также для разработки программ профилактики и улучшения общественного здоровья."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Бизнес-цели:\n",
"- Предсказание риска сердечных заболеваний: создание модели для определения вероятности заболевания сердечными болезнями на основе факторов риска.\n",
"- Идентификация ключевых факторов, влияющих на здоровье: выявление наиболее значимых факторов, влияющих на риск сердечных заболеваний, чтобы разработать программы профилактики.\n",
"\n",
"#### Цели технического проекта:\n",
"- Предсказание риска сердечных заболеваний: разработка модели машинного обучения (например, логистической регрессии, случайного леса) для классификации респондентов по риску сердечных заболеваний (с использованием функции \"HadHeartAttack\").\n",
"- Идентификация ключевых факторов: анализ факторов, влияющих на развитие сердечных заболеваний, чтобы выявить наиболее значимые признаки для предсказания."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Краткое описание для колонок:\n",
"1. **State** — штат проживания респондента.\n",
"2. **Sex** — пол респондента.\n",
"3. **GeneralHealth** — общее самочувствие респондента.\n",
"4. **PhysicalHealthDays** — количество дней, когда респондент испытывал физические ограничения.\n",
"5. **MentalHealthDays** — количество дней с психическими ограничениями.\n",
"6. **LastCheckupTime** — время последнего медицинского осмотра.\n",
"7. **PhysicalActivities** — уровень физической активности респондента.\n",
"8. **SleepHours** — количество часов сна.\n",
"9. **RemovedTeeth** — наличие отсутствующих зубов.\n",
"10. **HadHeartAttack** — был ли у респондента сердечный приступ (целевая переменная).\n",
"11. **HadAngina** — был ли у респондента стенокардия.\n",
"12. **HadStroke** — был ли у респондента инсульт.\n",
"13. **HadAsthma** — был ли у респондента астма.\n",
"14. **HadSkinCancer** — был ли у респондента рак кожи.\n",
"15. **HadCOPD** — был ли у респондента хронический обструктивный бронхит.\n",
"16. **HadDepressiveDisorder** — был ли у респондента депрессивное расстройство.\n",
"17. **HadKidneyDisease** — был ли у респондента заболевания почек.\n",
"18. **HadArthritis** — был ли у респондента артрит.\n",
"19. **HadDiabetes** — был ли у респондента диабет.\n",
"20. **DeafOrHardOfHearing** — имеется ли у респондента проблемы со слухом.\n",
"21. **BlindOrVisionDifficulty** — имеются ли у респондента проблемы со зрением.\n",
"22. **DifficultyConcentrating** — имеется ли у респондента проблемы с концентрацией внимания.\n",
"23. **DifficultyWalking** — имеются ли у респондента проблемы с ходьбой.\n",
"24. **DifficultyDressingBathing** — имеются ли у респондента проблемы с одеванием и купанием.\n",
"25. **DifficultyErrands** — имеются ли у респондента проблемы с выполнением повседневных дел.\n",
"26. **SmokerStatus** — статус курения респондента.\n",
"27. **ECigaretteUsage** — использование электронных сигарет.\n",
"28. **ChestScan** — проходил ли респондент обследование грудной клетки.\n",
"29. **RaceEthnicityCategory** — этническая принадлежность респондента.\n",
"30. **AgeCategory** — возрастная категория респондента.\n",
"31. **HeightInMeters** — рост респондента в метрах.\n",
"32. **WeightInKilograms** — вес респондента в килограммах.\n",
"33. **BMI** — индекс массы тела.\n",
"34. **AlcoholDrinkers** — является ли респондент алкоголиком.\n",
"35. **HIVTesting** — проходил ли респондент тест на ВИЧ.\n",
"36. **FluVaxLast12** — получал ли респондент прививку от гриппа за последние 12 месяцев.\n",
"37. **PneumoVaxEver** — получал ли респондент прививку от пневмококка.\n",
"38. **TetanusLast10Tdap** — получал ли респондент прививку от столбняка за последние 10 лет.\n",
"39. **HighRiskLastYear** — был ли респондент в группе высокого риска в прошлом году.\n",
"40. **CovidPos** — был ли респондент заражен COVID-19."
]
},
{
"cell_type": "code",
"execution_count": 362,
"metadata": {},
"outputs": [],
"source": [
"from typing import Any\n",
"from math import ceil\n",
"\n",
"import pandas as pd\n",
"from pandas import DataFrame, Series\n",
"from sklearn.model_selection import train_test_split\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Загрузим данные из датасета"
]
},
{
"cell_type": "code",
"execution_count": 249,
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv('csv\\\\heart_2022_no_nans.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Посмотрим общие сведения о датасете"
]
},
{
"cell_type": "code",
"execution_count": 250,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 246022 entries, 0 to 246021\n",
"Data columns (total 40 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 State 246022 non-null object \n",
" 1 Sex 246022 non-null object \n",
" 2 GeneralHealth 246022 non-null object \n",
" 3 PhysicalHealthDays 246022 non-null float64\n",
" 4 MentalHealthDays 246022 non-null float64\n",
" 5 LastCheckupTime 246022 non-null object \n",
" 6 PhysicalActivities 246022 non-null object \n",
" 7 SleepHours 246022 non-null float64\n",
" 8 RemovedTeeth 246022 non-null object \n",
" 9 HadHeartAttack 246022 non-null object \n",
" 10 HadAngina 246022 non-null object \n",
" 11 HadStroke 246022 non-null object \n",
" 12 HadAsthma 246022 non-null object \n",
" 13 HadSkinCancer 246022 non-null object \n",
" 14 HadCOPD 246022 non-null object \n",
" 15 HadDepressiveDisorder 246022 non-null object \n",
" 16 HadKidneyDisease 246022 non-null object \n",
" 17 HadArthritis 246022 non-null object \n",
" 18 HadDiabetes 246022 non-null object \n",
" 19 DeafOrHardOfHearing 246022 non-null object \n",
" 20 BlindOrVisionDifficulty 246022 non-null object \n",
" 21 DifficultyConcentrating 246022 non-null object \n",
" 22 DifficultyWalking 246022 non-null object \n",
" 23 DifficultyDressingBathing 246022 non-null object \n",
" 24 DifficultyErrands 246022 non-null object \n",
" 25 SmokerStatus 246022 non-null object \n",
" 26 ECigaretteUsage 246022 non-null object \n",
" 27 ChestScan 246022 non-null object \n",
" 28 RaceEthnicityCategory 246022 non-null object \n",
" 29 AgeCategory 246022 non-null object \n",
" 30 HeightInMeters 246022 non-null float64\n",
" 31 WeightInKilograms 246022 non-null float64\n",
" 32 BMI 246022 non-null float64\n",
" 33 AlcoholDrinkers 246022 non-null object \n",
" 34 HIVTesting 246022 non-null object \n",
" 35 FluVaxLast12 246022 non-null object \n",
" 36 PneumoVaxEver 246022 non-null object \n",
" 37 TetanusLast10Tdap 246022 non-null object \n",
" 38 HighRiskLastYear 246022 non-null object \n",
" 39 CovidPos 246022 non-null object \n",
"dtypes: float64(6), object(34)\n",
"memory usage: 75.1+ MB\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>count</th>\n",
" <th>mean</th>\n",
" <th>std</th>\n",
" <th>min</th>\n",
" <th>25%</th>\n",
" <th>50%</th>\n",
" <th>75%</th>\n",
" <th>max</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>PhysicalHealthDays</th>\n",
" <td>246022.0</td>\n",
" <td>4.119026</td>\n",
" <td>8.405844</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>3.00</td>\n",
" <td>30.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MentalHealthDays</th>\n",
" <td>246022.0</td>\n",
" <td>4.167140</td>\n",
" <td>8.102687</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>4.00</td>\n",
" <td>30.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>SleepHours</th>\n",
" <td>246022.0</td>\n",
" <td>7.021331</td>\n",
" <td>1.440681</td>\n",
" <td>1.00</td>\n",
" <td>6.00</td>\n",
" <td>7.00</td>\n",
" <td>8.00</td>\n",
" <td>24.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>HeightInMeters</th>\n",
" <td>246022.0</td>\n",
" <td>1.705150</td>\n",
" <td>0.106654</td>\n",
" <td>0.91</td>\n",
" <td>1.63</td>\n",
" <td>1.70</td>\n",
" <td>1.78</td>\n",
" <td>2.41</td>\n",
" </tr>\n",
" <tr>\n",
" <th>WeightInKilograms</th>\n",
" <td>246022.0</td>\n",
" <td>83.615179</td>\n",
" <td>21.323156</td>\n",
" <td>28.12</td>\n",
" <td>68.04</td>\n",
" <td>81.65</td>\n",
" <td>95.25</td>\n",
" <td>292.57</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BMI</th>\n",
" <td>246022.0</td>\n",
" <td>28.668136</td>\n",
" <td>6.513973</td>\n",
" <td>12.02</td>\n",
" <td>24.27</td>\n",
" <td>27.46</td>\n",
" <td>31.89</td>\n",
" <td>97.65</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" count mean std min 25% 50% \\\n",
"PhysicalHealthDays 246022.0 4.119026 8.405844 0.00 0.00 0.00 \n",
"MentalHealthDays 246022.0 4.167140 8.102687 0.00 0.00 0.00 \n",
"SleepHours 246022.0 7.021331 1.440681 1.00 6.00 7.00 \n",
"HeightInMeters 246022.0 1.705150 0.106654 0.91 1.63 1.70 \n",
"WeightInKilograms 246022.0 83.615179 21.323156 28.12 68.04 81.65 \n",
"BMI 246022.0 28.668136 6.513973 12.02 24.27 27.46 \n",
"\n",
" 75% max \n",
"PhysicalHealthDays 3.00 30.00 \n",
"MentalHealthDays 4.00 30.00 \n",
"SleepHours 8.00 24.00 \n",
"HeightInMeters 1.78 2.41 \n",
"WeightInKilograms 95.25 292.57 \n",
"BMI 31.89 97.65 "
]
},
"execution_count": 250,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.info()\n",
"df.describe().transpose()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Получим информацию о пустых значениях в колонках датасета"
]
},
{
"cell_type": "code",
"execution_count": 251,
"metadata": {},
"outputs": [],
"source": [
"def get_null_columns_info(df: DataFrame) -> DataFrame:\n",
" \"\"\"\n",
" Возвращает информацию о пропущенных значениях в колонках датасета\n",
" \"\"\"\n",
" w = []\n",
" df_len = len(df)\n",
"\n",
" for column in df.columns:\n",
" column_nulls = df[column].isnull()\n",
" w.append([column, column_nulls.any(), column_nulls.sum() / df_len])\n",
"\n",
" null_df = DataFrame(w).rename(columns={0: \"Column\", 1: \"Has Null\", 2: \"Null Percent\"})\n",
"\n",
" return null_df"
]
},
{
"cell_type": "code",
"execution_count": 252,
"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>Column</th>\n",
" <th>Has Null</th>\n",
" <th>Null Percent</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>State</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Sex</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>GeneralHealth</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>PhysicalHealthDays</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>MentalHealthDays</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>LastCheckupTime</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>PhysicalActivities</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>SleepHours</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>RemovedTeeth</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>HadHeartAttack</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>HadAngina</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>HadStroke</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>HadAsthma</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>HadSkinCancer</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>HadCOPD</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>HadDepressiveDisorder</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>HadKidneyDisease</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>HadArthritis</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>HadDiabetes</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>DeafOrHardOfHearing</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>BlindOrVisionDifficulty</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>DifficultyConcentrating</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>DifficultyWalking</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>DifficultyDressingBathing</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>DifficultyErrands</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>SmokerStatus</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>ECigaretteUsage</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>ChestScan</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>RaceEthnicityCategory</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>AgeCategory</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>HeightInMeters</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>WeightInKilograms</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>BMI</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>AlcoholDrinkers</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>HIVTesting</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>FluVaxLast12</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>PneumoVaxEver</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>TetanusLast10Tdap</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>HighRiskLastYear</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>CovidPos</td>\n",
" <td>False</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Column Has Null Null Percent\n",
"0 State False 0.0\n",
"1 Sex False 0.0\n",
"2 GeneralHealth False 0.0\n",
"3 PhysicalHealthDays False 0.0\n",
"4 MentalHealthDays False 0.0\n",
"5 LastCheckupTime False 0.0\n",
"6 PhysicalActivities False 0.0\n",
"7 SleepHours False 0.0\n",
"8 RemovedTeeth False 0.0\n",
"9 HadHeartAttack False 0.0\n",
"10 HadAngina False 0.0\n",
"11 HadStroke False 0.0\n",
"12 HadAsthma False 0.0\n",
"13 HadSkinCancer False 0.0\n",
"14 HadCOPD False 0.0\n",
"15 HadDepressiveDisorder False 0.0\n",
"16 HadKidneyDisease False 0.0\n",
"17 HadArthritis False 0.0\n",
"18 HadDiabetes False 0.0\n",
"19 DeafOrHardOfHearing False 0.0\n",
"20 BlindOrVisionDifficulty False 0.0\n",
"21 DifficultyConcentrating False 0.0\n",
"22 DifficultyWalking False 0.0\n",
"23 DifficultyDressingBathing False 0.0\n",
"24 DifficultyErrands False 0.0\n",
"25 SmokerStatus False 0.0\n",
"26 ECigaretteUsage False 0.0\n",
"27 ChestScan False 0.0\n",
"28 RaceEthnicityCategory False 0.0\n",
"29 AgeCategory False 0.0\n",
"30 HeightInMeters False 0.0\n",
"31 WeightInKilograms False 0.0\n",
"32 BMI False 0.0\n",
"33 AlcoholDrinkers False 0.0\n",
"34 HIVTesting False 0.0\n",
"35 FluVaxLast12 False 0.0\n",
"36 PneumoVaxEver False 0.0\n",
"37 TetanusLast10Tdap False 0.0\n",
"38 HighRiskLastYear False 0.0\n",
"39 CovidPos False 0.0"
]
},
"execution_count": 252,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_null_columns_info(df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Получим информацию о выбросах"
]
},
{
"cell_type": "code",
"execution_count": 371,
"metadata": {},
"outputs": [],
"source": [
"def get_numeric_columns(df: DataFrame) -> list[str]:\n",
" \"\"\"\n",
" Возвращает список числовых колонок\n",
" \"\"\"\n",
" return list(filter(lambda column: pd.api.types.is_numeric_dtype(df[column]), df.columns))\n",
"\n",
"def get_filtered_columns(df: DataFrame, no_numeric=False, no_text=False) -> list[str]:\n",
" \"\"\"\n",
" Возвращает список колонок по фильтру\n",
" \"\"\"\n",
" w = []\n",
" for column in df.columns:\n",
" if no_numeric and pd.api.types.is_numeric_dtype(df[column]):\n",
" continue\n",
" if no_text and not pd.api.types.is_numeric_dtype(df[column]):\n",
" continue\n",
" w.append(column)\n",
" return w"
]
},
{
"cell_type": "code",
"execution_count": 254,
"metadata": {},
"outputs": [],
"source": [
"def get_outliers_info(df: DataFrame) -> DataFrame:\n",
" \"\"\"\n",
" Возаращает информацию о выбросах в числовых колонках датасета\n",
" \"\"\"\n",
" data = {\n",
" \"Column\": [],\n",
" \"Has Outliers\": [],\n",
" \"Outliers Count\": [],\n",
" \"Min Value\": [],\n",
" \"Max Value\": [],\n",
" \"Q1\": [],\n",
" \"Q3\": []\n",
" }\n",
"\n",
" info = DataFrame(data)\n",
"\n",
" for column in get_numeric_columns(df):\n",
" Q1: float = df[column].quantile(0.25)\n",
" Q3: float = df[column].quantile(0.75)\n",
" IQR: float = Q3 - Q1\n",
"\n",
" lower_bound: float = Q1 - 1.5 * IQR\n",
" upper_bound: float = Q3 + 1.5 * IQR\n",
"\n",
" outliers: DataFrame = df[(df[column] < lower_bound) | (df[column] > upper_bound)]\n",
" outlier_count: int = outliers.shape[0]\n",
"\n",
" info.loc[len(info)] = [column, outlier_count > 0, outlier_count, df[column].min(), df[column].max(), Q1, Q3]\n",
"\n",
" return info"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Посмотрим данные по выбросам"
]
},
{
"cell_type": "code",
"execution_count": 255,
"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>Column</th>\n",
" <th>Has Outliers</th>\n",
" <th>Outliers Count</th>\n",
" <th>Min Value</th>\n",
" <th>Max Value</th>\n",
" <th>Q1</th>\n",
" <th>Q3</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>PhysicalHealthDays</td>\n",
" <td>True</td>\n",
" <td>38810</td>\n",
" <td>0.00</td>\n",
" <td>30.00</td>\n",
" <td>0.00</td>\n",
" <td>3.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>MentalHealthDays</td>\n",
" <td>True</td>\n",
" <td>32714</td>\n",
" <td>0.00</td>\n",
" <td>30.00</td>\n",
" <td>0.00</td>\n",
" <td>4.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>SleepHours</td>\n",
" <td>True</td>\n",
" <td>3488</td>\n",
" <td>1.00</td>\n",
" <td>24.00</td>\n",
" <td>6.00</td>\n",
" <td>8.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>HeightInMeters</td>\n",
" <td>True</td>\n",
" <td>830</td>\n",
" <td>0.91</td>\n",
" <td>2.41</td>\n",
" <td>1.63</td>\n",
" <td>1.78</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>WeightInKilograms</td>\n",
" <td>True</td>\n",
" <td>5940</td>\n",
" <td>28.12</td>\n",
" <td>292.57</td>\n",
" <td>68.04</td>\n",
" <td>95.25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>BMI</td>\n",
" <td>True</td>\n",
" <td>7563</td>\n",
" <td>12.02</td>\n",
" <td>97.65</td>\n",
" <td>24.27</td>\n",
" <td>31.89</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Column Has Outliers Outliers Count Min Value Max Value \\\n",
"0 PhysicalHealthDays True 38810 0.00 30.00 \n",
"1 MentalHealthDays True 32714 0.00 30.00 \n",
"2 SleepHours True 3488 1.00 24.00 \n",
"3 HeightInMeters True 830 0.91 2.41 \n",
"4 WeightInKilograms True 5940 28.12 292.57 \n",
"5 BMI True 7563 12.02 97.65 \n",
"\n",
" Q1 Q3 \n",
"0 0.00 3.00 \n",
"1 0.00 4.00 \n",
"2 6.00 8.00 \n",
"3 1.63 1.78 \n",
"4 68.04 95.25 \n",
"5 24.27 31.89 "
]
},
"execution_count": 255,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"outliers_info = get_outliers_info(df)\n",
"outliers_info"
]
},
{
"cell_type": "code",
"execution_count": 256,
"metadata": {},
"outputs": [],
"source": [
"def visualize_outliers(df: DataFrame) -> None:\n",
" \"\"\"\n",
" Генерирует диаграммы BoxPlot для числовых колонок датасета\n",
" \"\"\"\n",
" columns = get_numeric_columns(df)\n",
" plt.figure(figsize=(15, 10))\n",
" rows: int = ceil(len(columns) / 3)\n",
" for index, column in enumerate(columns, 1):\n",
" plt.subplot(rows, 3, index)\n",
" plt.boxplot(df[column], vert=True, patch_artist=True)\n",
" plt.title(f\"Диаграмма размахов\\n\\\"{column}\\\"\")\n",
" plt.xlabel(column)\n",
" \n",
" plt.tight_layout()\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Визуализируем выбросы с помощью диаграмм"
]
},
{
"cell_type": "code",
"execution_count": 257,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABdIAAAPeCAYAAAAI5OjmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3wU1f7/8fcmgTSS0BMiCVVpoiAqvShIiBRRkKrSrgUpAraLStUrYgMrlnsFpIgNUVApIsWCKCiiCEgVlN4SWkLJ+f3BL/PNJJtNQsrsLq/n47EPMzNnZ86smnfms2fOuIwxRgAAAAAAAAAAwK0ApzsAAAAAAAAAAIA3o5AOAAAAAAAAAIAHFNIBAAAAAAAAAPCAQjoAAAAAAAAAAB5QSAcAAAAAAAAAwAMK6QAAAAAAAAAAeEAhHQAAAAAAAAAADyikAwAAAAAAAADgAYV0AAAAAAAAAAA8oJAOAAAAAAAAAIAHFNLhsz766CO5XC63ryuvvNLp7gEAADfIbwAAfA/5DQBSkNMdAPLrscceU61atazl//znPw72BgAA5Ab5DQCA7yG/AVzKKKTD5910001q1aqVtfzf//5Xhw4dcq5DAAAgR+Q3AAC+h/wGcCljahf4rDNnzkiSAgJy/s942rRpcrlc2rlzp7UuLS1NV111lVwul6ZNm2atX79+vfr27auqVasqJCREMTEx6t+/vw4fPmzb59ixY93e1hYU9H/fT7Vq1UpXXnml1q5dqyZNmig0NFRVqlTRG2+8keVcRo8erQYNGigqKkrh4eFq3ry5li1bZmu3c+dO6zjz5s2zbUtJSVGpUqXkcrn0/PPPZ+ln+fLldfbsWdt73nvvPWt/Gf/4+fTTT9W+fXvFxsYqODhY1apV05NPPqnz58/n+FmnH2/Tpk3q1q2bIiMjVaZMGT3wwANKSUmxtZ06dapuvPFGlS9fXsHBwapdu7amTJmSZZ+33HKLKleurJCQEJUvX16dOnXSb7/9ZmuTfh6TJ0/O8v6aNWvK5XJp8ODB1rojR47ooYceUt26dVWiRAlFRkYqMTFRv/76q+29ffr0UUhIiDZu3Ghbn5CQoFKlSmnPnj3Wuu3bt+v2229X6dKlFRYWpkaNGunzzz+3vW/58uW2/16Cg4N1xRVXaMKECTLGeP5wAcAPkN/zbNvIb/IbAHwB+T3Pto38Jr9xaWJEOnxWepAHBwdf1PtnzJiRJQwkacmSJdq+fbv69eunmJgYbdiwQW+99ZY2bNigH374QS6Xy9Z+ypQpKlGihLWc+Q+Lo0eP6uabb1a3bt3Us2dPffDBBxo4cKCKFy+u/v37S5KSk5P13//+Vz179tTdd9+t48eP63//+58SEhL0448/ql69erZ9hoSEaOrUqercubO1bu7cuVmCMqPjx49rwYIFuvXWW611U6dOVUhISJb3TZs2TSVKlNCIESNUokQJff311xo9erSSk5P13HPPZXuMjLp166bKlStrwoQJ+uGHH/Tyyy/r6NGjevfdd22fXZ06ddSpUycFBQVp/vz5uv/++5WWlqZBgwbZ9nfPPfcoJiZGe/bs0auvvqo2bdpox44dCgsLy/K5DBs2zFr3/fff66+//srSv+3bt2vevHm6/fbbVaVKFe3fv19vvvmmWrZsqT/++EOxsbGSpJdeeklff/21+vTpo1WrVikwMFBvvvmmFi9erBkzZljt9u/fryZNmujUqVMaOnSoypQpo+nTp6tTp0766KOPbJ+79H+3RJ4+fVrvv/++HnvsMZUvX14DBgzI1ecLAL6K/Ca/yW8A8D3kN/lNfgOSDOCjJk+ebCSZX3/91ba+ZcuWpk6dOrZ1U6dONZLMjh07jDHGpKSkmPj4eJOYmGgkmalTp1ptT506leVY7733npFkVq5caa0bM2aMkWQOHjyYbR9btmxpJJkXXnjBWpeammrq1atnypcvb86cOWOMMebcuXMmNTXV9t6jR4+a6Oho079/f2vdjh07jCTTs2dPExQUZPbt22dta926tenVq5eRZJ577rks/ezZs6fp0KGDtf6vv/4yAQEBpmfPnlnOw91ncO+995qwsDCTkpKS7flmPF6nTp1s6++///4s/77cHSchIcFUrVrV4zE++OADI8msWbPGWifJdO3a1QQFBdnWDxgwwPpcBg0aZK1PSUkx58+ft+13x44dJjg42IwfP962ftGiRUaSeeqpp8z27dtNiRIlTOfOnW1thg0bZiSZb775xlp3/PhxU6VKFVO5cmXrWMuWLTOSzLJly2x9CQgIMPfff7/H8wYAf0B+k9/kNwD4HvKb/Ca/AWOY2gU+K/1Wr3LlyuX5va+99poOHz6sMWPGZNkWGhpq/ZySkqJDhw6pUaNGkqSff/45z8cKCgrSvffeay0XL15c9957rw4cOKC1a9dKkgIDA1W8eHFJF255O3LkiM6dO6drr73W7TGvueYa1alTRzNmzJAk/fXXX1q2bJn69u2bbT/69++vhQsXat++fZKk6dOnq3HjxrriiiuytM34GRw/flyHDh1S8+bNderUKW3atClX5535G+0hQ4ZIkr744gu3x0lKStKhQ4fUsmVLbd++XUlJSbb3nzp1SocOHdK6dev09ttvKzo6Okvfo6Oj1b59e02dOtV6zwcffKB+/fpl6V9wcLA1euH8+fM6fPiwSpQooRo1amT5zNu2bat7771X48eP12233aaQkBC9+eabtjZffPGFrr/+ejVr1sxaV6JECd1zzz3auXOn/vjjD1v79PPdtWuXnn32WaWlpenGG29080kCgH8hv8lv8hsAfA/5TX6T3wBzpMOH/fXXXwoKCspzkCclJenpp5/WiBEjFB0dnWX7kSNH9MADDyg6OlqhoaEqV66cqlSpYr03r2JjYxUeHm5blx5AGeeMmz59uq666iqFhISoTJkyKleunD7//PNsj9mvXz8rsKZNm6YmTZro8ssvz7Yf9erV05VXXql3331XxhhNmzbNbcBJ0oYNG3TrrbcqKipKkZGRKleunO644w5Juf8MMvelWrVqCggIsJ3zd999pzZt2ig8PFwlS5ZUuXLl9Nhjj7k9zvjx41WuXDnVr19fO3fu1PLlyxUREZHluP369dPs2bOVmpqqDz/8UKVKlXIbkGlpaZo0aZIuv/xyBQcHq2zZsipXrpzWr1/v9hyff/55lS5dWuvWrdPLL7+s8uXL27b/9ddfqlGjRpb3pT/RPvPtbZ07d1a5cuVUqVIljR07Vk888YS6dOmS5f0A4G/Ib/Kb/AYA30N+k9/kN0AhHT5s8+bNqlq1qu3hIrkxceJEBQQE6OGHH3a7vVu3bnr77bd13333ae7cuVq8eLEWLlwo6cIv/8Iwc+ZM9e3bV9WqVdP//vc/LVy4UEuWLNGNN96Y7THvuOMObd26VT/88IOmT5+ebShn1L9/f02dOlUrVqzQvn371K1btyxtjh07ppYtW+rXX3/V+PHjNX/+fC1ZskQTJ06UdPGfQea57bZt26bWrVvr0KFDevHFF/X5559ryZIlGj58uNvj/Otf/9LixYv1zjvvKCQkRF26dHEbuO3bt1fx4sU1b948TZ06VX36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7NixuW47ePDgwu0QAAAOqly5svr27et0N2zy8jdKets1a9YUfscAACgEO3fulMvl0rRp05zuCgAfQCEdPi39Ak6Sli9fbrvw69u3r1wul/WKjIzU1VdfrRdeeEGpqakO9toZlStXVocOHdxuS//sPvrooyLt0/fff6+xY8fq2LFjF72P9P8G0l8hISGKjY1VQkKCXn75ZR0/frzgOpwPrVq1soolffv2VatWrRztDwB4q9xke2RkpE6fPp3lvVu2bLHy4Pnnny/Ufn7xxRe5/nI4t3LKYye+/Jek119/Pd8FhlatWln/bgICAhQZGakaNWrozjvv1JIlSwqmo/mUXkxZvny5JFFYAQAv5+lvBkmaP3++WrZsqfLlyyssLExVq1ZVt27dtHDhQod6nLP0QXGHDh1yu93Tdb234NoX/oxCOvxacHCwZsyYoRkzZujpp59W6dKl9dBDD6lPnz6O9uvOO+/U6dOnValSJUf74bTvv/9e48aNy1chPd348eM1Y8YMTZkyRUOGDJEkDRs2THXr1tX69evzvX8AgHcICgrSqVOnNH/+/CzbZs2apZCQkCLpxxdffKFx48YVybGcVhCFdEmqWLGiZsyYoXfffVfPPfecOnXqpO+//15t27ZV9+7ddfbs2fx3FgAASc8//7w6deokl8ulkSNHatKkSerSpYu2bNmiOXPmON09AD4qyOkOAIUpKChId9xxh7V8//33q2HDhnr//ff14osvKjY21pF+BQYGKjAw0JFj+6vExERde+211vLIkSP19ddfq0OHDurUqZM2btyo0NBQB3sIACgIwcHBatq0qd577z1169bNtm327Nlq3769Pv74Y4d6B0+ioqJsf5dJ0jPPPKOhQ4fq9ddfV+XKlTVx4kSHegcA8Bfnzp3Tk08+qZtuukmLFy/Osv3AgQMO9Mq3nTx5UuHh4U53A3AcI9JxSQkICLBuK8o89+c///yjzp07q0SJEipXrpweeughnT9/XpJkjFHlypV1yy23ZNlnSkqKoqKidO+991rrXnnlFdWpU0dhYWEqVaqUrr32Ws2ePdvant38o19++aVatmypiIgIRUZG6rrrrrO975tvvtHtt9+u+Ph4BQcHKy4uTsOHD3d7e3tB+Oeff9S/f39FR0crODhYderU0TvvvGNrc+bMGY0ePVoNGjRQVFSUwsPD1bx5cy1btszjvseOHauHH35YklSlShXrdu/Mn8m8efN05ZVXWsfPy214N954o0aNGqW//vpLM2fOtNavX79effv2VdWqVRUSEqKYmBj1799fhw8fttosW7ZMLpdLn3zySZb9zp49Wy6XS6tWrZIk7du3T/369VPFihUVHBysChUq6JZbbim0OfAB4FLXq1cvffnll7Y7mn766Sdt2bJFvXr1cvueY8eOadiwYYqLi1NwcLCqV6+uiRMnKi0tzWqTPrXH888/r7feekvVqlVTcHCwrrvuOv30009Wu759++q1116TJNv0Yumef/55NWnSRGXKlFFoaKgaNGhQqNOnffnll2revLnCw8MVERGh9u3ba8OGDbY2uck+dypXrqwNGzZoxYoV1nlmvkU7NTVVI0aMULly5RQeHq5bb71VBw8ezFXfAwMD9fLLL6t27dp69dVXlZSUZG2bOnWqbrzxRpUvX17BwcGqXbu2pkyZYnt/nz59VLZsWbej2du2basaNWpYy0uWLFGzZs1UsmRJlShRQjVq1NBjjz2Wq34CAHzHoUOHlJycrKZNm7rdXr58+Rz3sWnTJnXt2lWlS5dWSEiIrr32Wn322WdZ2uX174tJkyapUqVKCg0NVcuWLfX7779f/In+fydPntSDDz5o9aFGjRp6/vnnZYzJ0gd3d5hlfpZZ+vQyf/zxh3r16qVSpUqpWbNmkrj2BRiRjkvOtm3bJEllypSx1p0/f14JCQlq2LChnn/+eX311Vd64YUXVK1aNQ0cOFAul0t33HGHnn32WR05ckSlS5e23jt//nwlJydbI6zefvttDR06VF27dtUDDzyglJQUrV+/XqtXr8724l66UFzv37+/6tSpo5EjR6pkyZL65ZdftHDhQut9H374oU6dOqWBAweqTJky+vHHH/XKK6/o77//1ocffpjjuZ89e9btXGsZL1rT7d+/X40aNbIe+lmuXDl9+eWXGjBggJKTkzVs2DBJUnJysv773/+qZ8+euvvuu3X8+HH973//U0JCgn788UfVq1fPbV9uu+02/fnnn3rvvfc0adIklS1bVpJUrlw5q823336ruXPn6v7771dERIRefvlldenSRbt27bL9+/Pkzjvv1GOPPabFixfr7rvvlnThQnr79u3q16+fYmJitGHDBr311lvasGGDfvjhB6tIEBcXp1mzZunWW2+17XPWrFmqVq2aGjduLEnq0qWLNmzYoCFDhqhy5co6cOCAlixZol27dqly5cq56icAIPduu+023XfffZo7d6769+8v6cKXnDVr1tQ111yTpf2pU6fUsmVL/fPPP7r33nsVHx+v77//XiNHjtTevXs1efJkW/vZs2fr+PHjuvfee+VyufTss8/qtttu0/bt21WsWDHde++92rNnj5YsWaIZM2ZkOd5LL72kTp06qXfv3jpz5ozmzJmj22+/XQsWLFD79u1zPL/jx4+7zWt3z3iZMWOG+vTpo4SEBE2cOFGnTp3SlClT1KxZM/3yyy9WDuUm+9yZPHmyhgwZohIlSujxxx+XJEVHR9vaDBkyRKVKldKYMWO0c+dOTZ48WYMHD9b777+f47lKF4rpPXv21KhRo/Ttt99an9GUKVNUp04dderUSUFBQZo/f77uv/9+paWladCgQZIu5Py7776rRYsW2eaM3bdvn77++muNGTNGkrRhwwZ16NBBV111lcaPH6/g4GBt3bpV3333Xa76CADwHeXLl1doaKjmz5+vIUOG2K7fc2PDhg1q2rSpLrvsMv373/9WeHi4PvjgA3Xu3Fkff/yxdX2Y178v3n33XR0/flyDBg1SSkqKXnrpJd1444367bffsmTrkSNH3PYtY4FeujDor1OnTlq2bJkGDBigevXqadGiRXr44Yf1zz//aNKkSXk694xuv/12XX755Xr66aetojzXvrjkGcBP9enTx4SHh5uDBw+agwcPmq1bt5qnn37auFwuc9VVV9naSTLjx4+3vb9+/fqmQYMG1vLmzZuNJDNlyhRbu06dOpnKlSubtLQ0Y4wxt9xyi6lTp47Hvk2dOtVIMjt27DDGGHPs2DETERFhGjZsaE6fPm1rm75fY4w5depUln1NmDDBuFwu89dff1nrxowZYzL/712pUiUjyePrww8/tNoPGDDAVKhQwRw6dMi2nx49epioqCirL+fOnTOpqam2NkePHjXR0dGmf//+tvWSzJgxY6zl5557zvY5ZG5bvHhxs3XrVmvdr7/+aiSZV155xVqX/ln+9NNPWfaRLioqytSvX99advc5vvfee0aSWblypbVu5MiRJjg42Bw7dsxad+DAARMUFGSdx9GjR40k89xzz2V7fABAwUjPdmOM6dq1q2ndurUxxpjz58+bmJgYM27cOLNjx44sv5effPJJEx4ebv7880/b/v7973+bwMBAs2vXLmOMsd5bpkwZc+TIEavdp59+aiSZ+fPnW+sGDRqUJWvTZc6ZM2fOmCuvvNLceOONtvWVKlUyffr0sZaXLVuWY1ann78xxhw/ftyULFnS3H333bb97tu3z0RFRdnW5zb7Mv+NYowxderUMS1btszy/vS2bdq0sf29Mnz4cBMYGGjLz5YtW3r8++iTTz4xksxLL73ksc8JCQmmatWq1vL58+dNxYoVTffu3W3tXnzxReNyucz27duNMcZMmjTJSDIHDx7Mtg8AAP8xevRoKzcTExPNf/7zH7N27dos7dKzf+rUqda61q1bm7p165qUlBRrXVpammnSpIm5/PLLrXV5/fsiNDTU/P3331a71atXG0lm+PDh1rr0a3lPr/bt21vt582bZySZp556ytaHrl27GpfLZV1PuzvPdJmv09P70LNnT1s7rn0BY5jaBX7t5MmTKleunMqVK6fq1avrscceU+PGjd1O13HffffZlps3b67t27dby1dccYUaNmyoWbNmWeuOHDmiL7/8Ur1797ZGcpUsWVJ///237RbwnCxZskTHjx/Xv//97ywPScs4QizjHN8nT57UoUOH1KRJExlj9Msvv+R4nIYNG2rJkiVZXs8//7ytnTFGH3/8sTp27ChjjA4dOmS9EhISlJSUpJ9//lnShVFkxYsXl3Th2/EjR47o3Llzuvbaa602F6tNmzaqVq2atXzVVVcpMjLS9u8lN0qUKKHjx49byxk/x5SUFB06dEiNGjWSJFuf77rrLqWmptpux3///fd17tw56w6E0NBQFS9eXMuXL9fRo0fzdoIAgIvWq1cvLV++3Bp5vG/fvmzv/Prwww/VvHlzlSpVypZpbdq00fnz57Vy5Upb++7du6tUqVLWcvPmzSUp1/mTMWeOHj2qpKQkNW/ePNe5OHr0aLd53bZtW1u7JUuW6NixY+rZs6ftvAIDA9WwYUPbNGu5zb6Lcc8999j+XmnevLnOnz+vv/76K9f7KFGihCRlm9dJSUk6dOiQWrZsqe3bt1t30wUEBKh379767LPPbO+dNWuWmjRpoipVqki68PeZJH366adZRvMBAPzPuHHjNHv2bNWvX1+LFi3S448/rgYNGuiaa67Rxo0bs33fkSNH9PXXX6tbt27WHWKHDh3S4cOHlZCQoC1btuiff/6RlPe/Lzp37qzLLrvMWr7++uvVsGFDffHFF1n68fHHH7v9WyDzyPUvvvhCgYGBGjp0qG39gw8+KGOMvvzyyzx/duky10i49gWY2gV+LiQkRPPnz5d04eFkVapUUcWKFd22yziliCSVKlUqSzjcddddGjx4sP766y9VqlRJH374oc6ePas777zTavPoo4/qq6++0vXXX6/q1aurbdu26tWrV7bzs0n/N93MlVde6fF8du3apdGjR+uzzz7L0jd307NkVrZsWbVp0ybL+qAg+6+CgwcP6tixY3rrrbf01ltvud1Xxge0TJ8+XS+88II2bdpkm6M0/eL1YsXHx2dZ5+7fS05OnDhhmwfvyJEjGjdunObMmZPlQTMZP8eaNWvquuuu06xZszRgwABJFy7MGzVqpOrVq0u68N/VxIkT9eCDDyo6OlqNGjVShw4ddNdddykmJiZP/QQA5N7NN9+siIgIvf/++1q3bp2uu+46Va9e3e0cnVu2bNH69euzZH26zFmQOX/Si+q5zZ8FCxboqaee0rp162zTsWQ3fUpmdevWdZvXGZ/3IV04L+nCM0HciYyMtH7ObfZdjPx+XtKFrJakiIgIa913332nMWPGaNWqVTp16pStfVJSkqKioiRd+Pts4sSJ+uSTT3TXXXdp8+bNWrt2rd544w2rfffu3fXf//5X//rXv/Tvf/9brVu31m233aauXbsqIICxRQDgj3r27KmePXsqOTlZq1ev1rRp0zR79mx17NhRv//+e5ZBbJK0detWGWM0atQojRo1yu1+Dxw4oMsuuyzPf19cfvnlWdpcccUV+uCDD7Ksb9GihTX9aUaZ+/zXX38pNjbWlp+SVKtWLWv7xcp8Pc+1L0AhHX4uMDDQ7YWou3a50aNHDw0fPlyzZs3SY489ppkzZ+raa6+1PciqVq1a2rx5sxYsWKCFCxfq448/1uuvv67Ro0dr3LhxF30u58+f10033aQjR47o0UcfVc2aNRUeHq5//vlHffv2LdDRVen7uuOOO9SnTx+3ba666ipJFy7q+/btq86dO+vhhx9W+fLlFRgYqAkTJlhfEFys7P69mAwPTcnJ33//raSkJKvwLUndunXT999/r4cfflj16tVTiRIllJaWpnbt2mX5HO+66y498MAD+vvvv5WamqoffvhBr776qq3NsGHD1LFjR82bN0+LFi3SqFGjNGHCBH399deqX79+Hs4YAJBbwcHBuu222zR9+nRt377d9pCszNLS0nTTTTfpkUcecbv9iiuusC3nJ3+++eYbderUSS1atNDrr7+uChUqqFixYpo6dartAeIFIT2zZsyY4fYCNuMX5XnJvrwqiLxOf9hael5v27ZNrVu3Vs2aNfXiiy8qLi5OxYsX1xdffKFJkybZ+ly7dm01aNBAM2fO1F133aWZM2eqePHi6tatm9UmNDRUK1eu1LJly/T5559r4cKFev/993XjjTdq8eLFuf5bEADgeyIjI3XTTTfppptuUrFixTR9+nStXr1aLVu2zNI2PV8eeughJSQkuN1felbl9e8LJ2X3Zf758+ezfU/GO8PSce2LSx2FdCAPSpcurfbt22vWrFnq3bu3vvvuuywPEJGk8PBwde/eXd27d9eZM2d022236T//+Y9Gjhzp9lvv9OlLfv/9d1vBN6PffvtNf/75p6ZPn6677rrLWr9kyZKCObkMypUrp4iICJ0/fz7HLyI++ugjVa1aVXPnzrWFc/rDvTzJ7ci8/Eh/CFz6H0FHjx7V0qVLNW7cOI0ePdpqlz6qL7MePXpoxIgReu+993T69GkVK1ZM3bt3z9KuWrVqevDBB/Xggw9qy5Ytqlevnl544YUsowcBAAWnV69eeueddxQQEKAePXpk265atWo6ceJErr5cz63sMuzjjz9WSEiIFi1apODgYGv91KlTC+zY6dL/fihfvrzHc8tr9mVW2Hl9/vx5zZ49W2FhYWrWrJmkCw9zT01N1WeffWYb8Z5xupqM7rrrLo0YMUJ79+7V7Nmz1b59e9v0PNKFaWBat26t1q1b68UXX9TTTz+txx9/XMuWLSvQ/zYAAN7r2muv1fTp07V3716326tWrSpJKlasWI7ZkNe/L9zl7p9//pmvh3RWqlRJX331lY4fP24blb5p0yZru/R/d4sdO3bM9v6LGbHOtS8uZdzHCOTRnXfeqT/++EMPP/ywAgMDs1y4Hz582LZcvHhx1a5dW8YY27QnGbVt21YRERGaMGGCUlJSbNvSR3Olj5TKOLrLGKOXXnop3+eUWWBgoLp06aKPP/7YGiGW0cGDB21tM/dr9erVWrVqVY7HCQ8Pl5Q1zAvK119/rSeffFJVqlRR7969JbnvryS3X4hIF6bDSUxM1MyZMzVr1iy1a9fOdovdqVOnsvw7q1atmiIiImy38wMACt4NN9ygJ598Uq+++qrHW4q7deumVatWadGiRVm2HTt2TOfOncvzsbPLsMDAQLlcLtsIr507d2revHl5PkZOEhISFBkZqaefftrt3xjpeZ3X7MssPDy80LL6/PnzGjp0qDZu3KihQ4da09G463NSUlK2X0j07NlTLpdLDzzwgLZv3249yyTdkSNHsrynXr16kkReA4CfOXXqVLbXo+lzhme8qzyj8uXLq1WrVnrzzTfdFtszXgvn9e+LefPmWfOrS9KPP/6o1atXKzExMeeTysbNN9+s8+fPZ7lretKkSXK5XNa+IyMjVbZs2Szztr/++uu5PhbXvgAj0oE8a9++vcqUKaMPP/xQiYmJtrm3pQtF8ZiYGDVt2lTR0dHauHGjXn31VbVv3z7LvGXpIiMjNWnSJP3rX//Sddddp169eqlUqVL69ddfderUKU2fPl01a9ZUtWrV9NBDD+mff/5RZGSkPv7440J7yMczzzyjZcuWqWHDhrr77rtVu3ZtHTlyRD///LO++uor64K0Q4cOmjt3rm699Va1b99eO3bs0BtvvKHatWtb851mp0GDBpKkxx9/XD169FCxYsXUsWNHqziRF19++aU2bdqkc+fOaf/+/fr666+1ZMkSVapUSZ999pl1J0BkZKRatGihZ599VmfPntVll12mxYsXa8eOHdnu+6677lLXrl0lSU8++aRt259//qnWrVurW7duql27toKCgvTJJ59o//79HkdHAgDyLyAgQE888USO7R5++GF99tln6tChg/r27asGDRro5MmT+u233/TRRx9p586dbuch9SQ9w4YOHaqEhATry/X27dvrxRdfVLt27dSrVy8dOHBAr732mqpXr67169df1HlmJzIyUlOmTNGdd96pa665Rj169FC5cuW0a9cuff7552ratKleffXVi8q+zOc6ZcoUPfXUU6pevbrKly+f7bzsniQlJVmj1U6dOqWtW7dq7ty52rZtm3r06GHL2LZt26p48eLq2LGj7r33Xp04cUJvv/22ypcv77awUa5cObVr104ffvihSpYsqfbt29u2jx8/XitXrlT79u1VqVIlHThwQK+//roqVqxojYIHAPiHU6dOqUmTJmrUqJHatWunuLg4HTt2TPPmzdM333yjzp07e5yG5LXXXlOzZs1Ut25d3X333apatar279+vVatW6e+//9avv/4qKe9/X1SvXl3NmjXTwIEDlZqaqsmTJ6tMmTLZTg2TGx07dtQNN9ygxx9/XDt37tTVV1+txYsX69NPP9WwYcOsu9ck6V//+peeeeYZ/etf/9K1116rlStX6s8//8z1sbj2BSikA3lWvHhxde/eXa+//rrtIaPp7r33Xs2aNUsvvviiTpw4oYoVK2ro0KE5XugPGDBA5cuX1zPPPKMnn3xSxYoVU82aNTV8+HBJF24tmz9/voYOHaoJEyYoJCREt956qwYPHqyrr766wM8zOjpaP/74o8aPH6+5c+fq9ddfV5kyZVSnTh1NnDjRate3b1/t27dPb775phYtWqTatWtr5syZ+vDDD7V8+XKPx7juuuv05JNP6o033tDChQuVlpamHTt2XFQhPf1W9eLFi6t06dKqW7euJk+erH79+mX5AmP27NkaMmSIXnvtNRlj1LZtW3355ZeKjY11u++OHTuqVKlSSktLU6dOnWzb4uLi1LNnTy1dulQzZsxQUFCQatasqQ8++EBdunTJ83kAAApeWFiYVqxYoaeffloffvih3n33XUVGRuqKK67QuHHjrIdW5sVtt92mIUOGaM6cOZo5c6aMMerRo4duvPFG/e9//9MzzzyjYcOGqUqVKpo4caJ27txZ4IV06cL0NrGxsXrmmWf03HPPKTU1VZdddpmaN2+ufv36We3ymn0ZjR49Wn/99ZeeffZZHT9+XC1btryoQvrff/9t/e1UokQJVahQQY0bN9aUKVN000032drWqFFDH330kZ544gk99NBDiomJ0cCBA1WuXDn179/f7f7vuusuLViwQN26dbNNqyNJnTp10s6dO/XOO+/o0KFDKlu2rFq2bHnR//4BAN6rZMmSevvtt/X5559r6tSp2rdvnwIDA1WjRg0999xzGjp0qMf3165dW2vWrNG4ceM0bdo0HT58WOXLl1f9+vVtU6Tl9e+Lu+66SwEBAZo8ebIOHDig66+/Xq+++qoqVKhw0ecaEBCgzz77TKNHj9b777+vqVOnqnLlynruuef04IMP2tqOHj1aBw8e1EcffaQPPvhAiYmJ+vLLL7MMDswO176A5DJ5eQoQAEnS8OHD9b///U/79u1TWFiY091BITt37pxiY2PVsWNH/e9//3O6OwAAwI1PP/1UnTt31sqVK9W8eXOnuwMA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zjjdBcCrUUgH3Ej/NrpSpUoaOHCg2rRpo88++8zavmjRItWqVUslSpSwiu6StHLlShUrVkz79u2z7W/YsGFq3ry5JOmvv/5Sx44dVapUKYWHh6tOnTr64osvJLmf2uW7775Tq1atFBYWplKlSikhIUFHjx6VJC1cuFDNmjVTyZIlVaZMGXXo0EHbtm0rkM8gNTVVDz30kC677DKFh4erYcOGWr58ubX98OHD6tmzpy677DKFhYWpbt26eu+997LdX6tWrfTXX39p+PDh1mi1jLL7TNMFBQUpJiZGsbGxqlu3roYMGaIVK1bo999/18SJE612M2bM0LXXXquIiAjFxMSoV69eOnDggCTJGKPq1avr+eeft+173bp1crlc2rp1q4wxGjt2rDUqITY2VkOHDr3YjxEA4LBrrrlGcXFxtlHRc+fOVXx8vOrXr2+tS0tL04QJE1SlShWFhobq6quv1kcffWRtT8/opUuX6tprr1VYWJiaNGmizZs3S7owinzcuHH69ddfrZybNm2aJOnFF19U3bp1FR4erri4ON1///06ceJEgZzf7t271a1bN5UsWVKlS5fWLbfcop07d1rbf/rpJ910000qW7asoqKi1LJlS/3888/Z7q9KlSqSpPr168vlcqlVq1a27c8//7wqVKigMmXKaNCgQTp79qxte1hYmGJiYlSxYkU1atRIEydO1Jtvvqm3335bX331ldXu0Ucf1RVXXKGwsDBVrVpVo0aNsva1c+dOBQQEaM2aNbZ9T548WZUqVVJaWpqOHj2q3r17q1y5cgoNDdXll1+uqVOnXsxHCAC4BB07dkzffPONJk6cqBtuuEGVKlXS9ddfr5EjR6pTp05u35NT5krSf//7X9WqVUshISGqWbOmXn/9dWtb+mjzOXPmqEmTJgoJCdGVV16pFStWXNQ5HD16VHfddZdKlSqlsLAwJSYmasuWLdZ2d3fKTZ48WZUrV7aW06du+89//qPY2FjVqFFDkvT666/r8ssvV0hIiKKjo9W1a9eL6iPgbyikA7kQGhpqfTN76tQpPf/885oxY4ZWrlypXbt26aGHHpIktWjRQlWrVtWMGTOs9549e1azZs1S//79JV24lTw1NVUrV67Ub7/9pokTJ6pEiRJuj7tu3Tq1bt1atWvX1qpVq/Ttt9+qY8eOOn/+vCTp5MmTGjFihNasWaOlS5cqICBAt956q9LS0vJ9zoMHD9aqVas0Z84crV+/XrfffrvatWtnBXNKSooaNGigzz//XL///rvuuece3Xnnnfrxxx/d7m/u3LmqWLGixo8fr71799oK5Z4+U09q1qypxMREW3Hk7NmzevLJJ/Xrr79q3rx52rlzp3XbvsvlUv/+/bNcaE+dOlUtWrRQ9erV9fHHH2vSpEl68803tWXLFs2bN09169bN68cHAPAimX/3v/POO+rXr5+tzYQJE/Tuu+/qjTfe0IYNGzR8+HDdcccdWS5uH3/8cb3wwgtas2aNgoKCrHzv3r27HnzwQesOqr1796p79+6SpICAAL388svasGGDpk+frq+//lqPPPJIvs/r7NmzSkhIUEREhL755ht999131hfS6X+3HD9+XH369NG3336rH374QZdffrluvvnmbO/mSs/xr776Snv37rVl7LJly7Rt2zYtW7ZM06dP17Rp06wvCzzp06ePSpUqZdtXRESEpk2bpj/++EMvvfSS3n77bU2aNEnShang2rRp4zav+/btq4CAAI0aNUp//PGHvvzyS23cuFFTpkxR2bJl8/T5AQAuXSVKlFCJEiU0b968XE0XmpvMnTVrlkaPHq3//Oc/2rhxo55++mmNGjVK06dPt+3r4Ycf1oMPPqhffvlFjRs3VseOHS9qFHzfvn21Zs0affbZZ1q1apWMMbr55puzfMmdk6VLl2rz5s1asmSJFixYoDVr1mjo0KEaP368Nm/erIULF6pFixZ57h/glwwAmz59+phbbrnFGGNMWlqaWbJkiQkODjYPPfSQmTp1qpFktm7darV/7bXXTHR0tLU8ceJEU6tWLWv5448/NiVKlDAnTpwwxhhTt25dM3bsWLfHXrZsmZFkjh49aowxpmfPnqZp06a57vvBgweNJPPbb78ZY4zZsWOHkWR++eUX23JoaKgJDw+3vQICAswDDzxgjDHmr7/+MoGBgeaff/6x7b9169Zm5MiR2R6/ffv25sEHH7SWW7Zsae3TGGMqVapkJk2aZHtPbj7TMWPGmKuvvtrtMR999FETGhqabZ9++uknI8kcP37cGGPMP//8YwIDA83q1auNMcacOXPGlC1b1kybNs0YY8wLL7xgrrjiCnPmzJls9wkA8A3pmX7gwAETHBxsdu7caXbu3GlCQkLMwYMHzS233GL69OljUlJS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vMaOHfufjwsAuR3jN+M34zcA5D2M34zfjN8ADxtFHpWUlKTNmzfbPOzjdhw7dkwffvihwsLC5OnpmeZJ4OfOndOKFSs0duxYjR492mzfu3fvHed67NgxXbp0yeZX8T179kiSSpQoIUmaP3++HnzwQUVGRtoMeOnd+pbK19dXrVq1Mm9T69ixo82Tv9PTtWtXDRs2TC+//LLat2+f7i/K0dHROnPmjCIjI1W3bl2z/eDBg7d1van27t1rziSQpH379iklJcW85kWLFikpKUk//fSTihcvbsbd/KT0VKVLl1bp0qUlSQ0bNlTx4sUVERGhvn372sQ5OTnpmWee0TvvvKPt27fryy+/TPd48+fPV/369fXFF1/YtJ8/f14PPPCATdulS5f07LPPqmLFigoJCdGECRP01FNP6ZFHHjFjgoKCtHv37jTnSb0VLygoyKa9Zs2aCg0NlSQ1bdpU//77r8aPH6833ngj3T88AOBewPjN+M34DQB5D+M34zfjN3Ad/7QgT0q9dahBgwZZ2m/s2LHy9/dXnz590u13dHSUJBmGYdM+ZcqUO8pTkpKTk23W87p69ao+/fRTFSpUSDVr1szwvBs3blRMTEymx37uuee0ZcsWdejQwebJ5Rnx8fFR69attWXLFvOJ5TdLL5erV69q2rRptzz+jT755BOb7Y8//ljS9UEro/PEx8ebt8tlJvUPlqSkpHT7n3vuOW3dulV169bVgw8+mG6Mo6Njmv+f582bp3///TdN7KuvvqojR47oq6++0gcffKASJUqoR48eNudv1qyZfv/9d5v/zy5duqTPPvtMJUqUUMWKFTO9pitXrig5OVnJycmZxgFAXsb4fR3jN+M3AOQljN/XMX4zfgPMSEeecunSJX388ccaN26c+R/ib7/91iYmLi5OFy9e1Lfffqsnn3zSZh22X375RbNnzzYfLHIzLy8v1a1bVxMmTNC1a9dUpEgR/fLLL1n+NfhGgYGBGj9+vA4dOqSyZcvqu+++0+bNm/XZZ58pX758kqQWLVooMjJSTz31lJo3b66DBw9qxowZqlixoi5evJjhsZs0aaJTp07d1iCeatasWfrkk0/S/OqbKiQkRAULFlSPHj00cOBAWSwWffPNN2kGvVs5ePCgWrVqpSZNmigmJkbffvutunTpomrVqkm6/gARZ2dntWzZUr1799bFixc1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blOdPHkyw30PHz6s4ODgNO2lS5dON7548eJp2goWLGiz1vidyOpxCxUqpIYNGyoiIkKXL1+W1WpV+/bt043du3ev4uPj5efnl25/Zp/PjcfYsmXLbX/GJUuWTBPz6quv6tdff9Wjjz6q0qVLq1GjRurSpYtq1659y/MDAO6eypUrq0CBAjbF8tT/VlssFgUHB2vdunV64YUXtG7dOhUrVswcx+63MfnTTz/VK6+8oiZNmmjNmjUqV67cHZ3z8OHDNkXpVKnL0Bw+fFiVK1fW4cOHVapUqTRrrmf0GRUpUkTOzs5p2rdv365Ro0bpt99+U0JCgk1ffHy8zXbRokXTnM/b2zvNjwfe3t6SZPM5TZgwQT169FCxYsVUs2ZNNWvWTN27d9eDDz6Ybr4AANyp9GoIzZo1U5kyZTRixAj98MMPafbJly+fOnTooIiICD366KP6559/WHYUyEUopAM5ICUlRVWqVNEHH3yQbv9/nSV2o4weOGIYxl0/bpcuXfTCCy/oxIkTatq0qfmQt5ulpKTIz89Ps2fPTrc/o2LHzcd48sknNXz48HT7y5Yta7N940y3VBUqVNDu3bu1ePFiRUVF6YcfftC0adM0evRojR079pY5AADuDgcHBwUHB2v9+vUyDEPr1q0zH1IpSSEhIfryyy/NtdPbtGlj9t1vY3LFihW1dOlSNWjQQE8++aT5w0Jukd54fP78edWrV09eXl4aN26cSpUqJVdXV/3555969dVXbR4iLmX8edzO59SxY0fVqVNHCxYs0C+//KKJEydq/PjxioyMNJ/zAgBATilatKjKlSuX5g7qG3Xp0kUzZszQm2++qWrVqqlixYp3MUMAmaGQDuSAUqVK6e+//1aDBg3SzJi6laCgIO3bty9Ne3pttyurOdypp556Sr1799aGDRv03XffZRhXqlQp/frrr6pdu3a6X6hvlFHupUqV0sWLF2/7LoGM5M+fX08//bSefvppXb16VW3bttU777yjESNGyNXV9T8dGwCQfR5//HH9/PPP+umnn3Ty5Embu4dCQkL0+uuva+nSpbpy5YrNciT345j86KOPauHChWrevLmefPJJrVmz5rZ+pL5RUFCQdu/enaY9dZmVoKAg83937NhhPuw1VVY+o+joaJ05c0aRkZGqW7eu2X7w4MEs5Xy7ChcurH79+qlfv346efKkatSooXfeeYdCOgDgrkhOTtbFixcz7H/88cdVvHhxRUdHa/z48XcxMwC3whrpQA7o2LGj/v33X82cOTNN35UrV3Tp0qUM923cuLFiYmK0efNms+3s2bMZzt6+Hfnz55d0fcZXTvLw8ND06dP15ptvqmXLlhnGdezYUVarVW+99VaavuTkZJs88+fPn27eHTt2VExMjJYtW5am7/z580pOTr5lvmfOnLHZdnZ2VsWKFWUYhq5du3bL/QEAd09qcXz8+PFyd3e3Wbf80UcflZOTkyZMmGATK92/Y3KDBg00Z84c7du3T02aNEmzXMqtNGvWTL///rtiYmLMtkuXLumzzz5TiRIlzNlxjRs31r///quffvrJjEtMTEz3885I6kzyG2eOX716VdOmTctSzrditVrTLBPj5+enwMBAJSUlZeu5AABIz549e7R7925Vq1YtwxiLxaKPPvpIY8aM0TPPPHMXswNwK8xIB3LAM888o++//159+vTRypUrVbt2bVmtVu3atUvff/+9li1bpocffjjdfYcPH65vv/1WTz75pF566SXlz59fn3/+uYoXL66zZ8/e0Uy26tWry9HRUePHj1d8fLxcXFz0xBNPZLhG+X/Ro0ePW8bUq1dPvXv3VlhYmDZv3qxGjRopX7582rt3r+bNm6cPP/zQXF+9Zs2amj59ut5++22VLl1afn5+euKJJzRs2DD99NNPatGihXr27KmaNWvq0qVL2rp1q+bPn69Dhw7pgQceyDSPRo0aKSAgQLVr15a/v7927typqVOnqnnz5vL09MyWzwMAkD0effRROTs7KyYmRqGhoXJy+v8/Y93d3VWtWjXFxMSoQIECqly5stl3P4/JTz31lGbOnKnnnntOrVq1UlRU1G3fbfXaa69pzpw5atq0qQYOHCgfHx999dVXOnjwoH744Qc5OFyfj9O7d29NnTpVnTt31ssvv6zChQtr9uzZ5nlu5zMKCQlRwYIF1aNHDw0cOFAWi0XffPPNf14S52YXLlxQ0aJF1b59e1WrVk0eHh769ddftWnTJk2aNClbzwUAQHJysr799ltJ15eaO3TokGbMmKGUlBSNGTMm031bt26t1q1b3400AWQBhXQgBzg4OGjhwoWaPHmyvv76ay1YsEDu7u568MEH9fLLL6dZv/tGxYoV08qVKzVw4EC9++67KlSokPr376/8+fNr4MCBd7TcSEBAgGbMmKGwsDD16tVLVqtVK1euzJEv7bdrxowZqlmzpj799FONHDlSTk5OKlGihLp162Zzu/7o0aN1+PBhTZgwQRcuXFC9evX0xBNPyN3dXatWrdK7776refPm6euvv5aXl5fKli2rsWPHmg8Yy0zv3r01e/ZsffDBB7p48aKKFi2qgQMHatSoUTl56QCAO+Dq6qqaNWsqJiZGISEhafpr166t2NhYBQcHm0VeiTH52Wef1dmzZzV06FB16NBBCxYsuK39/P39tX79er366qv6+OOPlZiYqKpVq2rRokVq3ry5Gefh4aHffvtNL730kj788EN5eHioe/fuCgkJUbt27W7rM/L19dXixYs1ZMgQjRo1SgULFlS3bt3UoEEDNW7c+I6v/Wbu7u7q16+ffvnlF0VGRiolJUWlS5fWtGnT1Ldv32w7DwAAkpSUlGQzo9zLy0uPPPKIvvnmGzVo0MCOmQG4UxYju6d6AMgRgwYN0qeffqqLFy9m+DAtAACQ8xiTb23KlCkaPHiwjh49qiJFitg7HQAAAOA/o5AO5EJXrlyxeQjnmTNnVLZsWdWoUUPLly+3Y2YAANxfGJNv7ebPKDExUQ899JCsVqv27Nljx8wAAACA7MPSLkAuFBwcrNDQUFWoUEFxcXH64osvlJCQoDfeeMPeqQEAcF9hTL61tm3bqnjx4qpevbri4+P17bffateuXf/poawAAABAbkMhHciFmjVrpvnz5+uzzz6TxWJRjRo19MUXX6hu3br2Tg0AgPsKY/KtNW7cWJ9//rlmz54tq9WqihUrau7cuXr66aftnRoAAACQbVjaBQAAAAAAAACATDjYOwEAAAAAAAAAAHIzCukAAAAAAAAAAGSCQjoAAAAAAAAAAJnIEw8bTUlJ0bFjx+Tp6SmLxWLvdAAAyDGGYejChQsKDAyUg0Pe/r2b8RsAcD9hDAcAIO/JyvidJwrpx44dU7FixeydBgAAd80///yjokWL2juN/4TxGwBwP2IMBwAg77md8TtPFNI9PT0lXb8gLy8vO2cDAEDOSUhIULFixcyxLy9j/AYA3E8YwwEAyHuyMn7niUJ66q1kXl5eDOIAgPvCvXAbNeM3AOB+xBgOAEDeczvjd95euA0AAKQxffp0Va1a1fzyGxwcrJ9//tnsT0xMVP/+/eXr6ysPDw+1a9dOcXFxNsc4cuSImjdvLnd3d/n5+WnYsGFKTk6+25cCAMB9ZfXq1WrZsqUCAwNlsVi0cOFCm37DMDR69GgVLlxYbm5uatiwofbu3WsTc/bsWXXt2lVeXl4qUKCAevXqpYsXL97FqwAA4N5EIR0AgHtM0aJF9d577yk2NlZ//PGHnnjiCbVu3Vrbt2+XJA0ePFiLFi3SvHnztGrVKh07dkxt27Y197darWrevLmuXr2q9evX66uvvtKsWbM0evRoe10SAAD3hUuXLqlatWr65JNP0u2fMGGCPvroI82YMUMbN25U/vz51bhxYyUmJpoxXbt21fbt27V8+XItXrxYq1ev1osvvni3LgEAgHuWxTAMw95J3EpCQoK8vb0VHx/PbWUAgHtaTo15Pj4+mjhxotq3b69ChQopIiJC7du3lyTt2rVLFSpUUExMjGrVqqWff/5ZLVq00LFjx+Tv7y9JmjFjhl599VWdOnVKzs7Odr0WAAByo+we9ywWixYsWKA2bdpIuj4bPTAwUEOGDNHQoUMlSfHx8fL399esWbPUqVMn7dy5UxUrVtSmTZv08MMPS5KioqLUrFkzHT16VIGBgXa5FgAAcqusjHnMSAcA4B5mtVo1d+5cXbp0ScHBwYqNjdW1a9fUsGFDM6Z8+fIqXry4YmJiJEkxMTGqUqWKWUSXpMaNGyshIcGc1Z6epKQkJSQk2LwAAED2OHjwoE6cOGEzhnt7e+uxxx6zGcMLFChgFtElqWHDhnJwcNDGjRvves4AANxL8sTDRgEAQNZs3bpVwcHBSkxMlIeHhxYsWKCKFStq8+bNcnZ2VoECBWzi/f39deLECUnSiRMnbIroqf2pfRkJCwvT2LFjs/dCAACApP8fg9Mbo28cw/38/Gz6nZyc5OPjk+kYnpSUpKSkJHObH8MBAEiLGekAANyDypUrp82bN2vjxo3q27evevTooR07duToOUeMGKH4+Hjz9c8//+To+QAAQPYICwuTt7e3+SpWrJi9UwIAINehkA4AwD3I2dlZpUuXVs2aNRUWFqZq1arpww8/VEBAgK5evarz58/bxMfFxSkgIECSFBAQoLi4uDT9qX0ZcXFxkZeXl80LAABkj9QxOL0x+sYx/OTJkzb9ycnJOnv2bKZjOD+GAwBwaxTSAQC4D6SkpCgpKUk1a9ZUvnz5tGLFCrNv9+7dOnLkiIKDgyVJwcHB2rp1q80X8eXLl8vLy0sVK1a867kDAACpZMmSCggIsBnDExIStHHjRpsx/Pz584qNjTVjfvvtN6WkpOixxx7L8Nj8GA4AwK2xRjoAAPeYESNGqGnTpipevLguXLigiIgIRUdHa9myZfL29lavXr30yiuvyMfHR15eXnrppZcUHBysWrVqSZIaNWqkihUr6plnntGECRN04sQJjRo1Sv3795eLi4udrw4AgHvXxYsXtW/fPnP74MGD2rx5s3x8fFS8eHENGjRIb7/9tsqUKaOSJUvqjTfeUGBgoNq0aSNJqlChgpo0aaIXXnhBM2bM0LVr1zRgwAB16tRJgYGBdroqAADuDRTSAaTr6tWrmjZtmvbv369SpUqpX79+cnZ2tndaAG7DyZMn1b17dx0/flze3t6qWrWqli1bpieffFKSNHnyZDk4OKhdu3ZKSkpS48aNNW3aNHN/R0dHLV68WH379lVwcLDy58+vHj16aNy4cfa6JAC3yWq1as2aNTp+/LgKFy6sOnXqyNHR0d5pAbhNf/zxh+rXr29uv/LKK5KkHj16aNasWRo+fLguXbqkF198UefPn9fjjz+uqKgoubq6mvvMnj1bAwYMUIMGDczx/qOPPrrr1wLg9l25ckXDhg3T3r17VaZMGU2cOFFubm72TgvATSyGYRj2TuJWEhIS5O3trfj4eG4xA+6C4cOHa/LkyUpOTjbbnJycNHjwYE2YMMGOmQH3vntpzLuXrgXICyIjIzVkyBAdOnTIbCtRooQmTZqktm3b2i8x4D5xL41799K1ALldmzZt9OOPP6Zpb926tRYuXHj3EwLuM1kZ81gjHYCN4cOHa+LEifL19dXMmTN1/PhxzZw5U76+vpo4caKGDx9u7xQBAMBNIiMj1b59e1WpUkUxMTG6cOGCYmJiVKVKFbVv316RkZH2ThEAANwkoyK6JP3444/msk0AcocszUgPCwtTZGSkdu3aJTc3N4WEhGj8+PEqV67cbe0/d+5cde7cOcu/qvFrOHB3XL16Vfnz55evr6+OHj0qJ6f/X/0pOTlZRYsW1ZkzZ3Tp0iWWeQFyyL005t1L1wLkZlarVaVLl1aVKlW0cOFCOTj8/1yZlJQUtWnTRtu2bdPevXtZ5gXIQffSuHcvXQuQW125ckXu7u6SpObNm2vUqFGqXLmytm3bprfffltLliyRJF2+fJllXoAclGMz0letWqX+/ftrw4YNWr58ua5du6ZGjRrp0qVLt9z30KFDGjp0qOrUqZOVUwK4i6ZNm6bk5GS9/fbbNkV06frSLuPGjVNycrLNWsoAAMC+1qxZo0OHDmnkyJE2RXRJcnBw0IgRI3Tw4EGtWbPGThkCAICbDRkyRJJUunRp/fTTT6pVq5Y8PDxUq1Yt/fTTTypVqpRNHAD7y9LDRqOiomy2Z82aJT8/P8XGxqpu3boZ7me1WtW1a1eNHTtWa9as0fnz5+8oWQA5a//+/ZKkFi1apNuf2p4aBwAA7O/48eOSpMqVK6fbn9qeGgcAAOxv06ZNkq6v/pDeD+HvvPOOOnXqZMYBsL//tEZ6fHy8JMnHxyfTuHHjxsnPz0+9evX6L6cDkMNSf/FevHhxuv2p7alxAADA/goXLixJ2rZtW7r9qe2pcQAAwP4KFiwoSYqJiZHValV0dLTmzJmj6OhoWa1WxcTE2MQBsL8srZF+o5SUFLVq1Urnz5/X2rVrM4xbu3atOnXqpM2bN+uBBx5Qz549df78+UzXSE9KSlJSUpK5nZCQoGLFirE+G5DDWCMdsL97aU3Se+lagNyMNdKB3OFeGvfupWsBcqtly5apSZMmcnR0VNGiRXX48GGzLygoSEePHpXValVUVJQaN25sx0yBe1uOrZF+o/79+2vbtm2aO3duhjEXLlzQM888o5kzZ+qBBx647WOHhYXJ29vbfBUrVuxO0wSQBc7Ozho8eLDi4uJUtGhRffbZZzp27Jg+++wzFS1aVHFxcRo8eDBFdAAAchFHR0dNmjRJixcvVps2bRQTE6MLFy4oJiZGbdq00eLFi/X+++9TRAcAIBdp2LChnJ2dZbVadfjwYXXr1k1//vmnunXrpsOHD8tqtcrFxUUNGza0d6oA/ueOZqQPGDBAP/74o1avXq2SJUtmGLd582Y99NBDNn+0p6SkSLq+3tPu3bvTXSKCGemAfQ0fPlyTJ09WcnKy2ebk5KTBgwdrwoQJdswMuPfdSzPA7qVrAfKCyMhIDRkyRIcOHTLbSpYsqffff19t27a1X2LAfeJeGvfupWsBciur1arChQvr1KlTGcb4+fnp2LFj/BgO5KCsjHlZKqQbhqGXXnpJCxYsUHR0tMqUKZNpfGJiovbt22fTNmrUKF24cEEffvihypYte1szWxnEgbvv6tWrmjZtmvbv369SpUqpX79+zEQH7oJ7acy7l64FyCusVqvWrFmj48ePq3DhwqpTpw5fvoG75F4a9+6lawFyq+joaNWvX19du3bV3LlzZbVazT5HR0c9/fTTioiI0MqVKxUaGmq/RIF7XFbGPKdMe2/Sv39/RURE6Mcff5Snp6dOnDghSfL29pabm5skqXv37ipSpIjCwsLk6uqqypUr2xyjQIECkpSmHUDu4uzsrEGDBtk7DQAAkAWOjo582QYAIA84fvy4JGn27Nlq0aKFmjZtKjc3N125ckU///yzIiIibOIA2F+WCunTp0+XpDR/nIeHh6tnz56SpCNHjtg84AhA3sSMNgAAAAAAcoafn58k6fHHH9ePP/5oU0vr06eP6tatq3Xr1plxAOwvS4X021kFJjo6OtP+WbNmZeWUAOwgvTVWS5QooUmTJrHGKgAAAAAA2chqtWr16tXmRLbatWvLYrHYOy0AN8lSIR3AvS8yMlLt27dXixYtNGfOHFWuXFnbtm3Tu+++q/bt22v+/PkU0wEAAAAA+A9OnjwpSVq3bp28vb115coVs8/NzU2JiYk2cQDsjzVYAJisVquGDBmiFi1aaOHChapVq5Y8PDxUq1YtLVy4UC1atNDQoUNtHoICAAAAAACypnDhwpLSX/3BYrGY7alxAOyPQjoA05o1a3To0CGNHDkyzbMOHBwcNGLECB08eFBr1qyxU4YAAAAAAOR9ISEhcnJykr+/v86dO6eVK1cqIiJCK1eu1NmzZ+Xv7y8nJyeFhITYO1UA/0MhHYAp9WnglStXltVqVXR0tObMmaPo6GhZrVZVrlzZJg4AAAAAAGTd+vXrlZycrJMnT6pDhw5ycXFRixYt5OLiog4dOujkyZNKTk7W+vXr7Z0qgP9hjXQAptRbxqZOnapPP/00zcNGX3zxRZs4AAAAAACQdakT1L755huNGjXKZuZ5yZIl9c0336hbt25MZANyEWakAzDVqVNHhQoV0ogRI1S5cmXFxMTowoULiomJUeXKlTVy5Ej5+fmpTp069k4VAAAAAIA8K3WCWqlSpbRv3z6bpV327t2rBx980CYOgP0xIx2ADYvFYr43DMN8AQAAAACA7FGnTh2VKFFC7777rhYuXKjQ0FCzLyUlRWFhYSpZsiQT2YBchEI6ANOaNWt08uRJhYWF6dNPP01za9m7776rkSNHas2aNTaDPAAAAAAAuH2Ojo6aNGmS2rdvr9atW6tJkyZyc3PTlStXFBUVpSVLlmj+/PlydHS0d6oA/odCOgBT6tprAwYM0LBhw7RmzRodP35chQsXVp06dXT58mWNHDmSNdoAAMilrFZrmvGbL+AAAORObdu21dChQzV58mQtXrzYbHdyctLQoUPVtm1bO2YH4GYU0gGYUtde27Ztm2rVqpVm1vm2bdts4gAAQO4RGRmpIUOGpHlY+KRJk/giDgBALhQZGan3339fzZs3V9OmTc0Z6T///LPef/991apVizEcyEV42CgA041rtKWkpNj0sUYbAAC5V2RkpNq3b68qVarYPCy8SpUqat++vSIjI+2dIgAAuIHVatWQIUPUokULRUZGqmLFinJ1dVXFihUVGRmpFi1aaOjQobJarfZOFcD/UEgHYEpdo23x4sVq06aNzRfxNm3aaPHixXr//fe5RRwAgFzkxi/iCxcuVK1ateTh4aFatWpp4cKFfBEHACAXWrNmjQ4dOqSQkBCVLVtW9evXV5cuXVS/fn2VLVtWwcHBOnjwoNasWWPvVAH8D0u7ALDRtm1bzZ8/X0OGDEnzsNH58+dzWxkAALlM6hfxOXPmyDAMRUdH26yRPmLECIWEhPCwcAAAcpHUZ4+NHDlSrq6uNn1xcXF6/fXXbeIA2B+FdABptG3bVq1bt+ZhZQAA5AGpX7D379+vTp066fDhw2ZfUFCQ3nnnHZs4AABgf35+fpIkwzBkGIZN341tqXEA7I+lXQCky9HRUaGhoercubNCQ0MpogMAkEulPgS8W7duOnnypE3fyZMn1a1bN5s4AABgfzc+l6xBgwY2S6s2aNAg3TgA9kUhHUC6rl69qilTpuill17SlClTdPXqVXunBAAA0hESEiIHh+t/1l+5csWmL3XbwcHBZsk2AABgX9HR0eZ7i8VizkI3DEMWiyXdOAD2RSEdQBrDhw9X/vz5NXjwYE2dOlWDBw9W/vz5NXz4cHunBgAAbrJmzRpztlq+fPn02muvae/evXrttdeUL18+Sddns/GwMgAAco8jR45Iknr16qVt27YpJCREXl5eCgkJ0fbt2/Xss8/axAGwPwrpAGwMHz5cEydOlK+vr2bOnKnjx49r5syZ8vX11cSJEymmAwCQy6xYsUKS5O7ursDAQL333nsqU6aM3nvvPRUpUkTu7u42cQAAwP6KFy8uSdqxY4f27NmjlStXKiIiQitXrtTu3bu1c+dOmzgA9kchHYDp6tWrmjx5svz9/XX06FE9//zzCggI0PPPP6+jR4/K399fkydPZpkXAABykT/++EOS1KdPH+3fv9/mi/i+ffv0wgsv2MQBAAD7e+KJJyRJMTExatu2rVxcXNSiRQu5uLiobdu22rBhg00cAPtzsncCAHKPadOmKTk5WW+//bacnGz/8+Dk5KRx48apd+/emjZtmgYNGmSfJAEAgI3UGedr1qyRxWJRaGio2ZeSkqL169fbxAEAAPsLDQ1VoUKFdOrUKa1YsUKLFy82+1LHbD8/P5txHYB9MSMdgGn//v2SpBYtWqTbn9qeGgcAAOyvbt26kqRNmzapdevWiomJ0YULFxQTE6PWrVtr06ZNNnEAAMD+HB0dNWPGDEmSYRg2fanb06dPl6Oj413PDUD6KKQDMJUqVUqSbH4Jv1Fqe2ocAACwvwEDBsjB4fqf9StWrLB5WFnquugODg4aMGCAPdMEAAA3adu2rX744Qf5+/vbtPv7++uHH35Q27Zt7ZQZgPRQSAdg6tevn5ycnDRq1CidPHlSVapUka+vr6pUqaKTJ09q9OjRcnJyUr9+/eydKgAA+B9nZ2cNGTJEkpSUlGTTl/pckyFDhsjZ2fmu5wYAADLXtm3bdJ9xQhEdyH1YIx2AydnZWYMHD9bEiRNtfhE/e/asuT1s2DC+iAMAkMtMmDBBkvTBBx+k6Rs2bJjZDwAAAODOMCMdgI2vv/76P/UDAAD7qFWrlooUKWLTVqRIEdWqVctOGQEAgFuJjIxU6dKlVb9+fXXp0kX169dX6dKlFRkZae/UANyEQjoA09mzZxUXFydJOnPmjCZPnqwBAwZo8uTJOnPmjCQpLi5OZ8+etWeaAADgJpGRkWrfvr2qVatm87DRatWqqX379nwZBwAgF0odv1O/h6eKi4tj/AZyIYtx86OBc6GEhAR5e3srPj5eXl5e9k4HuGdVqVJF27ZtU61atRQTE5Om/7HHHtPvv/+uypUra+vWrXbIELj33Utj3r10LUBuZrVaVbp0aVWpUkXff/+9ZsyYof3796tUqVLq06ePOnbsqG3btmnv3r1ydHS0d7rAPeteGvfupWsBciur1arAwECdPHlSrq6uSkxMNPtSt/38/HTs2DHGbyAHZWXMY0Y6ANOxY8ckSe+8846sVquio6M1Z84cRUdHy2q1aty4cTZxAADA/tasWaNDhw7Jy8tLnp6eGjx4sKZOnarBgwfL09NTnp6eOnjwoNasWWPvVAEAwP9ER0fr5MmTkqSGDRva3FHWsGFDSdLJkycVHR1txywB3IhCOgBTYGCgJKlv377prtH20ksv2cQBAAD7O378uCRp9uzZ8vX11cyZM3X8+HHNnDlTvr6+ioiIsIkDAAD299tvv0mSgoODFRkZqcTERC1atEiJiYmKjIw0n3GSGgfA/iikAzCtWrVKkrRnzx6VL1/e5hfx8uXLa+/evTZxAADA/nx9fSVJPj4+Onr0qJ5//nkFBATo+eef19GjR+Xj42MTBwAA7O/IkSOSpIoVK6ps2bI2E9nKli2rihUr2sQBsD8K6QBM3t7ecnC4/p+FqKgovfzyy1q3bp1efvllRUVFSZIcHBzk7e1tzzQBAMANUp9bUrRoUXMcT+Xg4KAiRYrYxAEAAPsrXry4JOmLL75Q5cqVbSayVa5cWV9++aVNHAD7o5AOwLRmzRqlpKSYM9d+//13NWnSRL///ruk6zPdUlJSWGMVAIBc5NChQ5KkLVu2qE2bNjZfxNu0aWMW0FPjAACA/YWGhtpsG4ZhvjKLA2A/TvZOAEDukbp26uHDh3X16lXVq1dPx44dU2BgoFatWqV8+fLJy8uLNVYBAMhFSpUqJen6M05+/vlnhYSEmH0lS5ZUnz59NGPGDDMOAADY3413ka1YsUKLFy82t93d3dONA2BfFNIBmAoXLixJ2rZtm2rVqpXmFvCYmBibOAAAYH/9+vXTsGHDFBkZqcOHDysmJkbHjx9X4cKFFRwcrKCgIDk5Oalfv372ThUAAPzPyZMnJUkWiyXNLHTDMMz21DgA9sfPWgBMderUUYkSJfTuu+/q2rVrio6O1pw5cxQdHa1r164pLCxMJUuWVJ06deydKgAA+B9nZ2cNHjxYcXFxCgoK0p49e1SvXj3t2bNHQUFBiouL0+DBg+Xs7GzvVAEAwP+kTlB79913FRAQYNMXEBCgd955xyYOgP0xIx2AydHRUZMmTVK7du3k7e2tK1eumH1ubm66cuWKfvjhBzk6OtoxSwAAcLMJEyZIkiZPnqzevXub7U5OTho2bJjZDwAAcofUiWzr16/Xnj17tG7dOvOOstq1a6tdu3ZMZANyGQrpANKwWCzptqXXDgAAcodatWopMDBQR44cMdsCAwNVq1YtO2YFAADSkzqRrX379nrqqadUqlQpJSYmytXVVe+//76WLl2q+fPnM5ENyEWytLRLWFiYHnnkEXl6esrPz09t2rTR7t27M91n5syZqlOnjgoWLKiCBQuqYcOG+v333/9T0gByhtVq1ZAhQ9SiRQvFx8dr5cqVioiI0MqVK3X+/Hm1aNFCQ4cOldVqtXeqAADgBpGRkWrfvr2qVaummJgYXbhwQTExMapWrZrat2+vyMhIe6cIAABu0rZtW7Vq1UpLlizRRx99pM8++0wfffSRlixZolatWqlt27b2ThHADbJUSF+1apX69++vDRs2aPny5bp27ZoaNWqkS5cuZbhPdHS0OnfurJUrVyomJkbFihVTo0aN9O+///7n5AFkrzVr1ujQoUMaOXKk8uXLp9DQUHXu3FmhoaHKly+fRowYoYMHD2rNmjX2ThUAAPzPjT+E//DDD0pMTNSiRYuUmJioH374gR/CAQDIpYYPH64ff/xR/v7+Gjp0qKZNm6ahQ4fK399fP/74o4YPH27vFAHcIEuF9KioKPXs2VOVKlVStWrVNGvWLB05ckSxsbEZ7jN79mz169dP1atXV/ny5fX5558rJSVFK1as+M/JA8hex48flyRVrlw53f7U9tQ4AABgf6k/hIeEhKhs2bKqX7++unTpovr166ts2bIKDg7mh3AAAHKZq1evavLkyfL399eBAwdUpEgR7dixQ0WKFNGBAwfk7++vyZMn6+rVq/ZOFcD/ZKmQfrP4+HhJko+Pz23vc/nyZV27di3TfZKSkpSQkGDzApDzUp8Gvm3btnT7U9t5ajgAALlH6g/cI0eOVJUqVWyWdqlSpYpef/11mzgAAGB/06ZNU3JysqpXry5vb28NHjxYU6dO1eDBg+Xt7a2qVasqOTlZ06ZNs3eqAP7njgvpKSkpGjRokGrXrp3h7NX0vPrqqwoMDFTDhg0zjAkLC5O3t7f5Klas2J2mCSALUp8a/u677yohIUFPPfWUqlatqqeeekoJCQkKCwvjqeEAAOQyfn5+kqTatWtr4cKFqlWrljw8PFSrVi0tXLhQtWvXtokDAAD2t3//fknSsmXL5Ovrq5kzZ+r48eOaOXOmfH19tXz5cps4APbndKc79u/fX9u2bdPatWtve5/33ntPc+fOVXR0tFxdXTOMGzFihF555RVzOyEhgWI6cBekPjW8Xbt28vb2Ntu3bt1qbv/www88NRwAgDzEMAx7pwAAAG5SvHhxSZKXl5eOHj0qJ6frJbrnn39ePXv2lI+Pjy5cuGDGAbC/OyqkDxgwQIsXL9bq1atVtGjR29rn/fff13vvvadff/1VVatWzTTWxcVFLi4ud5IagP/ovffeu2U/Tw4HACD3OHnypCRp7dq1at26tZo0aSI3NzdduXJFUVFRWrdunU0cAADIPQzDkNVq1dq1a3X8+HEVLlxYwcHB9k4LQDqyVEg3DEMvvfSSFixYoOjoaJUsWfK29pswYYLeeecdLVu2TA8//PAdJQog5128eFGbNm2SxWLRhQsXtGnTJnMgf+SRR+Tp6alNmzbp4sWL8vDwsHe6ADIQFhamyMhI7dq1S25ubgoJCdH48eNVrlw5MyY0NFSrVq2y2a93796aMWOGuX3kyBH17dtXK1eulIeHh3r06KGwsDBztgyA3CH12SVdu3bV7NmztXjxYrPPYrGoS5cuioiI4BknAADkIkeOHJEkXbhwQe7u7kpJSTH7HBwczO3UOAD2l6Vvwv3791dERIR+/PFHeXp66sSJE5Ikb29vubm5SZK6d++uIkWKKCwsTJI0fvx4jR49WhERESpRooS5j4eHB4U4IJd55plnJEndunVT/vz5FRoaatPfpUsXzZ49W88884wWLFhghwwB3I5Vq1apf//+euSRR5ScnKyRI0eqUaNG2rFjh/Lnz2/GvfDCCxo3bpy57e7ubr63Wq1q3ry5AgICtH79eh0/flzdu3dXvnz59O67797V6wGQuTp16sjPz0+zZ89O02cYhiIiIuTn58czTgAAyEVKlSplvr95GbYbt2+MA2BfWXrY6PTp0xUfH6/Q0FAVLlzYfH333XdmzJEjR3T8+HGbfa5evar27dvb7PP+++9n31UAyBapDzEZOnSozp49qypVqsjX11dVqlTR2bNnzWcX8LATIHeLiopSz549ValSJVWrVk2zZs3SkSNHFBsbaxPn7u6ugIAA8+Xl5WX2/fLLL9qxY4e+/fZbVa9eXU2bNtVbb72lTz75RFevXr3blwTgFk6dOmW+r1SpkhYtWqRKlSql2w8AAOyvd+/ekiQnJycVKVLEpq9IkSLmXaCpcQDsL8tLu9xKdHS0zfahQ4eycgoAdlSqVClt3bpVjz32mBITE832s2fPytfX13x2Ab+IA3lLfHy8JMnHx8emffbs2fr2228VEBCgli1b6o033jBnpcfExKhKlSry9/c34xs3bqy+fftq+/bteuihh+7eBQDI1KJFi8y/04sWLart27erZcuWkqRixYrpn3/+kWEYWrRokdq0aWPHTAEAQKqNGzdKkpKTk3X06FGbvhu3N27cmOZucQD2kaUZ6QDubd98840kmUX0WrVqacWKFapVq5YkKSkpySYOQO6XkpKiQYMGqXbt2qpcubLZ3qVLF3377bdauXKlRowYoW+++UbdunUz+0+cOGFTRJdkbqcu03azpKQkJSQk2LwA5LyXXnpJkvTII4/o0KFDWrlypSIiIrRy5UodPHhQNWvWtIkDAAD29++//2ZrHICcx9PCAJhuXq6hVKlSKlCggEqVKqUNGzZkGAcg9+rfv7+2bdumtWvX2rS/+OKL5vsqVaqocOHCatCggfbv33/Hd52EhYVp7Nix/ylfAFmXetdJ6rNObta1a1fFxsaacQAAwP5unoX+X+MA5DxmpAMw1atXT9L/P3Bw9uzZqlmzpvnwstT21DgAuduAAQO0ePFirVy5UkWLFs009rHHHpMk7du3T5IUEBCguLg4m5jU7YCAgHSPMWLECMXHx5uvf/75579eAoDbULx4cUnSa6+9ptKlS6t+/frq0qWL6tevr9KlS2vUqFE2cQAAwP5++eUX872vr69CQ0NVr149hYaGytfXN904APZFIR2A6dixY5Kur7V64cIFtWnTRlWqVFGbNm104cIFRUZG2sQByJ0Mw9CAAQO0YMEC/fbbbypZsuQt99m8ebMkqXDhwpKk4OBgbd26VSdPnjRjli9fLi8vL1WsWDHdY7i4uMjLy8vmBSDnrV69WpJ0+fJlHT582Kbv8OHDunz5sk0cAACwvxsnnZw5c0bR0dFatWqVoqOjdebMmXTjANgXS7sAMAUGBurs2bN6/fXXFRMTowULFtj0jx492owDkHv1799fERER+vHHH+Xp6Wmuae7t7S03Nzft379fERERatasmXx9fbVlyxYNHjxYdevWVdWqVSVJjRo1UsWKFfXMM89owoQJOnHihEaNGqX+/fubDx4GkDt4e3vLYrHIMAzzoaOpUrctFou8vb3tkR4AAABwT2BGOgDTqlWrJEkb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lSRp+/bt6tOnj1555RU1a9ZM27dvV8eOHc04AAAAAACagpycHLXvEKOTxSesTkVDhgyxOgV5enlr184siunAOSikAzBNmzbN/FxRNJek/Px8p/Vp06bp9ddfr9fcAAAAAAC4FI4cOaKTxScUdNtjcg+KsCQH41SpThXkyy0gRDY3D0tykKSyowd1NHW6jhw5QiEdOAeFdACmPXv21GkcAAAAAACNhXtQhOyhbaxLoOWV1p0bwAW5WJ0AgIYjJCTE/Lx7925FRUXJx8dHUVFR2r17d5VxAAAAAAAAQFPHiHQAplWrVpmf09LStH//fknS8ePHlZaWVmUcAAAAAAAA0NQxIh2A6ZdffjE/33///U7bzl4/Ow4AAAAAAABo6iikAzA1a9asTuMAAAAAAACApoBCOgDT+PHjzc/z589XcnKyfv/73ys5OVnz58+vMg4AAAAAAABo6iikAzCNHTvW/HzvvfcqNTVVw4YNU2pqqu69994q4wAAAAAAAICmjpeNAjivAwcOaPDgwVanAQAAAAAAAFiq1oX09evX68UXX9T27duVm5urJUuWKCkp6bzxH330kd544w1lZmaqpKREV111laZMmaKEhISLyRsAAABokEJ9berocUjuNlerU7FMmcchyddmdRoAAABAnal1If348ePq1KmThg8frgEDBlwwfv369erbt6+ef/55NWvWTHPnztXtt9+ujIwMde7c+VclDeDS+Pe//63hw4eb60OHDtW4ceP00ksvacGCBU5xAACgag909dCU8FlWp2GtcGlKVw+rswAAAADqTK0L6f369VO/fv1qHP/qq686rT///PNatmyZPvnkEwrpQANz1113ORXSFyxYoEWLFqmsrKxSHAAAqNqb20u1qd3Dcg+KsDoVy5QdPagd21/UHVYnAgAAANSRep8jvby8XEVFRQoMDDxvTElJiUpKSsz1wsLC+kgNuOwNHTq0Utu5RfSKuCVLltRHSgAANDp5DkMqDZfdiLY6FcuUlJ4+83cAAAAAmgiX+j7hSy+9JIfDoUGDBp03ZurUqQoICDCXiIjLdzQPUJ/27dtXp3EAAAAAAABAU1CvhfSFCxfq6aef1uLFi9WiRYvzxk2YMEEFBQXmcvDgwXrMErh8tWrVqsrPF9oGAAAAAAAANGX1NrXLokWLNHLkSL3//vvq06dPtbF2u112u72e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TNddd12dxgFouKZMmSKbzea0dOjQwdzO/KoAADRs5eXleuSRR9SzZ09dffXVkqS8vDx5eHioWbNmTrEhISHKy8s777FKSkpUWFjotAAAAGcU0gFUaefOnerZs6ciIiLUs2dP7dy50+qUANSxq666Srm5uebyxRdfmNuYXxUAgIYtOTlZ3377rRYtWnTRx5o6daoCAgLMJSIiog4yBACgaWGOdABVSkxM1P79+yVJBw8eVGJiorUJAahzbm5uCg0NrdTO/KoAADRso0ePVmpqqtavX6+WLVua7aGhoSotLdUvv/ziNCo9Pz+/yj6/woQJEzR27FhzvbCwkGI6AADnYEQ6gCpFRERoxowZ+ve//60ZM2bwRRpogvbs2aPw8HBdccUVGjx4sHJyciQxvyoAAA2VYRgaPXq0lixZos8//1zR0dFO27t27Sp3d3etWbPGbNu1a5dycnIUGxt73uPa7Xb5+/s7LQAAwBkj0gGY3N3dVVZWJknasGGDNmzYcN44AI1b9+7dlZKSovbt2ys3N1dPP/20evXqpW+//fai5lctKSkx15lfFQCAupWcnKyFCxdq2bJl8vPzM/vlgIAAeXl5KSAgQCNGjNDYsWMVGBgof39/PfTQQ4qNjeWJMgAALhKFdACm2bNn689//nON4gA0bv369TM/X3PNNerevbtatWqlxYsXy8vL61cdc+rUqXr66afrKkUAAHCON954Q5IUFxfn1D537lzze/wrr7wiFxcXDRw4UCUlJUpISNDMmTPrOVMAAJoepnYBYHJzq9lvazWNA9B4NGvWTO3atdPevXud5lc9W03mVy0oKDCXgwcPXuKsAQC4vBiGUeVy9mAYT09PzZgxQ8eOHdPx48f10UcfVdt/AwCAmqGQDsB0+PDhOo0D0Hg4HA7t27dPYWFhzK8KAAAAAMA5al1IX79+vW6//XaFh4fLZrNp6dKlF9wnLS1NXbp0kd1uV5s2bZSSkvIrUgVwqQUHB0s6M+XDjh075OJy5n8RLi4u2rFjhzkVREUcgMZr3LhxWrdunfbv369Nmzapf//+cnV11d133+00v+ratWu1fft23XfffcyvCgAAAAC4bNV6fobjx4+rU6dOGj58uAYMGHDB+OzsbN1666168MEH9e6772rNmjUaOXKkwsLClJCQ8KuSBnBp/Pa3v5UkrVixQitXrpRhGJKk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nYqOjnYa7ZWWlqb4+HiVl5dr6tSpio6OlpeXlzp16qQPPvjAKe7cJ8tmz56tiIgIeXt7q3///nr55ZerfPJrwYIFioqKUkBAgP70pz+pqKhI0pk+bN26dXrttdfM/u/sPu7cc69Zs0bXXXedvL291aNHD+3atavK6//888918803a8SIEZo9e7ZcXM585b/QVDMlJSUaM2aMWrRoIU9PT914443aunWrU8zHH39s9q/x8fGaN2+e09+lYmT8xx9/rCuvvFJ2u105OTnaunWr+vbtq+bNmysgIEC9e/fWl19+6XRsm82mN998U7fddpu8vb0VExOj9PR07d27V3FxcfLx8VGPHj2cnh74+uuvFR8fLz8/P/n7+6tr165OP6AAANAQ2O12hYaGKjQ0VNdee63+9re/6eDBgzp8+LAZU5v7awDWoJAOWGDfvn1KTEzUwIED9c033+g///mPvvjiC40ePbrK+NOnTyspKUne3t7KyMjQW2+9pYkTJ1YZO3HiRI0bN06ZmZlq166d7r77bp06dUo9evTQq6++Kn9/f/OX8HHjxp03x+nTp+u6667TV199pb/+9a/6y1/+UumGvWvXroqKitKHH34oScrJydH69es1dOhQp7iysjIlJCTIz89PGzZs0MaNG+Xr66vExETzUfNBgwY5/Urfo0ePC+5XYc2aNdq1a5dWr16t1NRUbdu2TWPGjNEzzzyjXbt2aeXKlbrppptq9N8GANA0xMfHa+3ateb62rVrFRcXp969e5vtxcXFysjIUHx8vKZOnar58+dr1qxZ+u677/Too49qyJAhWrduXZXH37hxox588EE9/PDDyszMVN++ffXcc89Vitu3b5+WLl2q1NRUpaamat26dXrhhRckSa+99ppiY2M1atQos/+LiIg47zVNnDhR06dP17Zt2+Tm5qbhw4dXilmyZIluvfVWTZo0Sf/4xz9q9Td74okn9OGHH2revHn68ssv1aZNGyUkJOjYsWOSpOzsbP3hD39QUlKSvv76az3wwANVfh85ceKE/vGPf2jOnDn67rvv1KJFCxUVFWnYsGH64osvtHnzZrVt21a33HKL+aNChb///e+69957lZmZqQ4dOuiee+7RAw88oAkTJmjbtm0yDMPp+9LgwYPVsmVLbd26Vdu3b9ff/vY3ubu71+q6AQCoTw6HQ++8847atGnj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",
"text/plain": [
"<Figure size 1500x1000 with 6 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"visualize_outliers(df)"
]
},
{
"cell_type": "code",
"execution_count": 258,
"metadata": {},
"outputs": [],
"source": [
"def remove_outliers(df: DataFrame, columns: list[str]) -> DataFrame:\n",
" \"\"\"\n",
" Устраняет выбросы в заданных колонках:\n",
" задает значениям выше максимального значение максимума, ниже минимального - значение минимума\n",
" \"\"\"\n",
" for column in columns:\n",
" Q1: float = df[column].quantile(0.25)\n",
" Q3: float = df[column].quantile(0.75)\n",
" IQR: float = Q3 - Q1\n",
"\n",
" lower_bound: float = Q1 - 1.5 * IQR\n",
" upper_bound: float = Q3 + 1.5 * IQR\n",
"\n",
" df[column] = df[column].apply(lambda x: lower_bound if x < lower_bound else upper_bound if x > upper_bound else x)\n",
" \n",
" return df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Удаляем выбросы"
]
},
{
"cell_type": "code",
"execution_count": 259,
"metadata": {},
"outputs": [],
"source": [
"outliers_columns = list(outliers_info[outliers_info[\"Has Outliers\"] == True][\"Column\"])\n",
"df = remove_outliers(df, outliers_columns)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Снова получим данные о выбросах"
]
},
{
"cell_type": "code",
"execution_count": 260,
"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>Column</th>\n",
" <th>Has Outliers</th>\n",
" <th>Outliers Count</th>\n",
" <th>Min Value</th>\n",
" <th>Max Value</th>\n",
" <th>Q1</th>\n",
" <th>Q3</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>PhysicalHealthDays</td>\n",
" <td>False</td>\n",
" <td>0</td>\n",
" <td>0.000</td>\n",
" <td>7.500</td>\n",
" <td>0.00</td>\n",
" <td>3.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>MentalHealthDays</td>\n",
" <td>False</td>\n",
" <td>0</td>\n",
" <td>0.000</td>\n",
" <td>10.000</td>\n",
" <td>0.00</td>\n",
" <td>4.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>SleepHours</td>\n",
" <td>False</td>\n",
" <td>0</td>\n",
" <td>3.000</td>\n",
" <td>11.000</td>\n",
" <td>6.00</td>\n",
" <td>8.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>HeightInMeters</td>\n",
" <td>False</td>\n",
" <td>0</td>\n",
" <td>1.405</td>\n",
" <td>2.005</td>\n",
" <td>1.63</td>\n",
" <td>1.78</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>WeightInKilograms</td>\n",
" <td>False</td>\n",
" <td>0</td>\n",
" <td>28.120</td>\n",
" <td>136.065</td>\n",
" <td>68.04</td>\n",
" <td>95.25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>BMI</td>\n",
" <td>False</td>\n",
" <td>0</td>\n",
" <td>12.840</td>\n",
" <td>43.320</td>\n",
" <td>24.27</td>\n",
" <td>31.89</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Column Has Outliers Outliers Count Min Value Max Value \\\n",
"0 PhysicalHealthDays False 0 0.000 7.500 \n",
"1 MentalHealthDays False 0 0.000 10.000 \n",
"2 SleepHours False 0 3.000 11.000 \n",
"3 HeightInMeters False 0 1.405 2.005 \n",
"4 WeightInKilograms False 0 28.120 136.065 \n",
"5 BMI False 0 12.840 43.320 \n",
"\n",
" Q1 Q3 \n",
"0 0.00 3.00 \n",
"1 0.00 4.00 \n",
"2 6.00 8.00 \n",
"3 1.63 1.78 \n",
"4 68.04 95.25 \n",
"5 24.27 31.89 "
]
},
"execution_count": 260,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_outliers_info(df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Видим, что выбросов не осталось - проверим через диаграммы"
]
},
{
"cell_type": "code",
"execution_count": 261,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAPeCAYAAADj01PlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADoXklEQVR4nOzdd3gUVdvH8d8mIZuQRggJEEihd6SKdJASYwhgoQkSQFERRUBQo9KV0AQsgMijCVKkg4ACglJUioAiRaRIlR5KQg2QzPsHb1aWZOjJkvD9XNdcj3PmzJx7Fh7unXtnzlgMwzAEAAAAAAAAAADScHJ0AAAAAAAAAAAAPKgoogMAAAAAAAAAYIIiOgAAAAAAAAAAJiiiAwAAAAAAAABggiI6AAAAAAAAAAAmKKIDAAAAAAAAAGCCIjoAAAAAAAAAACYoogMAAAAAAAAAYIIiOgAAAAAAAAAAJiiiAwAAAAAAAABggiI6sqxZs2bJYrGku5QtW9bR4QEAgHSQvwEAyHrI3wAedi6ODgC4V++++65KlSplW//www8dGA0AALgd5G8AALIe8jeAhxVFdGR5jRo1Ur169Wzr//vf/xQfH++4gAAAwC2RvwEAyHrI3wAeVkzngizr8uXLkiQnp1v/NY6Li5PFYtG+fftsbSkpKSpfvrwsFovi4uJs7Zs3b1aHDh1UuHBhubm5KV++fOrUqZNOnjxpd8z+/fun+yibi8t/v03Vq1dPZcuW1caNG1WjRg25u7urUKFC+vzzz9OcS9++fVW5cmX5+PjIw8NDtWvX1vLly+367du3zzbOvHnz7LZdunRJvr6+slgsGjFiRJo4AwICdOXKFbt9vvnmG9vxrv/i8+233yoiIkKBgYGyWq0qUqSIBg0apOTk5Ft+1qnj/f3332rZsqW8vb3l5+enN954Q5cuXbLrGxsbq8cff1wBAQGyWq0qXbq0xo0bl+aYzZo1U2hoqNzc3BQQEKCmTZtqy5Ytdn1Sz2P06NFp9i9ZsqQsFotee+01W9upU6fUq1cvlStXTp6envL29lZ4eLj+/PNPu32joqLk5uam7du327WHhYXJ19dXhw8ftrXt2bNHLVq0UO7cuZUzZ0499thj+u677+z2W7Fihd3fF6vVquLFiysmJkaGYdz8wwWAbID8Pc9uG/mb/A0AWQH5e57dNvI3+RsPH+5ER5aVmsStVutd7T9p0qQ0iUCSli5dqj179qhjx47Kly+ftm3bpi+++ELbtm3T2rVrZbFY7PqPGzdOnp6etvUbv1ScPn1aTz75pFq2bKk2bdpoxowZ6tKli1xdXdWpUydJUmJiov73v/+pTZs26ty5s86ePasvv/xSYWFh+u2331ShQgW7Y7q5uSk2NlbNmze3tc2ZMydNkrze2bNntXDhQj311FO2ttjYWLm5uaXZLy4uTp6enurZs6c8PT31008/qW/fvkpMTNTw4cNNx7hey5YtFRoaqpiYGK1du1affPKJTp8+ra+//trusytTpoyaNm0qFxcXLViwQK+++qpSUlLUtWtXu+O99NJLypcvnw4fPqzPPvtMDRs21N69e5UzZ840n0v37t1tbatXr9b+/fvTxLdnzx7NmzdPLVq0UKFChXTs2DGNHz9edevW1V9//aXAwEBJ0scff6yffvpJUVFRWrNmjZydnTV+/Hj98MMPmjRpkq3fsWPHVKNGDV24cEHdunWTn5+fJk6cqKZNm2rWrFl2n7v032OQFy9e1PTp0/Xuu+8qICBAL7zwwm19vgCQVZG/yd/kbwDIesjf5G/yNx56BpBFjR492pBk/Pnnn3btdevWNcqUKWPXFhsba0gy9u7daxiGYVy6dMkIDg42wsPDDUlGbGysre+FCxfSjPXNN98YkoxVq1bZ2vr162dIMk6cOGEaY926dQ1JxkcffWRrS0pKMipUqGAEBAQYly9fNgzDMK5evWokJSXZ7Xv69Gkjb968RqdOnWxte/fuNSQZbdq0MVxcXIyjR4/atjVo0MB47rnnDEnG8OHD08TZpk0bo0mTJrb2/fv3G05OTkabNm3SnEd6n8HLL79s5MyZ07h06ZLp+V4/XtOmTe3aX3311TR/XumNExYWZhQuXPimY8yYMcOQZGzYsMHWJsl49tlnDRcXF7v2F154wfa5dO3a1dZ+6dIlIzk52e64e/fuNaxWqzFw4EC79iVLlhiSjA8++MDYs2eP4enpaTRv3tyuT/fu3Q1Jxs8//2xrO3v2rFGoUCEjNDTUNtby5csNScby5cvtYnFycjJeffXVm543AGQH5G/yN/kbALIe8jf5m/yNhx3TuSDLSn28y9/f/473HTNmjE6ePKl+/fql2ebu7m7770uXLik+Pl6PPfaYJOn333+/47FcXFz08ssv29ZdXV318ssv6/jx49q4caMkydnZWa6urpKuPeZ26tQpXb16VVWqVEl3zEqVKqlMmTKaNGmSJGn//v1avny5OnToYBpHp06dtHjxYh09elSSNHHiRFWvXl3FixdP0/f6z+Ds2bOKj49X7dq1deHCBf3999+3dd43/pL9+uuvS5K+//77dMdJSEhQfHy86tatqz179ighIcFu/wsXLig+Pl6bNm3ShAkTlDdv3jSx582bVxEREYqNjbXtM2PGDHXs2DFNfFar1XbXQnJysk6ePClPT0+VKFEizWfeuHFjvfzyyxo4cKCefvppubm5afz48XZ9vv/+ez366KOqVauWrc3T01MvvfSS9u3bp7/++suuf+r5HjhwQMOGDVNKSooef/zxdD5JAMheyN/kb/I3AGQ95G/yN/kbDzuK6Miy9u/fLxcXlztO4gkJCRo8eLB69uypvHnzptl+6tQpvfHGG8qbN6/c3d3l7++vQoUK2fa9U4GBgfLw8LBrS00+188RN3HiRJUvX15ubm7y8/OTv7+/vvvuO9MxO3bsaEtWcXFxqlGjhooVK2YaR4UKFVS2bFl9/fXXMgxDcXFx6SY3Sdq2bZueeuop+fj4yNvbW/7+/mrXrp2k2/8MboylSJEicnJysjvnX3/9VQ0bNpSHh4dy5colf39/vfvuu+mOM3DgQPn7+6tixYrat2+fVqxYIS8vrzTjduzYUVOnTlVSUpJmzpwpX1/fdJNjSkqKRo0apWLFislqtSpPnjzy9/fX5s2b0z3HESNGKHfu3Nq0aZM++eQTBQQE2G3fv3+/SpQokWa/1DfX3/hIW/PmzeXv76+QkBD1799f77//vp555pk0+wNAdkP+Jn+TvwEg6yF/k7/J33jYUURHlrVjxw4VLlzY7kUit2Po0KFycnJS7969093esmVLTZgwQa+88ormzJmjH374QYsXL5Z07R/+jDB58mR16NBBRYoU0ZdffqnFixdr6dKlevzxx03HbNeunXbv3q21a9dq4sSJpgn5ep06dVJsbKxWrlypo0ePqmXLlmn6nDlzRnXr1tWff/6pgQMHasGCBVq6dKmGDh0q6e4/gxvnsvvnn3/UoEEDxcfHa+TIkfruu++0dOlS9ejRI91xXnzxRf3www/66quv5ObmpmeeeSbdZBsRESFXV1fNmzdPsbGxioqKSvflN6lf5OrUqaPJkydryZIlWrp0qcqUKZPuOf7xxx86fvy4JKU7l9+dGjFihJYuXarvv/9e/fr109ChQzVgwIB7Pi4APOjI3+Rv8jcAZD3kb/I3+RsPO14siiwpKSlJmzZtsnuxx+04fPiwPv74Y8XExMjLyyvNG79Pnz6tH3/8UQMGDFDfvn1t7bt27brrWA8fPqzz58/b/Rq+c+dOSVJoaKgkadasWSpcuLDmzJljl+zSe9wtlZ+fn5o2bWp7NK1ly5Z2b/hOT9u2bdW7d2+98cYbevbZZ9P9JXnFihU6efKk5syZozp16tja9+7de1vnm2rXrl22Owgkaffu3UpJSbGd84IFC5SUlKT58+crODjY1u/GN6KnKlq0qIoWLSpJatiwoYKDgzV16lR16dLFrp+Li4uef/55ffjhh9q2bZu++uqrdI83a9Ys1a9fX19++aVd+5kzZ5QnTx67tvPnz6tjx44qXbq0atSooWHDhumpp55S1apVbX1CQkK0Y8eONOOkPn4XEhJi1165cmXVq1dPkhQeHq5Dhw5p6NCh6tOnz2298R4AsiLyN/mb/A0AWQ/5m/xN/ga4Ex1ZVOrjQg0aNLij/QYMGKC8efPqlVdeSXe7s7OzJMkwDLv20aNH31WcknT16lW7+bsuX76s8ePHy9/fX5UrVzYdd926dVqzZs1Nj92pUydt3rxZLVq0sHtDuZncuXOrWbNm2rx5s+3N5DdKL5bLly9r7Nixtzz+9caMGWO3/umnn0q6lrDMxklISLA9InczqV9WkpKS0t3eqVMnbdmyRXXq1FHhwoXT7ePs7Jzmz3nmzJk6dOhQmr5vv/22Dhw4oIkTJ2rkyJEKDQ1VVFSU3fhPPvmkfvvtN7s/s/Pnz+uLL75QaGioSpcufdNzunjxoq5evaqrV6/etB8AZGXk72vI3+RvAMhKyN/XkL/J33i4cSc6spTz58/r008/1cCBA23/CE+ePNmuz7Fjx3Tu3DlNnjxZjRo1spt37YcfftCUKVNsLxG5kbe3t+rUqaNhw4bpypUrKlCggH744Yc7/hX4eoGBgRo6dKj27dun4sWLa/r06dq0aZO++OIL5ciRQ5LUpEkTzZkzR0899ZQiIiK0d+9eff755ypdurTOnTtneuwnnnhCJ06cuK0EniouLk5jxoxJ82tvqho1asjX11dRUVHq1q2bLBaLJk2alCbh3crevXvVtGlTPfHEE1qzZo0mT56s5557To888oikay8LcXV1VWRkpF5++WWdO3dOEyZMUEBAgI4cOWI7zvfff6///e9/qlGjhnLnzq09e/ZowoQJ8vDw0FNPPZXu2KVKlVJ8fLzdi1Nu1KRJEw0cOFAdO3ZUjRo1tGXLFk2ZMiVN0v/pp580duxY9evXT5UqVZIkxcbGql69eurTp4+GDRsmSXrnnXf0zTffKDw8XN26dVPu3Lk1ceJE7d27V7Nnz07z6/bSpUv177//6sqVK1q/fr2mTJmipk2bmv7dBICsjPxtj/xN/gaArID8bY/8Tf7GQ84AspC9e/cakm57Wb58uWEYhhEbG2tIMipUqGCkpKSkOV5sbKyt7d9//zWeeuopI1euXIaPj4/RokUL4/Dhw4Yko1+/frZ+/fr1MyQZJ06cMI23bt26RpkyZYwNGzYY1atXN9zc3IyQkBDjs88+s+uXkpJiDB482AgJCTGsVqtRsWJFY+HChUZUVJQREhKSJt7hw4ff9PO5fvut4kxv+6+//mo89thjhru7uxEYGGi89dZbxpIlS+w+UzOpx/vrr7+MZ5991vDy8jJ8fX2N1157zbh48aJd3/nz5xvly5c33NzcjNDQUGPo0KHGV199ZUgy9u7daxiGYWzdutVo3Lix4efnZ7i6uhpBQUFG69atjc2bN9sdS5LRtWtX07hu3H7p0iXjzTffNPLnz2+4u7sbNWvWNNasWWPUrVvXqFu3rmEYhpGYmGiEhIQYlSpVMq5cuWJ3vB49ehhOTk7GmjVrbG3//POP8eyzzxq5cuUy3NzcjEcffdRYuHCh3X7Lly+3+zvq4uJihISEGN26dTNOnz59088WALIq8jf5m/wNAFkP+Zv8Tf4G/mMxjDv8eQtwoH379qlQoUJavny5bT6re+mX0erVq6f4+Hht3brVYTFktv79+2vAgAE6ceKE6a/tAICHC/n7wUf+BgDciPz94CN/A5mHOdEBAAAAAAAAADBBER1Ziqenp9q2bWs3z9q99AMAABmP/A0AQNZD/gaA//BiUWQpefLkSfMik3vpBwAAMh75GwCArIf8DQD/YU50AAAAAAAAAABMMJ0LAAAAAAAAAAAmKKIDAAAAAAAAAGCCIjoeeh06dJCnp2emjhkXFyeLxaJ9+/ZlyPH79+8vi8WSIce+FxaLRf3797/tvq+99lrGBgQAgAOFhoaqQ4cOjg7Dzp18R0ntu2HDhowPDACADLBv3z5ZLBbFxcU5OhQADziK6MjSUi/eJGnFihV2F30dOnSQxWKxLd7e3nrkkUf00UcfKSkpyYFRO0ZoaKiaNGmS7rbUz27WrFmZGtPq1avVv39/nTlz5q6Pkfp3IHVxc3NTYGCgwsLC9Mknn+js2bP3L+B7UK9ePVuhpEOHDqpXr55D4wGAB9Xt5HZvb29dvHgxzb67du2y5YMRI0ZkaJzff//9bf8wfLtulY8d8cO/JI0dO/aeiwv16tWz/dk4OTnJ29tbJUqU0PPPP6+lS5fen0DvUWohZcWKFZJEUQUAHnA3+84gSQsWLFDdunUVEBCgnDlzqnDhwmrZsqUWL17soIhvLfWGuPj4+HS33+y6/kHBtS+yK4royNasVqsmTZqkSZMmafDgwcqdO7d69eqlqKgoh8b1/PPP6+LFiwoJCXFoHI62evVqDRgw4J6K6KkGDhyoSZMmady4cXr99dclSd27d1e5cuW0efPmez4+AODB4OLiogsXLmjBggVptk2ZMkVubm6ZEsf333+vAQMGZMpYjnY/iuiSVLBgQU2aNElff/21hg8frqZNm2r16tVq3LixWrVqpStXrtx7sAAASBoxYoSaNm0qi8Wi6OhojRo1Ss8884x27dqladOmOTo8AFmQi6MDADKSi4uL2rVrZ1t/9dVXVa1aNU2fPl0jR45UYGCgQ+JydnaWs7OzQ8bOrsLDw1WlShXbenR0tH766Sc1adJETZs21fbt2+Xu7u7ACAEA94PValXNmjX1zTffqGXLlnbbpk6dqoiICM2ePdtB0eFmfHx87L6XSdKQIUPUrVs3jR07VqGhoRo6dKiDogMAZBdXr17VoEGD1KhRI/3www9pth8/ftwBUWVt58+fl4eHh6PDAByKO9HxUHFycrI9SnTjXJ+HDh1S8+bN5enpKX9/f/Xq1UvJycmSJMMwFBoaqmbNmqU55qVLl+Tj46OXX37Z1vbpp5+qTJkyypkzp3x9fVWlShVNnTrVtt1svtFFixapbt268vLykre3t6pWrWq3388//6wWLVooODhYVqtVQUFB6tGjR7qPtN8Phw4dUqdOnZQ3b15ZrVaVKVNGX331lV2fy5cvq2/fvqpcubJ8fHzk4eGh2rVra/ny5Tc9dv/+/dW7d29JUqFChWyPeN/4mcybN09ly5a1jX8nj949/vjj6tOnj/bv36/Jkyfb2jdv3qwOHTqocOHCcnNzU758+dSpUyedPHnS1mf58uWyWCyaO3dumuNOnTpVFotFa9askSQdPXpUHTt2VMGCBWW1WpU/f341a9Ysw+a8B4CH3XPPPadFixbZPcm0fv167dq1S88991y6+5w5c0bdu3dXUFCQrFarihYtqqFDhyolJcXWJ3U6jxEjRuiLL75QkSJFZLVaVbVqVa1fv97Wr0OHDhozZowk2U0plmrEiBGqUaOG/Pz85O7ursqVK2folGmLFi1S7dq15eHhIS8vL0VERGjbtm12fW4n96UnNDRU27Zt08qVK23neeNj2UlJSerZs6f8/f3l4eGhp556SidOnLit2J2dnfXJJ5+odOnS+uyzz5SQkGDbFhsbq8cff1wBAQGyWq0qXbq0xo0bZ7d/VFSU8uTJk+5d7I0bN1aJEiVs60uXLlWtWrWUK1cueXp6qkSJEnr33XdvK04AQNYRHx+vxMRE1axZM93tAQEBtzzG33//rWeffVa5c+eWm5ubqlSpovnz56fpd6ffL0aNGqWQkBC5u7urbt262rp1692f6P87f/683nzzTVsMJUqU0IgRI2QYRpoY0nuy7MZ3l6VOKfPXX3/pueeek6+vr2rVqiWJa1883LgTHQ+df/75R5Lk5+dna0tOTlZYWJiqVaumESNGaNmyZfroo49UpEgRdenSRRaLRe3atdOwYcN06tQp5c6d27bvggULlJiYaLuzasKECerWrZueffZZvfHGG7p06ZI2b96sdevWmV7YS9cK6506dVKZMmUUHR2tXLly6Y8//tDixYtt+82cOVMXLlxQly5d5Ofnp99++02ffvqp/v33X82cOfOW537lypV051a7/oI11bFjx/TYY4/ZXvDp7++vRYsW6YUXXlBiYqK6d+8uSUpMTNT//vc/tWnTRp07d9bZs2f15ZdfKiwsTL/99psqVKiQbixPP/20du7cqW+++UajRo1Snjx5JEn+/v62Pr/88ovmzJmjV199VV5eXvrkk0/0zDPP6MCBA3Z/fjfz/PPP691339UPP/ygzp07S7p2Eb1nzx517NhR+fLl07Zt2/TFF19o27ZtWrt2ra1AEBQUpClTpuipp56yO+aUKVNUpEgRVa9eXZL0zDPPaNu2bXr99dcVGhqq48ePa+nSpTpw4IBCQ0NvK04AwO17+umn9corr2jOnDnq1KmTpGs/cJYsWVKVKlVK0//ChQuqW7euDh06pJdfflnBwcFavXq1oqOjdeTIEY0ePdqu/9SpU3X27Fm9/PLLslgsGjZsmJ5++mnt2bNHOXLk0Msvv6zDhw9r6dKlmjRpUprxPv74YzVt2lRt27bV5cuXNW3aNLVo0UILFy5URETELc/v7Nmz6ebr9N7pMmnSJEVFRSksLExDhw7VhQsXNG7cONWqVUt//PGHLQ/dTu5Lz+jRo/X666/L09NT7733niQpb968dn1ef/11+fr6ql+/ftq3b59Gjx6t1157TdOnT7/luUrXCult2rRRnz599Msvv9g+o3HjxqlMmTJq2rSpXFxctGDBAr366qtKSUlR165dJV3L819//bWWLFliN0fs0aNH9dNPP6lfv36SpG3btqlJkyYqX768Bg4cKKvVqt27d+vXX3+9rRgBAFlHQECA3N3dtWDBAr3++ut21++3Y9u2bapZs6YKFCigd955Rx4eHpoxY4aaN2+u2bNn264P7/T7xddff62zZ8+qa9euunTpkj7++GM9/vjj2rJlS5rceurUqXRju744L1274a9p06Zavny5XnjhBVWoUEFLlixR7969dejQIY0aNeqOzv16LVq0ULFixTR48GBbQZ5rXzzUDCCbioqKMjw8PIwTJ04YJ06cMHbv3m0MHjzYsFgsRvny5e36STIGDhxot3/FihWNypUr29Z37NhhSDLGjRtn169p06ZGaGiokZKSYhiGYTRr1swoU6bMTWOLjY01JBl79+41DMMwzpw5Y3h5eRnVqlUzLl68aNc39biGYRgXLlxIc6yYmBjDYrEY+/fvt7X169fPuPH/3iEhIYakmy4zZ8609X/hhReM/PnzG/Hx8XbHad26teHj42OL5erVq0ZSUpJdn9OnTxt58+Y1OnXqZNcuyejXr59tffjw4Xafw419XV1djd27d9va/vzzT0OS8emnn9raUj/L9evXpzlGKh8fH6NixYq29fQ+x2+++caQZKxatcrWFh0dbVitVuPMmTO2tuPHjxsuLi628zh9+rQhyRg+fLjp+ACA+yM1txuGYTz77LNGgwYNDMMwjOTkZCNfvnzGgAEDjL1796b5d3nQoEGGh4eHsXPnTrvjvfPOO4azs7Nx4MABwzAM275+fn7GqVOnbP2+/fZbQ5KxYMECW1vXrl3T5NpUN+aZy5cvG2XLljUef/xxu/aQkBAjKirKtr58+fJb5urU8zcMwzh79qyRK1cuo3PnznbHPXr0qOHj42PXfru578bvKIZhGGXKlDHq1q2bZv/Uvg0bNrT7vtKjRw/D2dnZLn/WrVv3pt+P5s6da0gyPv7445vGHBYWZhQuXNi2npycbBQsWNBo1aqVXb+RI0caFovF2LNnj2EYhjFq1ChDknHixAnTGAAA2Uffvn1teTM8PNz48MMPjY0bN6bpl5r7Y2NjbW0NGjQwypUrZ1y6dMnWlpKSYtSoUcMoVqyYre1Ov1+4u7sb//77r63funXrDElGjx49bG2p1/I3WyIiImz9582bZ0gyPvjgA7sYnn32WcNisdiup9M7z1Q3XqenxtCmTRu7flz74mHHdC7I1s6fPy9/f3/5+/uraNGievfdd1W9evV0p+h45ZVX7NZr166tPXv22NaLFy+uatWqacqUKba2U6dOadGiRWrbtq3tDq5cuXLp33//tXvs+1aWLl2qs2fP6p133knzQrTr7wy7fk7v8+fPKz4+XjVq1JBhGPrjjz9uOU61atW0dOnSNMuIESPs+hmGodmzZysyMlKGYSg+Pt62hIWFKSEhQb///ruka3ePubq6Srr2q/ipU6d09epVValSxdbnbjVs2FBFihSxrZcvX17e3t52fy63w9PTU2fPnrWtX/85Xrp0SfHx8XrsscckyS7m9u3bKykpye4R/OnTp+vq1au2Jw/c3d3l6uqqFStW6PTp03d2ggCAu/bcc89pxYoVtjuOjx49avrE18yZM1W7dm35+vra5bSGDRsqOTlZq1atsuvfqlUr+fr62tZr164tSbedf67PM6dPn1ZCQoJq165923mxb9++6ebrxo0b2/VbunSpzpw5ozZt2tidl7Ozs6pVq2Y3tdrt5r678dJLL9l9X6ldu7aSk5O1f//+2z6Gp6enJJnm64SEBMXHx6tu3bras2eP7Sk6JycntW3bVvPnz7fbd8qUKapRo4YKFSok6dr3M0n69ttv09zFBwDIfgYMGKCpU6eqYsWKWrJkid577z1VrlxZlSpV0vbt2033O3XqlH766Se1bNnS9mRYfHy8Tp48qbCwMO3atUuHDh2SdOffL5o3b64CBQrY1h999FFVq1ZN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RAfuQFxcnHLlypVhx1+xYoUsFovOnDlzX463b98+WSwWbdq06b4c707Vq1dP3bt3v2mfjP5MAQB40Dk6F1osFs2bN++mfTp06KDmzZtnSjwAADwIbic/Anh4UEQHbtChQwdZLBZZLBa5urqqaNGiGjhwoK5evZrhY9eoUUNHjhyRj49Phhz/ZkX12yl436vQ0FCNHj36jvfr37+/7c/ExcVFefLkUZ06dTR69GglJSXd/0ABANlCak5/5ZVX0mzr2rWrLBaLOnTocN/G69+/vypUqHDPx7lZUT2jL+jv5Qf4evXq2fK11WpVgQIFFBkZqTlz5tz/QAEAuEcnTpxQly5dFBwcLKvVqnz58iksLEy//vqrw2Jy9DU7AHMU0YF0PPHEEzpy5Ih27dqlN998U/3799fw4cMzfFxXV1fly5dPFoslw8fKasqUKaMjR47owIEDWr58uVq0aKGYmBjVqFFDZ8+edXR4AIAHVFBQkKZNm6aLFy/a2i5duqSpU6cqODjYgZFlT507d9aRI0f0zz//aPbs2SpdurRat26tl156ydGhAQBg55lnntEff/yhiRMnaufOnZo/f77q1aunkydPOjo0h7l8+bKjQwAeWBTRgXSk/godEhKiLl26qGHDhpo/f75t+5IlS1SqVCl5enraCu6StGrVKuXIkUNHjx61O1737t1Vu3ZtSdL+/fsVGRkpX19feXh4qEyZMvr+++8lpT+dy6+//qp69eopZ86c8vX1VVhYmE6fPi1JWrx4sWrVqqVcuXLJz89PTZo00T///HNfPoOkpCT16tVLBQoUkIeHh6pVq6YVK1bYtp88eVJt2rRRgQIFlDNnTpUrV07ffPON6fHq1aun/fv3q0ePHra71K5n9pmmcnFxUb58+RQYGKhy5crp9ddf18qVK7V161YNHTrU1m/SpEmqUqWKvLy8lC9fPj333HM6fvy4JMkwDBUtWlQjRoywO/amTZtksVi0e/duGYah/v372+5GCAwMVLdu3e72YwQAOFilSpUUFBRkdzf0nDlzFBwcrIoVK9raUlJSFBMTo0KFCsnd3V2PPPKIZs2aZduemqN//PFHValSRTlz5lSNGjW0Y8cOSdfuHh8wYID+/PNPW56Li4uTJI0cOVLlypWTh4eHgoKC9Oqrr+rcuXP35fwOHjyoli1bKleuXMqdO7eaNWumffv22bavX79ejRo1Up48eeTj46O6devq999/Nz1eoUKFJEkVK1aUxWJRvXr17LaPGDFC+fPnl5+fn7p27aorV67Ybc+ZM6fy5cunggUL6rHHHtPQoUM1fvx4TZgwQcuWLbP1e/vtt1W8eHHlzJlThQsXVp8+fWzH2rdvn5ycnLRhwwa7Y48ePVohISFKSUnR6dOn1bZtW/n7+8vd3V3FihVTbGzs3XyEAICH0JkzZ/Tzzz9r6NChql+/vkJCQvToo48qOjpaTZs2TXefW+VcSfrf//6nUqVKyc3NTSVLltTYsWNt21LvMp82bZpq1KghNzc3lS1bVitXrryrczh9+rTat28vX19f5cyZU+Hh4dq1a5dte3pPyI0ePVqhoaG29dTp2j788EMFBgaqRIkSkqSxY8eqWLFicnNzU968efXss8/eVYxAdkIRHbgN7u7utl9kL1y4oBEjRmjSpElatWqVDhw4oF69ekmS6tSpo8KFC2vSpEm2fa9cuaIpU6aoU6dOkq49Pp6UlKRVq1Zpy5YtGjp0qDw9PdMdd9OmTWrQoIFKly6tNWvW6JdfflFkZKSSk5MlSefPn1fPnj21YcMG/fjjj3JyctJTTz2llJSUez7n1157TWvWrNG0adO0efNmtWjRQk888YQtKV+6dEmVK1fWd999p61bt+qll17S888/r99++y3d482ZM0cFCxbUwIEDdeTIEbsi+c0+05spWbKkwsPD7QojV65c0aBBg/Tnn39q3rx52rdvn+1RfYvFok6dOqW5yI6NjVWdOnVUtGhRzZ49W6NGjdL48eO1a9cuzZs3T+XKlbvTjw8A8AC58d/+r776Sh07drTrExMTo6+//lqff/65tm3bph49eqhdu3ZpLmzfe+89ffTRR9qwYYNcXFxs+b1Vq1Z68803bU9OHTlyRK1atZIkOTk56ZNPPtG2bds0ceJE/fTTT3rrrbfu+byuXLmisLAweXl56eeff9avv/5q+zE69XvL2bNnFRUVpV9++UVr165VsWLF9OSTT5o+xZWax5ctW6YjR47Y5djly5frn3/+0fLlyzVx4kTFxcXZfii4maioKPn6+tody8vLS3Fxcfrrr7/08ccfa8KECRo1apSka9O/NWzYMN183aFDBzk5OalPnz7666+/tGjRIm3fvl3jxo1Tnjx57ujzAwA8vDw9PeXp6al58+bd1hSht5Nzp0yZor59++rDDz/U9u3bNXjwYPXp00cTJ060O1bv3r315ptv6o8//lD16tUVGRl5V3e/d+jQQRs2bND8+fO1Zs0aGYahJ598Ms0P3Lfy448/aseOHVq6dKkWLlyoDRs2qFu3bho4cKB27NihxYsXq06dOnccH5DtGADsREVFGc2aNTMMwzBSUlKMpUuXGlar1ejVq5cRGxtrSDJ2795t6z9mzBgjb968tvWhQ4capUqVsq3Pnj3b8PT0NM6dO2cYhmGUK1fO6N+/f7pjL1++3JBknD592jAMw2jTpo1Rs2bN2479xIkThiRjy5YthmEYxt69ew1Jxh9//GG37u7ubnh4eNgtTk5OxhtvvGEYhmHs37/fcHZ2Ng4dOmR3/AYNGhjR0dGm40dERBhvvvmmbb1u3bq2YxqGYYSEhBijRo2y2+d2PtN+/foZjzzySLpjvv3224a7u7tpTOvXrzckGWfPnjUMwzAOHTpkODs7G+vWrTMMwzAuX75s5MmTx4iLizMMwzA++ugjo3jx4sbly5dNjwkAyBpSc/rx48cNq9Vq7Nu3z9i3b5/h5uZmnDhxwmjWrJkRFRVlXLp0yciZM6exevVqu/1feOEFo02bNoZh/Jejly1bZtv+3XffGZKMixcvGoZx83x1vZkzZxp+fn629djYWMPHx8duXVKaXO3h4WFIMubOnWsYhmFMmjTJKFGihJGSkmLbNykpyXB3dzeWLFmS7tjJycmGl5eXsWDBAlvb9ce88bvD9Z9lSEiIcfXqVVtbixYtjFatWtnWb8z716tWrZoRHh5u+pkMHz7cqFy5sm19+vTphq+vr3Hp0iXDMAxj48aNhsViMfbu3WsYhmFERkYaHTt2ND0eAAC3MmvWLMPX19dwc3MzatSoYURHRxt//vmnbfud5twiRYoYU6dOtRtj0KBBRvXq1Q3D+C/HDhkyxLb9ypUrRsGCBY2hQ4fa9bnVNfvOnTsNScavv/5qO1Z8fLzh7u5uzJgxwzCM9L+XjBo1yggJCbGtR0VFGXnz5jWSkpJsbbNnzza8vb2NxMTEO/k4gWyPO9GBdCxcuFCenp5yc3NTeHi4WrVqpf79+0u69phykSJFbH3z589vmy5EuvZr8O7du7V27VpJ1x7vbtmypTw8PCRJ3bp10wcffKCaNWuqX79+2rx5s2kcqXeim9m1a5fatGmjwoULy9vb2/ZY1oEDB256ftOnT9emTZvslipVqti2b9myRcnJySpevLjtF3pPT0+tXLnSNl1McnKyBg0apHLlyil37tzy9PTUkiVLbjl2em71md6MYRh2U8Ns3LhRkZGRCg4OlpeXl+rWrSvpv88kMDBQERER+uqrryRJCxYsUFJSklq0aCFJatGihS5evKjChQurc+fOmjt3bqa8VBYAkHH8/f0VERGhuLg4xcbGKiIiwu6u5d27d+vChQtq1KiRXd77+uuv00yTVr58edt/58+fX5JumbOWLVumBg0aqECBAvLy8tLzzz+vkydP6sKFC6b7eHl5pcnVN75k7M8//9Tu3bvl5eVlizl37ty6dOmSLe5jx46pc+fOKlasmHx8fOTt7a1z587dVb4uU6aMnJ2d7c7/bvP19OnTVbNmTeXLl0+enp56//337WJq3ry5nJ2dNXfuXEnXvk/Vr1/f9l2nS5cumjZtmipUqKC33npLq1evvuPzAQA83J555hkdPnxY8+fP1xNPPKEVK1aoUqVK6T5ldauce/78ef3zzz964YUX7L5LfPDBB2m+S1SvXt323y4uLqpSpYq2b99u1+dW1+zbt2+Xi4uLqlWrZmvz8/NTiRIl0hzrVsqVKydXV1fbeqNGjRQSEqLChQvr+eef15QpU276nQV4WLg4OgDgQVS/fn2NGzdOrq6uCgwMlIvLf/9XyZEjh11fi8UiwzBs6wEBAYqMjFRsbKwKFSqkRYsW2c0l/uKLLyosLEzfffedfvjhB8XExOijjz7S66+/niYOd3f3m8YZGRmpkJAQTZgwQYGBgUpJSVHZsmVv+TKQoKAgFS1a1HSsc+fOydnZWRs3brS7WJZkm3pm+PDh+vjjjzV69GjbPK/du3e/qxeR3OozvZnt27fb5m89f/68wsLCFBYWpilTpsjf318HDhxQWFiYXVwvvviinn/+eY0aNUqxsbFq1aqVcubMKenaZ7Njxw4tW7ZMS5cu1auvvqrhw4dr5cqVaeIEAGQdnTp10muvvSZJGjNmjN221PnJv/vuOxUoUMBum9VqtVu/PhekFoVvNo3avn371KRJE3Xp0kUffvihcufOrV9++UUvvPCCLl++bMs/N3JyckqTq2907tw5Va5cWVOmTEmzzd/fX9K1qVROnjypjz/+WCEhIbJarapevfp9y9e3M4Vc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JVW2bFm9+uqrOZ5n4sSJKlu2rOrWravDhw8rLi5Onp6e2c7br18/xcbGKjMzU4sXL1apUqVyTI5ZWVl6//33VaVKFZnNZpUpU0Zly5bVrl27crzG//znP/Lx8VFCQoKmTp0qX19fq+NHjhxR1apVs427/ub6G3/S1qVLF5UtW1YVKlTQ+PHjNWbMGHXr1i3beAC415C/yd/kbwBwPORv8jf5G0UdRXQ4rP379+v++++3epFIbkyaNElOTk566aWXcjzeo0cPzZ49W88++6yWLl2q77//XitXrpT093/488Onn36qvn37qlKlSpo7d65Wrlyp1atXq2XLljbP2adPHx04cEBbtmzRvHnzbCbkf+rfv7+io6O1fv16JScnq0ePHtn6nD9/Xs2bN9cvv/yiiRMn6uuvv9bq1as1adIkSbf/Gdy4lt3BgwfVqlUrnT59Wu+9956++eYbrV69WiNHjszxPP/3f/+n77//Xp988olcXV3VrVu3HJNthw4d5OLiouXLlys6OloRERE5vvzm+l/kmjVrpk8//VSrVq3S6tWrVaNGjRyv8eeff9apU6ckKce1/PLqP//5j1avXq1vv/1W48aN06RJkzRhwoQ7nhcACjvyN/mb/A0Ajof8Tf4mf6Oo48WicEiZmZlKSEiwerFHbhw/flwffPCBoqKi5Onpme2N3+fOndOaNWs0YcIEjR071tL+xx9/3Hasx48fV3p6utW34b///rskKTg4WJK0ZMkS3X///Vq6dKlVssvp527XlS5dWo899pjlp2k9evSwesN3Tnr37q2XXnpJL7zwgp544okcv0mOi4vTmTNntHTpUjVr1szSnpiYmKvrve6PP/6wPEEgSQcOHFBWVpblmr/++mtlZmbqq6++UlBQkKXfjW9Ev65y5cqqXLmyJKl169YKCgpSbGysnnvuOat+zs7Oevrpp/XWW29p9+7d+uSTT3Kcb8mSJWrRooXmzp1r1X7+/HmVKVPGqi09PV39+vVT9erV1bhxY02ePFmPP/64HnroIUufChUqaP/+/dnOc/3ndxUqVLBqr1+/vsLCwiRJ4eHhOnbsmCZNmqTXX389V2+8BwBHRP4mf5O/AcDxkL/J3+RvgCfR4aCu/1yoVatWeRo3YcIE+fn56dlnn83xeLFixSRJhmFYtU+ZMuW24pSkq1evWq3fdfnyZc2cOVNl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lJQUmc1mtWzZ0uaa5HciIiLiln2aN2+uwYMHKyoqSgkJCXr00UdVvHhx/fHHH1q8eLE++OADy3rq9evX1/Tp0/Xmm2+qcuXK8vX1VcuWLfXSSy/pq6++UseOHdW3b1/Vr19f6enp+vXXX7VkyRIdPnxYZcqUuWkcjz76qPz9/dWkSRP5+flp7969+uijj9ShQwd5enrelc8DAHB3NGzYUC4uLoqPj1dYWJicnf/311h3d3fVrl1b8fHxKlmypGrWrGk5VpRz8uOPP67Zs2erf//+euyxx7Ry5cpc/8rqlVde0Weffabw8HANHz5cPj4+mjdvnhITE/XFF1/IyenvZ3EGDx6sjz76SE899ZReeOEFlStXTgsXLrScJzefUePGjVWqVClFRERo+PDhMplMWrBgwR0vg3OjCxcuqHz58nriiSdUu3ZteXh46IcfftC2bdv07rvv3tVzAQBw9epVffrpp5L+Xl7u8OHDmjFjhrKysjRu3Libju3cubM6d+5cEGECyCWK6EA+cHJy0vLly/X+++9r/vz5WrZsmdzd3XX//ffrhRdeyLZe9z8FBgZq3bp1Gj58uN5++22VLVtWQ4YMUYkSJTR8+PDbWmLE399fM2bMUFRUlAYMGKBr165p3bp1+XLDnlszZsxQ/fr1NXPmTL366qtydnZWcHCw+vTpY/UT/bFjx+rIkSOaPHmyLly4oObNm6tly5Zyd3fX+vXr9fbbb2vx4sWaP3++vLy89MADD2jChAmWl4ndzODBg7Vw4UK99957SktLU/ny5TV8+HCNGTMmPy8dAHAbXF1dVb9+fcXHx6tx48bZjjdp0kQ7duxQaGiopcArkZP79euns2fP6sUXX1T37t21bNmyXI3z8/PT5s2bNXr0aH344YfKyMhQrVq19PXXX6tDhw6Wfh4eHlq7dq2GDRumDz74QB4eHnrmmWfUuHFjdevWLVefUenSpbVixQr961//0pgxY1SqVCn16dNHrVq1Utu2bW/72m/k7u6u559/Xt9//72WLl2qrKwsVa5cWR9//LGee+65u3YeAAAkKTMz0+pJci8vLz300ENasGCBWrVqZcfIANwOk3G3H/EAkC9GjBihmTNnKi0tzeaLswAAQP4jJ9/alClTNHLkSP3555+677777B0OAAAAcEcoogOF0KVLl6xeuHnmzBk98MADqlevnlav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7969eZr74MGDunLlipo0aWJpK168uBo2bGiZa//+/XrooYesxuV0zS4uLlaxStLJkyc1cOBAValSRd7e3vLy8lJaWpqOHj1q8xr9/Pwk/Z3n/9mWkZGh1NRUSdKoUaP0f//3f2rdurXeeeedW74gFgAAe/hnjeCnn35S27ZtFR4eriNHjlj1y839NQD7cLZ3AMC9qESJEqpcubJV259//mn5c1pamgYPHqzhw4dnGxsUFHRH5/7nT5ivv/zsdl7odeNPoU0mU47zlC5dWh07dtSAAQOUkZGh8PDwbD/NTktLU/369bVw4cJs48uWLWszhtyOK1GihNUxT09P7dy5U3Fxcfr+++81duxYjR8/Xtu2bctxrVoAwL2ncuXKKl++vNatW6dz586pefPmkqSAgAAFBgZq8+bNWrdunVq2bKm0tDRJ0jfffKP77rvPah6z2XxHceQ2n+Z1rpxyfLFixbR8+XJ17drVspxNSEjIbZ3rTri5uWV7AWtERITOnDmjDz74QBUqVJDZbFZoaGi2F4LndI03u+7x48erV69e+uabb/Tdd99p3LhxWrRokR5//PF8uTYAAG7HjTWCOXPmyNvbW7Nnz9abb75pac/N/TUA++BJdMAO6tWrpz179qhy5crZtn8+UX1d1apVlZSUpJMnT1rabnzRV264uLjo2rVrdxR7Tvr376+4uDg988wzKlasWLbj9erV0x9//CFfX99s1+vt7W0zttyMs8XZ2VmtW7fW5MmTtWvXLh0+fFhr1669excNACj0WrRoobi4OMXFxSksLMzS3qxZM3333Xf66aef1KJFC6sXYN6Yb2ytUV61atVsubgw5Gaz2aylS5fqoYceUosWLbRnz55cjatUqZJcXFy0adMmS9uVK1e0bds2Va9eXdLf13zjSztze82bNm3S8OHD1b59e9WoUUNms1mnT5/O5VXd3AMPPKCRI0fq+++/V9euXRUdHX1X5gUAIL+YTCY5OTlZvUT0ulvdXwOwD4rogB2MHj1amzdv1tChQ5WQkKA//vhDX375pc0Xi7Zp00aVKlVSRESEdu3apU2bNmnMmDGSlO1Jr5sJDg5WWlqa1qxZo9OnT9+1JU7atWunv/76SxMnTszxeO/evVWmTBl17txZP/74oxITExUXF6fhw4dbntAPDg7Wrl27tH//fp0+fVpXrlzJ1bicrFixQlOnTlVCQoKOHDmi+fPnKysrS1WrVr0r1wsAcAwtWrTQxo0blZCQYHkSXZKaN2+umTNn6vLly2rRooU8PT314osvauTIkZo3b54OHjyonTt36sMPP9S8efNynHvYsGH69ttv9d577+mPP/7QzJkz9d133+UpL0t/57+tW7fq8OHDOn369G0/pf5PZrNZX3zxhRo1aqQWLVpo9+7dtxxTokQJPffcc3rppZe0cuVK7dmzRwMHDtTFixc1YMAASdLgwYO1b98+jR49Wr///rs+//xzxcTESLr130eqVKmiBQsWaO/evdq6dat69+4tNze3O7rOS5cuaejQoYqLi9ORI0e0adMmbdu2zS5P3wMAcDOZmZlKTk5WcnKy9u7dq2HDhiktLU2dOnXK1vdW99cA7IMiOmAHtWrV0vr16/X777/rkUceUd26dTV27FgFBATk2P/6z7PT0tL00EMP6f/+7//02muvSZJcXV1zfd7GjRvr2Wef1ZNPPqmyZctq8uTJd+V6TCaTypQpk+NT9JLk7u6uDRs2KCgoSF27dlVISIjl52leXl6SpIEDB6pq1apq0KCBypYtq02bNuVqXE5KliyppUuXqmXLlgoJCdGMGTP02WefqUaNGnflegEAjqFFixa6dOmSKleubFlfW/q7iH7hwgVVrVrVsrb4G2+8oddff11RUVEKCQlRu3bt9M0336hixYo5zt2kSRPNmDFD7/2/9u7WJdY0DgPwvQgWLeIHTBFUNBgUBkRQi6DBLNjGpFURBTEKCuLHCYbRYjArGh2zTNFqEJykWQ3+AW7ahWUZ5OxZdzh7rqs/L/ebnve54f09375leHg4lUolKysr37UvJ8na2lqampoyODiYzs7Ov80I/6eam5tzfn6esbGxTE5O5v7+/tM1Ozs7mZ2dTalUSrFYTK1Wy/X1ddra2pIkPT09OT8/z8XFRYaGhnJ0dPTn98hnY29OTk7y9vaWYrGYUqmUpaWldHV1/dA7NjU15eXlJfPz8xkYGMjc3FxmZmayubn5Q88FgH9bpVJJoVBIoVDI6Oho7u7ucnZ29pc/5f7w2fkaaIzfPj4+PhodAvh+1Wo1ExMTqdVq6evra3QcAPjlLS4u5uHhITc3N42O8p/Z3t7O8fFxnp+fGx0FAAC+jItF4SdxeXmZ1tbW9Pf3p1arZXl5OePj4wp0AGiQ/f39TE9Pp6WlJVdXVzk9PU25XG50rC9VLpczMjKS9vb2VKvV7O3t1R1HBwAA/xdKdPhJvL+/Z319PU9PT+no6MjU1FQODg4aHQsAflm3t7fZ3d3N+/t7ent7c3h4mIWFhUbH+lKPj4/Z2trK6+truru7s7q6mo2NjUbHAgCAL2WcCwAAAAAA1OFiUQAAAAAAqEOJDgAAAAAAdSjRAQAAAACgDiU6AAAAAADUoUQHAAAAAIA6lOgAAAAAAFCHEh0AAAAAAOpQogMAAAAAQB1KdAAAAAAAqON302nrvRc+MMgAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 1500x1000 with 6 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"visualize_outliers(df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Нормализация числовых признаков"
]
},
{
"cell_type": "code",
"execution_count": 262,
"metadata": {},
"outputs": [],
"source": [
"from sklearn import preprocessing"
]
},
{
"cell_type": "code",
"execution_count": 263,
"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>count</th>\n",
" <th>mean</th>\n",
" <th>std</th>\n",
" <th>min</th>\n",
" <th>25%</th>\n",
" <th>50%</th>\n",
" <th>75%</th>\n",
" <th>max</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>PhysicalHealthDaysNorm</th>\n",
" <td>246022.0</td>\n",
" <td>0.253306</td>\n",
" <td>0.385378</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.400000</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MentalHealthDaysNorm</th>\n",
" <td>246022.0</td>\n",
" <td>0.244973</td>\n",
" <td>0.378598</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.400000</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>SleepHoursNorm</th>\n",
" <td>246022.0</td>\n",
" <td>0.501124</td>\n",
" <td>0.165569</td>\n",
" <td>0.0</td>\n",
" <td>0.375000</td>\n",
" <td>0.500000</td>\n",
" <td>0.625000</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>HeightInMetersNorm</th>\n",
" <td>246022.0</td>\n",
" <td>0.500401</td>\n",
" <td>0.176240</td>\n",
" <td>0.0</td>\n",
" <td>0.375000</td>\n",
" <td>0.491667</td>\n",
" <td>0.625000</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>WeightInKilogramsNorm</th>\n",
" <td>246022.0</td>\n",
" <td>0.510963</td>\n",
" <td>0.186742</td>\n",
" <td>0.0</td>\n",
" <td>0.369818</td>\n",
" <td>0.495901</td>\n",
" <td>0.621891</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BMINorm</th>\n",
" <td>246022.0</td>\n",
" <td>0.513599</td>\n",
" <td>0.194556</td>\n",
" <td>0.0</td>\n",
" <td>0.375000</td>\n",
" <td>0.479659</td>\n",
" <td>0.625000</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" count mean std min 25% 50% \\\n",
"PhysicalHealthDaysNorm 246022.0 0.253306 0.385378 0.0 0.000000 0.000000 \n",
"MentalHealthDaysNorm 246022.0 0.244973 0.378598 0.0 0.000000 0.000000 \n",
"SleepHoursNorm 246022.0 0.501124 0.165569 0.0 0.375000 0.500000 \n",
"HeightInMetersNorm 246022.0 0.500401 0.176240 0.0 0.375000 0.491667 \n",
"WeightInKilogramsNorm 246022.0 0.510963 0.186742 0.0 0.369818 0.495901 \n",
"BMINorm 246022.0 0.513599 0.194556 0.0 0.375000 0.479659 \n",
"\n",
" 75% max \n",
"PhysicalHealthDaysNorm 0.400000 1.0 \n",
"MentalHealthDaysNorm 0.400000 1.0 \n",
"SleepHoursNorm 0.625000 1.0 \n",
"HeightInMetersNorm 0.625000 1.0 \n",
"WeightInKilogramsNorm 0.621891 1.0 \n",
"BMINorm 0.625000 1.0 "
]
},
"execution_count": 263,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"min_max_scaler = preprocessing.MinMaxScaler()\n",
"\n",
"df_norm = df.copy()\n",
"\n",
"numeric_columns = get_numeric_columns(df)\n",
"\n",
"for column in numeric_columns:\n",
" norm_column = column + \"Norm\"\n",
" df_norm[norm_column] = min_max_scaler.fit_transform(\n",
" df_norm[column].to_numpy().reshape(-1, 1)\n",
" ).reshape(df_norm[column].shape)\n",
"\n",
"df_norm = df_norm.drop(columns=numeric_columns)\n",
"\n",
"\n",
"df_norm.describe().transpose()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Конструирование признаков"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Автоматическое конструирование признаков с помощью фреймворка FeatureTools"
]
},
{
"cell_type": "code",
"execution_count": 264,
"metadata": {},
"outputs": [],
"source": [
"import featuretools as ft"
]
},
{
"cell_type": "code",
"execution_count": 266,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.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",
"d:\\code\\AIM-PIbd-31-Potapov-N-S\\lab_3\\.venv\\Lib\\site-packages\\featuretools\\synthesis\\deep_feature_synthesis.py:169: UserWarning: Only one dataframe in entityset, changing max_depth to 1 since deeper features cannot be created\n",
" warnings.warn(\n"
]
}
],
"source": [
"# Преобразуем датасет с помощью фремйворка\n",
"# https://featuretools.alteryx.com/en/stable/getting_started/afe.html\n",
"\n",
"entity_set = ft.EntitySet().add_dataframe(df_norm, \"df\", make_index=True, index=\"id\")\n",
"\n",
"feature_matrix, feature_defs = ft.dfs(\n",
" entityset=entity_set,\n",
" target_dataframe_name=\"df\",\n",
" max_depth=2\n",
")\n",
"\n",
"feature_matrix: DataFrame\n",
"feature_defs: list[ft.Feature]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Выполняем категориальное и унитарное кодирование признаков с помощью FeatureTools"
]
},
{
"cell_type": "code",
"execution_count": 267,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Было признаков: 40\n",
"Стало признаков: 99\n",
"<Feature: State = Washington>\n",
"<Feature: State = Maryland>\n",
"<Feature: State = Minnesota>\n",
"<Feature: State = Ohio>\n",
"<Feature: State = New York>\n",
"<Feature: State = Texas>\n",
"<Feature: State = Florida>\n",
"<Feature: State = Kansas>\n",
"<Feature: State = Wisconsin>\n",
"<Feature: State = Maine>\n",
"<Feature: State is unknown>\n",
"<Feature: Sex = Female>\n",
"<Feature: Sex = Male>\n",
"<Feature: Sex is unknown>\n",
"<Feature: GeneralHealth = Very good>\n",
"<Feature: GeneralHealth = Good>\n",
"<Feature: GeneralHealth = Excellent>\n",
"<Feature: GeneralHealth = Fair>\n",
"<Feature: GeneralHealth = Poor>\n",
"<Feature: GeneralHealth is unknown>\n",
"<Feature: LastCheckupTime = Within past year (anytime less than 12 months ago)>\n",
"<Feature: LastCheckupTime = Within past 2 years (1 year but less than 2 years ago)>\n",
"<Feature: LastCheckupTime = Within past 5 years (2 years but less than 5 years ago)>\n",
"<Feature: LastCheckupTime = 5 or more years ago>\n",
"<Feature: LastCheckupTime is unknown>\n",
"<Feature: PhysicalActivities>\n",
"<Feature: RemovedTeeth = None of them>\n",
"<Feature: RemovedTeeth = 1 to 5>\n",
"<Feature: RemovedTeeth = 6 or more, but not all>\n",
"<Feature: RemovedTeeth = All>\n",
"<Feature: RemovedTeeth is unknown>\n",
"<Feature: HadHeartAttack>\n",
"<Feature: HadAngina>\n",
"<Feature: HadStroke>\n",
"<Feature: HadAsthma>\n",
"<Feature: HadSkinCancer>\n",
"<Feature: HadCOPD>\n",
"<Feature: HadDepressiveDisorder>\n",
"<Feature: HadKidneyDisease>\n",
"<Feature: HadArthritis>\n",
"<Feature: HadDiabetes = No>\n",
"<Feature: HadDiabetes = Yes>\n",
"<Feature: HadDiabetes = No, pre-diabetes or borderline diabetes>\n",
"<Feature: HadDiabetes = Yes, but only during pregnancy (female)>\n",
"<Feature: HadDiabetes is unknown>\n",
"<Feature: DeafOrHardOfHearing>\n",
"<Feature: BlindOrVisionDifficulty>\n",
"<Feature: DifficultyConcentrating>\n",
"<Feature: DifficultyWalking>\n",
"<Feature: DifficultyDressingBathing>\n",
"<Feature: DifficultyErrands>\n",
"<Feature: SmokerStatus = Never smoked>\n",
"<Feature: SmokerStatus = Former smoker>\n",
"<Feature: SmokerStatus = Current smoker - now smokes every day>\n",
"<Feature: SmokerStatus = Current smoker - now smokes some days>\n",
"<Feature: SmokerStatus is unknown>\n",
"<Feature: ECigaretteUsage = Never used e-cigarettes in my entire life>\n",
"<Feature: ECigaretteUsage = Not at all (right now)>\n",
"<Feature: ECigaretteUsage = Use them some days>\n",
"<Feature: ECigaretteUsage = Use them every day>\n",
"<Feature: ECigaretteUsage is unknown>\n",
"<Feature: ChestScan>\n",
"<Feature: RaceEthnicityCategory = White only, Non-Hispanic>\n",
"<Feature: RaceEthnicityCategory = Hispanic>\n",
"<Feature: RaceEthnicityCategory = Black only, Non-Hispanic>\n",
"<Feature: RaceEthnicityCategory = Other race only, Non-Hispanic>\n",
"<Feature: RaceEthnicityCategory = Multiracial, Non-Hispanic>\n",
"<Feature: RaceEthnicityCategory is unknown>\n",
"<Feature: AgeCategory = Age 65 to 69>\n",
"<Feature: AgeCategory = Age 60 to 64>\n",
"<Feature: AgeCategory = Age 70 to 74>\n",
"<Feature: AgeCategory = Age 55 to 59>\n",
"<Feature: AgeCategory = Age 50 to 54>\n",
"<Feature: AgeCategory = Age 75 to 79>\n",
"<Feature: AgeCategory = Age 80 or older>\n",
"<Feature: AgeCategory = Age 40 to 44>\n",
"<Feature: AgeCategory = Age 45 to 49>\n",
"<Feature: AgeCategory = Age 35 to 39>\n",
"<Feature: AgeCategory is unknown>\n",
"<Feature: AlcoholDrinkers>\n",
"<Feature: HIVTesting>\n",
"<Feature: FluVaxLast12>\n",
"<Feature: PneumoVaxEver>\n",
"<Feature: TetanusLast10Tdap = No, did not receive any tetanus shot in the past 10 years>\n",
"<Feature: TetanusLast10Tdap = Yes, received tetanus shot but not sure what type>\n",
"<Feature: TetanusLast10Tdap = Yes, received Tdap>\n",
"<Feature: TetanusLast10Tdap = Yes, received tetanus shot, but not Tdap>\n",
"<Feature: TetanusLast10Tdap is unknown>\n",
"<Feature: HighRiskLastYear>\n",
"<Feature: CovidPos = No>\n",
"<Feature: CovidPos = Yes>\n",
"<Feature: CovidPos = Tested positive using home test without a health professional>\n",
"<Feature: CovidPos is unknown>\n",
"<Feature: PhysicalHealthDaysNorm>\n",
"<Feature: MentalHealthDaysNorm>\n",
"<Feature: SleepHoursNorm>\n",
"<Feature: HeightInMetersNorm>\n",
"<Feature: WeightInKilogramsNorm>\n",
"<Feature: BMINorm>\n"
]
}
],
"source": [
"# Сгенерируем новые признаки\n",
"# https://featuretools.alteryx.com/en/stable/guides/tuning_dfs.html\n",
"\n",
"feature_matrix_enc, features_enc = ft.encode_features(feature_matrix, feature_defs)\n",
"feature_matrix_enc.to_csv(\"./csv/generated_features.csv\", index=False)\n",
"\n",
"print(\"Было признаков:\", len(feature_defs))\n",
"print(\"Стало признаков:\", len(features_enc))\n",
"print(*features_enc, sep='\\n')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Разобьем данные на выборки"
]
},
{
"cell_type": "code",
"execution_count": 277,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split"
]
},
{
"cell_type": "code",
"execution_count": 316,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Размеры выборок:\n",
"Обучающая выборка: (196817, 98)\n",
"Тестовая выборка: (24602, 98)\n",
"Контрольная выборка: (24603, 98)\n"
]
}
],
"source": [
"prepared_dataset = feature_matrix_enc\n",
"\n",
"target_column = \"HadHeartAttack\"\n",
"\n",
"X = prepared_dataset.drop(columns=[target_column]) \n",
"Y = prepared_dataset[target_column] \n",
"\n",
"# Обучающая выборка\n",
"X_train, X_temp, Y_train, Y_temp = train_test_split(X, Y, test_size=0.2, random_state=None, stratify=y)\n",
"\n",
"# Тестовая и контрольная выборки\n",
"X_test, X_control, Y_test, Y_control = train_test_split(X_temp, Y_temp, test_size=0.5, random_state=None, stratify=Y_temp)\n",
"\n",
"print(\"Размеры выборок:\")\n",
"print(f\"Обучающая выборка: {X_train.shape}\")\n",
"print(f\"Тестовая выборка: {X_test.shape}\")\n",
"print(f\"Контрольная выборка: {X_control.shape}\")"
]
},
{
"cell_type": "code",
"execution_count": 397,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"HadHeartAttack\n",
"False 232587\n",
"True 13435\n",
"Name: count, dtype: int64\n"
]
},
{
"data": {
"image/png": "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zz/LYrFkexTkxjk3bdqkhg0b2p32yknJkiUdXtOtLiYfM2aMatWqpS5duuS4/QMHDqh58+Z5PiWbderVz89Pa9eu1YgRI9SmTRuHQJib/bFy5Uq5urrq66+/tjtNuHjxYoe+rVarfv755xyDc9bfg0OHDikkJCTbmnLlykmSjh07ZjvlmeXYsWO25VlcXV3t9v+TTz6p4sWLa+7cuXrnnXdyfF2AGbimCrgPOTs7yzAMu7Hly5c7fAS9Y8eOOn/+vObOneswx83r34kPP/xQly9ftj1fsWKFTp8+rdatW0uSQkNDVb58ef373/9Wamqqw/rnzp1z6N3Z2Tnb2xXcqEOHDnJ2dtbEiRMd+jcMQxcuXLA9v379ulauXKl69erd8tTQM888o8zMTE2ePNlh2fXr122nzPJi165dWrt2rd58880cA9Mzzzyj33//Xf/5z38cll25ckVpaWm33U7FihXl5+cnSXr77bdltVr14osv2tXkdn84OzvLYrHYnVJOSEhwCI7t27eXk5OTJk2a5HB0NOtn07JlS3l6emrKlCkO151l1dSpU0e+vr5auHCh3anGr776SkeOHLH7tGF2MjIydP369VzdfgK4WxypAu5Dbdu21aRJk9SrVy81aNBAP/30k5YsWaKHH37Yru7555/Xhx9+qOHDh2vPnj1q1KiR0tLStGnTJv3jH//QU089laftFy9eXI8//rh69eqlM2fOaNasWQoJCdELL7wgSXJyctJ7772n1q1bq1q1aurVq5fKlCmj33//XVu2bJGXl5e++OILpaWlad68eZozZ44qVqyorVu32raRFcYOHjyoXbt2KSwsTOXLl9frr7+uMWPGKCEhQe3bt5enp6fi4+O1evVq9evXTy+//LI2bdqksWPH6uDBg/riiy9u+VqaNGmi/v37a8qUKYqNjVXLli1VuHBhxcXFafny5Zo9e7Y6deqUp/30zTffqEWLFrc8Wvfcc8/ps88+04ABA7RlyxY1bNhQmZmZOnr0qD777DN9/fXXtz2CdyN/f39Nnz5dffv21bPPPqs2bdrc0f6IjIzUW2+9pVatWql79+46e/as5s2bp5CQEB08eNBWFxISoldffVWTJ09Wo0aN1KFDB7m4uGjv3r0KCAjQlClT5OXlpZkzZ6pv376qW7euunfvrmLFiunAgQP6448/9MEHH6hw4cKa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5557TtOmTVNiYqJee+01DRo0yHaUaMCAAZo7d65Gjhyp3r17a/Pmzfrss8+0fv3/fWJu+PDhioqKUp06dVSvXj3NmjVLaWlp6tWrl62n2/UCAAAeXPkaqhYsWCBJatq0qd344sWL1bNnT0nSzJkz5eTkpI4dOyo9PV0RERGaP3++rdbZ2Vnr1q3TwIEDFRYWJnd3d0VFRWnSpEm2muDgYK1fv14vvfSSZs+erbJly+q9995TRESEraZLly46d+6cxo0bp8TERNWqVUsbNmywu3j9dr0AAIAH1z11n6r7HfepAvIP96kCkFcF8j5VAAAABRWhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAEyQr6Fq27ZtateunQICAmSxWLRmzRq75T179pTFYrF7tGrVyq7m4sWL6tGjh7y8vOTj46M+ffooNTXVrubgwYNq1KiRXF1dFRgYqGnTpjn0snz5clWuXFmurq6qUaOGvvzyS7vlhmFo3LhxKl26tNzc3BQeHq64uDhzdgQAACjw8jVUpaWlqWbNmpo3b16ONa1atdLp06dtj2XLltkt79Gjhw4fPqyNGzdq3bp12rZtm/r162dbnpKSopYtW6pcuXLat2+fpk+frgkTJujdd9+11Xz33Xfq1q2b+vTpo/3796t9+/Zq3769Dh06ZKuZNm2a5syZo4ULF2r37t1yd3dXRESErl69auIe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fE1Vdrp27apq1aqZOSUAAECBcFehat++fTpy5IgkqWrVqnr00Uf16KOPmtIYAABAQZKnC9XPnj2rJ554QnXr1tXQoUM1dOhQ1alTR82bN9e5c+dyPc+2bdvUrl07BQQEyGKxaM2aNXbLDcPQuHHjVLp0abm5uSk8PFxxcXF2NRcvXlSPHj3k5eUlHx8f9enTR6mpqXY1Bw8eVKNGjeTq6qrAwEBNmzbNoZfly5ercuXKcnV1VY0aNfTll1/ecS8AAODBladQNWTIEF2+fFmHDx/WxYsXdfHiRR06dEgpKSkaOnRorudJS0tTzZo1NW/evGyXT5s2TXPmzNHChQu1e/duubu7KyIiQlevXrXV9OjRQ4cPH9bGjRu1bt06bdu2Tf369bMtT0lJUcuWLVWuXDnt27dP06dP14QJE/Tuu+/aar777jt169ZNffr00f79+9W+fXu1b99ehw4duqNeAADAg8tiGIZxpyt5e3tr06ZNqlu3rt34nj171LJlSyUlJd15IxaLVq9erfbt20v688hQQECARowYoZdfflmSlJycLD8/P0VHR6tr1646cuSIqlatqr1796pOnTqSpA0bNqhNmzb67bffFBAQoAULFujVV19VYmKi7V5ao0eP1po1a3T06FFJUpcuXZSWlqZ169bZ+nnsscdUq1YtLVy4MFe95EZKSoq8vb2VnJxs+vcjBo1eb+p8wP0m4c3I/G4BQAGV29/feTpSZbVaVbhwYYfxwoULy2q15mVKB/Hx8UpMTFR4eLhtzNvbW/Xr19euXbskSbt27ZKPj48tUElSeHi4nJyctHv3bltN48aN7W5OGhERoWPHjunSpUu2mhu3k1WTtZ3c9JKd9PR0paSk2D0AAMD9KU+h6oknntCLL76oU6dO2cZ+//13vfTSS2revLkpjSUmJkqS/Pz87Mb9/PxsyxITEx2+KqdQoUIqXry4XU12c9y4jZxqblx+u16yM2XKFHl7e9segYGBt3nVAACgoMpTqJo7d65SUlIUFBSk8uXLq3z58goODlZKSorefvtts3sssMaMGaPk5GTb4+TJk/ndEgAA+Ivc0S0VLl++LE9PTwUGBurHH3/Upk2bbNclValSReHh4dq7d6/Kli171435+/tLks6cOaPSpUvbxs+cOaNatWrZas6ePWu33vXr13Xx4kXb+v7+/jpz5oxdTdbz29XcuPx2vWTHxcVFLi4uuXq9AACgYLujI1UtW7a03a7AYrGoRYsWGjJkiIYMGaKmTZtq7NixatiwoSmNBQcHy9/fXzExMbaxlJQU7d69W2FhYZKksLAwJSUlad++fbaazZs3y2q1qn79+raabdu26dq1a7aajRs3qlKlSipWrJit5sbtZNVkbSc3vQAAgAfbHYWqy5cvKzw83OGC60OHDqlu3bpatGiRw72mbiU1NVWxsbGKjY2V9OcF4bGxsTpx4oQsFouGDRum119/XZ9//rl++uknPf/88woICLB9QrBKlSpq1aqVXnjhBe3Zs0c7d+7U4MGD1bVrVwUEBEiSunfvriJFiqhPnz46fPiwPv30U82ePVvDhw+39fHiiy9qw4YNmjFjho4ePaoJEybohx9+0ODBgyUpV70AAIAH2x2Fqi1btigtLU0tWrRQSkqKDMPQ1KlTVadOHVWpUkWHDh1SmzZtcj3fDz/8oNq1a6t27dqSpOHDh6t27doaN26cJGnkyJEaMmSI+vXrp7p16yo1NVUbNmyQq6urbY4lS5aocuXKat68udq0aaPHH3/c7h5U3t7e+uabbxQfH6/Q0FCNGDFC48aNs7uXVYMGDbR06VK9++67qlmzplasWKE1a9aoevXqtprc9AIAAB5cd3yfqnPnzik8PFyFCxeWi4uL4uLiNH/+fHXq1Omv6vG+wX2qgPzDfaoA5FVuf3/f8Xf/lSpVSjExMQoPD9ehQ4cUGxurypUr31WzAAAABV2ebqlQsmRJbd68WVWrVlX37t1tN9EEAAB4UN3RkaoOHTrYPffy8tK2bdtUr1491ahRwza+atUqc7oDAAAoIO4oVHl7ezs8Dw4ONrUhAACAguiOQtXixYv/qj4AAAAKtDxdUwUAAAB7hCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADDBPR2qJkyYIIvFYveoXLmybfnVq1c1aNAglShRQh4eHurYsaPOnDljN8eJEycUGRmpokWLytfXV6+88oquX79uV7N161Y9+uijcnFxUUhIiKKjox16mTdvnoKCguTq6qr69etrz549f8lrBgAABdM9HaokqVq1ajp9+rTtsWPHDtuyl156SV988YWWL1+ub7/9VqdOnVKHDh1syzMzMxUZGamMjAx99913+uCDDxQdHa1x48bZauLj4xUZGalmzZopNjZWw4YNU9++ffX111/baj799FMNHz5c48eP148//qiaNWsqIiJCZ8+e/Xt2AgAAuOdZDMMw8ruJnEyYMEFr1qxRbGysw7Lk5GSVKlVKS5cuVadOnSRJR48eVZUqVbRr1y499thj+uqrr9S2bVudOnVKfn5+kqSFCxdq1KhROnfunIoUKaJRo0Zp/fr1OnTokG3url27KikpSRs2bJAk1a9fX3Xr1tXcuXMlSVarVYGBgRoyZIhGjx6d69eTkpIib29vJScny8vLK6+7JVtBo9ebOh9wv0l4MzK/WwBQQOX29/c9f6QqLi5OAQEBevjhh9WjRw+dOHFCkrRv3z5du3ZN4eHhttrKlSvroYce0q5duyRJu3btUo0aNWyBSpIiIiKUkpKiw4cP22punCOrJmuOjIwM7du3z67GyclJ4eHhtpqcpKenKyUlxe4BAADuT/d0qKpfv76io6O1YcMGLViwQPHx8WrUqJEuX76sxMREFSlSRD4+Pnbr+Pn5KTExUZKUmJhoF6iylmctu1VNSkqKrly5ovPnzyszMzPbmqw5cjJlyhR5e3vbHoGBgXe8DwAAQMFQKL8buJXWrVvb/vzII4+ofv36KleunD777DO5ubnlY2e5M2bMGA0fPtz2PCUlhWAFAMB96p4+UnUzHx8fVaxYUb/88ov8/f2VkZGhpKQku5ozZ87I399fkuTv7+/wacCs57er8fLykpubm0qWLClnZ+dsa7LmyImLi4u8vLzsHgAA4P5UoEJVamqqjh8/rtKlSys0NFSFCxdWTEyMbfmxY8d04sQJhYWFSZLCwsL0008/2X1Kb+PGjfLy8lLVqlVtNTfOkVWTNUeRIkUUGhpqV2O1WhUTE2OrAQAAuKdD1csvv6xvv/1WCQkJ+u677/T000/L2dlZ3bp1k7e3t/r06aPhw4dry5Yt2rdvn3r16qWwsDA99thjkqSWLVuqatWqeu6553TgwAF9/fXXeu211zRo0CC5uLhIkgYMGKD//e9/GjlypI4ePar58+frs88+00svvWTrY/jw4frPf/6jDz74QEeOHNHAgQOVlpamXr165ct+AQAA9557+pqq3377Td26ddOFCxdUqlQpPf744/r+++9VqlQpSdLMmTPl5OSkjh07Kj09XREREZo/f75tfWdnZ61bt04DBw5UWFiY3N3dFRUVpUmTJtlqgoODtX79er300kuaPXu2ypYtq/fee08RERG2mi5duujcuXMaN26cEhMTVatWLW3YsMHh4nUAAPDguqfvU3W/4T5VQP7hPlUA8uq+uU8VAABAQUCoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExTK7wYAALkXNHp9frcA3LMS3ozM1+1zpAoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKi6Q/PmzVNQUJBcXV1Vv3597dmzJ79bAgAA9wBC1R349NNPNXz4cI0fP14//vijatasqYiICJ09eza/WwMAAPmMUHUH3nrr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UFCQONF07+H0HwAAgAm4TxUAAIAJCFUAAAAmIFQBAACYgFAFAABgAkIVAACACQhVAB5YPXv2dPhetnPnzql69eqqX7++kpOT86cxAAUSoQoA/r9z587piSeekJubm7755ht5e3vnd0sAChBCFQBIOn/+vJo3by4XFxdt3LjRLlD17NlTFovF7nHj1wu99dZbqlGjhtzd3RUYGKh//OMfSk1NtZt/586datq0qYoWLapixYopIiJCly5dkvTnV45MmzZNISEhcnFx0UMPPeTwJeEA7n2EKgAPvAsXLig8PFyFChXSxo0b5ePjY7fcMAy1atVKp0+f1unTpxUWFma33MnJSXPmzNHhw4f1wQcfaPPmzRo5cqRteWxsrJo3b66qVatq165d2rFjh9q1a6fMzExJ0pgxY/Tmm29q7Nix+vnnn7V06VK+MggogLijOoAHVs+ePRUfH6+UlBQdPnxYoaGh2rFjh5ydne3qunfvrmvXrmn58uWSpKZNm6pWrVqaNWtWtvOuWLFCAwYM0Pnz523rnzhxQjt27HCovXz5skqVKqW5c+eqb9++5r5AAH8rjlQBeKBt27ZNVqtVsbGx+uWXXzRt2jSHmpSUFLm7u+c4x6ZNm9S8eXOVKVNGnp6eeu6553ThwgX98ccfkv7vSFV2jhw5ovT09ByXAyg4CFUAHmgPP/ywYmJiVLVqVc2fP18TJkzQwYMH7WpOnTqlgICAbNdPSEhQ27Zt9cgjj2jlypXat2+f5s2bJ0nKyMiQJLm5ueW4/VstA1CwEKoAPNBq1KihkiVLSpI6d+6sDh066Pnnn7cForS0NB05ckS1a9fOdv19+/bJarVqxowZeuyxx1SxYkWdOnXKruaRRx5RTExMtutXqFBBbm5uOS4HUHAQqgDgBvPmzdPZs2c1ceJEHT16VN26dZOPj49at26dbX1ISIiuXbumt99+W//73//00UcfaeHChXY1Y8aM0d69e/WPf/xDBw8e1NGjR7VgwQKdP39erq6uGjVqlEaOHKkPP/xQx48f1/fff6/333//73i5AExEqAKAGxQvXlz/+c9/NHXqVA0cOFDXr1/Xpk2b5OHhkW19zZo19dZbb2nq1KmqXr26lixZoilTptjVVKxYUd98840OHDigevXqKSwsTGvXrlWhQoUkSWPHjtWIESM0btw4ValSRV26dNHZs2f/8tcKwFx8+g8AAMAEHKkCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABM8P8A4XCfzsfdjMEAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"# Подсчет количества объектов каждого класса\n",
"class_counts = Y.value_counts()\n",
"print(class_counts)\n",
"\n",
"\n",
"class_counts_dict = class_counts.to_dict()\n",
"\n",
"keys = list(class_counts_dict.keys())\n",
"vals = list(class_counts_dict.values())\n",
"\n",
"keys[keys.index(True)] = \"Был приступ\"\n",
"keys[keys.index(False)] = \"Не было приступа\"\n",
"\n",
"# Визуализация\n",
"plt.bar(keys, vals)\n",
"plt.title(f\"Распределение классов\\n\\\"{target_column}\\\"\")\n",
"plt.xlabel(\"Класс\")\n",
"plt.ylabel(\"Количество\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 325,
"metadata": {},
"outputs": [],
"source": [
"from imblearn.over_sampling import RandomOverSampler\n",
"from imblearn.under_sampling import RandomUnderSampler\n",
"\n",
"def oversample(X: DataFrame, Y: Series, sampling_strategy=0.5) -> tuple[DataFrame, Series]:\n",
" sampler = RandomOverSampler(sampling_strategy=sampling_strategy)\n",
" x_over, y_over = sampler.fit_resample(X, Y)\n",
" return x_over, y_over \n",
"\n",
"def undersample(X: DataFrame, Y: Series, sampling_strategy=1) -> tuple[DataFrame, Series]:\n",
" sampler = RandomUnderSampler(sampling_strategy=sampling_strategy)\n",
" x_over, y_over = sampler.fit_resample(X, Y)\n",
" return x_over, y_over "
]
},
{
"cell_type": "code",
"execution_count": 327,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Данные до аугментации в обучающей выборке\n",
"HadHeartAttack\n",
"False 186069\n",
"True 10748\n",
"Name: count, dtype: int64\n",
"\n",
"Данные после аугментации в обучающей выборке\n",
"HadHeartAttack\n",
"False 10748\n",
"True 10748\n",
"Name: count, dtype: int64\n"
]
}
],
"source": [
"print(\"Данные до аугментации в обучающей выборке\")\n",
"print(Y_train.value_counts())\n",
"\n",
"X_train_samplied, Y_train_samplied = X_train, Y_train\n",
"\n",
"# X_train_samplied, Y_train_samplied = oversample(X_train_samplied, Y_train_samplied)\n",
"X_train_samplied, Y_train_samplied = undersample(X_train_samplied, Y_train_samplied)\n",
"print()\n",
"print(\"Данные после аугментации в обучающей выборке\")\n",
"print(Y_train_samplied.value_counts())"
]
},
{
"cell_type": "code",
"execution_count": 349,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def show_distribution(df: Series, column_name=\"\") -> None:\n",
" plt.pie(\n",
" df.value_counts(),\n",
" labels=class_counts.index,\n",
" autopct='%1.1f%%',\n",
" colors=['lightblue', 'pink'],\n",
" startangle=45,\n",
" explode=(0, 0.05)\n",
" )\n",
" plt.title(\"Распределение классов\" + (f\"\\n\\\"{column_name}\\\"\" if column_name else \"\"))\n",
" plt.show()\n",
"\n",
"show_distribution(Y_train_samplied, column_name=target_column)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Обучение модели"
]
},
{
"cell_type": "code",
"execution_count": 356,
"metadata": {},
"outputs": [],
"source": [
"import time\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.metrics import roc_auc_score, f1_score, confusion_matrix, classification_report\n",
"import seaborn as sns"
]
},
{
"cell_type": "code",
"execution_count": 352,
"metadata": {},
"outputs": [],
"source": [
"model = RandomForestClassifier()\n",
"\n",
"start_time = time.time()\n",
"\n",
"model.fit(X_train, Y_train)\n",
"\n",
"train_time = time.time() - start_time"
]
},
{
"cell_type": "code",
"execution_count": 353,
"metadata": {},
"outputs": [],
"source": [
"Y_pred = model.predict(X_test)\n",
"Y_pred_proba = model.predict_proba(X_test)[:, 1]"
]
},
{
"cell_type": "code",
"execution_count": 360,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Время обучения модели: 51.06 секунд\n",
"ROC-AUC: 0.87\n",
"F1-Score: 0.23\n",
"Матрица ошибок:\n",
"[[23151 108]\n",
" [ 1155 188]]\n",
"Отчет по классификации:\n",
" precision recall f1-score support\n",
"\n",
" False 0.95 1.00 0.97 23259\n",
" True 0.64 0.14 0.23 1343\n",
"\n",
" accuracy 0.95 24602\n",
" macro avg 0.79 0.57 0.60 24602\n",
"weighted avg 0.94 0.95 0.93 24602\n",
"\n"
]
},
{
"data": {
"image/png": "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ex63fPnyjn7nz5/Xd999l6zP7du3NWHCBC1cuFDbtm1TRESEOnTocM9jzpo1SxcuXHBqCw0NVZMmTVSuXDmFhITo119/1fPPP6+EhATNmDHDcf527dqpXbt2jvczZsxQ27ZtlZCQoB9++MFxvIsXL2rNmjXq3r17qq8lOjpa1atX15o1a3To0CH16tVLr776qnbu3Hn/Dx94ALvdrtdee83xZy81Q5R39z9//rwGDx6crM+GDRsUFhamzZs369tvv9WKFSs0bty4ex5zyJAh8vT0dGqbPXu2+vbtq169eungwYP64YcfVKJECUnSrl27nGKePn2643379u3Vs2dPrV27VufPn3ccb/Xq1bp9+7bat2+fpmsBHmcMKWYSq1evlre3t1NbQkKC0/tJkybplVdecfxrtmTJkpo5c6YaNmyo2bNnK3fu3I6+7u7u8vb2VkBAwAPPnTVrVqd+dx8nSVxcnGbNmqVatWpJkhYsWKCyZctq586dqlmzplPfq1ev6v3339fQoUM1atQoR/vkyZNVo0YNffbZZ4628uXLO7729fWVJHl5eUlSstg7deqk+fPnq23btpKkr7/+WkWKFFGjRo1SfS0FCxZ0Sj779++vX375RUuXLk12Hci87v558/PzU9myZTVkyBA9++yzD33MuLg4+fr6Ov78pWaIMnv27E5/Xv/5d4B052d53rx5yp49u8qXL6/33ntPQ4YM0fjx4+Xm5vxv7k2bNmn79u3q2bOnNm3a5Gh///33NXjwYL311luOtqeeekqSnCp7WbJkcboGSapbt65Kly6tr776Su+8844kOX4O7443NdcCPM6ocGUSjRs3VmhoqNNr7ty5Tn3279+v4OBgeXt7O15BQUFKTEzUyZMnDY0va9asjr+gJalMmTLy8/NTWFhYsr7vvfeeGjdurHr16jm1J1W4HtZrr72mdevW6ezZs5LuDHUmDUWmVkJCgsaPH6+KFSsqd+7c8vb21i+//KLTp08/dFx4/Nz987ZixQoVKFBALVu21I4dO5z61a1bVzlz5lThwoXVvn17nTlz5p7HvHHjhnLkyJHusVauXFnZs2d3vK9Tp44iIyOdhvSlOxW2wYMHa8yYMY5/vEh3KsHnzp17pJ+9nj17Oua8XbhwQT///LNTZRlwBVS4MokcOXI4SvxJ/vmXe2RkpF5//XW9+eabyfYvUqSIofGl1vHjxzV37lyFhoYmiz+pcvWwqlatqsqVK2vhwoV69tlndfjwYa1ZsyZNx5gyZYpmzJih6dOnq2LFisqRI4cGDBjgNCcGmd8/f97mzZunFStWaOXKlY4qriQtWbJEZcuWVXh4uN5880317t1bq1evTvGY586dU2BgoOGx38vChQt169Yt9e7dWxMmTHC0P+rPnSR17txZw4YNU0hIiLZv367ixYurfv36j3xc4HFChcuFVKtWTUeOHFGJEiWSvdzd3Q09d3x8vHbv3u14f+zYMUVERKhs2bJO/YYOHaqePXsmSx4lqVKlStqwYcMjxdGzZ08FBwdr/vz5atq0qQoXLpym/bdt26YXX3xR//73v1W5cmU98cQT+v333x8pJjz+3Nzc5ObmlmwYv3DhwipRooTq1aunHj163HMS/YkTJ3Tt2jVVrVo13WPbv3+/oqKiHO9/++03eXt7O/3Zv337tkaMGKEPP/xQ2bJlc9o/Z86cKlas2CP97OXJk0etWrXS/PnzFRwcrG7duj30sYDHFQmXCxk6dKi2b9+ufv36KTQ0VMePH9eqVasck+aNlC1bNvXv3187duzQnj171LVrV9WuXdtp3tMff/yhzZs3a/To0SkeY/jw4dq1a5feeOMNHThwQEePHtXs2bN1+fLlVMfRqVMnnTlzRv/5z38eakijZMmSWr9+vbZv366wsDC9/vrrySb3I/OLiYlReHi4wsPDFRYWpv79+ysyMlItWrRw6hcbG6vo6Gj99ddfWr58uSpUqJDsWLt379arr76qihUrqkaNGukea2xsrHr06KEjR47op59+0pgxY9SvXz+n+VuLFi3Sk08+meJ6ftKdO3g/+ugjzZw5U8ePH9fevXv1ySefpCmOnj17asGCBQoLC1OXLl0e5ZKAxxIJlwupVKmStmzZot9//13169dX1apVNXr0aFOGMbJnz66hQ4eqU6dOevrpp+Xt7a0lS5Y49bl165ZGjBiR4qR7SSpVqpTWrVun/fv3q2bNmqpTp45WrVqlrFlTPzLu6+urNm3ayNvb+56/XO5n5MiRqlatmoKCgtSoUSMFBAQ81HHweFu7dq0KFCigAgUKqFatWvrtt9+0aNEipxswJKlWrVry8vJSlSpV5O3trS+++CLZsQYOHKhChQrpp59+StN8wtRq0qSJSpYsqQYNGqh9+/Z6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x/BUtWrVdOzYsfsOFUVHR2vnzp169dVX79mnUqVK2rBhg9Ow3j+9+uqr6t27t5o3b64KFSro+++/10svvSTpTnJRt25dvfHGG47+J06cSHaM3LlzK3fu3CpTpoyWL1+u7777To0bN071/jly5HC6Vn9//2R93N3dnfqcOXMmWR83NzdHn5IlS+pf//qXQkND1bRp0xSvffz48apfv74aNGiQbOL7vQwbNkwvv/yyihQpogYNGqh169ZO1cpdu3YpZ86cevLJJ1Pcf9u2bXrxxRf173//W9KdeXK///67ypUr54jby8tLGzZsUM+ePZPtX6lSJc2dO1dXr16lygW4OCpcwANky5ZN/fv3144dO7Rnzx517dpVtWvXdiRgo0eP1sKFCzVu3DgdPnxYYWFhWrx4sUaOHCnpTgVs9OjRkqR69eopPDxc4eHhioqKUkxMjK5fvy7pzuTrXbt26Y033tCBAwd09OhRzZ49W5cvX3bEkvRLu2jRopoyZYr69OmjK1euSLrzy3/37t365Zdf9Pvvv2vUqFHatWuX07V89tlnOnz4sE6dOqWvv/5a69evV9WqVVO9f3qLjo5WVFSU9uzZo19//TXFYT/pzo0Lc+bM0eTJk9N0/KTPq2bNmhowYICjYpeYmKgffvhB7777rjp37qwsWbKkuH/JkiW1fv16bd++XWFhYXr99dd14cIFx3ZPT08NHTpU77zzjhYuXKgTJ07ot99+05dffilJ6tixowICAtSqVStt27ZNf/75p7777juFhISk6ToAPP5IuIAHyJ49u4YOHapOnTrp6aeflre3t5YsWeLYHhQUpNWrV2vdunV66qmnVLt2bU2bNk1FixaVJE2dOlVTpkzRzZs3VaJECRUoUEAFChTQ0qVLtXbtWr311luSpFKlSmndunXav3+/atasqTp16mjVqlXKmjXlQvTrr7+uChUqqH///o73rVu3Vvv27VWrVi1duXLFqVolSWvWrFGjRo1UpkwZjRs3Tu+++666d++e6v3T0/Xr1+Xl5aUcOXLoueee00svvaRBgwal2DcuLk7dunVTqVKlHvp848aNU2JiosaOHatr167pjTfeUJcuXfTRRx/dc5+RI0eqWrVqCgoKUqNGjRzJ091GjRqlwYMHa/To0Spbtqzat2+vixcvSrpT6Vu3bp38/f3VokULVaxYUR988ME9EzwAmRcLnwL3ERwcrAEDBjzSyvNJc4dSmkO0cuVKrVy5UsHBwQ99fABAxsccLsBgd9+t90+enp7y9fU1MRoAgBWocAH3kR4VLgAASLgAAAAMxqR5AAAAg5FwAQAAGIyECwAAwGAkXAAAAAYj4QIAADAYCRcAAIDBSLgAAAAMRsIFAABgsP8HK1K4WKz88PEAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 700x700 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Метрики\n",
"roc_auc = roc_auc_score(Y_test, Y_pred_proba)\n",
"f1 = f1_score(Y_test, Y_pred)\n",
"\n",
"conf_matrix = confusion_matrix(Y_test, Y_pred)\n",
"class_report = classification_report(Y_test, Y_pred)\n",
"\n",
"# Вывод результатов\n",
"print(f'Время обучения модели: {train_time:.2f} секунд')\n",
"print(f'ROC-AUC: {roc_auc:.2f}')\n",
"print(f'F1-Score: {f1:.2f}')\n",
"print('Матрица ошибок:')\n",
"print(conf_matrix)\n",
"print('Отчет по классификации:')\n",
"print(class_report)\n",
"\n",
"# Визуализация матрицы ошибок\n",
"plt.figure(figsize=(7, 7))\n",
"sns.heatmap(\n",
" conf_matrix,\n",
" annot=True,\n",
" fmt='d',\n",
" cmap='Blues',\n",
" xticklabels=['Нет приступа', 'Был приступ'],\n",
" yticklabels=['Нет приступа', 'Был приступ']\n",
")\n",
"plt.title('Матрица ошибок')\n",
"plt.xlabel('Предсказанный класс')\n",
"plt.ylabel('Истинный класс')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Ручное конструирование признаков"
]
},
{
"cell_type": "code",
"execution_count": 385,
"metadata": {},
"outputs": [],
"source": [
"df_norm_manual = df_norm.drop(columns=[\"id\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Посмотрим какие значения содержатся в текстовых колонках (с числовыми мы уже поработали - провели нормализацию)"
]
},
{
"cell_type": "code",
"execution_count": 386,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"State ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', ..., 'Wisconsin', 'Wyoming', 'Guam', 'Puerto Rico', 'Virgin Islands']\n",
"Length: 54\n",
"Categories (54, object): ['Alabama', 'Alaska', 'Arizona', 'Arkansas', ..., 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming']\n",
"\n",
"Sex ['Female', 'Male']\n",
"Categories (2, object): ['Female', 'Male']\n",
"\n",
"GeneralHealth ['Very good', 'Fair', 'Good', 'Excellent', 'Poor']\n",
"Categories (5, object): ['Excellent', 'Fair', 'Good', 'Poor', 'Very good']\n",
"\n",
"LastCheckupTime ['Within past year (anytime less than 12 months..., '5 or more years ago', 'Within past 2 years (1 year but less than 2 y..., 'Within past 5 years (2 years but less than 5 ...]\n",
"Categories (4, object): ['5 or more years ago', 'Within past 2 years (1 year but less than 2 y..., 'Within past 5 years (2 years but less than 5 ..., 'Within past year (anytime less than 12 months...]\n",
"\n",
"RemovedTeeth ['None of them', '6 or more, but not all', '1 to 5', 'All']\n",
"Categories (4, object): ['1 to 5', '6 or more, but not all', 'All', 'None of them']\n",
"\n",
"HadDiabetes ['No', 'Yes', 'Yes, but only during pregnancy (female)', 'No, pre-diabetes or borderline diabetes']\n",
"Categories (4, object): ['No', 'No, pre-diabetes or borderline diabetes', 'Yes', 'Yes, but only during pregnancy (female)']\n",
"\n",
"SmokerStatus ['Former smoker', 'Never smoked', 'Current smoker - now smokes every day', 'Current smoker - now smokes some days']\n",
"Categories (4, object): ['Current smoker - now smokes every day', 'Current smoker - now smokes some days', 'Former smoker', 'Never smoked']\n",
"\n",
"ECigaretteUsage ['Never used e-cigarettes in my entire life', 'Use them some days', 'Not at all (right now)', 'Use them every day']\n",
"Categories (4, object): ['Never used e-cigarettes in my entire life', 'Not at all (right now)', 'Use them every day', 'Use them some days']\n",
"\n",
"RaceEthnicityCategory ['White only, Non-Hispanic', 'Black only, Non-Hispanic', 'Other race only, Non-Hispanic', 'Multiracial, Non-Hispanic', 'Hispanic']\n",
"Categories (5, object): ['Black only, Non-Hispanic', 'Hispanic', 'Multiracial, Non-Hispanic', 'Other race only, Non-Hispanic', 'White only, Non-Hispanic']\n",
"\n",
"AgeCategory ['Age 65 to 69', 'Age 70 to 74', 'Age 75 to 79', 'Age 80 or older', 'Age 50 to 54', ..., 'Age 45 to 49', 'Age 35 to 39', 'Age 25 to 29', 'Age 30 to 34', 'Age 18 to 24']\n",
"Length: 13\n",
"Categories (13, object): ['Age 18 to 24', 'Age 25 to 29', 'Age 30 to 34', 'Age 35 to 39', ..., 'Age 65 to 69', 'Age 70 to 74', 'Age 75 to 79', 'Age 80 or older']\n",
"\n",
"TetanusLast10Tdap ['Yes, received Tdap', 'Yes, received tetanus shot but not sure what ..., 'No, did not receive any tetanus shot in the p..., 'Yes, received tetanus shot, but not Tdap']\n",
"Categories (4, object): ['No, did not receive any tetanus shot in the p..., 'Yes, received Tdap', 'Yes, received tetanus shot but not sure what ..., 'Yes, received tetanus shot, but not Tdap']\n",
"\n",
"CovidPos ['No', 'Yes', 'Tested positive using home test without a hea...]\n",
"Categories (3, object): ['No', 'Tested positive using home test without a hea..., 'Yes']\n",
"\n"
]
}
],
"source": [
"for column in get_filtered_columns(df_norm_manual, no_numeric=True):\n",
" series = df_norm_manual[column]\n",
" print(column, series.unique())\n",
" print()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Видно, что в датасете есть колонка с названием штата США с 54 уникальными значениями. Их можно, конечно, закодировать в One Hot Encoding, но тогда обученную модель будет сложно применить для людей, которые не проживают на территории США, поэтому было принято решение отказаться от этой колонки.\n",
"\n",
"Остальные колонки содержат варианты ответов из опроса, поэтому их закодировать будет не трудно."
]
},
{
"cell_type": "code",
"execution_count": 396,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Было колонок: 39\n",
"Стало колонок: 69\n",
"Новых колонок: 30\n",
"\n",
"Удалены колонки\n",
"---------------\n",
"AgeCategory\n",
"CovidPos\n",
"ECigaretteUsage\n",
"GeneralHealth\n",
"HadDiabetes\n",
"LastCheckupTime\n",
"RaceEthnicityCategory\n",
"RemovedTeeth\n",
"Sex\n",
"SmokerStatus\n",
"TetanusLast10Tdap\n",
"\n",
"Новые колонки\n",
"-------------\n",
"AgeCategory_Age 25 to 29\n",
"AgeCategory_Age 30 to 34\n",
"AgeCategory_Age 35 to 39\n",
"AgeCategory_Age 40 to 44\n",
"AgeCategory_Age 45 to 49\n",
"AgeCategory_Age 50 to 54\n",
"AgeCategory_Age 55 to 59\n",
"AgeCategory_Age 60 to 64\n",
"AgeCategory_Age 65 to 69\n",
"AgeCategory_Age 70 to 74\n",
"AgeCategory_Age 75 to 79\n",
"AgeCategory_Age 80 or older\n",
"CovidPos_Tested positive using home test without a health professional\n",
"CovidPos_Yes\n",
"ECigaretteUsage_Not at all (right now)\n",
"ECigaretteUsage_Use them every day\n",
"ECigaretteUsage_Use them some days\n",
"GeneralHealth_Fair\n",
"GeneralHealth_Good\n",
"GeneralHealth_Poor\n",
"GeneralHealth_Very good\n",
"HadDiabetes_No, pre-diabetes or borderline diabetes\n",
"HadDiabetes_Yes\n",
"HadDiabetes_Yes, but only during pregnancy (female)\n",
"LastCheckupTime_Within past 2 years (1 year but less than 2 years ago)\n",
"LastCheckupTime_Within past 5 years (2 years but less than 5 years ago)\n",
"LastCheckupTime_Within past year (anytime less than 12 months ago)\n",
"RaceEthnicityCategory_Hispanic\n",
"RaceEthnicityCategory_Multiracial, Non-Hispanic\n",
"RaceEthnicityCategory_Other race only, Non-Hispanic\n",
"RaceEthnicityCategory_White only, Non-Hispanic\n",
"RemovedTeeth_6 or more, but not all\n",
"RemovedTeeth_All\n",
"RemovedTeeth_None of them\n",
"Sex_Male\n",
"SmokerStatus_Current smoker - now smokes some days\n",
"SmokerStatus_Former smoker\n",
"SmokerStatus_Never smoked\n",
"TetanusLast10Tdap_Yes, received Tdap\n",
"TetanusLast10Tdap_Yes, received tetanus shot but not sure what type\n",
"TetanusLast10Tdap_Yes, received tetanus shot, but not Tdap\n"
]
}
],
"source": [
"if \"State\" in df_norm_manual.columns:\n",
" df_norm_manual = df_norm_manual.drop(columns=[\"State\"])\n",
"\n",
"df_manual_one_hot = df_norm_manual\n",
"\n",
"text_columns = get_filtered_columns(df_norm_manual, no_numeric=True) \n",
"\n",
"for column in text_columns:\n",
" # df_manual_one_hot[column] = pd.Categorical(df_manual_one_hot[column]).codes\n",
" df_manual_one_hot = pd.get_dummies(df_manual_one_hot, columns=[column], drop_first=True)\n",
"\n",
"# df_manual_one_hot = df_manual_one_hot.drop(columns=text_columns)\n",
"\n",
"print(\"Было колонок:\", len(df_norm_manual.columns))\n",
"print(\"Стало колонок:\", len(df_manual_one_hot.columns))\n",
"print(\"Новых колонок:\", len(df_manual_one_hot.columns) - len(df_norm_manual.columns))\n",
"\n",
"print()\n",
"\n",
"print(\"Удалены колонки\")\n",
"print(\"---------------\")\n",
"print(*sorted(text_columns), sep='\\n')\n",
"\n",
"print()\n",
"\n",
"print(\"Новые колонки\")\n",
"print(\"-------------\")\n",
"print(*sorted(list(set(df_manual_one_hot.columns)-set(df_norm_manual))), sep='\\n')\n",
"\n",
"# print(*df_manual_one_hot.columns, sep='\\n')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Разобьем данные на выборки"
]
},
{
"cell_type": "code",
"execution_count": 435,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Размеры выборок:\n",
"Обучающая выборка: (221419, 68)\n",
"Тестовая выборка: (12301, 68)\n",
"Контрольная выборка: (12302, 68)\n"
]
}
],
"source": [
"prepared_dataset = df_manual_one_hot\n",
"\n",
"target_column = \"HadHeartAttack\"\n",
"\n",
"X = prepared_dataset.drop(columns=[target_column])\n",
"Y = prepared_dataset[target_column] \n",
"\n",
"# Обучающая выборка\n",
"X_train, X_temp, Y_train, Y_temp = train_test_split(X, Y, test_size=0.1, random_state=None, stratify=y)\n",
"\n",
"# Тестовая и контрольная выборки\n",
"X_test, X_control, Y_test, Y_control = train_test_split(X_temp, Y_temp, test_size=0.5, random_state=None, stratify=Y_temp)\n",
"\n",
"print(\"Размеры выборок:\")\n",
"print(f\"Обучающая выборка: {X_train.shape}\")\n",
"print(f\"Тестовая выборка: {X_test.shape}\")\n",
"print(f\"Контрольная выборка: {X_control.shape}\")"
]
},
{
"cell_type": "code",
"execution_count": 436,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"HadHeartAttack\n",
"False 232587\n",
"True 13435\n",
"Name: count, dtype: int64\n"
]
},
{
"data": {
"image/png": "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zz/LYrFkexTkxjk3bdqkhg0b2p32yknJkiUdXtOtLiYfM2aMatWqpS5duuS4/QMHDqh58+Z5PiWbderVz89Pa9eu1YgRI9SmTRuHQJib/bFy5Uq5urrq66+/tjtNuHjxYoe+rVarfv755xyDc9bfg0OHDikkJCTbmnLlykmSjh07ZjvlmeXYsWO25VlcXV3t9v+TTz6p4sWLa+7cuXrnnXdyfF2AGbimCrgPOTs7yzAMu7Hly5c7fAS9Y8eOOn/+vObOneswx83r34kPP/xQly9ftj1fsWKFTp8+rdatW0uSQkNDVb58ef373/9Wamqqw/rnzp1z6N3Z2Tnb2xXcqEOHDnJ2dtbEiRMd+jcMQxcuXLA9v379ulauXKl69erd8tTQM888o8zMTE2ePNlh2fXr122nzPJi165dWrt2rd58880cA9Mzzzyj33//Xf/5z38cll25ckVpaWm33U7FihXl5+cnSXr77bdltVr14osv2tXkdn84OzvLYrHYnVJOSEhwCI7t27eXk5OTJk2a5HB0NOtn07JlS3l6emrKlCkO151l1dSpU0e+vr5auHCh3anGr776SkeOHLH7tGF2MjIydP369VzdfgK4WxypAu5Dbdu21aRJk9SrVy81aNBAP/30k5YsWaKHH37Yru7555/Xhx9+qOHDh2vPnj1q1KiR0tLStGnTJv3jH//QU089laftFy9eXI8//rh69eqlM2fOaNasWQoJCdELL7wgSXJyctJ7772n1q1bq1q1aurVq5fKlCmj33//XVu2bJGXl5e++OILpaWlad68eZozZ44qVqyorVu32raRFcYOHjyoXbt2KSwsTOXLl9frr7+uMWPGKCEhQe3bt5enp6fi4+O1evVq9evXTy+//LI2bdqksWPH6uDBg/riiy9u+VqaNGmi/v37a8qUKYqNjVXLli1VuHBhxcXFafny5Zo9e7Y6deqUp/30zTffqEWLFrc8Wvfcc8/ps88+04ABA7RlyxY1bNhQmZmZOnr0qD777DN9/fXXtz2CdyN/f39Nnz5dffv21bPPPqs2bdrc0f6IjIzUW2+9pVatWql79+46e/as5s2bp5CQEB08eNBWFxISoldffVWTJ09Wo0aN1KFDB7m4uGjv3r0KCAjQlClT5OXlpZkzZ6pv376qW7euunfvrmLFiunAgQP6448/9MEHH6hw4cKa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5557TtOmTVNiYqJee+01DRo0yHaUaMCAAZo7d65Gjhyp3r17a/Pmzfrss8+0fv3/fWJu+PDhioqKUp06dVSvXj3NmjVLaWlp6tWrl62n2/UCAAAeXPkaqhYsWCBJatq0qd344sWL1bNnT0nSzJkz5eTkpI4dOyo9PV0RERGaP3++rdbZ2Vnr1q3TwIEDFRYWJnd3d0VFRWnSpEm2muDgYK1fv14vvfSSZs+erbJly+q9995TRESEraZLly46d+6cxo0bp8TERNWqVUsbNmywu3j9dr0AAIAH1z11n6r7HfepAvIP96kCkFcF8j5VAAAABRWhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAEyQr6Fq27ZtateunQICAmSxWLRmzRq75T179pTFYrF7tGrVyq7m4sWL6tGjh7y8vOTj46M+ffooNTXVrubgwYNq1KiRXF1dFRgYqGnTpjn0snz5clWuXFmurq6qUaOGvvzyS7vlhmFo3LhxKl26tNzc3BQeHq64uDhzdgQAACjw8jVUpaWlqWbNmpo3b16ONa1atdLp06dtj2XLltkt79Gjhw4fPqyNGzdq3bp12rZtm/r162dbnpKSopYtW6pcuXLat2+fpk+frgkTJujdd9+11Xz33Xfq1q2b+vTpo/3796t9+/Zq3769Dh06ZKuZNm2a5syZo4ULF2r37t1yd3dXRESErl69auIe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fE1Vdrp27apq1aqZOSUAAECBcFehat++fTpy5IgkqWrVqnr00Uf16KOPmtIYAABAQZKnC9XPnj2rJ554QnXr1tXQoUM1dOhQ1alTR82bN9e5c+dyPc+2bdvUrl07BQQEyGKxaM2aNXbLDcPQuHHjVLp0abm5uSk8PFxxcXF2NRcvXlSPHj3k5eUlHx8f9enTR6mpqXY1Bw8eVKNGjeTq6qrAwEBNmzbNoZfly5ercuXKcnV1VY0aNfTll1/ecS8AAODBladQNWTIEF2+fFmHDx/WxYsXdfHiRR06dEgpKSkaOnRorudJS0tTzZo1NW/evGyXT5s2TXPmzNHChQu1e/duubu7KyIiQlevXrXV9OjRQ4cPH9bGjRu1bt06bdu2Tf369bMtT0lJUcuWLVWuXDnt27dP06dP14QJE/Tuu+/aar777jt169ZNffr00f79+9W+fXu1b99ehw4duqNeAADAg8tiGIZxpyt5e3tr06ZNqlu3rt34nj171LJlSyUlJd15IxaLVq9erfbt20v688hQQECARowYoZdfflmSlJycLD8/P0VHR6tr1646cuSIqlatqr1796pOnTqSpA0bNqhNmzb67bffFBAQoAULFujVV19VYmKi7V5ao0eP1po1a3T06FFJUpcuXZSWlqZ169bZ+nnsscdUq1YtLVy4MFe95EZKSoq8vb2VnJxs+vcjBo1eb+p8wP0m4c3I/G4BQAGV29/feTpSZbVaVbhwYYfxwoULy2q15mVKB/Hx8UpMTFR4eLhtzNvbW/Xr19euXbskSbt27ZKPj48tUElSeHi4nJyctHv3bltN48aN7W5OGhERoWPHjunSpUu2mhu3k1WTtZ3c9JKd9PR0paSk2D0AAMD9KU+h6oknntCLL76oU6dO2cZ+//13vfTSS2revLkpjSUmJkqS/Pz87Mb9/PxsyxITEx2+KqdQoUIqXry4XU12c9y4jZxqblx+u16yM2XKFHl7e9segYGBt3nVAACgoMpTqJo7d65SUlIUFBSk8uXLq3z58goODlZKSorefvtts3sssMaMGaPk5GTb4+TJk/ndEgAA+Ivc0S0VLl++LE9PTwUGBurHH3/Upk2bbNclValSReHh4dq7d6/Kli171435+/tLks6cOaPSpUvbxs+cOaNatWrZas6ePWu33vXr13Xx4kXb+v7+/jpz5oxdTdbz29XcuPx2vWTHxcVFLi4uuXq9AACgYLujI1UtW7a03a7AYrGoRYsWGjJkiIYMGaKmTZtq7NixatiwoSmNBQcHy9/fXzExMbaxlJQU7d69W2FhYZKksLAwJSUlad++fbaazZs3y2q1qn79+raabdu26dq1a7aajRs3qlKlSipWrJit5sbtZNVkbSc3vQAAgAfbHYWqy5cvKzw83OGC60OHDqlu3bpatGiRw72mbiU1NVWxsbGKjY2V9OcF4bGxsTpx4oQsFouGDRum119/XZ9//rl++uknPf/88woICLB9QrBKlSpq1aqVXnjhBe3Zs0c7d+7U4MGD1bVrVwUEBEiSunfvriJFiqhPnz46fPiwPv30U82ePVvDhw+39fHiiy9qw4YNmjFjho4ePaoJEybohx9+0ODBgyUpV70AAIAH2x2Fqi1btigtLU0tWrRQSkqKDMPQ1KlTVadOHVWpUkWHDh1SmzZtcj3fDz/8oNq1a6t27dqSpOHDh6t27doaN26cJGnkyJEaMmSI+vXrp7p16yo1NVUbNmyQq6urbY4lS5aocuXKat68udq0aaPHH3/c7h5U3t7e+uabbxQfH6/Q0FCNGDFC48aNs7uXVYMGDbR06VK9++67qlmzplasWKE1a9aoevXqtprc9AIAAB5cd3yfqnPnzik8PFyFCxeWi4uL4uLiNH/+fHXq1Omv6vG+wX2qgPzDfaoA5FVuf3/f8Xf/lSpVSjExMQoPD9ehQ4cUGxurypUr31WzAAAABV2ebqlQsmRJbd68WVWrVlX37t1tN9EEAAB4UN3RkaoOHTrYPffy8tK2bdtUr1491ahRwza+atUqc7oDAAAoIO4oVHl7ezs8Dw4ONrUhAACAguiOQtXixYv/qj4AAAAKtDxdUwUAAAB7hCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADDBPR2qJkyYIIvFYveoXLmybfnVq1c1aNAglShRQh4eHurYsaPOnDljN8eJEycUGRmpokWLytfXV6+88oquX79uV7N161Y9+uijcnFxUUhIiKKjox16mTdvnoKCguTq6qr69etrz549f8lrBgAABdM9HaokqVq1ajp9+rTtsWPHDtuyl156SV988YWWL1+ub7/9VqdOnVKHDh1syzMzMxUZGamMjAx99913+uCDDxQdHa1x48bZauLj4xUZGalmzZopNjZWw4YNU9++ffX111/baj799FMNHz5c48eP148//qiaNWsqIiJCZ8+e/Xt2AgAAuOdZDMMw8ruJnEyYMEFr1qxRbGysw7Lk5GSVKlVKS5cuVadOnSRJR48eVZUqVbRr1y499thj+uqrr9S2bVudOnVKfn5+kqSFCxdq1KhROnfunIoUKaJRo0Zp/fr1OnTokG3url27KikpSRs2bJAk1a9fX3Xr1tXcuXMlSVarVYGBgRoyZIhGjx6d69eTkpIib29vJScny8vLK6+7JVtBo9ebOh9wv0l4MzK/WwBQQOX29/c9f6QqLi5OAQEBevjhh9WjRw+dOHFCkrRv3z5du3ZN4eHhttrKlSvroYce0q5duyRJu3btUo0aNWyBSpIiIiKUkpKiw4cP22punCOrJmuOjIwM7du3z67GyclJ4eHhtpqcpKenKyUlxe4BAADuT/d0qKpfv76io6O1YcMGLViwQPHx8WrUqJEuX76sxMREFSlSRD4+Pnbr+Pn5KTExUZKUmJhoF6iylmctu1VNSkqKrly5ovPnzyszMzPbmqw5cjJlyhR5e3vbHoGBgXe8DwAAQMFQKL8buJXWrVvb/vzII4+ofv36KleunD777DO5ubnlY2e5M2bMGA0fPtz2PCUlhWAFAMB96p4+UnUzHx8fVaxYUb/88ov8/f2VkZGhpKQku5ozZ87I399fkuTv7+/wacCs57er8fLykpubm0qWLClnZ+dsa7LmyImLi4u8vLzsHgAA4P5UoEJVamqqjh8/rtKlSys0NFSFCxdWTEyMbfmxY8d04sQJhYWFSZLCwsL0008/2X1Kb+PGjfLy8lLVqlVtNTfOkVWTNUeRIkUUGhpqV2O1WhUTE2OrAQAAuKdD1csvv6xvv/1WCQkJ+u677/T000/L2dlZ3bp1k7e3t/r06aPhw4dry5Yt2rdvn3r16qWwsDA99thjkqSWLVuqatWqeu6553TgwAF9/fXXeu211zRo0CC5uLhIkgYMGKD//e9/GjlypI4ePar58+frs88+00svvWTrY/jw4frPf/6jDz74QEeOHNHAgQOVlpamXr165ct+AQAA9557+pqq3377Td26ddOFCxdUqlQpPf744/r+++9VqlQpSdLMmTPl5OSkjh07Kj09XREREZo/f75tfWdnZ61bt04DBw5UWFiY3N3dFRUVpUmTJtlqgoODtX79er300kuaPXu2ypYtq/fee08RERG2mi5duujcuXMaN26cEhMTVatWLW3YsMHh4nUAAPDguqfvU3W/4T5VQP7hPlUA8uq+uU8VAABAQUCoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExTK7wYAALkXNHp9frcA3LMS3ozM1+1zpAoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKi6Q/PmzVNQUJBcXV1Vv3597dmzJ79bAgAA9wBC1R349NNPNXz4cI0fP14//vijatasqYiICJ09eza/WwMAAPmMUHUH3nrr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UFCQONF07+H0HwAAgAm4TxUAAIAJCFUAAAAmIFQBAACYgFAFAABgAkIVAACACQhVAB5YPXv2dPhetnPnzql69eqqX7++kpOT86cxAAUSoQoA/r9z587piSeekJubm7755ht5e3vnd0sAChBCFQBIOn/+vJo3by4XFxdt3LjRLlD17NlTFovF7nHj1wu99dZbqlGjhtzd3RUYGKh//OMfSk1NtZt/586datq0qYoWLapixYopIiJCly5dkvTnV45MmzZNISEhcnFx0UMPPeTwJeEA7n2EKgAPvAsXLig8PFyFChXSxo0b5ePjY7fcMAy1atVKp0+f1unTpxUWFma33MnJSXPmzNHhw4f1wQcfaPPmzRo5cqRteWxsrJo3b66qVatq165d2rFjh9q1a6fMzExJ0pgxY/Tmm29q7Nix+vnnn7V06VK+MggogLijOoAHVs+ePRUfH6+UlBQdPnxYoaGh2rFjh5ydne3qunfvrmvXrmn58uWSpKZNm6pWrVqaNWtWtvOuWLFCAwYM0Pnz523rnzhxQjt27HCovXz5skqVKqW5c+eqb9++5r5AAH8rjlQBeKBt27ZNVqtVsbGx+uWXXzRt2jSHmpSUFLm7u+c4x6ZNm9S8eXOVKVNGnp6eeu6553ThwgX98ccfkv7vSFV2jhw5ovT09ByXAyg4CFUAHmgPP/ywYmJiVLVqVc2fP18TJkzQwYMH7WpOnTqlgICAbNdPSEhQ27Zt9cgjj2jlypXat2+f5s2bJ0nKyMiQJLm5ueW4/VstA1CwEKoAPNBq1KihkiVLSpI6d+6sDh066Pnnn7cForS0NB05ckS1a9fOdv19+/bJarVqxowZeuyxx1SxYkWdOnXKruaRRx5RTExMtutXqFBBbm5uOS4HUHAQqgDgBvPmzdPZs2c1ceJEHT16VN26dZOPj49at26dbX1ISIiuXbumt99+W//73//00UcfaeHChXY1Y8aM0d69e/WPf/xDBw8e1NGjR7VgwQKdP39erq6uGjVqlEaOHKkPP/xQx48f1/fff6/333//73i5AExEqAKAGxQvXlz/+c9/NHXqVA0cOFDXr1/Xpk2b5OHhkW19zZo19dZbb2nq1KmqXr26lixZoilTptjVVKxYUd98840OHDigevXqKSwsTGvXrlWhQoUkSWPHjtWIESM0btw4ValSRV26dNHZs2f/8tcKwFx8+g8AAMAEHKkCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABM8P8A4XCfzsfdjMEAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"# Подсчет количества объектов каждого класса\n",
"class_counts = Y.value_counts()\n",
"print(class_counts)\n",
"\n",
"class_counts_dict = class_counts.to_dict()\n",
"\n",
"keys = list(class_counts_dict.keys())\n",
"vals = list(class_counts_dict.values())\n",
"\n",
"keys[keys.index(True)] = \"Был приступ\"\n",
"keys[keys.index(False)] = \"Не было приступа\"\n",
"\n",
"# Визуализация\n",
"plt.bar(keys, vals)\n",
"plt.title(f\"Распределение классов\\n\\\"{target_column}\\\"\")\n",
"plt.xlabel(\"Класс\")\n",
"plt.ylabel(\"Количество\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Для интереса сделаем только oversampling для значений True. (Я делал и undersampling - в предсказательной способоности ничего не меняется)"
]
},
{
"cell_type": "code",
"execution_count": 437,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Данные до аугментации в обучающей выборке\n",
"HadHeartAttack\n",
"False 209328\n",
"True 12091\n",
"Name: count, dtype: int64\n",
"\n",
"Данные после аугментации в обучающей выборке\n",
"HadHeartAttack\n",
"False 12091\n",
"True 12091\n",
"Name: count, dtype: int64\n"
]
}
],
"source": [
"print(\"Данные до аугментации в обучающей выборке\")\n",
"print(Y_train.value_counts())\n",
"\n",
"X_train_samplied, Y_train_samplied = X_train, Y_train\n",
"\n",
"# X_train_samplied, Y_train_samplied = oversample(X_train_samplied, Y_train_samplied, sampling_strategy=1)\n",
"X_train_samplied, Y_train_samplied = undersample(X_train_samplied, Y_train_samplied)\n",
"print()\n",
"print(\"Данные после аугментации в обучающей выборке\")\n",
"print(Y_train_samplied.value_counts())"
]
},
{
"cell_type": "code",
"execution_count": 428,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"show_distribution(Y_train, column_name=target_column)"
]
},
{
"cell_type": "code",
"execution_count": 429,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGwCAYAAABGlHlWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABA4ElEQVR4nO3dd3xT5eIG8CdJ2zRN924BGS1lo1BBBUqB62C4QQQUAS9XvApe18XJRnsVB4goXAcI1MX+uRUBLyAqImWPAmWP0tK90iTv74+YI+miI8nJOXm+n08+bZKTc96clDy847yvRgghQEREBEArdwGIiMhzMBSIiEjCUCAiIglDgYiIJAwFIiKSMBSIiEjCUCAiIglDgYiIJAwFIiKSMBSIiEjCUHCjJUuWQKPRSDd/f38kJSVh4sSJuHDhgtzFIyKCj9wF8EYzZ85E69atUV5eji1btuDdd9/F119/jb179yIgIEDu4hGRF2MoyGDQoEG49tprAQDjx49HREQE3njjDaxbtw4jR46UuXRE5M3YfOQBBgwYAADIysoCAFy6dAlPP/00unTpgsDAQAQHB2PQoEHYtWtXtdeWl5dj+vTpSEpKgr+/P+Li4nD33Xfj6NGjAIDjx487NFlVvfXr10/a16ZNm6DRaPDZZ5/h+eefR2xsLIxGI26//XacOnWq2rF//fVXDBw4ECEhIQgICEBqaiq2bt1a43vs169fjcefPn16tW2XL1+O5ORkGAwGhIeHY8SIETUev673djmr1Yq5c+eiU6dO8Pf3R0xMDCZMmIC8vDyH7Vq1aoVbb7212nEmTpxYbZ81lX3OnDnVzikAVFRUYNq0aUhMTIRer0eLFi0wefJkVFRU1HiuLtevX79q+3vppZeg1Wrx8ccfN+p8vPbaa+jVqxciIiJgMBiQnJyMlStX1nj85cuXo2fPnggICEBYWBj69u2L77//3mGbb775BqmpqQgKCkJwcDB69OhRrWwrVqyQPtPIyEjcf//9OHPmjMM2Y8eOdShzWFgY+vXrh82bN1/xPJHzsKbgAexf4BEREQCAY8eOYe3atbjnnnvQunVrXLhwAYsWLUJqair279+P+Ph4AIDFYsGtt96KH3/8ESNGjMC//vUvFBUV4YcffsDevXuRkJAgHWPkyJEYPHiww3Gfe+65Gsvz0ksvQaPR4JlnnkF2djbmzp2LG2+8ERkZGTAYDACADRs2YNCgQUhOTsa0adOg1WqxePFiDBgwAJs3b0bPnj2r7bd58+ZIS0sDABQXF+Of//xnjceeMmUKhg8fjvHjx+PixYuYP38++vbti507dyI0NLTaax566CGkpKQAAFavXo01a9Y4PD9hwgQsWbIE48aNw2OPPYasrCy8/fbb2LlzJ7Zu3QpfX98az0ND5OfnS+/tclarFbfffju2bNmChx56CB06dMCePXvw5ptv4vDhw1i7dm2DjrN48WK8+OKLeP311zFq1Kgat7nS+Zg3bx5uv/123HfffTCZTPj0009xzz334Msvv8SQIUOk7WbMmIHp06ejV69emDlzJvz8/PDrr79iw4YNuPnmmwHY+skefPBBdOrUCc899xxCQ0Oxc+dOfPvtt1L57Oe+R48eSEtLw4ULFzBv3jxs3bq12mcaGRmJN998EwBw+vRpzJs3D4MHD8apU6dq/OzJBQS5zeLFiwUAsX79enHx4kVx6tQp8emnn4qIiAhhMBjE6dOnhRBClJeXC4vF4vDarKwsodfrxcyZM6XHPvzwQwFAvPHGG9WOZbVapdcBEHPmzKm2TadOnURqaqp0f+PGjQKAaNasmSgsLJQe//zzzwUAMW/ePGnfbdu2Fbfccot0HCGEKC0tFa1btxY33XRTtWP16tVLdO7cWbp/8eJFAUBMmzZNeuz48eNCp9OJl156yeG1e/bsET4+PtUez8zMFADERx99JD02bdo0cfmf9ebNmwUAkZ6e7vDab7/9ttrjLVu2FEOGDKlW9kcffVRU/adSteyTJ08W0dHRIjk52eGcLlu2TGi1WrF582aH1y9cuFAAEFu3bq12vMulpqZK+/vqq6+Ej4+PeOqpp2rctj7nQwjb53Q5k8kkOnfuLAYMGOCwL61WK+66665qf4v2zzw/P18EBQWJ6667TpSVldW4jclkEtHR0aJz584O23z55ZcCgJg6dar02JgxY0TLli0d9vPf//5XABC//fZbje+ZnI/NRzK48cYbERUVhRYtWmDEiBEIDAzEmjVr0KxZMwCAXq+HVmv7aCwWC3JzcxEYGIh27drhjz/+kPazatUqREZGYtKkSdWOUbXJoCEeeOABBAUFSfeHDRuGuLg4fP311wCAjIwMZGZmYtSoUcjNzUVOTg5ycnJQUlKCv/3tb/jf//4Hq9XqsM/y8nL4+/vXedzVq1fDarVi+PDh0j5zcnIQGxuLtm3bYuPGjQ7bm0wmALbzVZsVK1YgJCQEN910k8M+k5OTERgYWG2flZWVDtvl5OSgvLy8znKfOXMG8+fPx5QpUxAYGFjt+B06dED79u0d9mlvMqx6/Nr89ttvGD58OIYOHYo5c+bUuE19zgcAqbYHAHl5eSgoKEBKSorD39batWthtVoxdepU6W/Rzv639cMPP6CoqAjPPvtstc/Wvs3vv/+O7OxsPPLIIw7bDBkyBO3bt8dXX33l8Dqr1Sqdo4yMDCxduhRxcXHo0KFDne+JnIfNRzJYsGABkpKS4OPjg5iYGLRr187hH57VasW8efPwzjvvICsrCxaLRXrO3sQE2Jqd2rVrBx8f536Mbdu2dbiv0WiQmJiI48ePAwAyMzMBAGPGjKl1HwUFBQgLC5Pu5+TkVNtvVZmZmRBC1Lpd1Wae/Px8AKj2RVx1nwUFBYiOjq7x+ezsbIf733//PaKiouosZ1XTpk1DfHw8JkyYUK1tPjMzEwcOHKh1n1WPX5MzZ85gyJAhKCkpQW5ubq2BX5/zAQBffvklZs+ejYyMDId+jcv3e/ToUWi1WnTs2LHW/dibPTt37lzrNidOnAAAtGvXrtpz7du3x5YtWxweO3XqlMO5iouLw6pVq674nsh5GAoy6NmzpzT6qCYvv/wypkyZggcffBCzZs1CeHg4tFotHn/88Wr/A5eDvQxz5szBNddcU+M2l/8jNplMOHfuHG666aYr7lej0eCbb76BTqerc58AcP78eQBAbGxsnfuMjo5Genp6jc9X/bK+7rrrMHv2bIfH3n77baxbt67G1x84cABLlizB8uXLa+ybsFqt6NKlC954440aX9+iRYtay2535MgRdO/eHW+++SZGjx6Njz76qMZArs/52Lx5M26//Xb07dsX77zzDuLi4uDr64vFixdX6xyWQ0xMDJYvXw7A9h+LDz/8EAMHDsSWLVvQpUsXmUvnHRgKHmjlypXo378/PvjgA4fH8/PzERkZKd1PSEjAr7/+isrKSqd0ltrZawJ2QggcOXIEXbt2lY4LAMHBwbjxxhuvuL9du3ahsrKyziC071cIgdatWyMpKemK+92/fz80Gk2N/wu9fJ/r169H7969HZpNahMZGVntPdXVGfzcc8/hmmuuwb333lvr8Xft2oW//e1vjW7SszfdxcTEYN26dXjqqacwePDgaoFWn/OxatUq+Pv747vvvnNoZlq8eHG1clutVuzfv7/W4Lf/HezduxeJiYk1btOyZUsAwKFDh6QmM7tDhw5Jz9v5+/s7nP/bb78d4eHhePvtt7Fo0aJa3xc5D/sUPJBOp4MQwuGxFStWVBvCN3ToUOTk5ODtt9+uto+qr2+IpUuXoqioSLq/cuVKnDt3DoMGDQIAJCcnIyEhAa+99hqKi4urvf7ixYvVyq7T6Woc7nm5u+++GzqdDjNmzKhWfiEEcnNzpftmsxmrVq1Cz54962xaGD58OCwWC2bNmlXtObPZLDW5NMa2bduwbt06/Oc//6n1C3/48OE4c+YM3nvvvWrPlZWVoaSk5IrHSUpKQkxMDABg/vz5sFqt+Ne//uWwTX3Ph06ng0ajcWiSPH78eLXgu/POO6HVajFz5sxqtVP7Z3PzzTcjKCgIaWlp1fpd7Ntce+21iI6OxsKFCx2aqr755hscOHDAYbRTTUwmE8xmc72G75JzsKbggW699VbMnDkT48aNQ69evbBnzx6kp6ejTZs2Dts98MADWLp0KZ588kn89ttvSElJQUlJCdavX49HHnkEd9xxR6OOHx4ejj59+mDcuHG4cOEC5s6di8TERPzjH/8AAGi1Wrz//vsYNGgQOnXqhHHjxqFZs2Y4c+YMNm7ciODgYHzxxRcoKSnBggUL8NZbbyEpKQmbNm2SjmEPk927d2Pbtm244YYbkJCQgNmzZ+O5557D8ePHceeddyIoKAhZWVlYs2YNHnroITz99NNYv349pkyZgt27d+OLL76o872kpqZiwoQJSEtLQ0ZGBm6++Wb4+voiMzMTK1aswLx58zBs2LBGnafvv/8eN910U521pdGjR+Pzzz/Hww8/jI0bN6J3796wWCw4ePAgPv/8c3z33XdXrEFdLjY2FnPmzMH48eNx//33Y/DgwQ06H0OGDMEbb7yBgQMHYtSoUcjOzsaCBQuQmJiI3bt3S9slJibihRdewKxZs5CSkoK7774ber0e27dvR3x8PNLS0hAcHIw333wT48ePR48ePTBq1CiEhYVh165dKC0txUcffQRfX1+88sorGDduHFJTUzFy5EhpSGqrVq3wxBNPOJSvpKTEoflo2bJlKC8vx1133VXvc0RNJNu4Jy9kH5K6ffv2OrcrLy8XTz31lIiLixMGg0H07t1bbNu2zWF4ol1paal44YUXROvWrYWvr6+IjY0Vw4YNE0ePHhVCNG5I6ieffCKee+45ER0dLQwGgxgyZIg4ceJEtdfv3LlT3H333SIiIkLo9XrRsmVLMXz4cPHjjz86HPtKtzFjxjjsd9WqVaJPnz7CaDQKo9Eo2rdvLx599FFx6NAhIYQQkyZNEn379hXffvtttTLVNARTCNvQxuTkZGEwGERQUJDo0qWLmDx5sjh79qy0TUOHpGo0GrFjxw6Hx2v6jEwmk3jllVdEp06dhF6vF2FhYSI5OVnMmDFDFBQUVDvelfYnhBADBgwQV111lSgqKmrw+fjggw9E27ZthV6vF+3btxeLFy+u9bx9+OGHolu3blK5U1NTxQ8//OCwzf/93/+JXr16CYPBIIKDg0XPnj3FJ5984rDNZ599Ju0nPDxc3HfffdIQbLsxY8Y4/F0EBgaK7t27i2XLltV5jsi5NEI0oZ2BVGXTpk3o378/VqxY0ej/PV/u+PHjaN26NbKystCqVasat5k+fTqOHz+OJUuWNPl4RNR07FMgIiIJ+xTIZQIDA3HffffV2fHZtWtXadoOIpIfQ4FcJjIyUuo0rM3dd9/tptIQUX2wT4GIiCTsUyAiIglDgYiIJAwFcjv7YjAchup+Go0GEydOlLsY5MEYCl5iyZIl0lQM9hXW7LOejh07ts4RQu74Ipk+fTo0Gg1ycnJqfL62VdHc5Z133rliiH399dfQaDSIj4+vceLCs2fPYvr06cjIyKj23Mcff4y5c+c6p7BNZA9t+xXoDHDvwlAgqof6hEJ6ejpatWqFc+fOYcOGDdWeP3v2LGbMmOHxoUDejaFAVIfS0tJ6bVdSUoJ169bhySefRLdu3WqdqpvI0zEUqMFMJhOmTp2K5ORkhISEwGg0IiUlpcZVxPLz8zF27FiEhIQgNDQUY8aMadLMpJezWq2YO3cuOnXqBH9/f8TExGDChAnIy8tz2G7dunUYMmQI4uPjodfrkZCQgFmzZjnMFAoA/fr1Q+fOnbFjxw707dsXAQEBeP7559GqVSvs27cPP/30k7SofL9+/Rxeu2bNGpSVleGee+7BiBEjsHr1aoeZQzdt2oQePXoAAMaNGyftZ8mSJejXrx+++uornDhxQnrcPi1IQ861fXGmLl26wN/fH1FRURg4cCB+//33Os/j7NmzodVqMX/+/PqeelIxXrxGktra86sqLCzE+++/j5EjR+If//gHioqK8MEHH+CWW27Bb7/9Js2/L4TAHXfcgS1btuDhhx9Ghw4dsGbNmjpXbLt06VKNj9fURj9hwgRpUfjHHnsMWVlZePvtt7Fz505s3bpVWmNiyZIlCAwMxJNPPonAwEBs2LABU6dORWFhYbWlLXNzczFo0CCMGDEC999/P2JiYtCvXz9MmjQJgYGBeOGFFwBAmsraLj09Hf3790dsbCxGjBiBZ599Fl988QXuueceAECHDh0wc+ZMTJ06FQ899BBSUlIAAL169UKzZs1QUFCA06dPS4vW2/t46nuuAeDvf/87lixZgkGDBmH8+PEwm83YvHkzfvnll1pnYn3xxRfx8ssvY9GiRdIsuOTlZJ2OjzxC1dkpa7o9+uij0vZms1lUVFQ47CMvL0/ExMSIBx98UHps7dq1AoB49dVXHV6bkpIiAIjFixdLj9tn6azrdvkMpps3bxYARHp6ukM5vv3222qPV12oXgghJkyYIAICAkR5ebn0WGpqqgAgFi5cWG37qjPKXu7ChQvCx8dHvPfee9JjvXr1EnfccYfDdtu3b6/2vu2GDBlSbdF6Iep/rjds2CAAiMcee6zaPqxWq/T75Z/lU089JbRarViyZEmN74u8E2sKBMC24lVtc/FXXUZTp9NJy2VarVbk5+fDarXi2muvdVj8/euvv4aPjw/++c9/Orx20qRJ2Lx5c43HWrVqFYKDg6s9fv/99zvcX7FiBUJCQnDTTTc51HCSk5MRGBiIjRs3YtSoUQAcF6ovKipCRUUFUlJSsGjRIhw8eBBXX3219Lxer8e4ceNqLFttPv30U2i1WgwdOlR6bOTIkXjqqaeQl5fnsFZ1Q9X3XK9atQoajQbTpk2rto+qCwAJITBx4kQsWrQIy5cvx8iRIxtdPlIfhgIBsH351GdpTbuPPvoIr7/+Og4ePIjKykrp8datW0u/nzhxAnFxcdWGu9a1XGTfvn0dlhy18/f3d7ifmZmJgoICREdH17if7Oxs6fd9+/bhxRdfxIYNG1BYWOiwXUFBgcP9Zs2awc/Pr9by1WT58uXo2bMncnNzpdXhunXrBpPJhBUrVuChhx5q0P6qqs+5Pnr0KOLj4xEeHn7F/S1duhTFxcV49913GQhUDUOBGmz58uUYO3Ys7rzzTvz73/9GdHQ0dDod0tLScPToUbeUwWq1Ijo6utZRPvb1i/Pz85Gamorg4GDMnDkTCQkJ8Pf3xx9//IFnnnmmWl9FfdZxvlxmZia2b98OAGjbtm2159PT05sUCq44171790ZGRgbefvttDB8+vF5BQt6DoUANtnLlSrRp0warV692aJqo2nTRsmVL/PjjjyguLnaoLRw6dKjJZUhISMD69evRu3fvOr/IN23ahNzcXKxevRp9+/aVHs/KymrQ8Wpbgzk9PR2+vr5YtmyZ1Mxjt2XLFrz11ls4efIkrrrqqlr3Udf+63uuExIS8N133+HSpUtX/JJPTEzEq6++in79+mHgwIH48ccfERQUVOdryHtwSCo1mP3LT1w2we6vv/6Kbdu2OWw3ePBgmM1mvPvuu9JjFovFKUMfhw8fDovFglmzZlV7zmw2S8NeayqryWTCO++806DjGY3GGofSpqenIyUlBffeey+GDRvmcPv3v/8NAPjkk0+kfQCocT9Go7FaU1Zt5a/pXA8dOhRCCMyYMaPaPkQNEyF37doVX3/9NQ4cOIDbbrsNZWVltbxz8jasKVCD3XrrrVi9ejXuuusuDBkyBFlZWVi4cCE6duyI4uJiabvbbrsNvXv3xrPPPovjx4+jY8eOWL16dY1ffg2VmpqKCRMmIC0tDRkZGbj55pvh6+uLzMxMrFixAvPmzcOwYcPQq1cvhIWFYcyYMXjssceg0WiwbNmyGr8o65KcnIx3330Xs2fPRmJiIqKjo2E0GnHkyJFapwBp1qwZunfvjvT0dDzzzDNISEhAaGgoFi5ciKCgIBiNRlx33XVo3bo1kpOT8dlnn+HJJ59Ejx49EBgYiNtuu63e57p///4YPXo03nrrLWRmZmLgwIGwWq3YvHkz+vfvX2MZr7/+eqxbtw6DBw/GsGHDsHbtWmkYL3kxGUc+kYcYM2aMMBqNtT6PKkNSrVarePnll0XLli2FXq8X3bp1E19++aUYM2ZMtWGVubm5YvTo0SI4OFiEhISI0aNHi507d9Y6JPXixYs1lqFly5YOQ1Lt/vvf/4rk5GRhMBhEUFCQ6NKli5g8ebI4e/astM3WrVvF9ddfLwwGg4iPjxeTJ08W3333nQAgNm7cKG2XmpoqOnXqVOPxz58/L4YMGSKCgoIEAJGamiomTZokAIijR4/Weu6mT58uAIhdu3YJIYRYt26d6Nixo/Dx8XE4B8XFxWLUqFEiNDRUAJDOY0POtdlsFnPmzBHt27cXfn5+IioqSgwaNEjs2LFD2qbqZ2kvk4+Pj7j33nuFxWKp9b2Qd+AiO0REJGGfAhERSRgKREQkYSgQEZGEoUBERBKGAhERSRgKREQkYSgQEZGEoUBERBKGAhERSRgKREQkYSgQEZGEoUBERBKGAhERSRgKREQkYSgQEZGEoUBERBKGAhERSRgKREQkYSgQEZGEoUBERBKGAhERSRgKREQkYSgQEZGEoUBERBKGAhERSRgKREQkYSgQEZGEoUBERBKGAhERSRgKREQkYSgQEZGEoUBERBKGAhERSRgKREQkYSgQEZGEoUBERBKGAhERSRgKREQkYSgQEZGEoUBERBKGAhERSRgKREQkYSgQEZHER+4CELmCxSpQbrGg3GxFufnPnxYrrFYBAUAIAav9p/jrdRoNoIEGWg2gAaDVaKDRAD5aDfx1Ovj7aOHvY/up12mh0WhkeodErsFQIEWxCoGyStuXfFnVL/0/f5aZLai8/JveRTSAQ0hUDQ2Dz1/3iZRCI4Rw/b8eokawCoHCCjPyyyuRV1GJ/PJKFFRUwg3f906l12kR6u+LMH9f20+9Lwy+DAryTAwF8ghqCYD60uu0UkgwKMiTMBRIFkUmM3LLTMgrV38A1NflQRHm74tIgx98dRwLQu7FUCC3EEIgp8yEc8UVOF9cjuJKi9xF8ngaAJEBfogL9EdcoB5GX3YBkusxFMhlKi1WXCipwLniclwoqYDJ26sCTRTs5yMFRJi/L0c+kUswFMipSivNOFdsC4KLpSbwj8s19Dot4gL1iAv0R3SAHjotA4Kcg6FATSKEQF55Jc6V2JqFCirMchfJ6+g0QFSAXqpFcAgsNQVDgRrFZLHiREEpsvJL2T/gQTQAYgP1aBNqRHSAH5uYqMEYCtQgeeWVOJZXgtNFZbDwL8ejGX11aBMagJYhAfDjKCaqJ4YCXZHFKnC6qAzH8kuRV14pd3GogXQaoFmQAQlhAQjz95O7OOThGApUq2KTGVn5pThRUMqRQyoR6u+LNqEBaBFkYOc01YihQA6EEDhXUoFjeaXILq2QuzjkIn5aDVqGBKB1aAAC/Xj9A/2FoUAAbE1Ex/JLcDSvFKVmdhx7k+gAPdpHGBEZoJe7KOQBGApeTgiB4wVlOJBbhHKzVe7ikIxijHp0igxCqL+v3EUhGTEUvNiZojLsyylCsYk1A/pLiyB/dIwMgpHNSl6JoeCFsksqsC+niCOJqFYaAK1DA9A+IpAXw3kZhoIXySuvxL6LhcguNcldFFIIH40GieFGtA03wlfLax28AUPBCxSbzNifU4TTReVyF4UUyk+nRbtwI9qEGjmUVeUYCipWbrbgQE4xjheUcmI6cooAHx06RAbiqmADp9BQKYaCCgkhcPhSCQ7mFsPCj5dcINjPB91jQxBu4BXSasNQUJnCikrsOF/ATmRyOQ2AtuFGdIgIYpOSijAUVMJeOziQW+T1y1qSewX5+SCZtQbVYCioAGsHJDfWGtSDoaBgrB2Qp2GtQfkYCgrF2gF5KtYalM3rrkZZsmQJQkND5S5GowkhcCi3GBtO5DAQyCMJAIcvlWDDiRxcKuOFkkqj2FAYO3YsNBpNtduRI0fkLprLFFZUYtPJXOzLYXMReb4ikxk/nczF3ouFsPAPVjEUPePVwIEDsXjxYofHoqKiZCqNax3NK8Gei4UMA1IUe63hXHEFro8PQ5Be0V85XkGxNQUA0Ov1iI2NdbjNmzcPXbp0gdFoRIsWLfDII4+guLi41n3s2rUL/fv3R1BQEIKDg5GcnIzff/9den7Lli1ISUmBwWBAixYt8Nhjj6GkpMQdbw8AYBUCf5zPx65sBgIpV5HJjE0nc3C+mFOteDpFh0JNtFot3nrrLezbtw8fffQRNmzYgMmTJ9e6/X333YfmzZtj+/bt2LFjB5599ln4+trmkz969CgGDhyIoUOHYvfu3fjss8+wZcsWTJw40S3vpdxsweZTuTheUOaW4xG5UqVV4OczeTh8qfb/pJH8FDv6aOzYsVi+fDn8/f2lxwYNGoQVK1Y4bLdy5Uo8/PDDyMnJAWDraH788ceRn58PAAgODsb8+fMxZsyYascYP348dDodFi1aJD22ZcsWpKamoqSkxOHYzpZfXoltZ/JQxlXQSIVaBBvQPSaEo5M8kKIb+Pr37493331Xum80GrF+/XqkpaXh4MGDKCwshNlsRnl5OUpLSxEQEFBtH08++STGjx+PZcuW4cYbb8Q999yDhIQEALampd27dyM9PV3aXggBq9WKrKwsdOjQwSXv63RRGXacK+C8RaRapwrLUGwy4/pmYTBwvQaPoujmI6PRiMTEROlWUVGBW2+9FV27dsWqVauwY8cOLFiwAABgMtU8NG769OnYt28fhgwZgg0bNqBjx45Ys2YNAKC4uBgTJkxARkaGdNu1axcyMzOl4HAmIQT25RTht7P5DARSvbzySmzksFWPo+iaQlU7duyA1WrF66+/Du2fC4J8/vnnV3xdUlISkpKS8MQTT2DkyJFYvHgx7rrrLnTv3h379+9HYmKiq4sOs9WK7efyca64wuXHIvIU5WYr/ncqF91jQnBVSPWaPLmfomsKVSUmJqKyshLz58/HsWPHsGzZMixcuLDW7cvKyjBx4kRs2rQJJ06cwNatW7F9+3apWeiZZ57Bzz//jIkTJyIjIwOZmZlYt26d0zuaS0xmbDqRy0Agr2QVwO/nC7AnuxAK7eJUFVWFwtVXX4033ngDr7zyCjp37oz09HSkpaXVur1Op0Nubi4eeOABJCUlYfjw4Rg0aBBmzJgBAOjatSt++uknHD58GCkpKejWrRumTp2K+Ph4p5X5YmkFNp7MQaHJ7LR9EilRZl4Jfj6Th0qLVe6ieDXFjj5Sg6z8UmRcKOCqaESXCfTToXezcBj9VNW6rRgMBZlkXirGnotFcheDyCMZfLTo0yICQQwGt2MoyOBgbjH25zAQiOqi12mR0iIcwXpfuYviVRgKbrY/pwgHc3lFJ1F9+Om06NM8HKH+DAZ3YSi40Z7sQmTmuW/eJCI18NVq0Lt5OBfucRNVjT7yZLsuFDAQiBqh0iqw5fQllFZyyhd3YCi4we7sQhzNL5W7GESKlRhmRIAvp8NwB4aCi+27WIgjrCEQNVr7iEB0jAySuxheg6HgQgdyinDoEgOBqLEYCO7HUHCRw5eKcYCjjIgajYEgD4aCCxzNK8FeXphG1Gj1DgQOnnQ6hoKTnS0qx67sQrmLQaRY9Q6E0nLg931AIWvkzsRQcKKCikr8fi5f7mIQKVaDAmHXIdvPPZlAMUf3OQtDwUkqLFZsO5MHM6uzRI3S4EAwVdrumy3A7sNACdcydwaGghNYhcCvZ/J4cQ1RIzU6EOwqzX/VHKhJGApOsDu7EDlcUpCoUZocCHb2YCjjYlVNwVBoomP5JTjGq5WJGsVpgWBnqrQ1JVVy0arGYig0QU5pBXZd4EgjosZweiDYlVcA+49yuGojMRQaqaTSjF/O5nPVNKJGcFkg2OUXAUdONq5wXo6h0AhmqxW/nMmDiWvJEjWYywPB7uxF240ahKHQQEII/H6uAAUVbLMkaii3BYLdkZO2WgPVG0OhgQ7kFuNsMYe9ETWU2wMBsPUr7D9q62egemEoNMCFkgoupUnUCLIEgl2lGdh7BLDwOqL6YCjUU6XFij/O58tdDCLFkTUQ7ErKgIPHOSKpHhgK9bTnYiHKzOxYJmoIjwgEu5w84MQ51+1fJRgK9XChpALHCzivClFDeFQg2J04awsHqhVD4QrYbETUcB4ZCHYHsjirah0YClfAZiOihvHoQAAAqxXYd8Q2uypVw1CoA5uNiBrG4wPBrtwEHD0lz7E9HEOhFmw2ImoYxQSC3fkc4FKBvGXwQAyFWrDZiKj+FBcIdodPsBmpCoZCDdhsRFR/ig0EAKhgM1JVDIUq2GxEVH+KDgQ7NiM5YChUwWYjovpRRSDYsRlJwlC4TE6pic1GRPWgqkAA2Ix0GYbCZfZe5CpqRFeiukCwYzMSAIaC5GxxOS6VK+SPl0gmqg0EOzYjMRQA28I5+y9yIQ6iuqg+EAA2I4GhAAA4WViGQhNXUiOqjVcEgp2XNyN5fShYrAL7c7hwDlFtvCoQ7A6f8NpFebw+FI7ll6DMy9sQiWrjlYEA2JqRTmfLXQpZeHUoVFqsOHSpRO5iEHkkrw0Eu1PnbUt5ehmvDoXMvBKYLMq9UO2z+a9haPt4h9ukQSnS86aKcrw38zmMua4T7uueiFcnjUd+zsU69ymEwCdvvYq/p1yDkVe3wfRxw3H2+DHp+UpTBeZNnoT7k5Mw8ZY+2PXz/xxev/aDd/D+rBec+0bJ7bw+EABb89FJ71upzWtDodxsQaYKagkt2rbD+5szpNtLH6+VnlucNh2/b/wBT89bhJlLVyMv+wJenfT3Ove39v0F+HrZh5gw/T9I+/xL+BsCMGv8KJgqygEAP3y2HMf27cbLn36Bm4bfh7lPPwrx57q3F06fxPrPP8aoJ5512fsl12MgXOZstq0pyYt4bSgczC2GRQWLeOt0OoRFRUu34LAIAEBJUSE2rPoEY5+Zji7X90FC5654NO0NHNr5Ow5n7KhxX0IIfLn0fQx7+F/o+beBaNWuIya98hbysi/gt/XfAgBOHzuCawfcjKvatsPA+8ai8FIuCvMuAQD+O/1ZjH76BQQE1uMLhTwSA6EKqwCOn5W7FG7llaFQYjIjK18dy/GdO5GF8Snd8M8br8fcpx/FxbOnAQDH9u2GubISXXv91ZzUvE1bRMY3w6FaQuHC6ZPIv5jt8BpjUDDadu0mvaZVu444uOM3VJSXIWPLJoRFxSA4LBz/+2I1fPV6XHfTIBe+W3IlBkItzucAJd4z/Y2P3AWQw/6cIii/jgC0vbo7JqbNRXzrBORlZ2PFgtfx4v13Ye7/bUT+xWz4+PrBGBzi8JrQiCjk59Q8qiL/Yra0zeVCIv96zYChI3Di8H48PqQfgsLC8dTchSguyMenb83BzKUr8fHcV7D163WIadESj778BiJi4lzwzsnZGAhXcPwM0ClR7lK4hdeFQonJjFNF5XIXwym69x0g/d6qXUckXd0NDw/oia3f/h/0en+XHNPH1xf/mJrm8Njbzz2OwaP/jqwDe/Hbj9/i9bXrsfb9Bfhg9hRMnv++S8pBzsNAqIecfKCwGAgOlLskLud1zUdZBepoNqqJMTgEca3a4PyJ4wiNioa50oSSQscrM/NzLyI0MrrG14dGRUvbXK4gp/bX7PllK04dOYxB943D3l+3oXvfAfAPCECvQbdj32/bnPCuyJUYCA1w7IzcJXALrwoFi1WoemrsspISXDh1AmFR0WjTqSt8fH2xe9sW6fkzx44g5+wZtLsmucbXxzS/CqFR0dhz2WtKi4uQuXtnja8xVZTj/VnPY8KMV6DT6WC1WmAx28Z1W8yVsFp5UaAnYyA0UEGRV0x/4VWhcKaoTNHXJVT10SszsO+3bcg+fQoH/9iOVyc9CK1Wiz633gVjUDAGDB2JJa9Mx55ftuLo3t1Y8PwTaHdNMpIu+4KfNCgFv/7wDQBAo9Hg1gfGY+XCedi+4TucOHQAbz3zGMKiY9DzxoHVjr/inbno3ncA2nTsAgBo370Hfvnhaxw/tB/fpC9G++493HMiqMEYCI2UdRpQwajFunhVn8IxlYw4ssu9cA5vPvUIivLzEBwegQ7JPZD22ZcICbcNSx333HRotRq89q9/oNJUgWv69KvWH3A26yhKiv5aR+LO8Y+ivKwUC6dORklhIdon98CU99LhV6WP4uThg/j52y/w+pofpMduuOVW7PttG6bcdxfiWyfg8dcWuPDdU2MxEJqguAy4eAmIjpC7JC6jEULlsfen/PJKbDiRI3cxiGTFQHACgz/QoxOg0chdEpfwmuajY/nKv3qZqCkYCE5SVg7kq3f9Fa8IhUqLFacK1TEMlagxGAhOdla9M6h6RSicKCxTxZQWRI3BQHCBnHzVzonkFaHApiPyVgwEFzpb94zDSqX6UMguqUCxiePlyfswEFzsfA5gVc8QdzvVh4LahqES1QcDwQ1MlbZmJJVRdSiUVVpwrpgdzORdGAhupMIOZ1WHwonCMlXMhkpUXwwENysoVt202qoOBdYSyJswEGSistqCakOhzGxBXjn/6Mk7MBBkdOGSbT1nlVBtKJwvrpC7CERuwUCQmcUCXMiVuxROo9pQYNMReQMGgodQ0TULqgwFs1Ugu5Q1BVI3BoIHKSmzdTqrgCpDIbukAlYOOyIVYyB4oJw8uUvgFKoMhXMlbDoi9WIgeKjcfLlL4BSqCwUhBDuZSbUYCB6srMJ23hVOdaFwqbwSFSpacpPIjoGgACqoLaguFDjqiNSIgaAQKpgLSYWhwKYjUhcGgoIUFgOVZrlL0SSqCoVikxlFJmV/IESXYyAokMKbkFQVCmw6IjVhIChUboHcJWgSVYXCxVJ1Lo9H3oeBoGB5BYpefEdVocAJ8EgNGAgKZ7EC+UVyl6LRVBMKZZUWDkUlxWMgqISC+xVUEwp5FfzHQcrGQFARBfcrqCYU8tl0RArGQFCZChNQpMz14VUTCuxPIKViIKhUnjJrC6oJBdYUSIkYCCpWWCJ3CRpFFaHATmZSIgaCyhWz+Ug27GQmpWEgeIEKkyI/N1WEApuOSEkYCF5EgbUFVYQCO5lJKRgIXqZIef0KqggF1hRICRgIXkiBw1IVHwrsZCYlYCB4KTYfuR87mcnTMRC8mAI7mxUfCoUMBfJgDARSWm1B8aFQVsmmI/JMDAQCoLjOZsWHQrnFIncRiKphIJBEYZ3Nyg8FM2sK5FkYCOSAzUfuVWZmTYE8BwOBqlFYZ7OiQ0EIgQrWFMhDMBCoVgqqLSg6FCosVgi5C0EEBgJdQYVy1o9XdCiwP4E8AQOBrkhBQ+cVHgrsTyB5MRCoXhT0uSs8FFhTIPkwEKjeFPTZKzsUeI0CyYSBQA1iYp+CW5SxpkAyYCBQg7FPwT3Yp0DuxkCgRqk0A0IZYyUVHgqsKZD7MBCo0YSwBYMCKDwUWFMg92AgUJMp5G9C0aFgtiqjOkbKxkAgp1BIv4KiQ4GRQK7GQCCnUcgIJEWHglUhHTekTAwEciqF/H0oOhSYCeQqDARyOoX8jSg7FOQuAKkSA4Fcgn0KriVYTSAXYCCQy5g5JNWlOPCInI2BQC6lkO8sxYYCkTMxEMjlFNK6odhQ0GjkLgGpBQOB3IKh4FrMBHIGBgK5DUPBtTQaDYOBmoSBQG7FUHA9NiFRYzEQyO0YCq7HugI1BgOBZKGMTFB2KGiZCdRADASSjUK+rxQeCgo5y+QRGAgkK4V8Xyk6FPQ6RRef3IiBQLJjKLiev4+ii09uwkAgj8BQcD1/H53cRSAPx0Agj8FQcD3WFKguDATyKAwF1zOwpkC1YCCQx2EouB5rClQTBgJ5JF8fuUtQL4r+VmWfAlXFQCCPpfeVuwT1ouxQ4JBUugwDgTyaH0PB5VhTIDsGAnk8hoLr6bQa+HKuC6/HQCBFYCi4B0cgeTcGAimG3k/uEtSL4kOBI5C8FwOBFIU1Bfdgv4J3YiCQomg0HJLqLqwpeB8GAimOQmoJgApCIdBPGelLzsFAIEViKLhPqEIuCKGmYyCQYinoe0rxoRCs9+EKbF6AgUCKxpqC+2g1GoQoKIWp4RgIpHh+yhiOCqggFAAg1J+hoFYMBFIFBf3HVRWhEKagE071x0Ag1fBnTcGtWFNQHwYCqUpggNwlqDdVhAI7m9WFgUCqYtADPsoZOq+KUGBns3owEEh1Ao1yl6BBVBEKAJuQ1ICBQKoUpJymI0BFocDOZmVjIJBqKag/AVBRKLCmoFwMBFI11hTkwc5mZWIgkKoprJMZUFEosLNZeRgIpHoK62QGVBQKABBhUM4FIt6OgUBeQWFNR4DKQiHWqJe7CFQPDATyGgrrZAZUFgqRAX7wZceCR2MgkFdhTUFeWo0GMawteCwGAnkVBXYyAyoLBQCIC/SXuwhUAwYCeR0FdjIDKgyFWKMebEDyLAwE8krBDAWP4KvTIjKAo5A8BQOBvFZ4iNwlaBTVhQLAJiRPwUAgr2XwBwKU+T2kzlBgZ7PsGAjk1SKUWUsAVBoKRj8fBPspr9dfLRgI5PUiQ+UuQaOpMhQAIC6QtQU5MBDI6/n6AMGBcpei0VQcCspsz1MyBgIRbB3MGuWOgVRtKIT5+0KvU+3b8zgMBKI/RYTKXYImUe23pkajQSybkNyCgUD0J40GCA+WuxRNotpQAICrgg1yF0H1GAhElwkNAnQ6uUvRJKoOhagAPYL8lP0BeTIGAlEVCm86AlQeCgDQJlSZl5p7OgYCUQ0UPBTVTvWhcFWwAToFjwTwRAwEohoEBgB65U+xo/pQ8NVp0YJ9C07DQCCqhYKvYr6c6kMBANqEKm+hC0/EQCCqQ1S43CVwCq8IhVB/X4T7+8pdDEVjIBDVITgQMKqjRcIrQgEA2oSxw7mxGAhEV9AsSu4SOI3XhELzIH9e4dwIDASiK/D1ASLD5C6F03jNt6RWo0HLEHVU79yFgUBUD3FRgFY9X6XqeSf1wA7n+mMgENVTnHqajgAvC4UAXx/EcgGeK2IgENVTRCjgr/xrEy7nVaEAsLZwJQwEogaIV1ctAfDCUIgxcj6k2jAQlGv64v9C06+Hw6396GHS8+UVFXh07iuIuP1GBA7si6FTJ+PCpdw69ymEwNQPFyLu7oEw3NwHNz75CDJPn5SerzCZMPqlqQge3A9J9w/F+t9/dXj9nE+XYdK8Oc57k57GoAfClD0jak28LhQ0Gk39vvi8DANB+Tq1aoNzq76Rblvmvy8998SCN/HFz5uxYnoafpq3CGdzcnD31Ml17u/VT5birVWfYeGTz+HXdxfDaDDgln9PQnlFBQDgv1+uwY7DB7FtwQd46NY7MWr2FAghAABZ587gvS/X4qXx/3TdG5ZbXJSiF9OpjdeFAgA0CzIgjBezSRgI6uCj0yE2IlK6RYaGAgAKiovxwdfr8MYjT2BA9x5IbtcBi5+Zip/37sYv+/bUuC8hBOau/AQvjn4Qd/RJRdeEtlj63AyczcnB2i0/AQAOnMjC7b1S0Kl1Ah696x5czM9DTkE+AOCfb/wHr0yYiGCjcpelrJNWC8RGyl0Kl/DKUACAzlGsLQAMBDXJPHMK8UMHoc3IO3Df7Bdx8sJ5AMCOwwdQaTbjxuSe0rbtW7bCVTGx2La/5lDIOncG5y/lOrwmJDAQ13XshG37dwMArk5IwpY9u1BWUY7vfvsFcRGRiAwJRfoP38DfT4+7Uvq78N3KLDrMdn2CCqnzXdVDVIAe0QF+yC41yV0U2TAQ1OO6jp2w5NlpaNeiJc7l5mDGR+8h5bF/YO/iT3H+Ui78fH0RGuT4WceEheN8Lf0K9sdjwiOqvCZCeu7Bwbdj97FMdBxzLyJDQvD5tDTkFRVi6uJF2DR3IV58/118uuF7JDRrjg8nT0GzqGgXvHOZxKvovVThtaEAAJ2jgrHhRI7cxZAFA0FdBl3XW/q9a0JbXNehM1qOuA2fb1wPg941w7B9fXyw4PFnHB4b958ZeOzue7Ez8xDWbtmEXR98jFc/XYrH5r+GVTNfdUk53C7IaLuplNc2HwG2ifKaB/nLXQy3YyCoX2hQEJKaX4UjZ04hNjwCpspK5BcVOWxzIe8SYqvUBOzsj1cdoXQhL7fW12zc+Tv2HT+GiXcNx6aMPzD4+t4wGgwY3u9GbMr4wwnvykO0ipe7BC7l1aEAAB0jg6C+8QO1YyB4h+LSUhw9ewZxEZFITuoAXx8f/PjHdun5QyeP4+SF87ihY5caX986rhliwyMcXlNYUoxf9+/DDR27VtveNuT1VSx66nnodDpYrBZUms0AgEqzGRaLxcnvUCahQUC4OtZNqI3Xh0Kgnw9aeckFbQwE9Xr6nbn4KWMHjp87i5/37sJdU/4NnVaLkX+7BSGBgfj74Dvw5DtvYuPO37Hj0AGMe2UmbujUBdd3+isU2o8ehjWbNwKwDd1+fNhIzF72If5v60/Yc+wIHnh5OuIjI3Fnn9Rqx5+17AMMvq4XurVtBwDo3flqrN68EbuPZuLtNSvQu8vV7jkRrtamudwlcDmv7lOw6xARiJMFZbD8OcZajRgI6nb6YjZGznoRuYUFiAoJQ58uV+OXdxYjKtQ2e+ebjz4BrVaDoVOfQUWlCbf0uB7vVOkPOHTqBAqKi6X7k0c+gJLyMjz02svILy5Gny5X49tX34J/lT6KvceO4PON65Hxfrr02LDUv2FTxg6kPPYPtGvREh+/ONuF795NIsNU3ZdgpxFCxd+EDbDvYiEOXSqRuxguwUAgaiKNBri2ExCg/j5Ir28+sksKD4SfVn29CwwEIieIjfCKQAAYChJfnRZJEeq6+pKBQOQEWi3QUt0jji7HULhMQqgRQX7q6GZhIBA5SbNoQK+u6bHrwlC4jE6rQXJsiOKHqDIQiJzERwe0iJW7FG7FUKgi3OCHtuHKHWHAQCByohaxqp3jqDYMhRp0iAhSZDMSA4HIifx8gWYxcpfC7RgKNVBiMxIDgcjJWsYDOu/7ivS+d1xP4QY/JIYpoxmJgUDkZEYDEKfO9RKuhKFQh46RQR6/dCcDgcjJNBqgXStVrqpWHwyFOtiakUI9thmJgUDkAi1ivWI6i9owFK7AU5uRGAhELmA0AC3j5C6FrBgK9eBpzUgMBCIXsDcbab37a9G73309eVIzEgOByEW8vNnIjqFQT57QjMRAIHIRNhtJGAoN0DEyCGH+vrIcm4FA5CJsNnLAs9AAOq0G18eHwd/NF7QwEIhciM1GDhgKDWTw1eH6ZmFw19ILDAQiF2KzUTUMhUYIN/ihW4zrF+9mIBC5EJuNasSz0UgtQwJc2vHMQCByMTYb1Yih0ARdooIQY9RfecMGYiAQuVhQAJuNasFQaAKNRoOecaEIdOKFbQwEIhfz8wU6JbLZqBY8K03kq9Pihmbh8HVCzzMDgcjFNBqgU4JXLa/ZUAwFJwjy80GP+NAm7YOBQOQGSS2B4EC5S+HRGApOEmv0R+eoenyp14CBQOQGzWKAWO9cI6EhGApOlBQeiKuCDQ16DQOByA3CgoGE5nKXQhEYCk7WLSYEEYb6tVcyEIjcwKAHOrbx2kVzGoqh4GQ6rQa9moddcY4kBgKRG+h0QOdEwMdH7pIoBkPBBXy1WvRuHo4Qfc1/iAwEIjfp0BoIaFiTrrdjKLiIn06LPs0jEOznGAwMBCI3ad0MiAiVuxSKw1BwIb2PFn1ahEsXtzEQiNwkOhy4ilcsN4ZGCCHkLoTalZktOFNUXr+5khgIRE0TZASuaccrlhuJoeBJGAhETWM0AFe3A3zZsdxYjFJPwUAgapoAf+DqJAZCEzEUPAEDgahpDPo/awjyLJerJgwFuTEQiJrG388WCH4MBGdgKMiJgUDUNPo/A4GznjoNQ0FOOq3tRkQNZw8Ef+cvdOXNOPpIbqZKW22htFzukhAph0EPdE1iILgAQ8ETVFYCuw8DxWVyl4TI8wX42wKBTUYuwVDwFJVmYM9hoKhU7pIQeS6jwRYI7FR2GYaCJzFbgD2ZQGGx3CUh8jyBAbZA4HUILsVeTk/iowO6tgUiw+QuCZFnCQ9p8pXKGo2mztv06dOdV14FY03BEwkBnDwHHD8rd0mI5Nci1jbjaRMXyTl//rz0+2effYapU6fi0KFD0mOBgYEIDLSt3yyEgMVigY8XrsPAmoIn0miAlvFApwQOWSXvpdUA7VsDbZo7ZdW02NhY6RYSEgKNRiPdP3jwIIKCgvDNN98gOTkZer0eW7ZswdixY3HnnXc67Ofxxx9Hv379pPtWqxVpaWlo3bo1DAYDrr76aqxcubLJ5ZWL98WgkkSGAdfogX1HgHKT3KUhch8/X9uKaUH1mFnYiZ599lm89tpraNOmDcLC6teMm5aWhuXLl2PhwoVo27Yt/ve//+H+++9HVFQUUlNTXVxi52MoeLrAAKB7B2DfMaCgSO7SELlekNFWS5ZhyOnMmTNx00031Xv7iooKvPzyy1i/fj1uuOEGAECbNm2wZcsWLFq0iKFALuLra5v98chJ4OxFuUtD5DoxEUBSS9nWQrj22msbtP2RI0dQWlpaLUhMJhO6devmzKK5DUNBKTQaoG1L2zjtI6dsndFEatKmua1TWUZGo2NzlVarRdWxOJWVf81VVlxsGz7+1VdfoVmzZg7b6fXKvNqaoaA08dG2hcj3H7Vd8EakdD46oEMb27BTDxMVFYW9e/c6PJaRkQHfP6fo7tixI/R6PU6ePKnIpqKaMBSUKDTI1s+w9whQwqkxSMEMeqBzW9vUFR5owIABmDNnDpYuXYobbrgBy5cvx969e6WmoaCgIDz99NN44oknYLVa0adPHxQUFGDr1q0IDg7GmDFjZH4HDcdQUCp/PdCtva0p6XyO3KUharjocKDtVYAHXwtwyy23YMqUKZg8eTLKy8vx4IMP4oEHHsCePXukbWbNmoWoqCikpaXh2LFjCA0NRffu3fH888/LWPLG48VranCpADh8HKjgugykAL4+ts5kXrnvkRgKamE2A0dPs9ZAni06HEi8ivMXeTCGgtqw1kCeiLUDxWAoqBFrDeRJWDtQFIaCml0qAA6fACo4RQbJwM/X1pHM2oGiMBTUzmwBjnKEErkZaweKxVDwFqw1kDuwdqB4DAVvYrbY1mg4m81pMsi5NBogLhJo1Yy1A4VjKHij8gpbOFzIlbskpAbR4UCreMDgmVclU8MwFLxZSRmQdQbIzZe7JKREYcG2SewCA+QuCTkRQ4GAgmIg67TtJ9GVBBmBNs2A0GC5S0IuwFCgv+Tm22oOnGSPahLgb1srmZ3IqsZQIEdCANmXgONnuAQo2eh9gZbNgNgIp6yVTJ6NoUA1s1qBcxeBE+e4boO38tEBV8UBzaJlWwmN3I+hQHWzWIDzubZhrKXlcpeG3MHgD8RH2WoGHjytNbkGQ4HqL7/IFg45+bzOQY0iQ20r+4WxA9mbMRSo4UyVtqalcxc5G6vS+fkCsZG2moHeT+7SkAdgKFDjCWEbsXQm21aLIOUICbTVCiJD2V9ADhgK5Byl5bampQu5tuk0yPPodEBMuC0MjAa5S0MeiqFAzmWx2Ia0XsjlxXCeIsho6zSOibAFA1EdGArkOpWVQG6BrYkprxCwWOUukXfQam2dxREhQESord+AqJ4YCuQeVqut3yE333ZjB7Vz+fn+FQJhwewnoEZjKJA8ikr+DIgCoLhU7tIok9FgC4GIEFsTEa82JidgKJD8Kky2gMjJt/VDWNnMVCOtFgg22kYMRYQC/nq5S0QqxFAgzyKEbSRTcamtNlFUavvd24JCqwUCDUCgEQgKsE1PbTSwNkAux1Agz6f2oKgaAEFG24ykDACSAUOBlKlqUJSU2a60NlV67nUSPjpbh7CfLxBgYACQR2IokPpYrbbRTaZKwGSy/ZTu/3mrMDkvPC7/stf7Xfb7nz/9/nxMxxFB5PkYCuS9rFZbQFitgICt9iEEYBV//Q7Y/hdvv2ntv8PW7OPny+GfpCoMBSIikvC/OEREJGEoEBGRhKFAREQShgIREUkYCkREJGEoEBGRhKFAREQShgIREUkYCkREJGEoEBGRhKFAREQShgIREUkYCkREJGEoEBGRhKFAREQShgIREUkYCkREJGEoEBGRhKFAREQShgIREUkYCkREJGEoEBGRhKFAREQShgIREUkYCkREJGEoEBGRhKFAREQShgIREUkYCkREJGEoEBGRhKFAREQShgIREUkYCkREJGEoEBGRhKFAREQShgIREUkYCkREJGEoEBGRhKFAREQShgIREUn+HxEmZNFxXtRRAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"show_distribution(Y_train_samplied, column_name=target_column)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Обучение модели"
]
},
{
"cell_type": "code",
"execution_count": 430,
"metadata": {},
"outputs": [],
"source": [
"model_manual = RandomForestClassifier()\n",
"\n",
"start_time = time.time()\n",
"\n",
"model_manual.fit(X_train, Y_train)\n",
"\n",
"train_time = time.time() - start_time"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ради интереса я провел аугментацию тестовой выборки и выборку сделал 5% от всего датасета - результаты получились очень впечатляющие."
]
},
{
"cell_type": "code",
"execution_count": 440,
"metadata": {},
"outputs": [],
"source": [
"X_test_samplied, Y_test_samplied = X_test, Y_test\n",
"X_test_samplied, Y_test_samplied = undersample(X_test_samplied, Y_test_samplied)\n",
"\n",
"X_test, Y_test = X_test_samplied, Y_test_samplied\n",
"\n",
"Y_pred = model_manual.predict(X_test)\n",
"Y_pred_proba = model_manual.predict_proba(X_test)[:, 1]"
]
},
{
"cell_type": "code",
"execution_count": 441,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Время обучения модели: 45.07 секунд\n",
"ROC-AUC: 0.99\n",
"F1-Score: 0.95\n",
"Матрица ошибок:\n",
"[[671 1]\n",
" [ 59 613]]\n",
"Отчет по классификации:\n",
" precision recall f1-score support\n",
"\n",
" False 0.92 1.00 0.96 672\n",
" True 1.00 0.91 0.95 672\n",
"\n",
" accuracy 0.96 1344\n",
" macro avg 0.96 0.96 0.96 1344\n",
"weighted avg 0.96 0.96 0.96 1344\n",
"\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAJwCAYAAACZACVsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABejElEQVR4nO3deVxU5fv/8feAbIKAmoCaC6m5m1sq7qafLG0xTTNLMTXTXHLJlHI3o49ZLlmamWCLuZRLWbl8XEvJXELNLTPNFTQVcWMR5veHP+fbBMwwCnOAeT17nEfMfe5zzjWDyOV13+c+JrPZbBYAAAAy5WZ0AAAAAHkZyRIAAIANJEsAAAA2kCwBAADYQLIEAABgA8kSAACADSRLAAAANpAsAQAA2FDI6AAAwCgpKSm6ePGi0tPTVapUKaPDAZBHUVkC4FJ27typbt266Z577pGXl5dKliypTp06GR0WgDyMZAn4l+joaJlMJplMJv30008Z9pvNZpUpU0Ymk0mPPfaYARHiTq1cuVJNmzbVgQMHNHnyZK1bt07r1q3TRx99ZHRoAPIwhuGALHh7e2vhwoVq2rSpVfvmzZt16tQpeXl5GRQZ7sTFixfVp08ftW3bVkuXLpWnp6fRIQHIJ6gsAVlo166dli5dqps3b1q1L1y4UPXq1VNISIhBkeFOREVFKSkpSdHR0SRKABxCsgRk4dlnn9WFCxe0bt06S1tKSoq++uordevWLdNjpk6dqsaNG6t48eLy8fFRvXr19NVXX1n1uT3El9XWsmVLSdKmTZtkMpm0ePFivf766woJCZGvr6+eeOIJnTx50uqcLVu2tBx3244dOyzn/Pf1Bw4cmCH2xx57TOXLl7dq27t3r3r27Kn77rtP3t7eCgkJUa9evXThwgVbH53FuXPn1Lt3bwUHB8vb21sPPPCAFixYYNXn+PHjMplMmjp1qlV7jRo1Mryn0aNHy2Qy6erVq1bvZ/z48Vb93nnnHavPUpJ+/vln1a5dW2+99ZbKlCkjLy8vVapUSW+//bbS09Otjr9586YmTZqkChUqyMvLS+XLl9frr7+u5ORkq37ly5dXz549rdr69u0rb29vbdq0yf4HBCBfYBgOyEL58uUVFhamL7/8Uo8++qgk6YcfftDly5fVtWtXzZw5M8MxM2bM0BNPPKHnnntOKSkpWrRokTp37qxVq1apffv2kqTPPvvM0v/HH3/U3LlzNW3aNN1zzz2SpODgYKtzTp48WSaTSSNHjtS5c+c0ffp0tWnTRrGxsfLx8cky/pEjR971Z7Bu3Tr9+eefeuGFFxQSEqL9+/dr7ty52r9/v37++ecMidg/3bhxQy1bttQff/yhgQMHKjQ0VEuXLlXPnj2VkJCgV1555a7jy0xCQoIiIyMztF+4cEE//fSTfvrpJ/Xq1Uv16tXT+vXrFRERoePHj2vOnDmWvn369NGCBQv09NNPa/jw4dq+fbsiIyN18OBBLV++PMtrjxs3Tp988okWL16cIdEDkI+ZAViJiooySzLv2LHDPGvWLHORIkXM169fN5vNZnPnzp3NrVq1MpvNZnO5cuXM7du3tzr2dr/bUlJSzDVq1DA/9NBDNq917NixDPs2btxolmQuXbq0OTEx0dK+ZMkSsyTzjBkzLG0tWrQwt2jRwvL6+++/N0syP/LII+Z//5hLMg8YMCDD9dq3b28uV66czfdjNpvNX375pVmSecuWLZm+p9umT59ulmT+/PPPLW0pKSnmsLAws5+fn+U9HTt2zCzJ/M4771gdX716dav3ZDabzW+88YZZkvnKlStW72fcuHGW16+99po5KCjIXK9ePavjW7RoYZZkHj9+vNU5e/bsaZZk3rdvn9lsNptjY2PNksx9+vSx6vfqq6+aJZk3bNhgaStXrpw5PDzcbDabzR999JFZkvn999+3+bkAyH8YhgNs6NKli27cuKFVq1bpypUrWrVqVZZDcJKsKj2XLl3S5cuX1axZM+3evfuOY+jRo4eKFClief3000+rZMmS+v777zPtbzabFRERoU6dOqlhw4Z3fF3J+v0kJSXp77//VqNGjSTJ7nv6/vvvFRISomeffdbS5uHhocGDB+vq1avavHnzXcWWmdOnT+v999/XmDFj5Ofnl2G/u7u7hg4datU2fPhwSdJ3331niVuShg0bZrPfP61cuVIvv/yyRowYkekQJ4D8jWQJsKFEiRJq06aNFi5cqGXLliktLU1PP/10lv1XrVqlRo0aydvbW8WKFVOJEiU0e/ZsXb58+Y5jqFSpktVrk8mkihUr6vjx45n2/+KLL7R//3699dZbd3zN2y5evKhXXnlFwcHB8vHxUYkSJRQaGipJdt/TX3/9pUqVKsnNzfqvmapVq1r257Rx48apVKlSeumllzLsM5lMKlWqlPz9/a3aK1euLDc3N8vn+ddff8nNzU0VK1a06hcSEqLAwMAMccfGxurZZ59VWlqaLl68mLNvCECewJwlwI5u3brpxRdfVFxcnB599FEFBgZm2u/HH3/UE088oebNm+vDDz9UyZIl5eHhoaioKC1cuNApsaakpGjMmDHq3bu37r///rs+X5cuXbRt2zaNGDFCtWvXlp+fn9LT0/XII49kmBRttIMHDyo6Olqff/65PDw8Muy3Nb8rM7bmY/3Tnj179Oijj6p169YaMWKEnn/+eeYrAQUMyRJgx1NPPaWXXnpJP//8sxYvXpxlv6+//lre3t5as2aN1RpMUVFRd3X9I0eOWL02m836448/VKtWrQx9P/zwQ507dy7D3WF34tKlS1q/fr0mTJigsWPHZhlPVsqVK6e9e/cqPT3dqrp06NAhy/6cFBERodq1a+uZZ57JdH9oaKjWrl2rK1euWA1r/v7770pPT7fcCViuXDmlp6fryJEjliqYJMXHxyshISFD3DVr1tTSpUvl4+OjpUuXqm/fvtq7d6+8vb1z9P0BMA7DcIAdfn5+mj17tsaPH6/HH388y37u7u4ymUxKS0uztB0/flwrVqy4q+t/+umnunLliuX1V199pbNnz1ru0LvtypUrmjx5soYOHZoja0C5u7tLupWc/dP06dOzdXy7du0UFxdnlWDevHlT77//vvz8/NSiRYu7jvG2mJgYrVy5Um+//XaWFaF27dopLS1Ns2bNsmp/7733JMlyt2K7du0kZXyf/+53W926deXr6ys3NzfNmzdPx48f18SJE+/6PQHIO6gsAdkQHh5ut0/79u313nvv6ZFHHlG3bt107tw5ffDBB6pYsaL27t17x9cuVqyYmjZtqhdeeEHx8fGaPn26KlasqBdffNGq3+7du3XPPffotddes3vOEydOaPXq1VZt58+f140bN7R69Wq1aNFC/v7+at68uaZMmaLU1FSVLl1aa9eu1bFjx7IVd9++ffXRRx+pZ8+e2rVrl8qXL6+vvvpKW7du1fTp062qO5J0+PBhq5iuXr0qNzc3q7Y///wz02utXbtW//nPf9SmTZss42nXrp3atGmjN954Q8eOHVPt2rW1YcMGff311+rXr59q1KghSXrggQcUHh6uuXPnKiEhQS1atNAvv/yiBQsWqEOHDmrVqlWW16hR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",
"text/plain": [
"<Figure size 700x700 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Метрики\n",
"roc_auc = roc_auc_score(Y_test, Y_pred_proba)\n",
"f1 = f1_score(Y_test, Y_pred)\n",
"\n",
"conf_matrix = confusion_matrix(Y_test, Y_pred)\n",
"class_report = classification_report(Y_test, Y_pred)\n",
"\n",
"# Вывод результатов\n",
"print(f'Время обучения модели: {train_time:.2f} секунд')\n",
"print(f'ROC-AUC: {roc_auc:.2f}')\n",
"print(f'F1-Score: {f1:.2f}')\n",
"print('Матрица ошибок:')\n",
"print(conf_matrix)\n",
"print('Отчет по классификации:')\n",
"print(class_report)\n",
"\n",
"# Визуализация матрицы ошибок\n",
"plt.figure(figsize=(7, 7))\n",
"sns.heatmap(\n",
" conf_matrix,\n",
" annot=True,\n",
" fmt='d',\n",
" cmap='Blues',\n",
" xticklabels=['Нет приступа', 'Был приступ'],\n",
" yticklabels=['Нет приступа', 'Был приступ']\n",
")\n",
"plt.title('Матрица ошибок')\n",
"plt.xlabel('Предсказанный класс')\n",
"plt.ylabel('Истинный класс')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# **Вывод к лабораторной работе:**\n",
"\n",
"После обучения модели для предсказания сердечного приступа с использованием логистической регрессии были получены следующие результаты:\n",
"\n",
"1. **Время обучения модели:** 45.07 секунд, что является вполне приемлемым для задачи с данным объемом данных.\n",
"\n",
"2. **ROC-AUC:** Значение ROC-AUC составляет 0.99, что указывает на отличное качество модели в различении классов. Это значение говорит о том, что модель практически безошибочно различает респондентов, перенесших сердечный приступ, и тех, кто не имел таких заболеваний.\n",
"\n",
"3. **F1-Score:** F1-Score равен 0.95, что является отличным результатом. Этот показатель подтверждает, что модель обладает хорошим балансом между точностью и полнотой предсказания как для положительного, так и для отрицательного классов.\n",
"\n",
"4. **Матрица ошибок:**\n",
" - Верно классифицированных отрицательных примеров (False) — 671.\n",
" - Ложные положительные (False positives) — 1.\n",
" - Ложные отрицательные (False negatives) — 59.\n",
" - Верно классифицированных положительных примеров (True) — 613.\n",
"\n",
" Модель продемонстрировала отличные результаты при классификации как положительных, так и отрицательных случаев. Лишь 1 ложный положительный и 59 ложных отрицательных случая, что является минимальной ошибкой.\n",
"\n",
"5. **Метрики по классификации:**\n",
" - **Precision (точность)** для класса \"True\" равен 1.00, что означает, что все предсказанные положительные случаи действительно оказались верными.\n",
" - **Recall (полнота)** для класса \"True\" составил 0.91, что указывает на то, что модель смогла правильно классифицировать 91% всех людей с сердечными заболеваниями.\n",
" - **Precision** для класса \"False\" составляет 0.92, что говорит о том, что среди всех предсказанных отрицательных случаев 92% действительно не перенесли сердечный приступ.\n",
" - **Recall** для класса \"False\" равен 1.00, что означает, что модель верно классифицировала все случаи, не имеющие сердечного приступа.\n",
"\n",
"6. **Accuracy (точность модели):** 0.96, что является отличным результатом. Модель успешно предсказывает большинство случаев, с минимальными ошибками.\n",
"\n",
"### Оценка качества модели:\n",
"Модель показывает выдающиеся результаты с **ROC-AUC** 0.99 и **F1-Score** 0.95. Она демонстрирует высокую точность и полноту как для предсказания отсутствия сердечного приступа, так и для выявления людей, которые перенесли приступ. Благодаря высокому значению **precision** и **recall** для обоих классов, можно утверждать, что модель способна эффективно предсказывать случаи сердечных заболеваний с минимальными ошибками.\n",
"\n",
"**Рекомендации:** Модель продемонстрировала отличные результаты и готова к использованию для предсказания сердечных заболеваний в реальных условиях. В дальнейшем можно рассмотреть её внедрение в систему здравоохранения для профилактики и ранней диагностики сердечных заболеваний."
]
}
],
"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
}