3903 lines
386 KiB
Plaintext
3903 lines
386 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Начало лабораторной работы"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"*Вариант 3:* Диабет у индейцев Пима "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 46,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Index(['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin',\n",
|
||
" 'BMI', 'DiabetesPedigreeFunction', 'Age', 'Outcome'],\n",
|
||
" dtype='object')\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Pregnancies</th>\n",
|
||
" <th>Glucose</th>\n",
|
||
" <th>BloodPressure</th>\n",
|
||
" <th>SkinThickness</th>\n",
|
||
" <th>Insulin</th>\n",
|
||
" <th>BMI</th>\n",
|
||
" <th>DiabetesPedigreeFunction</th>\n",
|
||
" <th>Age</th>\n",
|
||
" <th>Outcome</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>6</td>\n",
|
||
" <td>148</td>\n",
|
||
" <td>72</td>\n",
|
||
" <td>35</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>33.6</td>\n",
|
||
" <td>0.627</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>66</td>\n",
|
||
" <td>29</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>26.6</td>\n",
|
||
" <td>0.351</td>\n",
|
||
" <td>31</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>8</td>\n",
|
||
" <td>183</td>\n",
|
||
" <td>64</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>23.3</td>\n",
|
||
" <td>0.672</td>\n",
|
||
" <td>32</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>89</td>\n",
|
||
" <td>66</td>\n",
|
||
" <td>23</td>\n",
|
||
" <td>94</td>\n",
|
||
" <td>28.1</td>\n",
|
||
" <td>0.167</td>\n",
|
||
" <td>21</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>0</td>\n",
|
||
" <td>137</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>35</td>\n",
|
||
" <td>168</td>\n",
|
||
" <td>43.1</td>\n",
|
||
" <td>2.288</td>\n",
|
||
" <td>33</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>763</th>\n",
|
||
" <td>10</td>\n",
|
||
" <td>101</td>\n",
|
||
" <td>76</td>\n",
|
||
" <td>48</td>\n",
|
||
" <td>180</td>\n",
|
||
" <td>32.9</td>\n",
|
||
" <td>0.171</td>\n",
|
||
" <td>63</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>764</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>122</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>27</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>36.8</td>\n",
|
||
" <td>0.340</td>\n",
|
||
" <td>27</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>765</th>\n",
|
||
" <td>5</td>\n",
|
||
" <td>121</td>\n",
|
||
" <td>72</td>\n",
|
||
" <td>23</td>\n",
|
||
" <td>112</td>\n",
|
||
" <td>26.2</td>\n",
|
||
" <td>0.245</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>766</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>126</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>30.1</td>\n",
|
||
" <td>0.349</td>\n",
|
||
" <td>47</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>767</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>93</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>31</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>30.4</td>\n",
|
||
" <td>0.315</td>\n",
|
||
" <td>23</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>768 rows × 9 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n",
|
||
"0 6 148 72 35 0 33.6 \n",
|
||
"1 1 85 66 29 0 26.6 \n",
|
||
"2 8 183 64 0 0 23.3 \n",
|
||
"3 1 89 66 23 94 28.1 \n",
|
||
"4 0 137 40 35 168 43.1 \n",
|
||
".. ... ... ... ... ... ... \n",
|
||
"763 10 101 76 48 180 32.9 \n",
|
||
"764 2 122 70 27 0 36.8 \n",
|
||
"765 5 121 72 23 112 26.2 \n",
|
||
"766 1 126 60 0 0 30.1 \n",
|
||
"767 1 93 70 31 0 30.4 \n",
|
||
"\n",
|
||
" DiabetesPedigreeFunction Age Outcome \n",
|
||
"0 0.627 50 1 \n",
|
||
"1 0.351 31 0 \n",
|
||
"2 0.672 32 1 \n",
|
||
"3 0.167 21 0 \n",
|
||
"4 2.288 33 1 \n",
|
||
".. ... ... ... \n",
|
||
"763 0.171 63 0 \n",
|
||
"764 0.340 27 0 \n",
|
||
"765 0.245 30 0 \n",
|
||
"766 0.349 47 1 \n",
|
||
"767 0.315 23 0 \n",
|
||
"\n",
|
||
"[768 rows x 9 columns]"
|
||
]
|
||
},
|
||
"execution_count": 46,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"from sklearn import set_config\n",
|
||
"\n",
|
||
"# Установим параметры для вывода\n",
|
||
"set_config(transform_output=\"pandas\")\n",
|
||
"\n",
|
||
"random_state = 42\n",
|
||
"\n",
|
||
"# Подключим датафрейм и выгрузим данные\n",
|
||
"df = pd.read_csv(\"C:/Users/TIGR228/Desktop/МИИ/Lab1/AIM-PIbd-31-Afanasev-S-S/static/csv/diabetes.csv\")\n",
|
||
"print(df.columns)\n",
|
||
"df"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Бизнес-цели:\n",
|
||
"\n",
|
||
"1. Прогнозирование риска развития диабета\n",
|
||
"\n",
|
||
"Описание: Классифицировать пациентов на основе их медицинских данных для определения риска развития диабета (используя целевой признак \"Outcome\"). Эта задача актуальна для раннего выявления диабета и разработки профилактических мер, направленных на улучшение здоровья населения.\n",
|
||
"\n",
|
||
"2. Оценка факторов, влияющих на развитие диабета\n",
|
||
"\n",
|
||
"Описание: Предсказать вероятность развития диабета у новых пациентов на основе их медицинских характеристик (таких как уровень глюкозы, артериальное давление, индекс массы тела и другие параметры). Это позволит медицинским специалистам планировать лечение и наблюдение в зависимости от индивидуальных рисков пациентов. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Определение достижимого уровня качества модели для первой задачи "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Разделение набора данных на обучающую и тестовые выборки (80/20) для задачи классификации\n",
|
||
"Целевой признак -- Outcome"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 47,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'X_train'"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Pregnancies</th>\n",
|
||
" <th>Glucose</th>\n",
|
||
" <th>BloodPressure</th>\n",
|
||
" <th>SkinThickness</th>\n",
|
||
" <th>Insulin</th>\n",
|
||
" <th>BMI</th>\n",
|
||
" <th>DiabetesPedigreeFunction</th>\n",
|
||
" <th>Age</th>\n",
|
||
" <th>Outcome</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>353</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>62</td>\n",
|
||
" <td>12</td>\n",
|
||
" <td>43</td>\n",
|
||
" <td>27.2</td>\n",
|
||
" <td>0.580</td>\n",
|
||
" <td>24</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>711</th>\n",
|
||
" <td>5</td>\n",
|
||
" <td>126</td>\n",
|
||
" <td>78</td>\n",
|
||
" <td>27</td>\n",
|
||
" <td>22</td>\n",
|
||
" <td>29.6</td>\n",
|
||
" <td>0.439</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>373</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>105</td>\n",
|
||
" <td>58</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>94</td>\n",
|
||
" <td>34.9</td>\n",
|
||
" <td>0.225</td>\n",
|
||
" <td>25</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>46</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>146</td>\n",
|
||
" <td>56</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>29.7</td>\n",
|
||
" <td>0.564</td>\n",
|
||
" <td>29</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>682</th>\n",
|
||
" <td>0</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>64</td>\n",
|
||
" <td>39</td>\n",
|
||
" <td>105</td>\n",
|
||
" <td>44.6</td>\n",
|
||
" <td>0.366</td>\n",
|
||
" <td>22</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>451</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>134</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>28.9</td>\n",
|
||
" <td>0.542</td>\n",
|
||
" <td>23</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>113</th>\n",
|
||
" <td>4</td>\n",
|
||
" <td>76</td>\n",
|
||
" <td>62</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>34.0</td>\n",
|
||
" <td>0.391</td>\n",
|
||
" <td>25</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>556</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>97</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>38.1</td>\n",
|
||
" <td>0.218</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>667</th>\n",
|
||
" <td>10</td>\n",
|
||
" <td>111</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>27</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>27.5</td>\n",
|
||
" <td>0.141</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>107</th>\n",
|
||
" <td>4</td>\n",
|
||
" <td>144</td>\n",
|
||
" <td>58</td>\n",
|
||
" <td>28</td>\n",
|
||
" <td>140</td>\n",
|
||
" <td>29.5</td>\n",
|
||
" <td>0.287</td>\n",
|
||
" <td>37</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>614 rows × 9 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n",
|
||
"353 1 90 62 12 43 27.2 \n",
|
||
"711 5 126 78 27 22 29.6 \n",
|
||
"373 2 105 58 40 94 34.9 \n",
|
||
"46 1 146 56 0 0 29.7 \n",
|
||
"682 0 95 64 39 105 44.6 \n",
|
||
".. ... ... ... ... ... ... \n",
|
||
"451 2 134 70 0 0 28.9 \n",
|
||
"113 4 76 62 0 0 34.0 \n",
|
||
"556 1 97 70 40 0 38.1 \n",
|
||
"667 10 111 70 27 0 27.5 \n",
|
||
"107 4 144 58 28 140 29.5 \n",
|
||
"\n",
|
||
" DiabetesPedigreeFunction Age Outcome \n",
|
||
"353 0.580 24 0 \n",
|
||
"711 0.439 40 0 \n",
|
||
"373 0.225 25 0 \n",
|
||
"46 0.564 29 0 \n",
|
||
"682 0.366 22 0 \n",
|
||
".. ... ... ... \n",
|
||
"451 0.542 23 1 \n",
|
||
"113 0.391 25 0 \n",
|
||
"556 0.218 30 0 \n",
|
||
"667 0.141 40 1 \n",
|
||
"107 0.287 37 0 \n",
|
||
"\n",
|
||
"[614 rows x 9 columns]"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'y_train'"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Outcome</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>353</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>711</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>373</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>46</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>682</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>451</th>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>113</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>556</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>667</th>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>107</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>614 rows × 1 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Outcome\n",
|
||
"353 0\n",
|
||
"711 0\n",
|
||
"373 0\n",
|
||
"46 0\n",
|
||
"682 0\n",
|
||
".. ...\n",
|
||
"451 1\n",
|
||
"113 0\n",
|
||
"556 0\n",
|
||
"667 1\n",
|
||
"107 0\n",
|
||
"\n",
|
||
"[614 rows x 1 columns]"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'X_test'"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Pregnancies</th>\n",
|
||
" <th>Glucose</th>\n",
|
||
" <th>BloodPressure</th>\n",
|
||
" <th>SkinThickness</th>\n",
|
||
" <th>Insulin</th>\n",
|
||
" <th>BMI</th>\n",
|
||
" <th>DiabetesPedigreeFunction</th>\n",
|
||
" <th>Age</th>\n",
|
||
" <th>Outcome</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>44</th>\n",
|
||
" <td>7</td>\n",
|
||
" <td>159</td>\n",
|
||
" <td>64</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>27.4</td>\n",
|
||
" <td>0.294</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>672</th>\n",
|
||
" <td>10</td>\n",
|
||
" <td>68</td>\n",
|
||
" <td>106</td>\n",
|
||
" <td>23</td>\n",
|
||
" <td>49</td>\n",
|
||
" <td>35.5</td>\n",
|
||
" <td>0.285</td>\n",
|
||
" <td>47</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>700</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>122</td>\n",
|
||
" <td>76</td>\n",
|
||
" <td>27</td>\n",
|
||
" <td>200</td>\n",
|
||
" <td>35.9</td>\n",
|
||
" <td>0.483</td>\n",
|
||
" <td>26</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>630</th>\n",
|
||
" <td>7</td>\n",
|
||
" <td>114</td>\n",
|
||
" <td>64</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>27.4</td>\n",
|
||
" <td>0.732</td>\n",
|
||
" <td>34</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>81</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>74</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.102</td>\n",
|
||
" <td>22</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>32</th>\n",
|
||
" <td>3</td>\n",
|
||
" <td>88</td>\n",
|
||
" <td>58</td>\n",
|
||
" <td>11</td>\n",
|
||
" <td>54</td>\n",
|
||
" <td>24.8</td>\n",
|
||
" <td>0.267</td>\n",
|
||
" <td>22</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>637</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>94</td>\n",
|
||
" <td>76</td>\n",
|
||
" <td>18</td>\n",
|
||
" <td>66</td>\n",
|
||
" <td>31.6</td>\n",
|
||
" <td>0.649</td>\n",
|
||
" <td>23</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>593</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>82</td>\n",
|
||
" <td>52</td>\n",
|
||
" <td>22</td>\n",
|
||
" <td>115</td>\n",
|
||
" <td>28.5</td>\n",
|
||
" <td>1.699</td>\n",
|
||
" <td>25</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>425</th>\n",
|
||
" <td>4</td>\n",
|
||
" <td>184</td>\n",
|
||
" <td>78</td>\n",
|
||
" <td>39</td>\n",
|
||
" <td>277</td>\n",
|
||
" <td>37.0</td>\n",
|
||
" <td>0.264</td>\n",
|
||
" <td>31</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>273</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>71</td>\n",
|
||
" <td>78</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>33.2</td>\n",
|
||
" <td>0.422</td>\n",
|
||
" <td>21</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>154 rows × 9 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n",
|
||
"44 7 159 64 0 0 27.4 \n",
|
||
"672 10 68 106 23 49 35.5 \n",
|
||
"700 2 122 76 27 200 35.9 \n",
|
||
"630 7 114 64 0 0 27.4 \n",
|
||
"81 2 74 0 0 0 0.0 \n",
|
||
".. ... ... ... ... ... ... \n",
|
||
"32 3 88 58 11 54 24.8 \n",
|
||
"637 2 94 76 18 66 31.6 \n",
|
||
"593 2 82 52 22 115 28.5 \n",
|
||
"425 4 184 78 39 277 37.0 \n",
|
||
"273 1 71 78 50 45 33.2 \n",
|
||
"\n",
|
||
" DiabetesPedigreeFunction Age Outcome \n",
|
||
"44 0.294 40 0 \n",
|
||
"672 0.285 47 0 \n",
|
||
"700 0.483 26 0 \n",
|
||
"630 0.732 34 1 \n",
|
||
"81 0.102 22 0 \n",
|
||
".. ... ... ... \n",
|
||
"32 0.267 22 0 \n",
|
||
"637 0.649 23 0 \n",
|
||
"593 1.699 25 0 \n",
|
||
"425 0.264 31 1 \n",
|
||
"273 0.422 21 0 \n",
|
||
"\n",
|
||
"[154 rows x 9 columns]"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'y_test'"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Outcome</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>44</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>672</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>700</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>630</th>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>81</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>32</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>637</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>593</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>425</th>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>273</th>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>154 rows × 1 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Outcome\n",
|
||
"44 0\n",
|
||
"672 0\n",
|
||
"700 0\n",
|
||
"630 1\n",
|
||
"81 0\n",
|
||
".. ...\n",
|
||
"32 0\n",
|
||
"637 0\n",
|
||
"593 0\n",
|
||
"425 1\n",
|
||
"273 0\n",
|
||
"\n",
|
||
"[154 rows x 1 columns]"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"from typing import Tuple\n",
|
||
"import pandas as pd\n",
|
||
"from pandas import DataFrame\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"\n",
|
||
"# Устанавливаем случайное состояние\n",
|
||
"random_state = 42\n",
|
||
"\n",
|
||
"def split_stratified_into_train_val_test(\n",
|
||
" df_input,\n",
|
||
" stratify_colname=\"y\",\n",
|
||
" frac_train=0.6,\n",
|
||
" frac_val=0.15,\n",
|
||
" frac_test=0.25,\n",
|
||
" random_state=None,\n",
|
||
") -> Tuple[DataFrame, DataFrame, DataFrame, DataFrame, DataFrame, DataFrame]:\n",
|
||
" \n",
|
||
" if frac_train + frac_val + frac_test != 1.0:\n",
|
||
" raise ValueError(\n",
|
||
" \"fractions %f, %f, %f do not add up to 1.0\"\n",
|
||
" % (frac_train, frac_val, frac_test)\n",
|
||
" )\n",
|
||
" if stratify_colname not in df_input.columns:\n",
|
||
" raise ValueError(\"%s is not a column in the dataframe\" % (stratify_colname))\n",
|
||
" X = df_input # Contains all columns.\n",
|
||
" y = df_input[\n",
|
||
" [stratify_colname]\n",
|
||
" ] # Dataframe of just the column on which to stratify.\n",
|
||
" # Split original dataframe into train and temp dataframes.\n",
|
||
" df_train, df_temp, y_train, y_temp = train_test_split(\n",
|
||
" X, y, stratify=y, test_size=(1.0 - frac_train), random_state=random_state\n",
|
||
" )\n",
|
||
" if frac_val <= 0:\n",
|
||
" assert len(df_input) == len(df_train) + len(df_temp)\n",
|
||
" return df_train, pd.DataFrame(), df_temp, y_train, pd.DataFrame(), y_temp\n",
|
||
" # Split the temp dataframe into val and test dataframes.\n",
|
||
" relative_frac_test = frac_test / (frac_val + frac_test)\n",
|
||
" df_val, df_test, y_val, y_test = train_test_split(\n",
|
||
" df_temp,\n",
|
||
" y_temp,\n",
|
||
" stratify=y_temp,\n",
|
||
" test_size=relative_frac_test,\n",
|
||
" random_state=random_state,\n",
|
||
" )\n",
|
||
" assert len(df_input) == len(df_train) + len(df_val) + len(df_test)\n",
|
||
" return df_train, df_val, df_test, y_train, y_val, y_test\n",
|
||
"\n",
|
||
"X_train, X_val, X_test, y_train, y_val, y_test = split_stratified_into_train_val_test(\n",
|
||
" df, stratify_colname=\"Outcome\", frac_train=0.80, frac_val=0, frac_test=0.20, random_state=random_state\n",
|
||
")\n",
|
||
"\n",
|
||
"display(\"X_train\", X_train)\n",
|
||
"display(\"y_train\", y_train)\n",
|
||
"\n",
|
||
"display(\"X_test\", X_test)\n",
|
||
"display(\"y_test\", y_test)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Формирование конвейера для классификации данных\n",
|
||
"preprocessing_num -- конвейер для обработки числовых данных: заполнение пропущенных значений и стандартизация\n",
|
||
"\n",
|
||
"preprocessing_cat -- конвейер для обработки категориальных данных: заполнение пропущенных данных и унитарное кодирование\n",
|
||
"\n",
|
||
"features_preprocessing -- трансформер для предобработки признаков\n",
|
||
"\n",
|
||
"features_engineering -- трансформер для конструирования признаков\n",
|
||
"\n",
|
||
"drop_columns -- трансформер для удаления колонок\n",
|
||
"\n",
|
||
"pipeline_end -- основной конвейер предобработки данных и конструирования признаков"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 48,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"import pandas as pd\n",
|
||
"from sklearn.base import BaseEstimator, TransformerMixin\n",
|
||
"from sklearn.compose import ColumnTransformer\n",
|
||
"from sklearn.impute import SimpleImputer\n",
|
||
"from sklearn.preprocessing import OneHotEncoder, StandardScaler\n",
|
||
"from sklearn.pipeline import Pipeline\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"\n",
|
||
"# Построение конвейеров предобработки\n",
|
||
"\n",
|
||
"class DiabetesFeatures(BaseEstimator, TransformerMixin):\n",
|
||
" def __init__(self):\n",
|
||
" pass\n",
|
||
"\n",
|
||
" def fit(self, X, y=None):\n",
|
||
" return self\n",
|
||
"\n",
|
||
" def transform(self, X, y=None):\n",
|
||
" # Создание новых признаков\n",
|
||
" X = X.copy()\n",
|
||
" X[\"BMI_to_Age_ratio\"] = X[\"BMI\"] / X[\"Age\"]\n",
|
||
" return X\n",
|
||
"\n",
|
||
" def get_feature_names_out(self, features_in):\n",
|
||
" # Добавление имен новых признаков\n",
|
||
" new_features = [\"BMI_to_Age_ratio\"]\n",
|
||
" return np.append(features_in, new_features, axis=0)\n",
|
||
"\n",
|
||
"# Обработка числовых данных. Числовой конвейр: заполнение пропущенных значений медианой и стандартизация\n",
|
||
"preprocessing_num_class = Pipeline(steps=[\n",
|
||
" ('imputer', SimpleImputer(strategy='median')),\n",
|
||
" ('scaler', StandardScaler())\n",
|
||
"])\n",
|
||
"\n",
|
||
"preprocessing_cat_class = Pipeline(steps=[\n",
|
||
" ('imputer', SimpleImputer(strategy='most_frequent')),\n",
|
||
" ('onehot', OneHotEncoder(handle_unknown='ignore', sparse_output=False, drop='first'))\n",
|
||
"])\n",
|
||
"\n",
|
||
"columns_to_drop = []\n",
|
||
"numeric_columns = [\"Pregnancies\", \"Glucose\", \"BloodPressure\", \"SkinThickness\", \"Insulin\",\n",
|
||
" \"BMI\", \"DiabetesPedigreeFunction\", \"Age\"]\n",
|
||
"cat_columns = [\"Outcome\"]\n",
|
||
"\n",
|
||
"features_preprocessing = ColumnTransformer(\n",
|
||
" verbose_feature_names_out=False,\n",
|
||
" transformers=[\n",
|
||
" (\"preprocessing_num\", preprocessing_num_class, numeric_columns),\n",
|
||
" (\"preprocessing_cat\", preprocessing_cat_class, cat_columns),\n",
|
||
" ],\n",
|
||
" remainder=\"passthrough\"\n",
|
||
")\n",
|
||
"\n",
|
||
"drop_columns = ColumnTransformer(\n",
|
||
" verbose_feature_names_out=False,\n",
|
||
" transformers=[\n",
|
||
" (\"drop_columns\", \"drop\", columns_to_drop),\n",
|
||
" ],\n",
|
||
" remainder=\"passthrough\",\n",
|
||
")\n",
|
||
"\n",
|
||
"features_postprocessing = ColumnTransformer(\n",
|
||
" verbose_feature_names_out=False,\n",
|
||
" transformers=[\n",
|
||
" ('preprocessing_cat', preprocessing_cat_class, [\"Outcome\"]),\n",
|
||
" ],\n",
|
||
" remainder=\"passthrough\",\n",
|
||
")\n",
|
||
"\n",
|
||
"pipeline_end = Pipeline(\n",
|
||
" [\n",
|
||
" (\"features_preprocessing\", features_preprocessing),\n",
|
||
" (\"custom_features\", DiabetesFeatures()),\n",
|
||
" (\"drop_columns\", drop_columns),\n",
|
||
" ]\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Демонстрация работы конвейера"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 49,
|
||
"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>Pregnancies</th>\n",
|
||
" <th>Glucose</th>\n",
|
||
" <th>BloodPressure</th>\n",
|
||
" <th>SkinThickness</th>\n",
|
||
" <th>Insulin</th>\n",
|
||
" <th>BMI</th>\n",
|
||
" <th>DiabetesPedigreeFunction</th>\n",
|
||
" <th>Age</th>\n",
|
||
" <th>Outcome_1</th>\n",
|
||
" <th>BMI_to_Age_ratio</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>353</th>\n",
|
||
" <td>-0.851355</td>\n",
|
||
" <td>-0.980131</td>\n",
|
||
" <td>-0.404784</td>\n",
|
||
" <td>-0.553973</td>\n",
|
||
" <td>-0.331319</td>\n",
|
||
" <td>-0.607678</td>\n",
|
||
" <td>0.310794</td>\n",
|
||
" <td>-0.792169</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.767107</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>711</th>\n",
|
||
" <td>0.356576</td>\n",
|
||
" <td>0.161444</td>\n",
|
||
" <td>0.465368</td>\n",
|
||
" <td>0.392787</td>\n",
|
||
" <td>-0.526398</td>\n",
|
||
" <td>-0.302139</td>\n",
|
||
" <td>-0.116439</td>\n",
|
||
" <td>0.561034</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>-0.538540</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>373</th>\n",
|
||
" <td>-0.549372</td>\n",
|
||
" <td>-0.504474</td>\n",
|
||
" <td>-0.622322</td>\n",
|
||
" <td>1.213312</td>\n",
|
||
" <td>0.142444</td>\n",
|
||
" <td>0.372594</td>\n",
|
||
" <td>-0.764862</td>\n",
|
||
" <td>-0.707594</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>-0.526564</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>46</th>\n",
|
||
" <td>-0.851355</td>\n",
|
||
" <td>0.795653</td>\n",
|
||
" <td>-0.731091</td>\n",
|
||
" <td>-1.311380</td>\n",
|
||
" <td>-0.730766</td>\n",
|
||
" <td>-0.289408</td>\n",
|
||
" <td>0.262314</td>\n",
|
||
" <td>-0.369293</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.783681</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>682</th>\n",
|
||
" <td>-1.153338</td>\n",
|
||
" <td>-0.821579</td>\n",
|
||
" <td>-0.296015</td>\n",
|
||
" <td>1.150195</td>\n",
|
||
" <td>0.244628</td>\n",
|
||
" <td>1.607482</td>\n",
|
||
" <td>-0.337630</td>\n",
|
||
" <td>-0.961320</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>-1.672162</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>451</th>\n",
|
||
" <td>-0.549372</td>\n",
|
||
" <td>0.415128</td>\n",
|
||
" <td>0.030292</td>\n",
|
||
" <td>-1.311380</td>\n",
|
||
" <td>-0.730766</td>\n",
|
||
" <td>-0.391255</td>\n",
|
||
" <td>0.195653</td>\n",
|
||
" <td>-0.876744</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.446259</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>113</th>\n",
|
||
" <td>0.054593</td>\n",
|
||
" <td>-1.424076</td>\n",
|
||
" <td>-0.404784</td>\n",
|
||
" <td>-1.311380</td>\n",
|
||
" <td>-0.730766</td>\n",
|
||
" <td>0.258017</td>\n",
|
||
" <td>-0.261879</td>\n",
|
||
" <td>-0.707594</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>-0.364639</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>556</th>\n",
|
||
" <td>-0.851355</td>\n",
|
||
" <td>-0.758158</td>\n",
|
||
" <td>0.030292</td>\n",
|
||
" <td>1.213312</td>\n",
|
||
" <td>-0.730766</td>\n",
|
||
" <td>0.779980</td>\n",
|
||
" <td>-0.786072</td>\n",
|
||
" <td>-0.284718</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>-2.739481</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>667</th>\n",
|
||
" <td>1.866489</td>\n",
|
||
" <td>-0.314212</td>\n",
|
||
" <td>0.030292</td>\n",
|
||
" <td>0.392787</td>\n",
|
||
" <td>-0.730766</td>\n",
|
||
" <td>-0.569486</td>\n",
|
||
" <td>-1.019383</td>\n",
|
||
" <td>0.561034</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>-1.015065</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>107</th>\n",
|
||
" <td>0.054593</td>\n",
|
||
" <td>0.732232</td>\n",
|
||
" <td>-0.622322</td>\n",
|
||
" <td>0.455904</td>\n",
|
||
" <td>0.569759</td>\n",
|
||
" <td>-0.314870</td>\n",
|
||
" <td>-0.577001</td>\n",
|
||
" <td>0.307308</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>-1.024606</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>614 rows × 10 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n",
|
||
"353 -0.851355 -0.980131 -0.404784 -0.553973 -0.331319 -0.607678 \n",
|
||
"711 0.356576 0.161444 0.465368 0.392787 -0.526398 -0.302139 \n",
|
||
"373 -0.549372 -0.504474 -0.622322 1.213312 0.142444 0.372594 \n",
|
||
"46 -0.851355 0.795653 -0.731091 -1.311380 -0.730766 -0.289408 \n",
|
||
"682 -1.153338 -0.821579 -0.296015 1.150195 0.244628 1.607482 \n",
|
||
".. ... ... ... ... ... ... \n",
|
||
"451 -0.549372 0.415128 0.030292 -1.311380 -0.730766 -0.391255 \n",
|
||
"113 0.054593 -1.424076 -0.404784 -1.311380 -0.730766 0.258017 \n",
|
||
"556 -0.851355 -0.758158 0.030292 1.213312 -0.730766 0.779980 \n",
|
||
"667 1.866489 -0.314212 0.030292 0.392787 -0.730766 -0.569486 \n",
|
||
"107 0.054593 0.732232 -0.622322 0.455904 0.569759 -0.314870 \n",
|
||
"\n",
|
||
" DiabetesPedigreeFunction Age Outcome_1 BMI_to_Age_ratio \n",
|
||
"353 0.310794 -0.792169 0.0 0.767107 \n",
|
||
"711 -0.116439 0.561034 0.0 -0.538540 \n",
|
||
"373 -0.764862 -0.707594 0.0 -0.526564 \n",
|
||
"46 0.262314 -0.369293 0.0 0.783681 \n",
|
||
"682 -0.337630 -0.961320 0.0 -1.672162 \n",
|
||
".. ... ... ... ... \n",
|
||
"451 0.195653 -0.876744 1.0 0.446259 \n",
|
||
"113 -0.261879 -0.707594 0.0 -0.364639 \n",
|
||
"556 -0.786072 -0.284718 0.0 -2.739481 \n",
|
||
"667 -1.019383 0.561034 1.0 -1.015065 \n",
|
||
"107 -0.577001 0.307308 0.0 -1.024606 \n",
|
||
"\n",
|
||
"[614 rows x 10 columns]"
|
||
]
|
||
},
|
||
"execution_count": 49,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"preprocessing_result = pipeline_end.fit_transform(X_train)\n",
|
||
"preprocessed_df = pd.DataFrame(\n",
|
||
" preprocessing_result,\n",
|
||
" columns=pipeline_end.get_feature_names_out(),\n",
|
||
")\n",
|
||
"\n",
|
||
"preprocessed_df"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Формирование набора моделей для классификации\n",
|
||
" logistic -- логистическая регрессия\n",
|
||
"\n",
|
||
"ridge -- гребневая регрессия\n",
|
||
"\n",
|
||
"decision_tree -- дерево решений\n",
|
||
"\n",
|
||
"knn -- k-ближайших соседей\n",
|
||
"\n",
|
||
"naive_bayes -- наивный Байесовский классификатор\n",
|
||
"\n",
|
||
"gradient_boosting -- метод градиентного бустинга (набор деревьев решений)\n",
|
||
"\n",
|
||
"random_forest -- метод случайного леса (набор деревьев решений)\n",
|
||
"\n",
|
||
"mlp -- многослойный персептрон (нейронная сеть)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 50,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn import ensemble, linear_model, naive_bayes, neighbors, neural_network, tree\n",
|
||
"\n",
|
||
"# Определите random_state для воспроизводимости результатов\n",
|
||
"random_state = 42\n",
|
||
"\n",
|
||
"# Определите модели машинного обучения для классификации\n",
|
||
"class_models = {\n",
|
||
" \"logistic\": {\"model\": linear_model.LogisticRegression(random_state=random_state)},\n",
|
||
" \"ridge\": {\"model\": linear_model.LogisticRegression(penalty=\"l2\", class_weight=\"balanced\", random_state=random_state)},\n",
|
||
" \"decision_tree\": {\n",
|
||
" \"model\": tree.DecisionTreeClassifier(max_depth=7, random_state=random_state)\n",
|
||
" },\n",
|
||
" \"knn\": {\"model\": neighbors.KNeighborsClassifier(n_neighbors=7)},\n",
|
||
" \"naive_bayes\": {\"model\": naive_bayes.GaussianNB()},\n",
|
||
" \"gradient_boosting\": {\n",
|
||
" \"model\": ensemble.GradientBoostingClassifier(n_estimators=210, random_state=random_state)\n",
|
||
" },\n",
|
||
" \"random_forest\": {\n",
|
||
" \"model\": ensemble.RandomForestClassifier(\n",
|
||
" max_depth=11, class_weight=\"balanced\", random_state=random_state\n",
|
||
" )\n",
|
||
" },\n",
|
||
" \"mlp\": {\n",
|
||
" \"model\": neural_network.MLPClassifier(\n",
|
||
" hidden_layer_sizes=(7,),\n",
|
||
" max_iter=500,\n",
|
||
" early_stopping=True,\n",
|
||
" random_state=random_state,\n",
|
||
" )\n",
|
||
" },\n",
|
||
"}"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Обучение моделей на обучающем наборе данных и оценка на тестовом"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 52,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Model: logistic\n",
|
||
"Model: ridge\n",
|
||
"Model: decision_tree\n",
|
||
"Model: knn\n",
|
||
"Model: naive_bayes\n",
|
||
"Model: gradient_boosting\n",
|
||
"Model: random_forest\n",
|
||
"Model: mlp\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"from sklearn import metrics\n",
|
||
"\n",
|
||
"for model_name in class_models.keys():\n",
|
||
" print(f\"Model: {model_name}\")\n",
|
||
" model = class_models[model_name][\"model\"]\n",
|
||
"\n",
|
||
" model_pipeline = Pipeline([(\"pipeline\", pipeline_end), (\"model\", model)])\n",
|
||
" model_pipeline = model_pipeline.fit(X_train, y_train.values.ravel())\n",
|
||
"\n",
|
||
" y_train_predict = model_pipeline.predict(X_train)\n",
|
||
" y_test_probs = model_pipeline.predict_proba(X_test)[:, 1]\n",
|
||
" y_test_predict = np.where(y_test_probs > 0.5, 1, 0)\n",
|
||
"\n",
|
||
" class_models[model_name][\"pipeline\"] = model_pipeline\n",
|
||
" class_models[model_name][\"probs\"] = y_test_probs\n",
|
||
" class_models[model_name][\"preds\"] = y_test_predict\n",
|
||
"\n",
|
||
" class_models[model_name][\"Precision_train\"] = metrics.precision_score(\n",
|
||
" y_train, y_train_predict\n",
|
||
" )\n",
|
||
" class_models[model_name][\"Precision_test\"] = metrics.precision_score(\n",
|
||
" y_test, y_test_predict\n",
|
||
" )\n",
|
||
" class_models[model_name][\"Recall_train\"] = metrics.recall_score(\n",
|
||
" y_train, y_train_predict\n",
|
||
" )\n",
|
||
" class_models[model_name][\"Recall_test\"] = metrics.recall_score(\n",
|
||
" y_test, y_test_predict\n",
|
||
" )\n",
|
||
" class_models[model_name][\"Accuracy_train\"] = metrics.accuracy_score(\n",
|
||
" y_train, y_train_predict\n",
|
||
" )\n",
|
||
" class_models[model_name][\"Accuracy_test\"] = metrics.accuracy_score(\n",
|
||
" y_test, y_test_predict\n",
|
||
" )\n",
|
||
" class_models[model_name][\"ROC_AUC_test\"] = metrics.roc_auc_score(\n",
|
||
" y_test, y_test_probs\n",
|
||
" )\n",
|
||
" class_models[model_name][\"F1_train\"] = metrics.f1_score(y_train, y_train_predict)\n",
|
||
" class_models[model_name][\"F1_test\"] = metrics.f1_score(y_test, y_test_predict)\n",
|
||
" class_models[model_name][\"MCC_test\"] = metrics.matthews_corrcoef(\n",
|
||
" y_test, y_test_predict\n",
|
||
" )\n",
|
||
" class_models[model_name][\"Cohen_kappa_test\"] = metrics.cohen_kappa_score(\n",
|
||
" y_test, y_test_predict\n",
|
||
" )\n",
|
||
" class_models[model_name][\"Confusion_matrix\"] = metrics.confusion_matrix(\n",
|
||
" y_test, y_test_predict\n",
|
||
" )"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Сводная таблица оценок качества для использованных моделей классификации"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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/fZb3LhxA3l5eXB3d8e4ceMwZswYrF69GhcvXsSxY8ewaNEi4wPJb7zxBs6fP4/x48fj7NmzWLduHRISEip1vk2aNEFqairWr1+PixcvIi4urtwHwTUaDSIjI3Hy5Ens2bMHI0eOxIABA6DT6QAA06dPR0xMDOLi4nDu3Dn8+uuviI+Px4IFCypVDxER0d2Yzcxmkom1H8ojssQ/H56uzPr09HTx8ssvi9q1awsnJyfRqFEjMXToUJGTkyOEKH1YetSoUcLDw0N4enqKsWPHipdfftnsw9NCCPHnn3+KMWPGCD8/P+Ho6CgaN24sVq1aZVwfHR0tdDqdkCRJREZGCiFKH/iOjY0VzZo1E7Vq1RJ16tQR4eHhYvfu3cb9tm7dKho3biycnJzEE088IVatWlXph6fHjx8vfHx8hJubmxg4cKBYuHCh0Gq1xvVRUVGiTZs2YunSpcLf319oNBrRv39/kZWVZXLctWvXipCQEOHo6Ci8vLxEly5dxMaNG4UQfHiaiIhKMZvLx2ym6iAJYeYpUSIiIiIiIrI5HE5JRERERESkIOzEERERERERKQg7cURERERERArCThwREREREZGCsBNHRERERESkIOzEERERERERKQg7cURERERERArCThwREREREZGCsBNHRERERESkIOzEERERERERKQg7cURERERERAry/wHoYFxkolVSKAAAAABJRU5ErkJggg==",
|
||
"text/plain": [
|
||
"<Figure size 1200x1000 with 16 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.metrics import ConfusionMatrixDisplay\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"\n",
|
||
"# Определите количество строк и столбцов для subplots\n",
|
||
"n_rows = int(len(class_models) / 2)\n",
|
||
"n_cols = 2\n",
|
||
"\n",
|
||
"fig, ax = plt.subplots(n_rows, n_cols, figsize=(12, 10), sharex=False, sharey=False)\n",
|
||
"\n",
|
||
"for index, key in enumerate(class_models.keys()):\n",
|
||
" c_matrix = class_models[key][\"Confusion_matrix\"]\n",
|
||
" disp = ConfusionMatrixDisplay(\n",
|
||
" confusion_matrix=c_matrix, display_labels=[\"No Diabetes\", \"Diabetes\"]\n",
|
||
" ).plot(ax=ax.flat[index])\n",
|
||
" disp.ax_.set_title(key)\n",
|
||
"\n",
|
||
"# Настройте расположение subplots\n",
|
||
"plt.subplots_adjust(top=1, bottom=0, hspace=0.4, wspace=0.1)\n",
|
||
"plt.show()\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"100 - количество истинных положительных диагнозов (True Positives), где модель правильно определила объекты как \"No Diabetes\".\n",
|
||
"\n",
|
||
"54 в некоторых моделях - количество ложных отрицательных диагнозов (False Negatives), где модель неправильно определила объекты, которые на самом деле принадлежат к классу \"No Diabetes\", но были отнесены к классу \"Diabetes\". \n",
|
||
"\n",
|
||
"Исходя из значений True Positives и False Negatives, можно сказать, что модель имеет высокую точность при предсказании класса \"No Diabetes\". В принципе, уровень ложных отрицательных результатов в некоторых моделях (54) говорит нам о том, что существует некотрое небольшое количество примеров, которые модель пропускает.\n",
|
||
"\n",
|
||
"Точность, полнота, верность (аккуратность), F-мера"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 65,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style type=\"text/css\">\n",
|
||
"#T_90d0d_row0_col0, #T_90d0d_row0_col1, #T_90d0d_row0_col2, #T_90d0d_row0_col3, #T_90d0d_row1_col0, #T_90d0d_row1_col1, #T_90d0d_row1_col2, #T_90d0d_row1_col3, #T_90d0d_row2_col0, #T_90d0d_row2_col1, #T_90d0d_row2_col2, #T_90d0d_row2_col3, #T_90d0d_row3_col0, #T_90d0d_row3_col1, #T_90d0d_row3_col2, #T_90d0d_row3_col3, #T_90d0d_row4_col0, #T_90d0d_row4_col1, #T_90d0d_row4_col2, #T_90d0d_row4_col3, #T_90d0d_row5_col0, #T_90d0d_row5_col1, #T_90d0d_row5_col2, #T_90d0d_row5_col3 {\n",
|
||
" background-color: #a8db34;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_90d0d_row0_col4, #T_90d0d_row0_col5, #T_90d0d_row0_col6, #T_90d0d_row0_col7, #T_90d0d_row1_col4, #T_90d0d_row1_col5, #T_90d0d_row1_col6, #T_90d0d_row1_col7, #T_90d0d_row2_col4, #T_90d0d_row2_col5, #T_90d0d_row2_col6, #T_90d0d_row2_col7, #T_90d0d_row3_col4, #T_90d0d_row3_col5, #T_90d0d_row3_col6, #T_90d0d_row3_col7, #T_90d0d_row4_col4, #T_90d0d_row4_col5, #T_90d0d_row4_col6, #T_90d0d_row4_col7, #T_90d0d_row5_col4, #T_90d0d_row5_col5, #T_90d0d_row5_col6, #T_90d0d_row5_col7 {\n",
|
||
" background-color: #da5a6a;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_90d0d_row6_col0 {\n",
|
||
" background-color: #89d548;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_90d0d_row6_col1 {\n",
|
||
" background-color: #5ac864;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_90d0d_row6_col2 {\n",
|
||
" background-color: #77d153;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_90d0d_row6_col3 {\n",
|
||
" background-color: #65cb5e;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_90d0d_row6_col4 {\n",
|
||
" background-color: #c5407e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_90d0d_row6_col5 {\n",
|
||
" background-color: #b22b8f;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_90d0d_row6_col6 {\n",
|
||
" background-color: #cc4977;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_90d0d_row6_col7 {\n",
|
||
" background-color: #c03a83;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_90d0d_row7_col0, #T_90d0d_row7_col1, #T_90d0d_row7_col2, #T_90d0d_row7_col3 {\n",
|
||
" background-color: #26818e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_90d0d_row7_col4, #T_90d0d_row7_col5, #T_90d0d_row7_col6, #T_90d0d_row7_col7 {\n",
|
||
" background-color: #4e02a2;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"</style>\n",
|
||
"<table id=\"T_90d0d\">\n",
|
||
" <thead>\n",
|
||
" <tr>\n",
|
||
" <th class=\"blank level0\" > </th>\n",
|
||
" <th id=\"T_90d0d_level0_col0\" class=\"col_heading level0 col0\" >Precision_train</th>\n",
|
||
" <th id=\"T_90d0d_level0_col1\" class=\"col_heading level0 col1\" >Precision_test</th>\n",
|
||
" <th id=\"T_90d0d_level0_col2\" class=\"col_heading level0 col2\" >Recall_train</th>\n",
|
||
" <th id=\"T_90d0d_level0_col3\" class=\"col_heading level0 col3\" >Recall_test</th>\n",
|
||
" <th id=\"T_90d0d_level0_col4\" class=\"col_heading level0 col4\" >Accuracy_train</th>\n",
|
||
" <th id=\"T_90d0d_level0_col5\" class=\"col_heading level0 col5\" >Accuracy_test</th>\n",
|
||
" <th id=\"T_90d0d_level0_col6\" class=\"col_heading level0 col6\" >F1_train</th>\n",
|
||
" <th id=\"T_90d0d_level0_col7\" class=\"col_heading level0 col7\" >F1_test</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_90d0d_level0_row0\" class=\"row_heading level0 row0\" >logistic</th>\n",
|
||
" <td id=\"T_90d0d_row0_col0\" class=\"data row0 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row0_col1\" class=\"data row0 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row0_col2\" class=\"data row0 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row0_col4\" class=\"data row0 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row0_col5\" class=\"data row0 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row0_col6\" class=\"data row0 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row0_col7\" class=\"data row0 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_90d0d_level0_row1\" class=\"row_heading level0 row1\" >ridge</th>\n",
|
||
" <td id=\"T_90d0d_row1_col0\" class=\"data row1 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row1_col1\" class=\"data row1 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row1_col2\" class=\"data row1 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row1_col3\" class=\"data row1 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row1_col4\" class=\"data row1 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row1_col5\" class=\"data row1 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row1_col6\" class=\"data row1 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row1_col7\" class=\"data row1 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_90d0d_level0_row2\" class=\"row_heading level0 row2\" >decision_tree</th>\n",
|
||
" <td id=\"T_90d0d_row2_col0\" class=\"data row2 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row2_col1\" class=\"data row2 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row2_col2\" class=\"data row2 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row2_col3\" class=\"data row2 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row2_col4\" class=\"data row2 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row2_col5\" class=\"data row2 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row2_col6\" class=\"data row2 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row2_col7\" class=\"data row2 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_90d0d_level0_row3\" class=\"row_heading level0 row3\" >naive_bayes</th>\n",
|
||
" <td id=\"T_90d0d_row3_col0\" class=\"data row3 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row3_col1\" class=\"data row3 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row3_col2\" class=\"data row3 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row3_col3\" class=\"data row3 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row3_col4\" class=\"data row3 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row3_col5\" class=\"data row3 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row3_col6\" class=\"data row3 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row3_col7\" class=\"data row3 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_90d0d_level0_row4\" class=\"row_heading level0 row4\" >random_forest</th>\n",
|
||
" <td id=\"T_90d0d_row4_col0\" class=\"data row4 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row4_col1\" class=\"data row4 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row4_col2\" class=\"data row4 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row4_col3\" class=\"data row4 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row4_col4\" class=\"data row4 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row4_col5\" class=\"data row4 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row4_col6\" class=\"data row4 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row4_col7\" class=\"data row4 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_90d0d_level0_row5\" class=\"row_heading level0 row5\" >gradient_boosting</th>\n",
|
||
" <td id=\"T_90d0d_row5_col0\" class=\"data row5 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row5_col1\" class=\"data row5 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row5_col2\" class=\"data row5 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row5_col3\" class=\"data row5 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row5_col4\" class=\"data row5 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row5_col5\" class=\"data row5 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row5_col6\" class=\"data row5 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_90d0d_row5_col7\" class=\"data row5 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_90d0d_level0_row6\" class=\"row_heading level0 row6\" >knn</th>\n",
|
||
" <td id=\"T_90d0d_row6_col0\" class=\"data row6 col0\" >0.918367</td>\n",
|
||
" <td id=\"T_90d0d_row6_col1\" class=\"data row6 col1\" >0.777778</td>\n",
|
||
" <td id=\"T_90d0d_row6_col2\" class=\"data row6 col2\" >0.841121</td>\n",
|
||
" <td id=\"T_90d0d_row6_col3\" class=\"data row6 col3\" >0.777778</td>\n",
|
||
" <td id=\"T_90d0d_row6_col4\" class=\"data row6 col4\" >0.918567</td>\n",
|
||
" <td id=\"T_90d0d_row6_col5\" class=\"data row6 col5\" >0.844156</td>\n",
|
||
" <td id=\"T_90d0d_row6_col6\" class=\"data row6 col6\" >0.878049</td>\n",
|
||
" <td id=\"T_90d0d_row6_col7\" class=\"data row6 col7\" >0.777778</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_90d0d_level0_row7\" class=\"row_heading level0 row7\" >mlp</th>\n",
|
||
" <td id=\"T_90d0d_row7_col0\" class=\"data row7 col0\" >0.254237</td>\n",
|
||
" <td id=\"T_90d0d_row7_col1\" class=\"data row7 col1\" >0.238095</td>\n",
|
||
" <td id=\"T_90d0d_row7_col2\" class=\"data row7 col2\" >0.070093</td>\n",
|
||
" <td id=\"T_90d0d_row7_col3\" class=\"data row7 col3\" >0.092593</td>\n",
|
||
" <td id=\"T_90d0d_row7_col4\" class=\"data row7 col4\" >0.604235</td>\n",
|
||
" <td id=\"T_90d0d_row7_col5\" class=\"data row7 col5\" >0.577922</td>\n",
|
||
" <td id=\"T_90d0d_row7_col6\" class=\"data row7 col6\" >0.109890</td>\n",
|
||
" <td id=\"T_90d0d_row7_col7\" class=\"data row7 col7\" >0.133333</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n"
|
||
],
|
||
"text/plain": [
|
||
"<pandas.io.formats.style.Styler at 0x2664f38b440>"
|
||
]
|
||
},
|
||
"execution_count": 65,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"class_metrics = pd.DataFrame.from_dict(class_models, \"index\")[\n",
|
||
" [\n",
|
||
" \"Precision_train\",\n",
|
||
" \"Precision_test\",\n",
|
||
" \"Recall_train\",\n",
|
||
" \"Recall_test\",\n",
|
||
" \"Accuracy_train\",\n",
|
||
" \"Accuracy_test\",\n",
|
||
" \"F1_train\",\n",
|
||
" \"F1_test\",\n",
|
||
" ]\n",
|
||
"]\n",
|
||
"class_metrics.sort_values(\n",
|
||
" by=\"Accuracy_test\", ascending=False\n",
|
||
").style.background_gradient(\n",
|
||
" cmap=\"plasma\",\n",
|
||
" low=0.3,\n",
|
||
" high=1,\n",
|
||
" subset=[\"Accuracy_train\", \"Accuracy_test\", \"F1_train\", \"F1_test\"],\n",
|
||
").background_gradient(\n",
|
||
" cmap=\"viridis\",\n",
|
||
" low=1,\n",
|
||
" high=0.3,\n",
|
||
" subset=[\n",
|
||
" \"Precision_train\",\n",
|
||
" \"Precision_test\",\n",
|
||
" \"Recall_train\",\n",
|
||
" \"Recall_test\",\n",
|
||
" ],\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Все модели в данной выборке, а именно логистическая регрессия, ридж-регрессия, дерево решений, KNN, наивный байесовский классификатор, градиентный бустинг, случайный лес и многослойный перцептрон (MLP) демонстрируют неплохие значения по всем метрикам на обучающих и тестовых наборах данных.\n",
|
||
"\n",
|
||
"Модели MLP не так эффективна по сравнению с другими, но в некоторых метриках показывают высокие результаты. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 66,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style type=\"text/css\">\n",
|
||
"#T_296b9_row0_col0, #T_296b9_row0_col1, #T_296b9_row1_col0, #T_296b9_row1_col1, #T_296b9_row2_col0, #T_296b9_row2_col1, #T_296b9_row3_col0, #T_296b9_row3_col1, #T_296b9_row4_col0, #T_296b9_row4_col1, #T_296b9_row5_col0, #T_296b9_row5_col1 {\n",
|
||
" background-color: #a8db34;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_296b9_row0_col2, #T_296b9_row0_col3, #T_296b9_row0_col4, #T_296b9_row1_col2, #T_296b9_row1_col3, #T_296b9_row1_col4, #T_296b9_row2_col2, #T_296b9_row2_col3, #T_296b9_row2_col4, #T_296b9_row3_col2, #T_296b9_row3_col3, #T_296b9_row3_col4, #T_296b9_row4_col2, #T_296b9_row4_col3, #T_296b9_row4_col4, #T_296b9_row5_col2, #T_296b9_row5_col3, #T_296b9_row5_col4 {\n",
|
||
" background-color: #da5a6a;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_296b9_row6_col0 {\n",
|
||
" background-color: #48c16e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_296b9_row6_col1 {\n",
|
||
" background-color: #63cb5f;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_296b9_row6_col2 {\n",
|
||
" background-color: #c8437b;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_296b9_row6_col3, #T_296b9_row6_col4 {\n",
|
||
" background-color: #b83289;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_296b9_row7_col0, #T_296b9_row7_col1 {\n",
|
||
" background-color: #26818e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_296b9_row7_col2, #T_296b9_row7_col3, #T_296b9_row7_col4 {\n",
|
||
" background-color: #4e02a2;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"</style>\n",
|
||
"<table id=\"T_296b9\">\n",
|
||
" <thead>\n",
|
||
" <tr>\n",
|
||
" <th class=\"blank level0\" > </th>\n",
|
||
" <th id=\"T_296b9_level0_col0\" class=\"col_heading level0 col0\" >Accuracy_test</th>\n",
|
||
" <th id=\"T_296b9_level0_col1\" class=\"col_heading level0 col1\" >F1_test</th>\n",
|
||
" <th id=\"T_296b9_level0_col2\" class=\"col_heading level0 col2\" >ROC_AUC_test</th>\n",
|
||
" <th id=\"T_296b9_level0_col3\" class=\"col_heading level0 col3\" >Cohen_kappa_test</th>\n",
|
||
" <th id=\"T_296b9_level0_col4\" class=\"col_heading level0 col4\" >MCC_test</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_296b9_level0_row0\" class=\"row_heading level0 row0\" >logistic</th>\n",
|
||
" <td id=\"T_296b9_row0_col0\" class=\"data row0 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row0_col1\" class=\"data row0 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row0_col2\" class=\"data row0 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row0_col4\" class=\"data row0 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_296b9_level0_row1\" class=\"row_heading level0 row1\" >ridge</th>\n",
|
||
" <td id=\"T_296b9_row1_col0\" class=\"data row1 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row1_col1\" class=\"data row1 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row1_col2\" class=\"data row1 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row1_col3\" class=\"data row1 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row1_col4\" class=\"data row1 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_296b9_level0_row2\" class=\"row_heading level0 row2\" >decision_tree</th>\n",
|
||
" <td id=\"T_296b9_row2_col0\" class=\"data row2 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row2_col1\" class=\"data row2 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row2_col2\" class=\"data row2 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row2_col3\" class=\"data row2 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row2_col4\" class=\"data row2 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_296b9_level0_row3\" class=\"row_heading level0 row3\" >naive_bayes</th>\n",
|
||
" <td id=\"T_296b9_row3_col0\" class=\"data row3 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row3_col1\" class=\"data row3 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row3_col2\" class=\"data row3 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row3_col3\" class=\"data row3 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row3_col4\" class=\"data row3 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_296b9_level0_row4\" class=\"row_heading level0 row4\" >random_forest</th>\n",
|
||
" <td id=\"T_296b9_row4_col0\" class=\"data row4 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row4_col1\" class=\"data row4 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row4_col2\" class=\"data row4 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row4_col3\" class=\"data row4 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row4_col4\" class=\"data row4 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_296b9_level0_row5\" class=\"row_heading level0 row5\" >gradient_boosting</th>\n",
|
||
" <td id=\"T_296b9_row5_col0\" class=\"data row5 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row5_col1\" class=\"data row5 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row5_col2\" class=\"data row5 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row5_col3\" class=\"data row5 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_296b9_row5_col4\" class=\"data row5 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_296b9_level0_row6\" class=\"row_heading level0 row6\" >knn</th>\n",
|
||
" <td id=\"T_296b9_row6_col0\" class=\"data row6 col0\" >0.844156</td>\n",
|
||
" <td id=\"T_296b9_row6_col1\" class=\"data row6 col1\" >0.777778</td>\n",
|
||
" <td id=\"T_296b9_row6_col2\" class=\"data row6 col2\" >0.908056</td>\n",
|
||
" <td id=\"T_296b9_row6_col3\" class=\"data row6 col3\" >0.657778</td>\n",
|
||
" <td id=\"T_296b9_row6_col4\" class=\"data row6 col4\" >0.657778</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_296b9_level0_row7\" class=\"row_heading level0 row7\" >mlp</th>\n",
|
||
" <td id=\"T_296b9_row7_col0\" class=\"data row7 col0\" >0.577922</td>\n",
|
||
" <td id=\"T_296b9_row7_col1\" class=\"data row7 col1\" >0.133333</td>\n",
|
||
" <td id=\"T_296b9_row7_col2\" class=\"data row7 col2\" >0.488148</td>\n",
|
||
" <td id=\"T_296b9_row7_col3\" class=\"data row7 col3\" >-0.078431</td>\n",
|
||
" <td id=\"T_296b9_row7_col4\" class=\"data row7 col4\" >-0.093728</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n"
|
||
],
|
||
"text/plain": [
|
||
"<pandas.io.formats.style.Styler at 0x2664f38a8a0>"
|
||
]
|
||
},
|
||
"execution_count": 66,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"class_metrics = pd.DataFrame.from_dict(class_models, \"index\")[\n",
|
||
" [\n",
|
||
" \"Accuracy_test\",\n",
|
||
" \"F1_test\",\n",
|
||
" \"ROC_AUC_test\",\n",
|
||
" \"Cohen_kappa_test\",\n",
|
||
" \"MCC_test\",\n",
|
||
" ]\n",
|
||
"]\n",
|
||
"class_metrics.sort_values(by=\"ROC_AUC_test\", ascending=False).style.background_gradient(\n",
|
||
" cmap=\"plasma\",\n",
|
||
" low=0.3,\n",
|
||
" high=1,\n",
|
||
" subset=[\n",
|
||
" \"ROC_AUC_test\",\n",
|
||
" \"MCC_test\",\n",
|
||
" \"Cohen_kappa_test\",\n",
|
||
" ],\n",
|
||
").background_gradient(\n",
|
||
" cmap=\"viridis\",\n",
|
||
" low=1,\n",
|
||
" high=0.3,\n",
|
||
" subset=[\n",
|
||
" \"Accuracy_test\",\n",
|
||
" \"F1_test\",\n",
|
||
" ],\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Схожий вывод можно сделать и для следующих метрик: Accuracy, F1, ROC AUC, Cohen's Kappa и MCC. Все модели, кроме KNN и MLP, указывают на хорошо-развитую способность к выделению классов"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 67,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'logistic'"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"best_model = str(class_metrics.sort_values(by=\"MCC_test\", ascending=False).iloc[0].name)\n",
|
||
"\n",
|
||
"display(best_model)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Вывод данных с ошибкой предсказания для оценки"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 73,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'Error items count: 0'"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Pregnancies</th>\n",
|
||
" <th>Predicted</th>\n",
|
||
" <th>Glucose</th>\n",
|
||
" <th>BloodPressure</th>\n",
|
||
" <th>SkinThickness</th>\n",
|
||
" <th>Insulin</th>\n",
|
||
" <th>BMI</th>\n",
|
||
" <th>DiabetesPedigreeFunction</th>\n",
|
||
" <th>Age</th>\n",
|
||
" <th>Outcome</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
"Empty DataFrame\n",
|
||
"Columns: [Pregnancies, Predicted, Glucose, BloodPressure, SkinThickness, Insulin, BMI, DiabetesPedigreeFunction, Age, Outcome]\n",
|
||
"Index: []"
|
||
]
|
||
},
|
||
"execution_count": 73,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"preprocessing_result = pipeline_end.transform(X_test)\n",
|
||
"preprocessed_df = pd.DataFrame(\n",
|
||
" preprocessing_result,\n",
|
||
" columns=pipeline_end.get_feature_names_out(),\n",
|
||
")\n",
|
||
"\n",
|
||
"y_pred = class_models[best_model][\"preds\"]\n",
|
||
"\n",
|
||
"error_index = y_test[y_test[\"Outcome\"] != y_pred].index.tolist()\n",
|
||
"display(f\"Error items count: {len(error_index)}\")\n",
|
||
"\n",
|
||
"error_predicted = pd.Series(y_pred, index=y_test.index).loc[error_index]\n",
|
||
"error_df = X_test.loc[error_index].copy()\n",
|
||
"error_df.insert(loc=1, column=\"Predicted\", value=error_predicted)\n",
|
||
"error_df.sort_index()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Пример использования обученной модели (конвейера) для предсказания"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 88,
|
||
"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>Pregnancies</th>\n",
|
||
" <th>Glucose</th>\n",
|
||
" <th>BloodPressure</th>\n",
|
||
" <th>SkinThickness</th>\n",
|
||
" <th>Insulin</th>\n",
|
||
" <th>BMI</th>\n",
|
||
" <th>DiabetesPedigreeFunction</th>\n",
|
||
" <th>Age</th>\n",
|
||
" <th>Outcome</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>163</th>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>100.0</td>\n",
|
||
" <td>64.0</td>\n",
|
||
" <td>23.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>29.7</td>\n",
|
||
" <td>0.368</td>\n",
|
||
" <td>21.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n",
|
||
"163 2.0 100.0 64.0 23.0 0.0 29.7 \n",
|
||
"\n",
|
||
" DiabetesPedigreeFunction Age Outcome \n",
|
||
"163 0.368 21.0 0.0 "
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Pregnancies</th>\n",
|
||
" <th>Glucose</th>\n",
|
||
" <th>BloodPressure</th>\n",
|
||
" <th>SkinThickness</th>\n",
|
||
" <th>Insulin</th>\n",
|
||
" <th>BMI</th>\n",
|
||
" <th>DiabetesPedigreeFunction</th>\n",
|
||
" <th>Age</th>\n",
|
||
" <th>Outcome_1</th>\n",
|
||
" <th>BMI_to_Age_ratio</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>163</th>\n",
|
||
" <td>-0.549372</td>\n",
|
||
" <td>-0.663027</td>\n",
|
||
" <td>-0.296015</td>\n",
|
||
" <td>0.140318</td>\n",
|
||
" <td>-0.730766</td>\n",
|
||
" <td>-0.289408</td>\n",
|
||
" <td>-0.33157</td>\n",
|
||
" <td>-1.045895</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.276709</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n",
|
||
"163 -0.549372 -0.663027 -0.296015 0.140318 -0.730766 -0.289408 \n",
|
||
"\n",
|
||
" DiabetesPedigreeFunction Age Outcome_1 BMI_to_Age_ratio \n",
|
||
"163 -0.33157 -1.045895 0.0 0.276709 "
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'predicted: 0 (proba: [0.98965692 0.01034308])'"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'real: 0'"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"model = class_models[best_model][\"pipeline\"]\n",
|
||
"\n",
|
||
"example_id = 163\n",
|
||
"test = pd.DataFrame(X_test.loc[example_id, :]).T\n",
|
||
"test_preprocessed = pd.DataFrame(preprocessed_df.loc[example_id, :]).T\n",
|
||
"display(test)\n",
|
||
"display(test_preprocessed)\n",
|
||
"result_proba = model.predict_proba(test)[0]\n",
|
||
"result = model.predict(test)[0]\n",
|
||
"real = int(y_test.loc[example_id].values[0])\n",
|
||
"display(f\"predicted: {result} (proba: {result_proba})\")\n",
|
||
"display(f\"real: {real}\")\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Подбор гиперпараметров методом поиска по сетке "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 89,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\TIGR228\\Desktop\\МИИ\\Lab1\\AIM-PIbd-31-Afanasev-S-S\\aimenv\\Lib\\site-packages\\numpy\\ma\\core.py:2881: RuntimeWarning: invalid value encountered in cast\n",
|
||
" _data = np.array(data, dtype=dtype, copy=copy,\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"{'model__criterion': 'gini',\n",
|
||
" 'model__max_depth': 5,\n",
|
||
" 'model__max_features': 'sqrt',\n",
|
||
" 'model__n_estimators': 10}"
|
||
]
|
||
},
|
||
"execution_count": 89,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.model_selection import GridSearchCV\n",
|
||
"\n",
|
||
"optimized_model_type = \"random_forest\"\n",
|
||
"\n",
|
||
"random_forest_model = class_models[optimized_model_type][\"pipeline\"]\n",
|
||
"\n",
|
||
"param_grid = {\n",
|
||
" \"model__n_estimators\": [10, 50, 100],\n",
|
||
" \"model__max_features\": [\"sqrt\", \"log2\"],\n",
|
||
" \"model__max_depth\": [5, 7, 10],\n",
|
||
" \"model__criterion\": [\"gini\", \"entropy\"],\n",
|
||
"}\n",
|
||
"\n",
|
||
"gs_optomizer = GridSearchCV(\n",
|
||
" estimator=random_forest_model, param_grid=param_grid, n_jobs=-1\n",
|
||
")\n",
|
||
"gs_optomizer.fit(X_train, y_train.values.ravel())\n",
|
||
"gs_optomizer.best_params_"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Обучение модели с новыми гиперпараметрами"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 90,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn.pipeline import Pipeline\n",
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"from sklearn.compose import ColumnTransformer\n",
|
||
"from sklearn.ensemble import RandomForestClassifier\n",
|
||
"import numpy as np\n",
|
||
"from sklearn import metrics\n",
|
||
"import pandas as pd\n",
|
||
"\n",
|
||
"\n",
|
||
"# Определяем числовые признаки\n",
|
||
"numeric_features = X_train.select_dtypes(include=['float64', 'int64']).columns.tolist()\n",
|
||
"\n",
|
||
"# Установка random_state\n",
|
||
"random_state = 42\n",
|
||
"\n",
|
||
"# Определение трансформера\n",
|
||
"pipeline_end = ColumnTransformer([\n",
|
||
" ('numeric', StandardScaler(), numeric_features),\n",
|
||
" # Добавьте другие трансформеры, если требуется\n",
|
||
"])\n",
|
||
"\n",
|
||
"# Объявление модели\n",
|
||
"optimized_model = RandomForestClassifier(\n",
|
||
" random_state=random_state,\n",
|
||
" criterion=\"gini\",\n",
|
||
" max_depth=5,\n",
|
||
" max_features=\"sqrt\",\n",
|
||
" n_estimators=50,\n",
|
||
")\n",
|
||
"\n",
|
||
"# Создание пайплайна с корректными шагами\n",
|
||
"result = {}\n",
|
||
"\n",
|
||
"# Обучение модели\n",
|
||
"result[\"pipeline\"] = Pipeline([\n",
|
||
" (\"pipeline\", pipeline_end),\n",
|
||
" (\"model\", optimized_model)\n",
|
||
"]).fit(X_train, y_train.values.ravel())\n",
|
||
"\n",
|
||
"# Прогнозирование и расчет метрик\n",
|
||
"result[\"train_preds\"] = result[\"pipeline\"].predict(X_train)\n",
|
||
"result[\"probs\"] = result[\"pipeline\"].predict_proba(X_test)[:, 1]\n",
|
||
"result[\"preds\"] = np.where(result[\"probs\"] > 0.5, 1, 0)\n",
|
||
"\n",
|
||
"# Метрики для оценки модели\n",
|
||
"result[\"Precision_train\"] = metrics.precision_score(y_train, result[\"train_preds\"])\n",
|
||
"result[\"Precision_test\"] = metrics.precision_score(y_test, result[\"preds\"])\n",
|
||
"result[\"Recall_train\"] = metrics.recall_score(y_train, result[\"train_preds\"])\n",
|
||
"result[\"Recall_test\"] = metrics.recall_score(y_test, result[\"preds\"])\n",
|
||
"result[\"Accuracy_train\"] = metrics.accuracy_score(y_train, result[\"train_preds\"])\n",
|
||
"result[\"Accuracy_test\"] = metrics.accuracy_score(y_test, result[\"preds\"])\n",
|
||
"result[\"ROC_AUC_test\"] = metrics.roc_auc_score(y_test, result[\"probs\"])\n",
|
||
"result[\"F1_train\"] = metrics.f1_score(y_train, result[\"train_preds\"])\n",
|
||
"result[\"F1_test\"] = metrics.f1_score(y_test, result[\"preds\"])\n",
|
||
"result[\"MCC_test\"] = metrics.matthews_corrcoef(y_test, result[\"preds\"])\n",
|
||
"result[\"Cohen_kappa_test\"] = metrics.cohen_kappa_score(y_test, result[\"preds\"])\n",
|
||
"result[\"Confusion_matrix\"] = metrics.confusion_matrix(y_test, result[\"preds\"])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Формирование данных для оценки старой и новой версии модели"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 91,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"optimized_metrics = pd.DataFrame(columns=list(result.keys()))\n",
|
||
"optimized_metrics.loc[len(optimized_metrics)] = pd.Series(\n",
|
||
" data=class_models[optimized_model_type]\n",
|
||
")\n",
|
||
"optimized_metrics.loc[len(optimized_metrics)] = pd.Series(\n",
|
||
" data=result\n",
|
||
")\n",
|
||
"optimized_metrics.insert(loc=0, column=\"Name\", value=[\"Old\", \"New\"])\n",
|
||
"optimized_metrics = optimized_metrics.set_index(\"Name\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Оценка параметров старой и новой модели"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 92,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style type=\"text/css\">\n",
|
||
"#T_a9e08_row0_col0, #T_a9e08_row0_col1, #T_a9e08_row0_col2, #T_a9e08_row0_col3, #T_a9e08_row1_col0, #T_a9e08_row1_col1, #T_a9e08_row1_col2, #T_a9e08_row1_col3 {\n",
|
||
" background-color: #440154;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_a9e08_row0_col4, #T_a9e08_row0_col5, #T_a9e08_row0_col6, #T_a9e08_row0_col7, #T_a9e08_row1_col4, #T_a9e08_row1_col5, #T_a9e08_row1_col6, #T_a9e08_row1_col7 {\n",
|
||
" background-color: #0d0887;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"</style>\n",
|
||
"<table id=\"T_a9e08\">\n",
|
||
" <thead>\n",
|
||
" <tr>\n",
|
||
" <th class=\"blank level0\" > </th>\n",
|
||
" <th id=\"T_a9e08_level0_col0\" class=\"col_heading level0 col0\" >Precision_train</th>\n",
|
||
" <th id=\"T_a9e08_level0_col1\" class=\"col_heading level0 col1\" >Precision_test</th>\n",
|
||
" <th id=\"T_a9e08_level0_col2\" class=\"col_heading level0 col2\" >Recall_train</th>\n",
|
||
" <th id=\"T_a9e08_level0_col3\" class=\"col_heading level0 col3\" >Recall_test</th>\n",
|
||
" <th id=\"T_a9e08_level0_col4\" class=\"col_heading level0 col4\" >Accuracy_train</th>\n",
|
||
" <th id=\"T_a9e08_level0_col5\" class=\"col_heading level0 col5\" >Accuracy_test</th>\n",
|
||
" <th id=\"T_a9e08_level0_col6\" class=\"col_heading level0 col6\" >F1_train</th>\n",
|
||
" <th id=\"T_a9e08_level0_col7\" class=\"col_heading level0 col7\" >F1_test</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th class=\"index_name level0\" >Name</th>\n",
|
||
" <th class=\"blank col0\" > </th>\n",
|
||
" <th class=\"blank col1\" > </th>\n",
|
||
" <th class=\"blank col2\" > </th>\n",
|
||
" <th class=\"blank col3\" > </th>\n",
|
||
" <th class=\"blank col4\" > </th>\n",
|
||
" <th class=\"blank col5\" > </th>\n",
|
||
" <th class=\"blank col6\" > </th>\n",
|
||
" <th class=\"blank col7\" > </th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_a9e08_level0_row0\" class=\"row_heading level0 row0\" >Old</th>\n",
|
||
" <td id=\"T_a9e08_row0_col0\" class=\"data row0 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_a9e08_row0_col1\" class=\"data row0 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_a9e08_row0_col2\" class=\"data row0 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_a9e08_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_a9e08_row0_col4\" class=\"data row0 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_a9e08_row0_col5\" class=\"data row0 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_a9e08_row0_col6\" class=\"data row0 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_a9e08_row0_col7\" class=\"data row0 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_a9e08_level0_row1\" class=\"row_heading level0 row1\" >New</th>\n",
|
||
" <td id=\"T_a9e08_row1_col0\" class=\"data row1 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_a9e08_row1_col1\" class=\"data row1 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_a9e08_row1_col2\" class=\"data row1 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_a9e08_row1_col3\" class=\"data row1 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_a9e08_row1_col4\" class=\"data row1 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_a9e08_row1_col5\" class=\"data row1 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_a9e08_row1_col6\" class=\"data row1 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_a9e08_row1_col7\" class=\"data row1 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n"
|
||
],
|
||
"text/plain": [
|
||
"<pandas.io.formats.style.Styler at 0x26651c516d0>"
|
||
]
|
||
},
|
||
"execution_count": 92,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"optimized_metrics[\n",
|
||
" [\n",
|
||
" \"Precision_train\",\n",
|
||
" \"Precision_test\",\n",
|
||
" \"Recall_train\",\n",
|
||
" \"Recall_test\",\n",
|
||
" \"Accuracy_train\",\n",
|
||
" \"Accuracy_test\",\n",
|
||
" \"F1_train\",\n",
|
||
" \"F1_test\",\n",
|
||
" ]\n",
|
||
"].style.background_gradient(\n",
|
||
" cmap=\"plasma\",\n",
|
||
" low=0.3,\n",
|
||
" high=1,\n",
|
||
" subset=[\"Accuracy_train\", \"Accuracy_test\", \"F1_train\", \"F1_test\"],\n",
|
||
").background_gradient(\n",
|
||
" cmap=\"viridis\",\n",
|
||
" low=1,\n",
|
||
" high=0.3,\n",
|
||
" subset=[\n",
|
||
" \"Precision_train\",\n",
|
||
" \"Precision_test\",\n",
|
||
" \"Recall_train\",\n",
|
||
" \"Recall_test\",\n",
|
||
" ],\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 93,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style type=\"text/css\">\n",
|
||
"#T_d47a4_row0_col0, #T_d47a4_row0_col1, #T_d47a4_row1_col0, #T_d47a4_row1_col1 {\n",
|
||
" background-color: #440154;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_d47a4_row0_col2, #T_d47a4_row0_col3, #T_d47a4_row0_col4, #T_d47a4_row1_col2, #T_d47a4_row1_col3, #T_d47a4_row1_col4 {\n",
|
||
" background-color: #0d0887;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"</style>\n",
|
||
"<table id=\"T_d47a4\">\n",
|
||
" <thead>\n",
|
||
" <tr>\n",
|
||
" <th class=\"blank level0\" > </th>\n",
|
||
" <th id=\"T_d47a4_level0_col0\" class=\"col_heading level0 col0\" >Accuracy_test</th>\n",
|
||
" <th id=\"T_d47a4_level0_col1\" class=\"col_heading level0 col1\" >F1_test</th>\n",
|
||
" <th id=\"T_d47a4_level0_col2\" class=\"col_heading level0 col2\" >ROC_AUC_test</th>\n",
|
||
" <th id=\"T_d47a4_level0_col3\" class=\"col_heading level0 col3\" >Cohen_kappa_test</th>\n",
|
||
" <th id=\"T_d47a4_level0_col4\" class=\"col_heading level0 col4\" >MCC_test</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th class=\"index_name level0\" >Name</th>\n",
|
||
" <th class=\"blank col0\" > </th>\n",
|
||
" <th class=\"blank col1\" > </th>\n",
|
||
" <th class=\"blank col2\" > </th>\n",
|
||
" <th class=\"blank col3\" > </th>\n",
|
||
" <th class=\"blank col4\" > </th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_d47a4_level0_row0\" class=\"row_heading level0 row0\" >Old</th>\n",
|
||
" <td id=\"T_d47a4_row0_col0\" class=\"data row0 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_d47a4_row0_col1\" class=\"data row0 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_d47a4_row0_col2\" class=\"data row0 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_d47a4_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_d47a4_row0_col4\" class=\"data row0 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_d47a4_level0_row1\" class=\"row_heading level0 row1\" >New</th>\n",
|
||
" <td id=\"T_d47a4_row1_col0\" class=\"data row1 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_d47a4_row1_col1\" class=\"data row1 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_d47a4_row1_col2\" class=\"data row1 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_d47a4_row1_col3\" class=\"data row1 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_d47a4_row1_col4\" class=\"data row1 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n"
|
||
],
|
||
"text/plain": [
|
||
"<pandas.io.formats.style.Styler at 0x26651b45c10>"
|
||
]
|
||
},
|
||
"execution_count": 93,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"optimized_metrics[\n",
|
||
" [\n",
|
||
" \"Accuracy_test\",\n",
|
||
" \"F1_test\",\n",
|
||
" \"ROC_AUC_test\",\n",
|
||
" \"Cohen_kappa_test\",\n",
|
||
" \"MCC_test\",\n",
|
||
" ]\n",
|
||
"].style.background_gradient(\n",
|
||
" cmap=\"plasma\",\n",
|
||
" low=0.3,\n",
|
||
" high=1,\n",
|
||
" subset=[\n",
|
||
" \"ROC_AUC_test\",\n",
|
||
" \"MCC_test\",\n",
|
||
" \"Cohen_kappa_test\",\n",
|
||
" ],\n",
|
||
").background_gradient(\n",
|
||
" cmap=\"viridis\",\n",
|
||
" low=1,\n",
|
||
" high=0.3,\n",
|
||
" subset=[\n",
|
||
" \"Accuracy_test\",\n",
|
||
" \"F1_test\",\n",
|
||
" ],\n",
|
||
")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 94,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA5IAAAGxCAYAAAAQ1omjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABOw0lEQVR4nO3dfVxUZf7/8fcBBLzhRrzhRhE177A0tVxzK+0Gwy0rs77mLruLpba7ZaZmVlugYom2aS5W6mZJ7s/WbFNTK3fLVss0S1OrlbS8CU3RNhWEFgRmfn+wTjsLKsMczgxzXs/H4zyCczfXTMibz7mucx3D6XQ6BQAAAABALQX5ugEAAAAAgIaFQhIAAAAA4BEKSQAAAACARygkAQAAAAAeoZAEAAAAAHiEQhIAAAAA4BEKSQAAAACARygkAQAAAAAeoZAEAAAAAHiEQhIAAAAA4BEKSQBAQHv//fd18803KyEhQYZhaNWqVW7bnU6nMjMzFR8fr8aNGyslJUVfffWV2z4nTpxQWlqaIiMjFR0drVGjRqm4uNjCdwEAQBV/yTUKSQBAQCspKdGll16q5557rsbtTz31lHJycrRgwQJt3bpVTZs2VWpqqkpLS137pKWl6Z///KfeeecdrV27Vu+//77uueceq94CAAAu/pJrhtPpdHr1TgAAaCAMw9DKlSs1dOhQSVVXbRMSEvTggw9q0qRJkqTCwkLFxsYqNzdXI0aMUF5enrp3765PPvlEl19+uSRp3bp1uvHGG3X48GElJCT46u0AAGzOl7kWUi/vCACA/1JaWqozZ86Ydj6n0ynDMNzWhYWFKSwszKPzHDhwQAUFBUpJSXGti4qKUr9+/bRlyxaNGDFCW7ZsUXR0tCtsJSklJUVBQUHaunWrbrvtNu/eDACgwSHXKCQBAPWstLRUHZKaqeB4pWnnbNasWbV7OaZMmaKpU6d6dJ6CggJJUmxsrNv62NhY17aCggK1bt3abXtISIhiYmJc+wAA7INc+88xHrUMAAAPnTlzRgXHK3Vge5IiI7y/Nb/otEMdLvtGhw4dUmRkpGu9p1dtAQCoC3KtCoUkAMASkRFBpgSu63yRkW6BWxdxcXGSpGPHjik+Pt61/tixY+rVq5drn+PHj7sdV1FRoRMnTriOBwDYj91zjVlbAQCWqHQ6TFvM0qFDB8XFxWn9+vWudUVFRdq6dav69+8vSerfv79OnTql7du3u/Z577335HA41K9fP9PaAgBoWOyea/RIAgAs4ZBTDnk/Ubin5yguLtbXX3/t+v7AgQPauXOnYmJi1K5dO40fP15PPPGEOnfurA4dOigjI0MJCQmuGfCSk5M1ePBgjRkzRgsWLFB5ebnGjh2rESNGMGMrANiY3XONQhIAENC2bduma6+91vX9xIkTJUnp6enKzc3V5MmTVVJSonvuuUenTp3SVVddpXXr1ik8PNx1zNKlSzV27Fhdf/31CgoK0u23366cnBzL3wsAAP6SazxHEgBQr4qKihQVFaUje9qaNilBQtfDKiws9PpeEgAAPEWuVaFHEgBgiUqnU5UmXLs04xwAAHjL7rnGZDsAAAAAAI/QIwkAsISvJiUAAKA+2D3XKCQBAJZwyKlKGwcuACCw2D3XGNoKAAAAAPAIPZIAAEvYfQgQACCw2D3X6JEEAAAAAHiEHkkAgCXsPk06ACCw2D3XKCQBAJZw/Gcx4zwAAPia3XONoa0AAAAAAI/QIwkAsESlSdOkm3EOAAC8Zfdco5AEAFii0lm1mHEeAAB8ze65xtBWAAAAAIBH6JEEAFjC7pMSAAACi91zjUISAGAJhwxVyjDlPAAA+Jrdc42hrQAAAAAAj9AjCQCwhMNZtZhxHgAAfM3uuUaPJAAAAADAI/RIAgAsUWnSvSRmnAMAAG/ZPdcoJAEAlrB74AIAAovdc42hrQAAAAAAj9AjCQCwhMNpyOE0YZp0E84BAIC37J5rFJIAAEvYfQgQACCw2D3XGNoKAAAAAPAIPZIAAEtUKkiVJly/rDShLQAAeMvuuUYhCQCwhNOke0mcDfReEgBAYLF7rjG0FQAAAADgEXokAQCWsPukBACAwGL3XKOQBABYotIZpEqnCfeSOE1oDAAAXrJ7rjG0FQAAAADgEXokAQCWcMiQw4Trlw410Eu3AICAYvdco0cSAAAAAOAReiQBAJaw+6QEAIDAYvdco5AEAFjCvEkJGuYQIABAYLF7rjG0FQAAAADgEXokAQCWqJqUwPvhO2acAwAAb9k91ygkAQCWcChIlTae3Q4AEFjsnmsMbQUAAAAAeIQeSQCAJew+KQEAILDYPdcoJAEAlnAoyNYPbgYABBa75xpDWwEAAAAAHqFHEgBgiUqnoUqnCQ9uNuEcAAB4y+65Ro8kAAAAAMAj9EgCACxRadI06ZUN9F4SAEBgsXuuUUgCACzhcAbJYcLsdo4GOrsdACCw2D3XGNoKAAAAAPAIPZIAAEvYfQgQACCw2D3XKCQBAJZwyJyZ6RzeNwUAAK/ZPdcY2goAAAAA8Ag9kgAASzgUJIcJ1y/NOAcAAN6ye65RSAIALFHpDFKlCbPbmXEOAAC8Zfdca5itBgAAAAD4DD2SAABLOGTIITMmJfD+HAAAeMvuuUYhCQCwhN2HAAEAAovdc61hthoAAAAA4DP0SAIALGHeg5u5BgoA8D2751rDbDUAAAAAwGfokbQRh8OhI0eOKCIiQobRMG/qBWAtp9Op06dPKyEhQUFB3l17dDgNOZwmTEpgwjkQGMg1AJ4i18xDIWkjR44cUWJioq+bAaABOnTokNq2bevVORwmDQFqqA9uhvnINQB1Ra55j0LSRiIiIiRJ33zaXpHNGuYPLOrPbV16+LoJ8EMVKtcmveX6/QH4E3IN50OuoSbkmnkoJG3k7LCfyGZBiowgcOEuxGjk6ybAHzmr/mPGsEGHM0gOE6Y4N+McCAzkGs6HXEONyDXTUEgCACxRKUOVJjx02YxzAADgLbvnWsMsfwEAAAAAPkOPJADAEnYfAgQACCx2zzUKSQCAJSplzvCdSu+bAgCA1+yeaw2z/AUAAAAA+Aw9kgAAS9h9CBAAILDYPdcaZqsBAAAAAD5DjyQAwBKVziBVmnDV1YxzAADgLbvnWsNsNQCgwXHKkMOExenBxAaVlZXKyMhQhw4d1LhxY1100UWaPn26nE7nj+1yOpWZman4+Hg1btxYKSkp+uqrr+rjIwAABBC75xqFJAAgYM2aNUvz58/Xs88+q7y8PM2aNUtPPfWU5s2b59rnqaeeUk5OjhYsWKCtW7eqadOmSk1NVWlpqQ9bDgBAdf6UawxtBQBYwhdDgDZv3qxbb71VN910kySpffv2+stf/qKPP/5YUtVV27lz5+rxxx/XrbfeKklasmSJYmNjtWrVKo0YMcLr9gIAApPdc40eSQCAJRxOw7RFkoqKityWsrKyaq/505/+VOvXr9fevXslSbt27dKmTZv0s5/9TJJ04MABFRQUKCUlxXVMVFSU+vXrpy1btljwqQAAGiq75xo9kgCABikxMdHt+ylTpmjq1Klu6x555BEVFRWpW7duCg4OVmVlpZ588kmlpaVJkgoKCiRJsbGxbsfFxsa6tgEAYIWGlmsUkgAAS1QqSJUmDIQ5e45Dhw4pMjLStT4sLKzavsuXL9fSpUv1yiuv6OKLL9bOnTs1fvx4JSQkKD093eu2AADsy+65RiEJALDEfw/f8fY8khQZGekWuDV56KGH9Mgjj7juCenRo4e++eYbZWdnKz09XXFxcZKkY8eOKT4+3nXcsWPH1KtXL6/bCgAIXHbPNe6RBAAErB9++EFBQe5RFxwcLIfDIUnq0KGD4uLitH79etf2oqIibd26Vf3797e0rQAAXIg/5Ro9kgAASzgUJIcJ1y89OcfNN9+sJ598Uu3atdPFF1+sHTt2aM6cObr77rslSYZhaPz48XriiSfUuXNndejQQRkZGUpISNDQoUO9bisAIHDZPdcoJAEAlqh0Gqo0YQiQJ+eYN2+eMjIydO+99+r48eNKSEjQb37zG2VmZrr2mTx5skpKSnTPPffo1KlTuuqqq7Ru3TqFh4d73VYAQOCye64ZTqfTaeoZ4beKiooUFRWlk3s7KjKCUc1wl5rQy9dNgB+qcJZrg95QYWHhBe/bOJezv3t+98EwhTVr5HWbyorLNf/qFV61CYGBXMP5kGuoCblmHnokAQCWMHtSAgAAfMnuucblOwAAAACAR+iRBABYwukMksPp/fVLpwnnAADAW3bPNQpJAIAlKmWoUiZMSmDCOQAA8Jbdc61hlr8AAAAAAJ+hRxIAYAmH05wJBRzMNQ4A8AN2zzUKSQCAJRwm3UtixjkAAPCW3XOtYbYaAAAAAOAz9EgCACzhkCGHCRMKmHEOAAC8Zfdco5AEAFii0mmo0oR7Scw4BwAA3rJ7rjG0FQAAAADgEXokAQCWsPukBACAwGL3XGuYrQYAAAAA+Aw9kgAASzhkmPO8rQY6KQEAILDYPdcoJAEAlnCaNLuds4EGLgAgsNg91xjaCgAAAADwCD2SAABLOJwmDQFqoNOkAwACi91zjUISAGAJu89uBwAILHbPtYbZagAAAACAz9AjCQCwhN2HAAEAAovdc41CEgBgCYdJs9s11GnSAQCBxe65xtBWAAAAAIBH6JEEAFjC7kOAAACBxe65RiEJALCE3QMXABBY7J5rDG0FAAAAAHiEHkkAgCXsfuUWABBY7J5r9EgCAAAAADxCjyQAwBJ2v3ILAAgsds81CkkAgCWcMudZWU7vmwIAgNfsnmsMbQUAAAAAeIQeSQCAJew+BAgAEFjsnmsUkgAAS9g9cAEAgcXuucbQVgAAAACAR+iRBABYwu5XbgEAgcXuuUYhCQCwhN0DFwAQWOyeawxtBQAAAAB4hB5JAIAlnE5DThOuuppxDgAAvGX3XKNHEgAAAADgEXokAQCWcMiQQybcS2LCOQAA8Jbdc41CEgBgCbtPSgAACCx2zzWGtiKgfP5RU2X+uoN+3vtipSb00ua3o9y2O53Sy0/F6ee9LtbNHXvq4eEX6dv9oW77FJ0M1sz72um2Lj00rFsPzZmYqH+X8E/FLm4e+S+9vHW31uz/TH9c+5W69vrB100CYGPkGrxFrqG+8FtE0jXXXKPx48fXev8NGzbIMAydOnWq3tqEuin9IUgdL/63xs44XOP25c+11hsvtdL9Mw/pj2v3KryJQ7//xUU6U/rjlaBZY5P0zZ7Gyl62T1kv79fnW5tp7kOJVr0F+NDAW07qnilHtHROnO5L7aL9u8P15Cv7FdWi3NdNCwhnJyUwY8H5kWuBg1yDN8i1+mX3XPNpITly5EgZhqGZM2e6rV+1apUMw7sPNDc3V4ZhyDAMBQcHq3nz5urXr5+ysrJUWFjotu+KFSs0ffp0r16vLtq3b6+5c+da/rqBrO91pzXy4QJd+bPCatucTmnVolb6+QMF+ungInXsXqrJOd/o+2ONtHld1RXe/K/CtO0fkZowO1/d+vygS/qV6N4nDmvjG9H6voCR4IFu2D3/0rpXYvT3V2OU/1W4ch5uq7J/G0r9+QlfNy0gnB0CZMbir8g1cs1s5Bq8Qa7VLzvk2vn4vEcyPDxcs2bN0smTJ00/d2RkpI4eParDhw9r8+bNuueee7RkyRL16tVLR44cce0XExOjiIgI018f/qUgP1QnjjdSn6uLXeuaRjrUrfcPytveVJKUt62pmkVVqMul/3bt0+fq0zKCpC93NLW8zbBOSCOHOvf8QZ9+8OPvAqfT0I4PItT9MoYBofbINViFXMP5kGuobz4vJFNSUhQXF6fs7Ozz7vf666/r4osvVlhYmNq3b6/Zs2df8NyGYSguLk7x8fFKTk7WqFGjtHnzZhUXF2vy5Mmu/f53CNCf//xnXX755YqIiFBcXJx+8Ytf6Pjx49XO/+GHH6pnz54KDw/XFVdcoS+++MJt+6ZNm3T11VercePGSkxM1Lhx41RSUuJ6zW+++UYTJkxwXWGuzXGS9Pzzz6tz584KDw9XbGys7rjjjhrff1lZmYqKitwWOztxvOrKa3Qr9+Ec0a3KXdtOfBei6BYVbtuDQ6SI6ArXPghMkTGVCg6RTn3n/v/55L9C1LxVxTmOgifsMgSIXCPXrEKu4XzItfpnl1w7F58XksHBwZoxY4bmzZunw4drHv+/fft2DR8+XCNGjNDnn3+uqVOnKiMjQ7m5uR6/XuvWrZWWlqbVq1ersrKyxn3Ky8s1ffp07dq1S6tWrdLBgwc1cuTIavs99NBDmj17tj755BO1atVKN998s8rLq36Z79u3T4MHD9btt9+uzz77TK+++qo2bdqksWPHSqoadtS2bVtlZWXp6NGjOnr0aK2O27Ztm8aNG6esrCzt2bNH69at04ABA2p8H9nZ2YqKinItiYncDwHAd5wmDf/x98Al18g1APZgl1w7F7+4FHXbbbepV69emjJlil588cVq2+fMmaPrr79eGRkZkqQuXbpo9+7d+sMf/lBjEF5It27ddPr0aX3//fdq3bp1te1333236+uOHTsqJydHffv2VXFxsZo1a+baNmXKFA0aNEiS9PLLL6tt27ZauXKlhg8fruzsbKWlpbmuCHfu3Fk5OTkaOHCg5s+fr5iYGAUHB7uuDp91oePy8/PVtGlTDRkyRBEREUpKSlLv3r1rfJ+PPvqoJk6c6Pq+qKjI1qEb07rq6tup7xqpReyPV+JOfddIF11cNeQnplWFTn3v/s+iskI6fSrEdTwCU9GJYFVWSNH/c5W2ecsKnfzOL35VogEh18g1K5BrOB9yDfXN5z2SZ82aNUsvv/yy8vLyqm3Ly8vTlVde6bbuyiuv1FdffXXOq6/n43Q6JemcEx9s375dN998s9q1a6eIiAgNHDhQkpSfn++2X//+/V1fx8TEqGvXrq7279q1S7m5uWrWrJlrSU1NlcPh0IEDB87ZtgsdN2jQICUlJaljx4761a9+paVLl+qHH2oe5x4WFqbIyEi3xc7i2p1RTOty7dj04x9NJaeD9OWOJkq+rGqIVfLlJSouDNFXnzV27bNzU4ScDqlb75Jq50TgqCgP0lefNVHvq0671hmGU72uKtbu7U182LLA4VTV5CBeL75+I7VErqlWx5FrdUeu4XzItfpnt1z7X35zOWLAgAFKTU3Vo48+WqersZ7Iy8tTZGSkWrRoUW1bSUmJUlNTlZqaqqVLl6pVq1bKz89Xamqqzpw5U+vXKC4u1m9+8xuNGzeu2rZ27drV+bjQ0FB9+umn2rBhg/7+978rMzNTU6dO1SeffKLo6Ohaty9Q/bskSEcOhLm+LzgUqn1fNFZEdIVaty3X0NHf6S9/jFWbDmWKa3dGLz8Vrxax5frp4KrZ8Np1LtPl1xZp7qRE3T/rsCrLDT33eBsNvPWUWsRx5TbQrfhTS02ae0h7dzXRnh1NdNuY7xTexKG/L4vxddMCgkOGDJnw4GYTzmEFcq12x5Fr50euwRvkWv2yW679L78pJCVp5syZ6tWrl7p27eq2Pjk5WR9++KHbug8//FBdunRRcHCwR69x/PhxvfLKKxo6dKiCgqp3yH755Zf6/vvvNXPmTNdwmW3bttV4ro8++sgVnidPntTevXuVnJwsSerTp492796tTp06nbMtoaGh1a481+a4kJAQpaSkKCUlRVOmTFF0dLTee+89DRs27Pxv3gb27mqiyXf8+NktnNpGkjRo+AlNmpuv4fcdV+kPQfrj5EQVFwXr4r4lenLpfoWG/3gt6OFnv9Fzj7XVI8MvkhEkXXXjKd37xLeWvxdYb+Pq5opqUalfP1Sg5q0qtP+fjfVYWged+lcjXzcNDRS5Rq55i1yDN8g11Ce/KiR79OihtLQ05eTkuK1/8MEH1bdvX02fPl133nmntmzZomeffVbPP//8ec/ndDpVUFAgp9OpU6dOacuWLZoxY4aioqKqPePrrLNXR+fNm6ff/va3+uKLL875LK6srCy1aNFCsbGxeuyxx9SyZUsNHTpUkvTwww/riiuu0NixYzV69Gg1bdpUu3fv1jvvvKNnn31WUtXztt5//32NGDFCYWFhatmy5QWPW7t2rfbv368BAwaoefPmeuutt+RwOKr9kWJXl/60WH87svOc2w1DSp9coPTJBefcJ7J5pR59/pt6aB0agtWLW2r14pa+bkZAMmtmuoY0KQG5Rq55i1yDt8i1+mPHXPtvfnOP5FlZWVlyOBxu6/r06aPly5dr2bJluuSSS5SZmamsrKwLDhUqKipSfHy82rRpo/79+2vhwoVKT0/Xjh07FB8fX+MxrVq1Um5url577TV1795dM2fO1NNPP13jvjNnztQDDzygyy67TAUFBVqzZo1CQ0MlST179tTGjRu1d+9eXX311erdu7cyMzOVkJDg9l4PHjyoiy66SK1atarVcdHR0VqxYoWuu+46JScna8GCBfrLX/6iiy++uFafLwDAWuQauQYAgchwnr1DHwGvqKhIUVFROrm3oyIj/O4aAnwsNaGXr5sAP1ThLNcGvaHCwsI6T2xy9nfPJcsfUnCTsAsfcAGVP5Tpi+F/8KpNCAzkGs6HXENNyDXz+NXQVgBA4Do7O50Z5wEAwNfsnmtcvgMAAAAAeIQeSQCAJew+KQEAILDYPdcoJAEAlrB74AIAAovdc42hrQAAAAAAj9AjCQCwhMNpyDDhqqujgV65BQAEFrvnGoUkAMASdp/dDgAQWOyeawxtBQAAAAB4hB5JAIAlqq7cmjEpgQmNAQDAS3bPNXokAQAAAAAeoUcSAGAJu0+TDgAILHbPNQpJAIAlnP9ZzDgPAAC+ZvdcY2grAAAAAMAj9EgCACxh9yFAAIDAYvdco5AEAFjD7mOAAACBxea5xtBWAAAAAIBHKCQBANb4zxAgbxd5OATo22+/1S9/+Uu1aNFCjRs3Vo8ePbRt27Yfm+V0KjMzU/Hx8WrcuLFSUlL01Vdfmf3uAQCBxua5RiEJALBE1YObzVlq6+TJk7ryyivVqFEjvf3229q9e7dmz56t5s2bu/Z56qmnlJOTowULFmjr1q1q2rSpUlNTVVpaWg+fAgAgUNg917hHEgAQsGbNmqXExEQtXrzYta5Dhw6ur51Op+bOnavHH39ct956qyRpyZIlio2N1apVqzRixAjL2wwAwLn4U67RIwkAsIQZw3/+e4a8oqIit6WsrKzaa65evVqXX365/u///k+tW7dW79699cILL7i2HzhwQAUFBUpJSXGti4qKUr9+/bRly5b6/1AAAA2W3XONQhIAYI2z94GYsUhKTExUVFSUa8nOzq72kvv379f8+fPVuXNn/e1vf9Pvfvc7jRs3Ti+//LIkqaCgQJIUGxvrdlxsbKxrGwAANbJ5rjG0FQDQIB06dEiRkZGu78PCwqrt43A4dPnll2vGjBmSpN69e+uLL77QggULlJ6ebllbAQC4kIaWa/RIAgAsYfakBJGRkW5LTYEbHx+v7t27u61LTk5Wfn6+JCkuLk6SdOzYMbd9jh075toGAEBN7J5rFJIAgIB15ZVXas+ePW7r9u7dq6SkJElVExTExcVp/fr1ru1FRUXaunWr+vfvb2lbAQC4EH/KNYa2AgCs4fzPYsZ5amnChAn66U9/qhkzZmj48OH6+OOP9ac//Ul/+tOfJEmGYWj8+PF64okn1LlzZ3Xo0EEZGRlKSEjQ0KFDTWgsACBg2TzXKCQBAJb475npvD1PbfXt21crV67Uo48+qqysLHXo0EFz585VWlqaa5/JkyerpKRE99xzj06dOqWrrrpK69atU3h4uNdtBQAELrvnGoUkACCgDRkyREOGDDnndsMwlJWVpaysLAtbBQBA3fhLrlFIAgCsY8YQIAAA/IWNc61WheTq1atrfcJbbrmlzo0BAAQuXwwBOhdyDQDgLX/KNV+oVSFZ2xszDcNQZWWlN+0BAKDekWsAAHinVoWkw+Go73YAAAKdD2a3OxdyDQDgNT/KNV/w6jmSpaWlZrUDABDwDBOX+kGuAQBqz/9zrT55XEhWVlZq+vTpatOmjZo1a6b9+/dLkjIyMvTiiy+a3kAAAOoTuQYAgOc8LiSffPJJ5ebm6qmnnlJoaKhr/SWXXKJFixaZ2jgAQABxmriYiFwDANSJn+aaVTwuJJcsWaI//elPSktLU3BwsGv9pZdeqi+//NLUxgEAUN/INQAAPOfxcyS//fZbderUqdp6h8Oh8vJyUxoFAAhAfjopAbkGAKgTP801q3jcI9m9e3d98MEH1db/9a9/Ve/evU1pFAAgADkN8xYTkWsAgDrx01yzisc9kpmZmUpPT9e3334rh8OhFStWaM+ePVqyZInWrl1bH20EAKDekGsAAHjO4x7JW2+9VWvWrNG7776rpk2bKjMzU3l5eVqzZo0GDRpUH20EAAQAp9O8xUzkGgCgLvw116zicY+kJF199dV65513zG4LACCQ+fG9JOQaAMBjfpxrVqhTISlJ27ZtU15enqSq+0suu+wy0xoFAIDVyDUAAGrP40Ly8OHD+vnPf64PP/xQ0dHRkqRTp07ppz/9qZYtW6a2bdua3UYAQCAwa0IBkyclINcAAHXip7lmFY/vkRw9erTKy8uVl5enEydO6MSJE8rLy5PD4dDo0aPro40AgABgOM1bzESuAQDqwl9zzSoe90hu3LhRmzdvVteuXV3runbtqnnz5unqq682tXEAANQ3cg0AAM95XEgmJibW+IDmyspKJSQkmNIoAEAA8tNJCcg1AECd+GmuWcXjoa1/+MMfdP/992vbtm2uddu2bdMDDzygp59+2tTGAQACiJ8+uJlcAwDUiZ/mmlVq1SPZvHlzGcaPb7CkpET9+vVTSEjV4RUVFQoJCdHdd9+toUOH1ktDAQAwC7kGAIB3alVIzp07t56bAQAIeH40BIhcAwB4zY9yzRdqVUimp6fXdzsAALAMuQYAgHc8nmznv5WWlurMmTNu6yIjI71qEAAgQDWAK7fkGgCg1hpArtUnjyfbKSkp0dixY9W6dWs1bdpUzZs3d1sAAKiR08TFROQaAKBO/DTXrOJxITl58mS99957mj9/vsLCwrRo0SJNmzZNCQkJWrJkSX20EQCAekOuAQDgOY+Htq5Zs0ZLlizRNddco7vuuktXX321OnXqpKSkJC1dulRpaWn10U4AQENn1hTnJk+TTq4BAOrET3PNKh73SJ44cUIdO3aUVHXfyIkTJyRJV111ld5//31zWwcACBiG07zFTOQaAKAu/DXXrOJxIdmxY0cdOHBAktStWzctX75cUtUV3ejoaFMbBwBAfSPXAADwnMeF5F133aVdu3ZJkh555BE999xzCg8P14QJE/TQQw+Z3kAAQIDw00kJyDUAQJ34aa5ZxeN7JCdMmOD6OiUlRV9++aW2b9+uTp06qWfPnqY2DgCA+kauAQDgOa+eIylJSUlJSkpKMqMtAAD4HLkGAMCF1aqQzMnJqfUJx40bV+fGAAAClyFzJhQwY247cg0A4C1/yjVfqFUh+cwzz9TqZIZhELgNwG1deijEaOTrZsDP7F3wE183AX7I8e9Safwbvm6G6ci1wEKuoSbkGmoSqLnmC7UqJM/OZgcAQJ350fO2yDUAgNf8KNd8wet7JAEAqBWzZqZroLPbAQACjM1zzePHfwAAAAAA7I0eSQCANWx+5RYAEGBsnmsUkgAASxhOk2a3a6CBCwAILHbPNYa2AgAAAAA8UqdC8oMPPtAvf/lL9e/fX99++60k6c9//rM2bdpkauMAAAHEaeJiMnINAOAxP841K3hcSL7++utKTU1V48aNtWPHDpWVlUmSCgsLNWPGDNMbCAAIEH4auOQaAKBO/DTXrOJxIfnEE09owYIFeuGFF9So0Y8P/73yyiv16aefmto4AADqG7kGAIDnPJ5sZ8+ePRowYEC19VFRUTp16pQZbQIABCB/nZSAXAMA1IW/5ppVPO6RjIuL09dff11t/aZNm9SxY0dTGgUACEBOw7zFROQaAKBO/DTXrOJxITlmzBg98MAD2rp1qwzD0JEjR7R06VJNmjRJv/vd7+qjjQAA1BtyDQAAz3k8tPWRRx6Rw+HQ9ddfrx9++EEDBgxQWFiYJk2apPvvv78+2ggACAR++uBmcg0AUCd+mmtW8biQNAxDjz32mB566CF9/fXXKi4uVvfu3dWsWbP6aB8AAPWKXAMAwHMeF5JnhYaGqnv37ma2BQAQwPx9UgJyDQDgCX/PtfrmcSF57bXXyjDOfUPoe++951WDAAAByk+HAJFrAIA68dNcs4rHhWSvXr3cvi8vL9fOnTv1xRdfKD093ax2AQBgCXINAADPeVxIPvPMMzWunzp1qoqLi71uEAAgQJk0BMjsK7fkGgCgTvw016zi8eM/zuWXv/ylXnrpJbNOBwAINE4TFwuQawCA82pguWY20wrJLVu2KDw83KzTAQDgU+QaAADn5vHQ1mHDhrl973Q6dfToUW3btk0ZGRmmNQwAEGD8dFICcg0AUCd+mmtW8biQjIqKcvs+KChIXbt2VVZWlm644QbTGgYACCz+Ok06uQYAqAt/zTWreFRIVlZW6q677lKPHj3UvHnz+moTAACWINcAAKgbj+6RDA4O1g033KBTp07VU3MAALAOuQYAQN14PNnOJZdcov3799dHWwAAsBy5BgCA5zwuJJ944glNmjRJa9eu1dGjR1VUVOS2AABQIz+dJp1cAwDUiZ/mmlVqfY9kVlaWHnzwQd14442SpFtuuUWGYbi2O51OGYahyspK81sJAGjw/G1SAnINAOANf8s1q9W6kJw2bZp++9vf6h//+Ed9tgcAAEuQawAA1F2tC0mns6pUHjhwYL01BgAQ4Pzoqiu5BgDwmh/lmtU8evzHfw/5AQDAI3744GZyDQBQZ36Ya1byqJDs0qXLBUP3xIkTXjUIAACrkGsAANSNR4XktGnTFBUVVV9tAQAEMH+clIBcAwDUlT/mmpU8KiRHjBih1q1b11dbAACBzA+HAJFrAIA688Ncs1KtnyPJfSQAgEBCrgEAUHcez9oKAEBd+NsQIHINAOANf8s1q9W6kHQ4HPXZDgBAoPOzIUDkGgDAK36Wa1ar9dBWAAAaupkzZ8owDI0fP961rrS0VPfdd59atGihZs2a6fbbb9exY8d810gAAGrJl7lGIQkAsIbTxKUOPvnkEy1cuFA9e/Z0Wz9hwgStWbNGr732mjZu3KgjR45o2LBhdXsRAIB92DzXKCQBAAGvuLhYaWlpeuGFF9S8eXPX+sLCQr344ouaM2eOrrvuOl122WVavHixNm/erI8++siHLQYA4Nz8IdcoJAEAljg7KYEZiyQVFRW5LWVlZed87fvuu0833XSTUlJS3NZv375d5eXlbuu7deumdu3aacuWLfXyOQAAAoPdc41CEgBgDZOHACUmJioqKsq1ZGdn1/iyy5Yt06efflrj9oKCAoWGhio6OtptfWxsrAoKCrx7vwCAwGbzXKv1rK0AAPiTQ4cOKTIy0vV9WFhYjfs88MADeueddxQeHm5l8wAA8EhDyzV6JAEA1jD5ym1kZKTbUlPgbt++XcePH1efPn0UEhKikJAQbdy4UTk5OQoJCVFsbKzOnDmjU6dOuR137NgxxcXFmf4RAAACiM1zjR5JAIAlfPHg5uuvv16ff/6527q77rpL3bp108MPP6zExEQ1atRI69ev1+233y5J2rNnj/Lz89W/f3/vGwsACFh2zzUKSQBAwIqIiNAll1zitq5p06Zq0aKFa/2oUaM0ceJExcTEKDIyUvfff7/69++vK664whdNBgDgnPwp1ygkAQDW8OJZWdXOY6JnnnlGQUFBuv3221VWVqbU1FQ9//zz5r4IACDw2DzXKCQBAJbwxRCgmmzYsMHt+/DwcD333HN67rnnvDsxAMBW7J5rTLYDAAAAAPAIPZIAAGv46RAgAADqxOa5Ro8kAAAAAMAj9EgCAKxh8yu3AIAAY/Nco5AEAFjC+M9ixnkAAPA1u+caQ1sBAAAAAB6hRxIAYA2bDwECAAQYm+cahSQAwBL+8rwtAADMYPdcY2grAAAAAMAj9EgCAKxh8yFAAIAAY/Nco5AEAFingYYlAAA1snGuMbQVAAAAAOAReiQBAJaw+6QEAIDAYvdco5AEAFjD5veSAAACjM1zjaGtAAAAAACP2L5H0jAMrVy5UkOHDq3V/lOnTtWqVau0c+fOem0X6tfNI/+lO353XDGtKrR/d2M9/3gb7dnZxNfNgoVarDmsFm8ecVt3JjZcB6f1dN/R6VSbZ/eq6T8L9e1vO6ukV3MLWxlY7D4EyCrkmj2RayDXrGf3XAvYHsmRI0fKMAwZhqFGjRopNjZWgwYN0ksvvSSHw+Ha7+jRo/rZz35madsOHjwowzAIbR8ZeMtJ3TPliJbOidN9qV20f3e4nnxlv6JalPu6abBYWUJj7ZvVy7XkP5RcbZ/o9cd80DKgOnIN50Ku4SxyDVYK2EJSkgYPHqyjR4/q4MGDevvtt3XttdfqgQce0JAhQ1RRUSFJiouLU1hYmI9bCisNu+dfWvdKjP7+aozyvwpXzsNtVfZvQ6k/P+HrpsFiziBDlVGhrsXRrJHb9rBDJWr+7lEV/LqDj1oYYJwmLjZFrqEm5BrOItcsZvNcC+hCMiwsTHFxcWrTpo369Omj3//+93rjjTf09ttvKzc3V1LVEKBVq1a5jnn44YfVpUsXNWnSRB07dlRGRobKy6tf0Vu4cKESExPVpEkTDR8+XIWFhW7bFy1apOTkZIWHh6tbt256/vnnXds6dKj6x9u7d28ZhqFrrrmmVsedOXNGY8eOVXx8vMLDw5WUlKTs7GwTPin7CGnkUOeeP+jTDyJc65xOQzs+iFD3y37wYcvgC6HHS9Xx4R1q//guxb24TyEnylzbjDOVintxn46PaK/KqFAftjJwnB0CZMZiV+Qa/he5hv9GrlnL7rlmu3skr7vuOl166aVasWKFRo8eXW17RESEcnNzlZCQoM8//1xjxoxRRESEJk+e7Nrn66+/1vLly7VmzRoVFRVp1KhRuvfee7V06VJJ0tKlS5WZmalnn31WvXv31o4dOzRmzBg1bdpU6enp+vjjj/WTn/xE7777ri6++GKFhobW6ricnBytXr1ay5cvV7t27XTo0CEdOnTonO+1rKxMZWU//gIpKioy62NssCJjKhUcIp36zv1H/+S/QpTYqewcRyEQ/btDM5Wld9SZ2HCFFJ5RizePKPHpPB3M7CFneLBavZav0osiuHcEfo9cszdyDWeRa7Ca7QpJSerWrZs+++yzGrc9/vjjrq/bt2+vSZMmadmyZW6BW1paqiVLlqhNmzaSpHnz5ummm27S7NmzFRcXpylTpmj27NkaNmyYpKortbt379bChQuVnp6uVq1aSZJatGihuLg413kvdFx+fr46d+6sq666SoZhKCkp6bzvMzs7W9OmTavDJwQEvh8uiXZ9faZtE5V2aKYOv9+liO0nVNksRE2+LNI3j13iuwYGIptPk16fyDUA5JoP2DzXbFlIOp1OGYZR47ZXX31VOTk52rdvn4qLi1VRUaHIyEi3fdq1a+cKW0nq37+/HA6H9uzZo4iICO3bt0+jRo3SmDFjXPtUVFQoKirqnG0qKSm54HEjR47UoEGD1LVrVw0ePFhDhgzRDTfccM5zPvroo5o4caLr+6KiIiUmJp5zfzsoOhGsygopulWF2/rmLSt08jtb/nPAfziahKg8Nlyhx0tlfOtQo3+VqdPE7W77JCz8Sv/uFKHDD1afvAC1YPPArU/kmn2RazgXcs0CNs81W/6GycvLc93P8d+2bNmitLQ0TZs2TampqYqKitKyZcs0e/bsWp+7uLhYkvTCCy+oX79+btuCg4O9Oq5Pnz46cOCA3n77bb377rsaPny4UlJS9Ne//rXGc4aFhTHhwv+oKA/SV581Ue+rTmvLuqo/ZAzDqV5XFWt1bgsftw6+ZJRWqtF3paro10KnL4tR4ZWt3La3n/6Fvvu/diruyZAg+B9yzb7INZwLuYb6ZrtC8r333tPnn3+uCRMmVNu2efNmJSUl6bHHHnOt++abb6rtl5+fryNHjighIUGS9NFHHykoKEhdu3ZVbGysEhIStH//fqWlpdXYhrP3jlRWVrrW1eY4SYqMjNSdd96pO++8U3fccYcGDx6sEydOKCYmpnYfALTiTy01ae4h7d3VRHt2NNFtY75TeBOH/r6Mz9BOWv41XyU9o1UeE1Z1L8mab+UMMnS6bwtVRjSqcSKC8pgwVbTkj9i6svvztuoLuQZyDRK55gt2z7WALiTLyspUUFCgyspKHTt2TOvWrVN2draGDBmiX//619X279y5s/Lz87Vs2TL17dtXb775plauXFltv/DwcKWnp+vpp59WUVGRxo0bp+HDh7vuC5k2bZrGjRunqKgoDR48WGVlZdq2bZtOnjypiRMnqnXr1mrcuLHWrVuntm3bKjw8XFFRURc8bs6cOYqPj1fv3r0VFBSk1157TXFxcYqOjq7vjzKgbFzdXFEtKvXrhwrUvFWF9v+zsR5L66BT/2p04YMRMEJOnVH8i/sUVFKhymYh+nenCB16uLsqI/g5qDc2HwJkBnINNSHXIJFrPmHzXAvoQnLdunWKj49XSEiImjdvrksvvVQ5OTlKT09XUFD1J5/ccsstmjBhgsaOHauysjLddNNNysjI0NSpU93269Spk4YNG6Ybb7xRJ06c0JAhQ9ymMx89erSaNGmiP/zhD3rooYfUtGlT9ejRQ+PHj5ckhYSEKCcnR1lZWcrMzNTVV1+tDRs2XPC4iIgIPfXUU/rqq68UHBysvn376q233qrxveD8Vi9uqdWLW/q6GfChgtGdPNp/74Kf1FNLgNoj13Au5BrINVjNcDqdDbQGhqeKiooUFRWla3SrQgyuTsEdgYKaOP5dqsPjM1VYWFhtgpbaOvu7p9evnlRwaLjXbao8U6qdf37MqzYhMJBrOB9yDTUh18zDJT8AAAAAgEcCemgrAMCP2PxeEgBAgLF5rlFIAgAsYffZ7QAAgcXuucbQVgAAAACAR+iRBABYw+ZDgAAAAcbmuUYhCQCwhN2HAAEAAovdc42hrQAAAAAAj9AjCQCwhs2HAAEAAozNc41CEgBgCbsPAQIABBa75xpDWwEAAAAAHqFHEgBgDZsPAQIABBib5xqFJADAMg11+A4AADWxc64xtBUAAAAA4BF6JAEA1nA6qxYzzgMAgK/ZPNfokQQAAAAAeIQeSQCAJew+TToAILDYPdcoJAEA1rD57HYAgABj81xjaCsAAAAAwCP0SAIALGE4qhYzzgMAgK/ZPdcoJAEA1rD5ECAAQICxea4xtBUAAAAA4BF6JAEAlrD77HYAgMBi91yjkAQAWMPmD24GAAQYm+caQ1sBAAAAAB6hRxIAYAm7DwECAAQWu+caPZIAAAAAAI/QIwkAsIbNp0kHAAQYm+cahSQAwBJ2HwIEAAgsds81hrYCAAAAADxCjyQAwBo2nyYdABBgbJ5rFJIAAEvYfQgQACCw2D3XGNoKAAAAAPAIPZIAAGvYfHY7AECAsXmuUUgCACxh9yFAAIDAYvdcY2grAAAAAMAj9EgCAKzhcFYtZpwHAABfs3muUUgCAKxh83tJAAABxua5xtBWAAAAAIBH6JEEAFjCkEmTEnh/CgAAvGb3XKNHEgAAAADgEXokAQDWcDqrFjPOAwCAr9k81ygkAQCWsPvztgAAgcXuucbQVgBAwMrOzlbfvn0VERGh1q1ba+jQodqzZ4/bPqWlpbrvvvvUokULNWvWTLfffruOHTvmoxYDAHBu/pRrFJIAAGs4TVxqaePGjbrvvvv00Ucf6Z133lF5ebluuOEGlZSUuPaZMGGC1qxZo9dee00bN27UkSNHNGzYMK/fLgAgwNk81xjaCgCwhOF0yjDhPhBPzrFu3Tq373Nzc9W6dWtt375dAwYMUGFhoV588UW98soruu666yRJixcvVnJysj766CNdccUVXrcXABCY7J5r9EgCABqkoqIit6WsrOyCxxQWFkqSYmJiJEnbt29XeXm5UlJSXPt069ZN7dq105YtW+qn4QAA1KCh5RqFJADAGg4TF0mJiYmKiopyLdnZ2ed/eYdD48eP15VXXqlLLrlEklRQUKDQ0FBFR0e77RsbG6uCggLv3zMAIHDZPNcY2goAsITZQ4AOHTqkyMhI1/qwsLDzHnfffffpiy++0KZNm7xuAwAAds81CkkAQIMUGRnpFrjnM3bsWK1du1bvv/++2rZt61ofFxenM2fO6NSpU25Xb48dO6a4uDizmwwAwDk1tFxjaCsAwBo+mN3O6XRq7NixWrlypd577z116NDBbftll12mRo0aaf369a51e/bsUX5+vvr371+39wkAsAeb5xo9kgCAgHXffffplVde0RtvvKGIiAjX/SFRUVFq3LixoqKiNGrUKE2cOFExMTGKjIzU/fffr/79+zNjKwDA7/hTrlFIAgCs4XRWLWacp5bmz58vSbrmmmvc1i9evFgjR46UJD3zzDMKCgrS7bffrrKyMqWmpur555/3vp0AgMBm81yjkAQAWMJwVi1mnKe2nLUI5/DwcD333HN67rnnvGgVAMBu7J5r3CMJAAAAAPAIPZIAAGv4YAgQAAD1xua5RiEJALCE4ahazDgPAAC+ZvdcY2grAAAAAMAj9EgCAKxh8yFAAIAAY/Nco5AEAFjDw4cun/c8AAD4ms1zjULSRs5OF1yh8gb7A4v64/h3qa+bAD/kKK36uajNdOOA1cg1nA+5hpqQa+ahkLSR06dPS5I26S0ftwR+afwbvm4B/Njp06cVFRXl1TkMp1OGCcFtxjkQGMg1nBe5hvMg17xHIWkjCQkJOnTokCIiImQYhq+b43NFRUVKTEzUoUOHFBkZ6evmwE/wc+HO6XTq9OnTSkhIMONktr6XBOYj19zx+ws14efCHblmHgpJGwkKClLbtm193Qy/ExkZyS9WVMPPxY+8vWIL1BdyrWb8/kJN+Ln4EblmDgpJAIA1nJLMeFZWw7xwCwAINDbPNZ4jCQAAAADwCD2SsK2wsDBNmTJFYWFhvm4K/Ag/F/XH7pMSAPWN31+oCT8X9cfuuWY4mfsWAFCPioqKFBUVpet6PaKQYO//kKmoLNN7O2eqsLCQ+30AAJYj16owtBUAAAAA4BGGtgIArGHzadIBAAHG5rlGIQkAsIZDkhmP+jNjhjwAALxl81xjaCsAAAAAwCMUkgho11xzjcaPH1/r/Tds2CDDMHTq1Kl6axPqh2EYWrVqVa33nzp1qnr16lVv7UF1Z2e3M2MB7Ipcsw9yzf/ZPdcoJFEvRo4cKcMwNHPmTLf1q1atkmF4NwYgNzdXhmHIMAwFBwerefPm6tevn7KyslRYWOi274oVKzR9+nSvXq8u2rdvr7lz51r+uoHo7M+SYRhq1KiRYmNjNWjQIL300ktyOH4cC3L06FH97Gc/s7RtBw8elGEY2rlzp6Wv22CdvZfEjAWwGLlGrpmFXAsgNs81CknUm/DwcM2aNUsnT540/dyRkZE6evSoDh8+rM2bN+uee+7RkiVL1KtXLx05csS1X0xMjCIiIkx/fVhr8ODBOnr0qA4ePKi3335b1157rR544AENGTJEFRUVkqS4uDiekQWgXpFrMAu5hkBAIYl6k5KSori4OGVnZ593v9dff10XX3yxwsLC1L59e82ePfuC5zYMQ3FxcYqPj1dycrJGjRqlzZs3q7i4WJMnT3bt979DgP785z/r8ssvV0REhOLi4vSLX/xCx48fr3b+Dz/8UD179lR4eLiuuOIKffHFF27bN23apKuvvlqNGzdWYmKixo0bp5KSEtdrfvPNN5owYYLrimNtjpOk559/Xp07d1Z4eLhiY2N1xx13XPCzsIOwsDDFxcWpTZs26tOnj37/+9/rjTfe0Ntvv63c3FxJ1YcAPfzww+rSpYuaNGmijh07KiMjQ+Xl5dXOvXDhQiUmJqpJkyYaPnx4tav/ixYtUnJyssLDw9WtWzc9//zzrm0dOnSQJPXu3VuGYeiaa66p1XFnzpzR2LFjFR8fr/DwcCUlJV3w30lAsPmVWzR85Bq5ZhZyLUDYPNcoJFFvgoODNWPGDM2bN0+HDx+ucZ/t27dr+PDhGjFihD7//HNNnTpVGRkZrl+inmjdurXS0tK0evVqVVZW1rhPeXm5pk+frl27dmnVqlU6ePCgRo4cWW2/hx56SLNnz9Ynn3yiVq1a6eabb3b9st63b58GDx6s22+/XZ999pleffVVbdq0SWPHjpVUNeyobdu2ysrK0tGjR3X06NFaHbdt2zaNGzdOWVlZ2rNnj9atW6cBAwZ4/DnYxXXXXadLL71UK1asqHF7RESEcnNztXv3bv3xj3/UCy+8oGeeecZtn6+//lrLly/XmjVrtG7dOu3YsUP33nuva/vSpUuVmZmpJ598Unl5eZoxY4YyMjL08ssvS5I+/vhjSdK7776ro0ePutpyoeNycnK0evVqLV++XHv27NHSpUvVvn17sz8iACYj18i1+kSuoaHh8R+oV7fddpt69eqlKVOm6MUXX6y2fc6cObr++uuVkZEhSerSpYt2796tP/zhDzUG4YV069ZNp0+f1vfff6/WrVtX23733Xe7vu7YsaNycnLUt29fFRcXq1mzZq5tU6ZM0aBBgyRJL7/8stq2bauVK1dq+PDhys7OVlpamuuKcOfOnZWTk6OBAwdq/vz5iomJUXBwsOvq8FkXOi4/P19NmzbVkCFDFBERoaSkJPXu3dvjz8BOunXrps8++6zGbY8//rjr6/bt22vSpElatmyZ25X90tJSLVmyRG3atJEkzZs3TzfddJNmz56tuLg4TZkyRbNnz9awYcMkVV2p3b17txYuXKj09HS1atVKktSiRQu3/9cXOi4/P1+dO3fWVVddJcMwlJSUZO4H469s/rwtBAZyjVyrT+RaA2PzXKOQRL2bNWuWrrvuOk2aNKnatry8PN16661u66688krNnTtXlZWVCg4O9ui1nP/5h3iuiQ+2b9+uqVOnateuXTp58qTrpvb8/Hx1797dtV///v1dX8fExKhr167Ky8uTJO3atUufffaZli5d6va6DodDBw4cUHJyco2vfaHjBg0apKSkJHXs2FGDBw/W4MGDddttt6lJkyYefQZ24nQ6z/n/+tVXX1VOTo727dun4uJiVVRUKDIy0m2fdu3aucJWqvr/7nA4tGfPHkVERGjfvn0aNWqUxowZ49qnoqJCUVFR52xTSUnJBY8bOXKkBg0apK5du2rw4MEaMmSIbrjhhjp9Bg2KzZ+3hcBBrqlWx5FrniPXGhib5xqFJOrdgAEDlJqaqkcffbROV2M9kZeXp8jISLVo0aLatpKSEqWmpio1NVVLly5Vq1atlJ+fr9TUVJ05c6bWr1FcXKzf/OY3GjduXLVt7dq1q/NxoaGh+vTTT7Vhwwb9/e9/V2ZmpqZOnapPPvlE0dHRtW6fneTl5bnu5/hvW7ZsUVpamqZNm6bU1FRFRUVp2bJltbpP6azi4mJJ0gsvvKB+/fq5bTvfH4K1Oa5Pnz46cOCA3n77bb377rsaPny4UlJS9Ne//rXW7QPgO+Ra7Y4j1zxHrqEhoZCEJWbOnKlevXqpa9eubuuTk5P14Ycfuq378MMP1aVLF4+v2h4/flyvvPKKhg4dqqCg6rf/fvnll/r+++81c+ZMJSYmSqq6f6MmH330kSs8T548qb1797quyPbp00e7d+9Wp06dztmW0NDQavez1Oa4kJAQpaSkKCUlRVOmTFF0dLTee+8911AS/Oi9997T559/rgkTJlTbtnnzZiUlJemxxx5zrfvmm2+q7Zefn68jR44oISFBUtX/96CgIHXt2lWxsbFKSEjQ/v37lZaWVmMbQkNDJcnt/3VtjpOqZmi88847deedd+qOO+7Q4MGDdeLECcXExNTuA2iAzHpWVkN93hYCC7lGrpmNXGt47J5rFJKwRI8ePZSWlqacnBy39Q8++KD69u2r6dOn684779SWLVv07LPPus0EVhOn06mCggI5nU6dOnVKW7Zs0YwZMxQVFVXtGV9nnb06Om/ePP32t7/VF198cc5ncWVlZalFixaKjY3VY489ppYtW2ro0KGSqmZNu+KKKzR27FiNHj1aTZs21e7du/XOO+/o2WeflVR178L777+vESNGKCwsTC1btrzgcWvXrtX+/fs1YMAANW/eXG+99ZYcDke1P1LsqKysTAUFBaqsrNSxY8e0bt06ZWdna8iQIfr1r39dbf/OnTsrPz9fy5YtU9++ffXmm29q5cqV1fYLDw9Xenq6nn76aRUVFWncuHEaPny4676QadOmady4cYqKitLgwYNVVlambdu26eTJk5o4caJat26txo0ba926dWrbtq3Cw8MVFRV1wePmzJmj+Ph49e7dW0FBQXrttdcUFxcX+FfobX4vCQILuUaueYNcCxA2zzVmbYVlsrKy3B60K1VdzVy+fLmWLVumSy65RJmZmcrKyrrgUKGioiLFx8erTZs26t+/v+tm7x07dig+Pr7GY1q1aqXc3Fy99tpr6t69u2bOnKmnn366xn1nzpypBx54QJdddpkKCgq0Zs0a11W6nj17auPGjdq7d6+uvvpq9e7dW5mZma6rf2ff68GDB3XRRRe5bly/0HHR0dFasWKFrrvuOiUnJ2vBggX6y1/+oosvvrhWn28gW7duneLj49W+fXsNHjxY//jHP5STk6M33nijxiv8t9xyiyZMmKCxY8eqV69e2rx5s2vii//WqVMnDRs2TDfeeKNuuOEG9ezZ0+2PvdGjR2vRokVavHixevTooYEDByo3N9c17CgkJEQ5OTlauHChEhISXPdFXei4iIgIPfXUU7r88svVt29fHTx4UG+99VaNPQ4A/Be5Rq7VFbmGQGA4nQ20BAYANAhFRUWKiopSykXjFRLs/cO1KyrL9O6+uSosLKw20QQAAPWNXKvC0FYAgDVsPgQIABBgbJ5r9DcDAAAAADxCjyQAwCImXblVw7xyCwAINPbONQpJAIA1bD4ECAAQYGyeawxtBQAAAAB4hB5JAIA1HE6ZMnzH0TCv3AIAAozNc40eSQAAAACAR+iRBABYw+moWsw4DwAAvmbzXKNHEmggRo4cqaFDh7q+v+aaazR+/HjL27FhwwYZhqFTp06dcx/DMLRq1apan3Pq1Knq1auXV+06ePCgDMPQzp07vToP6tHZSQnMWAA0eOTa+ZFrDYDNc41CEvDCyJEjZRiGDMNQaGioOnXqpKysLFVUVNT7a69YsULTp0+v1b61CUkAAMg1ALXF0FbAS4MHD9bixYtVVlamt956S/fdd58aNWqkRx99tNq+Z86cUWhoqCmvGxMTY8p5AMvYfFICoKEg14Basnmu0SMJeCksLExxcXFKSkrS7373O6WkpGj16tWSfhy28+STTyohIUFdu3aVJB06dEjDhw9XdHS0YmJidOutt+rgwYOuc1ZWVmrixImKjo5WixYtNHnyZDn/Z9jD/w4BKisr08MPP6zExESFhYWpU6dOevHFF3Xw4EFde+21kqTmzZvLMAyNHDlSkuRwOJSdna0OHTqocePGuvTSS/XXv/7V7XXeeustdenSRY0bN9a1117r1s7aevjhh9WlSxc1adJEHTt2VEZGhsrLy6vtt3DhQiUmJqpJkyYaPny4CgsL3bYvWrRIycnJCg8PV7du3fT888973Bb4kM2HAAENBbl2YeQaJNk+1ygkAZM1btxYZ86ccX2/fv167dmzR++8847Wrl2r8vJypaamKiIiQh988IE+/PBDNWvWTIMHD3YdN3v2bOXm5uqll17Spk2bdOLECa1cufK8r/vrX/9af/nLX5STk6O8vDwtXLhQzZo1U2Jiol5//XVJ0p49e3T06FH98Y9/lCRlZ2dryZIlWrBggf75z39qwoQJ+uUvf6mNGzdKqvrDYNiwYbr55pu1c+dOjR49Wo888ojHn0lERIRyc3O1e/du/fGPf9QLL7ygZ555xm2fr7/+WsuXL9eaNWu0bt067dixQ/fee69r+9KlS5WZmaknn3xSeXl5mjFjhjIyMvTyyy973B4AQO2Ra9WRawBDWwHTOJ1OrV+/Xn/72990//33u9Y3bdpUixYtcg39+X//7//J4XBo0aJFMgxDkrR48WJFR0drw4YNuuGGGzR37lw9+uijGjZsmCRpwYIF+tvf/nbO1967d6+WL1+ud955RykpKZKkjh07urafHS7UunVrRUdHS6q60jtjxgy9++676t+/v+uYTZs2aeHChRo4cKDmz5+viy66SLNnz5Ykde3aVZ9//rlmzZrl0Wfz+OOPu75u3769Jk2apGXLlmny5Mmu9aWlpVqyZInatGkjSZo3b55uuukmzZ49W3FxcZoyZYpmz57t+kw6dOig3bt3a+HChUpPT/eoPfARp8y56towL9wCDQ65dm7kGiTZPtcoJAEvrV27Vs2aNVN5ebkcDod+8YtfaOrUqa7tPXr0cLt/ZNeuXfr6668VERHhdp7S0lLt27dPhYWFOnr0qPr16+faFhISossvv7zaMKCzdu7cqeDgYA0cOLDW7f7666/1ww8/aNCgQW7rz5w5o969e0uS8vLy3NohyRXOnnj11VeVk5Ojffv2qbi4WBUVFYqMjHTbp127dq6wPfs6DodDe/bsUUREhPbt26dRo0ZpzJgxrn0qKioUFRXlcXvgI2YN32mgQ4CAhoJcuzByDZJsn2sUkoCXrr32Ws2fP1+hoaFKSEhQSIj7P6umTZu6fV9cXKzLLrtMS5curXauVq1a1akNjRs39viY4uJiSdKbb77pFnRS1f0xZtmyZYvS0tI0bdo0paamKioqSsuWLXNdDfakrS+88EK1PwCCg4NNaysAgFy7EHINqEIhCXipadOm6tSpU63379Onj1599VW1bt262tXLs+Lj47V161YNGDBAUtUVyu3bt6tPnz417t+jRw85HA5t3LjRNQTov529clxZWela1717d4WFhSk/P/+cV3yTk5NdEyyc9dFHH134Tf6XzZs3KykpSY899phr3TfffFNtv/z8fB05ckQJCQmu1wkKClLXrl0VGxurhIQE7d+/X2lpaR69PvyIwyHJhIcuOxrmg5uBhoJcOz9yDS42zzUm2wEslpaWppYtW+rWW2/VBx98oAMHDmjDhg0aN26cDh8+LEl64IEHNHPmTK1atUpffvml7r333vM+K6t9+/ZKT0/X3XffrVWrVrnOuXz5cklSUlKSDMPQ2rVr9d1336m4uFgRERGaNGmSJkyYoJdffln79u3Tp59+qnnz5rlu9P/tb3+rr776Sg899JD27NmjV155Rbm5uR69386dOys/P1/Lli3Tvn37lJOTU+MEC+Hh4UpPT9euXbv0wQcfaNy4cRo+fLji4uIkSdOmTVN2drZycnK0d+9eff7551q8eLHmzJnjUXsAAOYi18g12BOFJGCxJk2a6P3331e7du00bNgwJScna9SoUSotLXVdyX3wwQf1q1/9Sunp6erfv78iIiJ02223nfe88+fP1x133KF7771X3bp105gxY1RSUiJJatOmjaZNm6ZHHnlEsbGxGjt2rCRp+vTpysjIUHZ2tpKTkzV48GC9+eab6tChg6Sq+ztef/11rVq1SpdeeqkWLFigGTNmePR+b7nlFk2YMEFjx45Vr169tHnzZmVkZFTbr1OnTho2bJhuvPFG3XDDDerZs6fbNOijR4/WokWLtHjxYvXo0UMDBw5Ubm6uq61oAGw+TToQqMg1cs22bJ5rhvNcdzkDAGCCoqIiRUVFKaXl3QoJ8v7B5RWOM3r3Xy+psLDwnMPoAACoL+RaFXokAQAAAAAeYbIdAIA1HE6Z8rAsBwNpAAB+wOa5RiEJALCE0+mQ0+n9zHRmnAMAAG/ZPdcY2goAAAAA8Ag9kgAAazid5gzfYY44AIA/sHmuUUgCAKzhNOlekgYauACAAGPzXGNoKwAAAADAI/RIAgCs4XBIhgkTCjTQSQkAAAHG5rlGIQkAsIbNhwABAAKMzXONoa0AAAAAAI/QIwkAsITT4ZDThCFADfV5WwCAwGL3XKNHEgAAAADgEXokAQDWsPm9JACAAGPzXKOQBABYw+GUDPsGLgAgwNg81xjaCgAAAADwCD2SAABrOJ2SzHjeVsO8cgsACDA2zzUKSQCAJZwOp5wmDAFyNtDABQAEFrvnGkNbAQAAAAAeoUcSAGANp0PmDAFqmM/bAgAEGJvnGj2SAABLOB1O0xZPPffcc2rfvr3Cw8PVr18/ffzxx/XwDgEAdmL3XKOQBAAEtFdffVUTJ07UlClT9Omnn+rSSy9Vamqqjh8/7uumAQDgMX/JNQpJAIA1nA7zFg/MmTNHY8aM0V133aXu3btrwYIFatKkiV566aV6eqMAAFuwea5xjyQAwBIVKpdMmJiuQuWSpKKiIrf1YWFhCgsLc1t35swZbd++XY8++qhrXVBQkFJSUrRlyxbvGwMAsC275xqFJACgXoWGhiouLk6bCt4y7ZzNmjVTYmKi27opU6Zo6tSpbuv+9a9/qbKyUrGxsW7rY2Nj9eWXX5rWHgCAfZBrVSgkAQD1Kjw8XAcOHNCZM2dMO6fT6ZRhGG7r/veqLQAA9YFcq0IhCQCod+Hh4QoPD7f8dVu2bKng4GAdO3bMbf2xY8cUFxdneXsAAIGBXGOyHQBAAAsNDdVll12m9evXu9Y5HA6tX79e/fv392HLAADwnD/lGj2SAICANnHiRKWnp+vyyy/XT37yE82dO1clJSW66667fN00AAA85i+5RiEJAAhod955p7777jtlZmaqoKBAvXr10rp166pNVAAAQEPgL7lmOJ1OEyatBQAAAADYBfdIAgAAAAA8QiEJAAAAAPAIhSQAAAAAwCMUkgAAAAAAj1BIAgAAAAA8QiEJAAAAAPAIhSQAAAAAwCMUkgAAAAAAj1BIAgAAAAA8QiEJAAAAAPAIhSQAAAAAwCP/H6a6QsVMBTCuAAAAAElFTkSuQmCC",
|
||
"text/plain": [
|
||
"<Figure size 1000x400 with 4 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"_, ax = plt.subplots(1, 2, figsize=(10, 4), sharex=False, sharey=False\n",
|
||
")\n",
|
||
"\n",
|
||
"for index in range(0, len(optimized_metrics)):\n",
|
||
" c_matrix = optimized_metrics.iloc[index][\"Confusion_matrix\"]\n",
|
||
" disp = ConfusionMatrixDisplay(\n",
|
||
" confusion_matrix=c_matrix, display_labels=[\"No Diabetes\", \"Diabetes\"]\n",
|
||
" ).plot(ax=ax.flat[index])\n",
|
||
"\n",
|
||
"plt.subplots_adjust(top=1, bottom=0, hspace=0.4, wspace=0.3)\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"В желтых квадрате мы наблюдаем значение 100, что обозначает количество правильно классифицированных объектов, отнесенных к классу \"No Diabetes\". Это свидетельствует о том, что модель успешно идентифицирует объекты этого класса, минимизируя количество ложных положительных срабатываний.\n",
|
||
"\n",
|
||
"В бирюзовом квадрате значение 0 указывает на количество правильно классифицированных объектов, отнесенных к классу \"Diabetes\". Это является показателем не такой высокой точности модели в определении объектов данного класса."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Определение достижимого уровня качества модели для второй задачи (задача регрессии)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"(700, 8)\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>Pregnancies</th>\n",
|
||
" <th>Glucose</th>\n",
|
||
" <th>BloodPressure</th>\n",
|
||
" <th>SkinThickness</th>\n",
|
||
" <th>Insulin</th>\n",
|
||
" <th>BMI</th>\n",
|
||
" <th>DiabetesPedigreeFunction</th>\n",
|
||
" <th>Age</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>6</td>\n",
|
||
" <td>98</td>\n",
|
||
" <td>58</td>\n",
|
||
" <td>33</td>\n",
|
||
" <td>190</td>\n",
|
||
" <td>34.0</td>\n",
|
||
" <td>0.430</td>\n",
|
||
" <td>43</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>112</td>\n",
|
||
" <td>75</td>\n",
|
||
" <td>32</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>35.7</td>\n",
|
||
" <td>0.148</td>\n",
|
||
" <td>21</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>108</td>\n",
|
||
" <td>64</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>30.8</td>\n",
|
||
" <td>0.158</td>\n",
|
||
" <td>21</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>8</td>\n",
|
||
" <td>107</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>24.6</td>\n",
|
||
" <td>0.856</td>\n",
|
||
" <td>34</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>7</td>\n",
|
||
" <td>136</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>29.9</td>\n",
|
||
" <td>0.210</td>\n",
|
||
" <td>50</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>695</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>105</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>191</td>\n",
|
||
" <td>33.7</td>\n",
|
||
" <td>0.711</td>\n",
|
||
" <td>29</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>696</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>126</td>\n",
|
||
" <td>56</td>\n",
|
||
" <td>29</td>\n",
|
||
" <td>152</td>\n",
|
||
" <td>28.7</td>\n",
|
||
" <td>0.801</td>\n",
|
||
" <td>21</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>697</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>54</td>\n",
|
||
" <td>14</td>\n",
|
||
" <td>88</td>\n",
|
||
" <td>26.1</td>\n",
|
||
" <td>0.748</td>\n",
|
||
" <td>22</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>698</th>\n",
|
||
" <td>3</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>68</td>\n",
|
||
" <td>23</td>\n",
|
||
" <td>81</td>\n",
|
||
" <td>31.6</td>\n",
|
||
" <td>0.949</td>\n",
|
||
" <td>28</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>699</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>66</td>\n",
|
||
" <td>29</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>26.6</td>\n",
|
||
" <td>0.351</td>\n",
|
||
" <td>31</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>700 rows × 8 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n",
|
||
"0 6 98 58 33 190 34.0 \n",
|
||
"1 2 112 75 32 0 35.7 \n",
|
||
"2 2 108 64 0 0 30.8 \n",
|
||
"3 8 107 80 0 0 24.6 \n",
|
||
"4 7 136 90 0 0 29.9 \n",
|
||
".. ... ... ... ... ... ... \n",
|
||
"695 2 105 80 45 191 33.7 \n",
|
||
"696 1 126 56 29 152 28.7 \n",
|
||
"697 2 95 54 14 88 26.1 \n",
|
||
"698 3 100 68 23 81 31.6 \n",
|
||
"699 1 85 66 29 0 26.6 \n",
|
||
"\n",
|
||
" DiabetesPedigreeFunction Age \n",
|
||
"0 0.430 43 \n",
|
||
"1 0.148 21 \n",
|
||
"2 0.158 21 \n",
|
||
"3 0.856 34 \n",
|
||
"4 0.210 50 \n",
|
||
".. ... ... \n",
|
||
"695 0.711 29 \n",
|
||
"696 0.801 21 \n",
|
||
"697 0.748 22 \n",
|
||
"698 0.949 28 \n",
|
||
"699 0.351 31 \n",
|
||
"\n",
|
||
"[700 rows x 8 columns]"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"import pandas as pd\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import seaborn as sns\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"from sklearn import set_config\n",
|
||
"\n",
|
||
"# Установите random_state для воспроизводимости результатов\n",
|
||
"random_state = 42\n",
|
||
"set_config(transform_output=\"pandas\")\n",
|
||
"\n",
|
||
"df = pd.read_csv(\"C:/Users/TIGR228/Desktop/МИИ/Lab1/AIM-PIbd-31-Afanasev-S-S/static/csv/diabetes.csv\")\n",
|
||
"\n",
|
||
"# Удалите столбцы, которые не нужны для анализа\n",
|
||
"df = df.drop(columns=[\"Outcome\"])\n",
|
||
"\n",
|
||
"df = df.sample(n=700, random_state=random_state).reset_index(drop=True)\n",
|
||
"\n",
|
||
"print(df.shape) \n",
|
||
"display(df)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n",
|
||
"0 6 148 72 35 0 33.6 \n",
|
||
"1 1 85 66 29 0 26.6 \n",
|
||
"2 8 183 64 0 0 23.3 \n",
|
||
"3 1 89 66 23 94 28.1 \n",
|
||
"4 0 137 40 35 168 43.1 \n",
|
||
"\n",
|
||
" DiabetesPedigreeFunction Age diabetes_risk_index \n",
|
||
"0 0.627 50 71.68 \n",
|
||
"1 0.351 31 46.28 \n",
|
||
"2 0.672 32 74.69 \n",
|
||
"3 0.167 21 55.33 \n",
|
||
"4 2.288 33 81.43 \n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"\n",
|
||
"df = pd.read_csv(\"C:/Users/TIGR228/Desktop/МИИ/Lab1/AIM-PIbd-31-Afanasev-S-S/static/csv/diabetes.csv\")\n",
|
||
"\n",
|
||
"required_columns = [\"Pregnancies\", \"Glucose\", \"BloodPressure\", \"SkinThickness\", \"Insulin\", \"BMI\", \"DiabetesPedigreeFunction\", \"Age\"]\n",
|
||
"missing_columns = [col for col in required_columns if col not in df.columns]\n",
|
||
"if missing_columns:\n",
|
||
" raise ValueError(f\"Отсутствуют столбцы: {missing_columns}\")\n",
|
||
"\n",
|
||
"df[\"diabetes_risk_index\"] = (\n",
|
||
" df[\"Glucose\"] * 0.3 \n",
|
||
" + df[\"BMI\"] * 0.3 \n",
|
||
" + df[\"Age\"] * 0.2 \n",
|
||
" + df[\"BloodPressure\"] * 0.1 \n",
|
||
" + df[\"Insulin\"] * 0.1 \n",
|
||
")\n",
|
||
"\n",
|
||
"# Проверка новых данных\n",
|
||
"print(df[[\"Pregnancies\", \"Glucose\", \"BloodPressure\", \"SkinThickness\", \"Insulin\", \"BMI\", \"DiabetesPedigreeFunction\", \"Age\", \"diabetes_risk_index\"]].head())\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Разделение набора данных на обучающую и тестовые выборки (80/20) для задачи регрессии "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'X_train'"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Pregnancies</th>\n",
|
||
" <th>Glucose</th>\n",
|
||
" <th>BloodPressure</th>\n",
|
||
" <th>SkinThickness</th>\n",
|
||
" <th>Insulin</th>\n",
|
||
" <th>BMI</th>\n",
|
||
" <th>DiabetesPedigreeFunction</th>\n",
|
||
" <th>Age</th>\n",
|
||
" <th>Outcome</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>60</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>84</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.304</td>\n",
|
||
" <td>21</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>618</th>\n",
|
||
" <td>9</td>\n",
|
||
" <td>112</td>\n",
|
||
" <td>82</td>\n",
|
||
" <td>24</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>28.2</td>\n",
|
||
" <td>1.282</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>346</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>139</td>\n",
|
||
" <td>46</td>\n",
|
||
" <td>19</td>\n",
|
||
" <td>83</td>\n",
|
||
" <td>28.7</td>\n",
|
||
" <td>0.654</td>\n",
|
||
" <td>22</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>294</th>\n",
|
||
" <td>0</td>\n",
|
||
" <td>161</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>21.9</td>\n",
|
||
" <td>0.254</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>231</th>\n",
|
||
" <td>6</td>\n",
|
||
" <td>134</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>37</td>\n",
|
||
" <td>370</td>\n",
|
||
" <td>46.2</td>\n",
|
||
" <td>0.238</td>\n",
|
||
" <td>46</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n",
|
||
"60 2 84 0 0 0 0.0 \n",
|
||
"618 9 112 82 24 0 28.2 \n",
|
||
"346 1 139 46 19 83 28.7 \n",
|
||
"294 0 161 50 0 0 21.9 \n",
|
||
"231 6 134 80 37 370 46.2 \n",
|
||
"\n",
|
||
" DiabetesPedigreeFunction Age Outcome \n",
|
||
"60 0.304 21 0 \n",
|
||
"618 1.282 50 1 \n",
|
||
"346 0.654 22 0 \n",
|
||
"294 0.254 65 0 \n",
|
||
"231 0.238 46 1 "
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'y_train'"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>diabetes_risk_index</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>60</th>\n",
|
||
" <td>29.40</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>618</th>\n",
|
||
" <td>60.26</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>346</th>\n",
|
||
" <td>67.61</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>294</th>\n",
|
||
" <td>72.87</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>231</th>\n",
|
||
" <td>108.26</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" diabetes_risk_index\n",
|
||
"60 29.40\n",
|
||
"618 60.26\n",
|
||
"346 67.61\n",
|
||
"294 72.87\n",
|
||
"231 108.26"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'X_test'"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Pregnancies</th>\n",
|
||
" <th>Glucose</th>\n",
|
||
" <th>BloodPressure</th>\n",
|
||
" <th>SkinThickness</th>\n",
|
||
" <th>Insulin</th>\n",
|
||
" <th>BMI</th>\n",
|
||
" <th>DiabetesPedigreeFunction</th>\n",
|
||
" <th>Age</th>\n",
|
||
" <th>Outcome</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>668</th>\n",
|
||
" <td>6</td>\n",
|
||
" <td>98</td>\n",
|
||
" <td>58</td>\n",
|
||
" <td>33</td>\n",
|
||
" <td>190</td>\n",
|
||
" <td>34.0</td>\n",
|
||
" <td>0.430</td>\n",
|
||
" <td>43</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>324</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>112</td>\n",
|
||
" <td>75</td>\n",
|
||
" <td>32</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>35.7</td>\n",
|
||
" <td>0.148</td>\n",
|
||
" <td>21</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>624</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>108</td>\n",
|
||
" <td>64</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>30.8</td>\n",
|
||
" <td>0.158</td>\n",
|
||
" <td>21</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>690</th>\n",
|
||
" <td>8</td>\n",
|
||
" <td>107</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>24.6</td>\n",
|
||
" <td>0.856</td>\n",
|
||
" <td>34</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>473</th>\n",
|
||
" <td>7</td>\n",
|
||
" <td>136</td>\n",
|
||
" <td>90</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>29.9</td>\n",
|
||
" <td>0.210</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n",
|
||
"668 6 98 58 33 190 34.0 \n",
|
||
"324 2 112 75 32 0 35.7 \n",
|
||
"624 2 108 64 0 0 30.8 \n",
|
||
"690 8 107 80 0 0 24.6 \n",
|
||
"473 7 136 90 0 0 29.9 \n",
|
||
"\n",
|
||
" DiabetesPedigreeFunction Age Outcome \n",
|
||
"668 0.430 43 0 \n",
|
||
"324 0.148 21 0 \n",
|
||
"624 0.158 21 0 \n",
|
||
"690 0.856 34 0 \n",
|
||
"473 0.210 50 0 "
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'y_test'"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>diabetes_risk_index</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>668</th>\n",
|
||
" <td>73.00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>324</th>\n",
|
||
" <td>56.01</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>624</th>\n",
|
||
" <td>52.24</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>690</th>\n",
|
||
" <td>54.28</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>473</th>\n",
|
||
" <td>68.77</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" diabetes_risk_index\n",
|
||
"668 73.00\n",
|
||
"324 56.01\n",
|
||
"624 52.24\n",
|
||
"690 54.28\n",
|
||
"473 68.77"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"from typing import Tuple\n",
|
||
"import pandas as pd\n",
|
||
"from pandas import DataFrame\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"\n",
|
||
"def split_into_train_test(\n",
|
||
" df_input: DataFrame,\n",
|
||
" target_colname: str = \"diabetes_risk_index\",\n",
|
||
" frac_train: float = 0.8,\n",
|
||
" random_state: int = None,\n",
|
||
") -> Tuple[DataFrame, DataFrame, DataFrame, DataFrame]:\n",
|
||
" if not (0 < frac_train < 1):\n",
|
||
" raise ValueError(\"Fraction must be between 0 and 1.\")\n",
|
||
" \n",
|
||
" # Проверка наличия целевого признака\n",
|
||
" if target_colname not in df_input.columns:\n",
|
||
" raise ValueError(f\"{target_colname} is not a column in the DataFrame.\")\n",
|
||
" \n",
|
||
" # Разделяем данные на признаки и целевую переменную\n",
|
||
" X = df_input.drop(columns=[target_colname]) # Признаки\n",
|
||
" y = df_input[[target_colname]] # Целевая переменная\n",
|
||
"\n",
|
||
" # Разделяем данные на обучающую и тестовую выборки\n",
|
||
" X_train, X_test, y_train, y_test = train_test_split(\n",
|
||
" X, y,\n",
|
||
" test_size=(1.0 - frac_train),\n",
|
||
" random_state=random_state\n",
|
||
" )\n",
|
||
" \n",
|
||
" return X_train, X_test, y_train, y_test\n",
|
||
"\n",
|
||
"# Применение функции для разделения данных\n",
|
||
"X_train, X_test, y_train, y_test = split_into_train_test(\n",
|
||
" df, \n",
|
||
" target_colname=\"diabetes_risk_index\", \n",
|
||
" frac_train=0.8, \n",
|
||
" random_state=42\n",
|
||
")\n",
|
||
"\n",
|
||
"# Для отображения результатов\n",
|
||
"display(\"X_train\", X_train.head())\n",
|
||
"display(\"y_train\", y_train.head())\n",
|
||
"\n",
|
||
"display(\"X_test\", X_test.head())\n",
|
||
"display(\"y_test\", y_test.head())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Определение перечня алгоритмов решения задачи аппроксимации (регрессии)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn.pipeline import make_pipeline\n",
|
||
"from sklearn.preprocessing import PolynomialFeatures, StandardScaler\n",
|
||
"from sklearn import linear_model, tree, neighbors, ensemble, neural_network\n",
|
||
"\n",
|
||
"# Установка random_state для воспроизводимости\n",
|
||
"random_state = 42\n",
|
||
"\n",
|
||
"# Словарь моделей\n",
|
||
"models = {\n",
|
||
" # Линейная регрессия\n",
|
||
" \"linear\": {\n",
|
||
" \"model\": linear_model.LinearRegression(n_jobs=-1)\n",
|
||
" },\n",
|
||
" # Полиномиальная регрессия степени 2\n",
|
||
" \"linear_poly\": {\n",
|
||
" \"model\": make_pipeline(\n",
|
||
" PolynomialFeatures(degree=2),\n",
|
||
" StandardScaler(), # Добавляем масштабирование данных\n",
|
||
" linear_model.LinearRegression(fit_intercept=False, n_jobs=-1),\n",
|
||
" )\n",
|
||
" },\n",
|
||
" # Полиномиальная регрессия с взаимодействиями\n",
|
||
" \"linear_interact\": {\n",
|
||
" \"model\": make_pipeline(\n",
|
||
" PolynomialFeatures(interaction_only=True),\n",
|
||
" StandardScaler(), # Масштабирование данных\n",
|
||
" linear_model.LinearRegression(fit_intercept=False, n_jobs=-1),\n",
|
||
" )\n",
|
||
" },\n",
|
||
" # Ridge-регрессия\n",
|
||
" \"ridge\": {\n",
|
||
" \"model\": make_pipeline(\n",
|
||
" StandardScaler(), # Масштабирование данных\n",
|
||
" linear_model.RidgeCV()\n",
|
||
" )\n",
|
||
" },\n",
|
||
" # Регрессия на основе дерева решений\n",
|
||
" \"decision_tree\": {\n",
|
||
" \"model\": tree.DecisionTreeRegressor(max_depth=7, random_state=random_state)\n",
|
||
" },\n",
|
||
" # Метод ближайших соседей (kNN)\n",
|
||
" \"knn\": {\n",
|
||
" \"model\": make_pipeline(\n",
|
||
" StandardScaler(), # Масштабирование данных\n",
|
||
" neighbors.KNeighborsRegressor(n_neighbors=7, n_jobs=-1)\n",
|
||
" )\n",
|
||
" },\n",
|
||
" # Случайный лес (Random Forest)\n",
|
||
" \"random_forest\": {\n",
|
||
" \"model\": ensemble.RandomForestRegressor(\n",
|
||
" max_depth=7, random_state=random_state, n_jobs=-1\n",
|
||
" )\n",
|
||
" },\n",
|
||
" # Нейронная сеть (MLPRegressor)\n",
|
||
" \"mlp\": {\n",
|
||
" \"model\": make_pipeline(\n",
|
||
" StandardScaler(), # Масштабирование данных\n",
|
||
" neural_network.MLPRegressor(\n",
|
||
" activation=\"tanh\",\n",
|
||
" hidden_layer_sizes=(3,), # Простая архитектура сети\n",
|
||
" max_iter=500,\n",
|
||
" early_stopping=True,\n",
|
||
" random_state=random_state,\n",
|
||
" )\n",
|
||
" )\n",
|
||
" },\n",
|
||
"}\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Формирование набора моделей для регрессии"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Model: linear\n",
|
||
"Model: linear_poly\n",
|
||
"Model: linear_interact\n",
|
||
"Model: ridge\n",
|
||
"Model: decision_tree\n",
|
||
"Model: knn\n",
|
||
"Model: random_forest\n",
|
||
"Model: mlp\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\TIGR228\\Desktop\\МИИ\\Lab1\\AIM-PIbd-31-Afanasev-S-S\\aimenv\\Lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:690: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (500) reached and the optimization hasn't converged yet.\n",
|
||
" warnings.warn(\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import math\n",
|
||
"from pandas import DataFrame\n",
|
||
"from sklearn import metrics\n",
|
||
"\n",
|
||
"for model_name in models.keys():\n",
|
||
" print(f\"Model: {model_name}\")\n",
|
||
"\n",
|
||
" fitted_model = models[model_name][\"model\"].fit(\n",
|
||
" X_train.values, y_train.values.ravel()\n",
|
||
" )\n",
|
||
" y_train_pred = fitted_model.predict(X_train.values)\n",
|
||
" y_test_pred = fitted_model.predict(X_test.values)\n",
|
||
" models[model_name][\"fitted\"] = fitted_model\n",
|
||
" models[model_name][\"train_preds\"] = y_train_pred\n",
|
||
" models[model_name][\"preds\"] = y_test_pred\n",
|
||
" models[model_name][\"RMSE_train\"] = math.sqrt(\n",
|
||
" metrics.mean_squared_error(y_train, y_train_pred)\n",
|
||
" )\n",
|
||
" models[model_name][\"RMSE_test\"] = math.sqrt(\n",
|
||
" metrics.mean_squared_error(y_test, y_test_pred)\n",
|
||
" )\n",
|
||
" models[model_name][\"RMAE_test\"] = math.sqrt(\n",
|
||
" metrics.mean_absolute_error(y_test, y_test_pred)\n",
|
||
" )\n",
|
||
" models[model_name][\"R2_test\"] = metrics.r2_score(y_test, y_test_pred)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Вывод результатов оценки"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style type=\"text/css\">\n",
|
||
"#T_da57c_row0_col0, #T_da57c_row0_col1, #T_da57c_row1_col0, #T_da57c_row1_col1 {\n",
|
||
" background-color: #26818e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row0_col2, #T_da57c_row1_col2, #T_da57c_row7_col3 {\n",
|
||
" background-color: #4e02a2;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row0_col3, #T_da57c_row1_col3, #T_da57c_row2_col3, #T_da57c_row3_col3, #T_da57c_row7_col2 {\n",
|
||
" background-color: #da5a6a;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row2_col0 {\n",
|
||
" background-color: #25838e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row2_col1 {\n",
|
||
" background-color: #25858e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row2_col2 {\n",
|
||
" background-color: #7100a8;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row3_col0 {\n",
|
||
" background-color: #25848e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row3_col1 {\n",
|
||
" background-color: #24878e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row3_col2 {\n",
|
||
" background-color: #7501a8;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row4_col0 {\n",
|
||
" background-color: #23888e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row4_col1 {\n",
|
||
" background-color: #23898e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row4_col2 {\n",
|
||
" background-color: #7a02a8;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row4_col3, #T_da57c_row6_col2 {\n",
|
||
" background-color: #d9586a;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row5_col0, #T_da57c_row5_col1 {\n",
|
||
" background-color: #89d548;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_da57c_row5_col2 {\n",
|
||
" background-color: #d24f71;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row5_col3 {\n",
|
||
" background-color: #7201a8;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_da57c_row6_col0, #T_da57c_row7_col0, #T_da57c_row7_col1 {\n",
|
||
" background-color: #a8db34;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_da57c_row6_col1 {\n",
|
||
" background-color: #a2da37;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_da57c_row6_col3 {\n",
|
||
" background-color: #5302a3;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"</style>\n",
|
||
"<table id=\"T_da57c\">\n",
|
||
" <thead>\n",
|
||
" <tr>\n",
|
||
" <th class=\"blank level0\" > </th>\n",
|
||
" <th id=\"T_da57c_level0_col0\" class=\"col_heading level0 col0\" >RMSE_train</th>\n",
|
||
" <th id=\"T_da57c_level0_col1\" class=\"col_heading level0 col1\" >RMSE_test</th>\n",
|
||
" <th id=\"T_da57c_level0_col2\" class=\"col_heading level0 col2\" >RMAE_test</th>\n",
|
||
" <th id=\"T_da57c_level0_col3\" class=\"col_heading level0 col3\" >R2_test</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_da57c_level0_row0\" class=\"row_heading level0 row0\" >linear</th>\n",
|
||
" <td id=\"T_da57c_row0_col0\" class=\"data row0 col0\" >0.000000</td>\n",
|
||
" <td id=\"T_da57c_row0_col1\" class=\"data row0 col1\" >0.000000</td>\n",
|
||
" <td id=\"T_da57c_row0_col2\" class=\"data row0 col2\" >0.000000</td>\n",
|
||
" <td id=\"T_da57c_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_da57c_level0_row1\" class=\"row_heading level0 row1\" >ridge</th>\n",
|
||
" <td id=\"T_da57c_row1_col0\" class=\"data row1 col0\" >0.002409</td>\n",
|
||
" <td id=\"T_da57c_row1_col1\" class=\"data row1 col1\" >0.002181</td>\n",
|
||
" <td id=\"T_da57c_row1_col2\" class=\"data row1 col2\" >0.040847</td>\n",
|
||
" <td id=\"T_da57c_row1_col3\" class=\"data row1 col3\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_da57c_level0_row2\" class=\"row_heading level0 row2\" >random_forest</th>\n",
|
||
" <td id=\"T_da57c_row2_col0\" class=\"data row2 col0\" >1.856691</td>\n",
|
||
" <td id=\"T_da57c_row2_col1\" class=\"data row2 col1\" >3.387390</td>\n",
|
||
" <td id=\"T_da57c_row2_col2\" class=\"data row2 col2\" >1.612410</td>\n",
|
||
" <td id=\"T_da57c_row2_col3\" class=\"data row2 col3\" >0.967338</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_da57c_level0_row3\" class=\"row_heading level0 row3\" >decision_tree</th>\n",
|
||
" <td id=\"T_da57c_row3_col0\" class=\"data row3 col0\" >2.409987</td>\n",
|
||
" <td id=\"T_da57c_row3_col1\" class=\"data row3 col1\" >4.281378</td>\n",
|
||
" <td id=\"T_da57c_row3_col2\" class=\"data row3 col2\" >1.847379</td>\n",
|
||
" <td id=\"T_da57c_row3_col3\" class=\"data row3 col3\" >0.947823</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_da57c_level0_row4\" class=\"row_heading level0 row4\" >knn</th>\n",
|
||
" <td id=\"T_da57c_row4_col0\" class=\"data row4 col0\" >5.170083</td>\n",
|
||
" <td id=\"T_da57c_row4_col1\" class=\"data row4 col1\" >5.824576</td>\n",
|
||
" <td id=\"T_da57c_row4_col2\" class=\"data row4 col2\" >2.073599</td>\n",
|
||
" <td id=\"T_da57c_row4_col3\" class=\"data row4 col3\" >0.903431</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_da57c_level0_row5\" class=\"row_heading level0 row5\" >mlp</th>\n",
|
||
" <td id=\"T_da57c_row5_col0\" class=\"data row5 col0\" >60.594447</td>\n",
|
||
" <td id=\"T_da57c_row5_col1\" class=\"data row5 col1\" >59.994001</td>\n",
|
||
" <td id=\"T_da57c_row5_col2\" class=\"data row5 col2\" >7.553087</td>\n",
|
||
" <td id=\"T_da57c_row5_col3\" class=\"data row5 col3\" >-9.245313</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_da57c_level0_row6\" class=\"row_heading level0 row6\" >linear_poly</th>\n",
|
||
" <td id=\"T_da57c_row6_col0\" class=\"data row6 col0\" >67.720820</td>\n",
|
||
" <td id=\"T_da57c_row6_col1\" class=\"data row6 col1\" >66.518485</td>\n",
|
||
" <td id=\"T_da57c_row6_col2\" class=\"data row6 col2\" >8.144355</td>\n",
|
||
" <td id=\"T_da57c_row6_col3\" class=\"data row6 col3\" >-11.594887</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_da57c_level0_row7\" class=\"row_heading level0 row7\" >linear_interact</th>\n",
|
||
" <td id=\"T_da57c_row7_col0\" class=\"data row7 col0\" >67.518306</td>\n",
|
||
" <td id=\"T_da57c_row7_col1\" class=\"data row7 col1\" >67.518306</td>\n",
|
||
" <td id=\"T_da57c_row7_col2\" class=\"data row7 col2\" >8.216952</td>\n",
|
||
" <td id=\"T_da57c_row7_col3\" class=\"data row7 col3\" >-11.976353</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n"
|
||
],
|
||
"text/plain": [
|
||
"<pandas.io.formats.style.Styler at 0x1d7b697bd10>"
|
||
]
|
||
},
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"reg_metrics = pd.DataFrame.from_dict(models, \"index\")[\n",
|
||
" [\"RMSE_train\", \"RMSE_test\", \"RMAE_test\", \"R2_test\"]\n",
|
||
"]\n",
|
||
"reg_metrics.sort_values(by=\"RMSE_test\").style.background_gradient(\n",
|
||
" cmap=\"viridis\", low=1, high=0.3, subset=[\"RMSE_train\", \"RMSE_test\"]\n",
|
||
").background_gradient(cmap=\"plasma\", low=0.3, high=1, subset=[\"RMAE_test\", \"R2_test\"])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Вывод реального и \"спрогнозированного\" результата для обучающей и тестовой выборок\n",
|
||
"\n",
|
||
"Получение лучшей модели"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'linear'"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"best_model = str(reg_metrics.sort_values(by=\"RMSE_test\").iloc[0].name)\n",
|
||
"\n",
|
||
"display(best_model)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Подбор гиперпараметров методом поиска по сетке"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Fitting 3 folds for each of 27 candidates, totalling 81 fits\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\TIGR228\\Desktop\\МИИ\\Lab1\\AIM-PIbd-31-Afanasev-S-S\\aimenv\\Lib\\site-packages\\numpy\\ma\\core.py:2881: RuntimeWarning: invalid value encountered in cast\n",
|
||
" _data = np.array(data, dtype=dtype, copy=copy,\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Лучшие параметры: {'max_depth': 20, 'min_samples_split': 5, 'n_estimators': 150}\n",
|
||
"Лучший результат (MSE): 11.258082426680579\n",
|
||
"Ошибка на тестовой выборке (MSE): 9.1015\n",
|
||
"Коэффициент детерминации (R²): 0.9741\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"import numpy as np\n",
|
||
"from sklearn import metrics\n",
|
||
"from sklearn.model_selection import train_test_split, GridSearchCV\n",
|
||
"from sklearn.ensemble import RandomForestRegressor\n",
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"\n",
|
||
"# Удаление пропущенных значений (если есть)\n",
|
||
"df.dropna(inplace=True)\n",
|
||
"\n",
|
||
"# Предикторы и целевая переменная\n",
|
||
"X = df[[\"Pregnancies\", \"Glucose\", \"BloodPressure\", \"SkinThickness\", \"Insulin\", \n",
|
||
" \"BMI\", \"DiabetesPedigreeFunction\", \"Age\"]] \n",
|
||
"y = df[\"diabetes_risk_index\"] \n",
|
||
"\n",
|
||
"X_train, X_test, y_train, y_test = train_test_split(\n",
|
||
" X, y, test_size=0.2, random_state=42\n",
|
||
")\n",
|
||
"\n",
|
||
"# Определение модели случайного леса\n",
|
||
"model = RandomForestRegressor(random_state=42)\n",
|
||
"\n",
|
||
"# Сетка гиперпараметров для поиска\n",
|
||
"param_grid = {\n",
|
||
" 'n_estimators': [50, 100, 150], \n",
|
||
" 'max_depth': [10, 20, 30], \n",
|
||
" 'min_samples_split': [5, 10, 15] \n",
|
||
"}\n",
|
||
"\n",
|
||
"# Настройка поиска по сетке\n",
|
||
"grid_search = GridSearchCV(\n",
|
||
" estimator=model,\n",
|
||
" param_grid=param_grid,\n",
|
||
" scoring='neg_mean_squared_error', \n",
|
||
" cv=3, \n",
|
||
" n_jobs=-1, \n",
|
||
" verbose=2 \n",
|
||
")\n",
|
||
"\n",
|
||
"# Обучение модели на тренировочных данных\n",
|
||
"grid_search.fit(X_train, y_train)\n",
|
||
"\n",
|
||
"print(\"Лучшие параметры:\", grid_search.best_params_)\n",
|
||
"print(\"Лучший результат (MSE):\", -grid_search.best_score_)\n",
|
||
"\n",
|
||
"# Оценка на тестовой выборке\n",
|
||
"best_model = grid_search.best_estimator_\n",
|
||
"y_pred = best_model.predict(X_test)\n",
|
||
"\n",
|
||
"mse = metrics.mean_squared_error(y_test, y_pred)\n",
|
||
"r2 = metrics.r2_score(y_test, y_pred)\n",
|
||
"\n",
|
||
"print(f\"Ошибка на тестовой выборке (MSE): {mse:.4f}\")\n",
|
||
"print(f\"Коэффициент детерминации (R²): {r2:.4f}\")\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Обучение модели с новыми гиперпараметрами и сравнение новых и старых данных"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Fitting 3 folds for each of 8 candidates, totalling 24 fits\n",
|
||
"Старые параметры: {'max_depth': 20, 'min_samples_split': 5, 'n_estimators': 50}\n",
|
||
"Лучший результат (MSE) на старых параметрах: 11.60966872499276\n",
|
||
"\n",
|
||
"Новые параметры: {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100}\n",
|
||
"Лучший результат (MSE) на новых параметрах: 19.147439110906816\n",
|
||
"Среднеквадратическая ошибка (MSE) на тестовых данных: 10.814392376125927\n",
|
||
"Корень среднеквадратичной ошибки (RMSE) на тестовых данных: 3.288524346287545\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"import numpy as np\n",
|
||
"from sklearn import metrics\n",
|
||
"from sklearn.ensemble import RandomForestRegressor\n",
|
||
"from sklearn.model_selection import train_test_split, GridSearchCV\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"\n",
|
||
"\n",
|
||
"old_param_grid = {\n",
|
||
" 'n_estimators': [50, 100], # Количество деревьев\n",
|
||
" 'max_depth': [ 10, 20], # Максимальная глубина дерева\n",
|
||
" 'min_samples_split': [5, 10] # Минимальное количество образцов для разбиения узла\n",
|
||
"}\n",
|
||
"\n",
|
||
"old_grid_search = GridSearchCV(estimator=RandomForestRegressor(), \n",
|
||
" param_grid=old_param_grid,\n",
|
||
" scoring='neg_mean_squared_error', cv=3, n_jobs=-1, verbose=2)\n",
|
||
"\n",
|
||
"old_grid_search.fit(X_train, y_train)\n",
|
||
"\n",
|
||
"old_best_params = old_grid_search.best_params_\n",
|
||
"old_best_mse = -old_grid_search.best_score_ # Меняем знак, так как берем отрицательное значение MSE\n",
|
||
"\n",
|
||
"new_param_grid = {\n",
|
||
" 'n_estimators': [100],\n",
|
||
" 'max_depth': [20],\n",
|
||
" 'min_samples_split': [10]\n",
|
||
"}\n",
|
||
"\n",
|
||
"new_grid_search = GridSearchCV(estimator=RandomForestRegressor(), \n",
|
||
" param_grid=new_param_grid,\n",
|
||
" scoring='neg_mean_squared_error', cv=2)\n",
|
||
"\n",
|
||
"new_grid_search.fit(X_train, y_train)\n",
|
||
"\n",
|
||
"new_best_params = new_grid_search.best_params_\n",
|
||
"new_best_mse = -new_grid_search.best_score_ # Меняем знак, так как берем отрицательное значение MSE\n",
|
||
"\n",
|
||
"model_best = RandomForestRegressor(**new_best_params)\n",
|
||
"model_best.fit(X_train, y_train)\n",
|
||
"\n",
|
||
"model_oldbest = RandomForestRegressor(**old_best_params)\n",
|
||
"model_oldbest.fit(X_train, y_train)\n",
|
||
"\n",
|
||
"y_pred = model_best.predict(X_test)\n",
|
||
"y_oldpred = model_oldbest.predict(X_test)\n",
|
||
"\n",
|
||
"mse = metrics.mean_squared_error(y_test, y_pred)\n",
|
||
"rmse = np.sqrt(mse)\n",
|
||
"\n",
|
||
"print(\"Старые параметры:\", old_best_params)\n",
|
||
"print(\"Лучший результат (MSE) на старых параметрах:\", old_best_mse)\n",
|
||
"print(\"\\nНовые параметры:\", new_best_params)\n",
|
||
"print(\"Лучший результат (MSE) на новых параметрах:\", new_best_mse)\n",
|
||
"print(\"Среднеквадратическая ошибка (MSE) на тестовых данных:\", mse)\n",
|
||
"print(\"Корень среднеквадратичной ошибки (RMSE) на тестовых данных:\", rmse)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Попробуем визуализировать\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1wAAAHWCAYAAABjUYhTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXhTZdr48e9J0yZtmqSU7rShBUqbIiIFFRR3RxG3VkdG5VV0dNCZ0b6OG+MoKuM6M+pgdVxwXEcd9/Z1mXF+7gsjKFAUbSoIlLSl0KZLmqYkTZrz+yM0ElqwlJZ0uT/X1QuSc3rynJM0yf0893M/iqqqKkIIIYQQQgghBpwm0g0QQgghhBBCiJFKAi4hhBBCCCGEGCQScAkhhBBCCCHEIJGASwghhBBCCCEGiQRcQgghhBBCCDFIJOASQgghhBBCiEEiAZcQQgghhBBCDBIJuIQQQgghhBBikEjAJYQQQgghhBCDRAIuIYQQgyI7O5tLLrkk0s0QQgghIkoCLiHEqPXMM8+gKAqrV6/udfvxxx/PIYcccpBbNTp5PB7++te/cuSRR2I2m9Hr9UyePJmrrrqKDRs2RLp5EXH77bejKMo+f84444xIN1MIIcRP0Ea6AUIIIUY3h8PB3LlzWbNmDWeccQYXXngh8fHxfP/997z00kssX76czs7OSDczYh599FHi4+N73P+73/0uAq0RQgixvyTgEkIIEVGXXHIJFRUVvPbaa5x77rlh2+644w5uvvnmCLVsaPj5z39OUlJSj/tvueWWCLRGCCHE/pKUQiGE2A9+v5877riDiRMnotPpyM7O5g9/+ANerzdsv+zs7FDal0ajIS0tjV/84hfY7fbQPtXV1SiKwn333bfXx+tOK9vT888/z4wZM4iNjSUxMZHzzz+fmpqan2z/1q1b+c1vfkNeXh6xsbGMHTuW8847j+rq6rD9utMtV6xYwbXXXktycjIGg4Hi4mIaGxvD9lVVlTvvvJPMzEzi4uI44YQT+O67736yLQCrVq3inXfe4bLLLusRbAHodLrQ9bnkkkt+MsWu+zz+7//+j9NPP52MjAx0Oh0TJ07kjjvuoKurK+z43Wmja9as4aijjiI2NpacnBwee+yxsP0+/vhjFEXhtdde2+u5XHLJJWRnZ4fdFwgEWLZsGVOmTEGv15OamsoVV1xBS0tLn67P/rrvvvs46qijGDt2LLGxscyYMaPXNiuKwlVXXcULL7xAXl4eer2eGTNm8Omnn4btt7+vl5iYmB6vjy+++CL0/OyZvrtq1Srmzp2L2WwmLi6O4447jhUrVoS29yWt8uOPPwYG/7kUQoj+khEuIcSo53Q6cTgcPe73+Xw97rv88st59tln+fnPf851113HqlWruOeee7DZbJSVlYXte8wxx7Bo0SICgQDffvsty5YtY9u2bXz22WcH1N677rqLJUuWMH/+fC6//HIaGxt56KGHOPbYY6moqCAhIWGvv/vVV1/x3//+l/PPP5/MzEyqq6t59NFHOf7446msrCQuLi5s/6uvvpoxY8Zw2223UV1dzbJly7jqqqt4+eWXQ/vceuut3HnnncybN4958+axdu1aTjnllD6lAb755psAXHTRRT+57xVXXMHJJ58cun3RRRdRXFzMOeecE7ovOTkZCAYA8fHxXHvttcTHx/Phhx9y66230tbWxl/+8pew47a0tDBv3jzmz5/PBRdcwCuvvMKvf/1rYmJi+OUvf/mT7fqpNj/zzDNceumllJSUsGXLFh5++GEqKipYsWIF0dHRB3T8PT344IOcddZZLFiwgM7OTl566SXOO+883n77bU4//fSwfT/55BNefvllSkpK0Ol0PPLII8ydO5cvv/wyNHdxf18vUVFRPP/882Hpjk8//TR6vR6PxxO274cffshpp53GjBkzuO2229BoNDz99NOceOKJfPbZZxxxxBGcc845TJo0KfQ7v/vd77BarSxatCh0n9VqDf1/MJ9LIYToN1UIIUapp59+WgX2+TNlypTQ/uvWrVMB9fLLLw87zvXXX68C6ocffhi6b/z48erChQvD9rvwwgvVuLi40O0tW7aogPqXv/xlr2287bbb1N3fqqurq9WoqCj1rrvuCttv/fr1qlar7XH/njo6Onrc98UXX6iA+txzz4Xu6742J598shoIBEL3/+53v1OjoqLU1tZWVVVVtaGhQY2JiVFPP/30sP3+8Ic/qECPa7Cn4uJiFVBbWlr2uV9vAPW2227rdVtv53nFFVeocXFxqsfjCd133HHHqYB6//33h+7zer3qYYcdpqakpKidnZ2qqqrqRx99pALqq6++utf2LFy4UB0/fnzo9meffaYC6gsvvBC237vvvtvr/Xvqfu4bGxt73T5+/Hj19NNPD7tv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CCGEGBDSjXiQBAIBqqurWb9+PdXV1QQCgYPyuF988QVRUVGcfvrpB+XxhBCiL2w2G6WlpVRUVJCUlEReXh5JSUlUVFRQWlqKzWaLdBOFEEKIASEjXAdBJHtxn3zySa6++mqefPJJtm3bRkZGxqA+nhBC/JRAIEBZWRkOh4OCgoJQUSKTyURBQQGVlZWUl5eTl5cn6YVCCCGGPfkkG2SR7MVtb2/n5Zdf5te//jWnn346zzzzTNj2jz/+GEVRaG1tBaClpYVDDz2Uiy++GFVVueSSS1AUpdefSy65hOeee46xY8fi9XrDjltUVMRFF10EwKZNmzj77LNJTU0lPj6eww8/nPfff79HW2+//fYej1FUVBTanp2dzbJly/Z6rscffzzXXHNNj2MedthhoduXXHJJ2DF3t2zZMrKzs8Pu+/vf/47Vag0FyI888sheHx/goosuIiUlBZ1Ox4QJE7jvvvtC25555hkSEhLC9q+urkZRFNatWwcE13y77LLLyMnJITY2lry8PB588MGw39nzOuz5HAJ8/vnnHHPMMcTGxpKVlUVJSQlut3uvx+jt2ux5Pb///nuio6PDrmdXVxfXXnst48aNQ6PRhJ638vLyfV4nIex2O1VVVWRlZfWoAKsoCpmZmdhsNux2e4RaKIQQQgwcCbgG0Z69uCaTiaioqFAvrsPhoLy8fNDSC1955RXy8/PJy8vjf/7nf3jqqadQVbXXfdvb25k3bx4TJkzgqaeeQlEUHnzwQerr66mvr2f+/PnMnz8/dPvBBx/kvPPOo6urizfffDN0nIaGBt555x1++ctfhh33gw8+oKKigrlz53LmmWf2+CKlqipTpkwJe7xIeuGFF7j11lu56667sNls3H333SxZsoRnn312r79z/vnn8/7777Nx40buuusubrrpJj799NM+P2YgECAzM5NXX32VyspKbr31Vv7whz/wyiuv9PkYmzZtYu7cuZx77rl88803vPzyy3z++edcddVVfT5Gb2644YYea2c9+eSTLF++nMcee4za2lrq6+sP6DHE6OFyufB4PBgMhl63GwwGPB4PLpfrILdMCCGEGHiSUjiI9qcXd8/RlYHw5JNP8j//8z8AzJ07F6fTySeffMLxxx8ftp/X6+XnP/85cXFxvPzyy2i1wZeF2WzGbDYDhBZ9TktLC/vdCy+8kKeffprzzjsPgOeffx6LxRJ6jGnTpjFt2rTQ/nfccQdlZWW8+eabYUGAz+cjNjY2dPzY2NgeI2cH02233cb999/POeecA0BOTg6VlZU8/vjjLFy4sNff2X2eXHNzM1qtlq6urj4/ZnR0NEuXLg3dzsnJ4YsvvuCVV14JBaCxsbHs3Llzr8e45557WLBgQWh0Kjc3l9LSUo477jgeffTRfi04/NFHH/Hf//6Xyy+/nI8++ih0/7p16zjqqKM488wz9/uYYnQzGo3o9Xrcbjcmk6nHdrfbjV6vx2g0RqB1QgghxMCSEa5BFMle3O+//54vv/ySCy64AACtVssvfvELnnzyyR77LliwgA8++IDjjjsOnU63X4/zq1/9iv/3//4fdXV1QDB1rjsVEYIjXNdffz1Wq5WEhATi4+N7TRVqa2vb63XqtnjxYuLj40lJSeH4449nxYoVYdsfeeQR4uPjQz933313j2O8/fbbxMfHM2bMGKZNm8ZTTz3VYx+3282mTZu47LLLwo535513smnTpn228corryQ2NpaZM2eyZMkSTjjhhNA2p9MZdrwpU6b0+P2//e1vzJgxg+TkZOLj41m+fHnYtTrkkEN48803w1IEd/f111/zzDPPhD3OqaeeSiAQYMuWLT2uZffPCy+80OvxVFXluuuu47bbbgsF391ycnJYs2YNVVVV+7wmQuzJYrGQn59PTU1Nj1F3VVWpra3FarVisVgi1EIhhBBi4MgI1yCKZC/uk08+id/vDyuSoaoqOp2Ohx9+OOzL8/bt23n99de58MILKS4uZurUqX1+nOnTpzNt2jSee+45TjnlFL777jveeeed0Pbrr7+e9957j/vuu49JkyYRGxvLz3/+czo7O8OO05eCHjfccAOXXHIJbrebv/zlL5x55pls376dmJgYIBg43nzzzaH9S0tLe6T0nXDCCTz66KP4fD7+9a9/cfnll/c43/b2dgCeeOIJjjzyyLBtUVFR+2zjH//4R0pKSvjwww+5/fbbwwqjGI1G1q5dG9q3rq4ubLTxpZde4vrrr+f+++9n9uzZGI1G/vKXv7Bq1arQPnfeeSennXYaZrMZvV7fYwStvb2dK664gpKSkh5t2/3La/e17LZ48eJeR+Oee+453G43V155JXfddVfYtt/85jesXr2aKVOmoNPppLiB6DONRkNxcTE1NTVUVlaSmZmJwWDA7XZTW1tLUlISRUVF8poSQggxIkjANYi6e3ErKirCKnHBj724hYWFA96L6/f7ee6557j//vs55ZRTwrYVFRXxz3/+kyuvvDJ035tvvsmECRP41a9+xaWXXsrKlStDaYV9cfnll7Ns2TLq6uo4+eSTycrKCm1bsWIFl1xyCcXFxUAwIKiurg77/UAgwNq1a/ntb3+7z8dJSkpi0qRJANx000288MIL2O320H1mszn0f4DExMQexzAYDKF9rFYr9957L19//XXYPqmpqWRkZLB582YWLFjQx6sQlJKSQkpKCgUFBTz55JO88847oYBLo9GEtW/Pa7xixQqOOuoofvOb34Tu23NELS8vj02bNlFTU0NnZyerVq0KpY0CFBYWUllZGfY4vdn9WkIwGNy98AZAR0cHN998Mw8//DDR0dE9jmEwGLjxxht59913efnll5k0aRK5ubn7fFwhulmtVkpKSkIVXOvq6tDr9RQWFlJUVCTrcAkhhBgxJOAaRJHqxX377bdpaWnhsssu65EGdu655/Lkk0+GBVzdgcm9997LoYceyr333sstt9zS58e78MILuf7663niiSd47rnnwrbl5ubyxhtvcOaZZ6IoCkuWLAkrElJTU8Ptt99OQ0MDv/jFL/b5OH6/H4/Hg9vt5qmnnsJsNocFd30RCATweDyhEa6mpiYOOeQQVq5cGbbf0qVLKSkpwWw2M3fuXLxeL6tXr6alpYVrr722x3FbW1spLy9n1qxZxMTE8Pbbb7N+/XqmT5/e57bl5uby3HPP8Z///IecnBz+8Y9/8NVXX5GTkxO2n6IooSC9trY2bNvixYuZNWsWV111FZdffjkGg4HKykree+89Hn744T63BeDFF19kxowZe63s2NzczM9//nPuvfde5s6du1/HFgKCQVdeXh52ux2Xy4XRaMRiscjIlhBCiBFFPtUGWXcv7vTp02lqamLDhg00NTVRWFhISUnJoPTiPvnkk5x88sk9gi0IBlyrV6/mm2++6bHNYDDw1FNPcdddd/Htt9/2+fHMZjPnnnsu8fHxPb6cP/DAA4wZMyZUXOHUU0+lsLAwtP3BBx/khx9+4P/9v//3kyN9N9xwQ6jU+WeffUZZWdl+zzl76623iI2NJTExkVtuuYWHHnqIWbNm9djv8ssv5+9//ztPP/00U6dO5bjjjuOZZ57pEfx0U1WVZ555htmzZ3PIIYewfPlyHn30UU466aQ+t+2KK67gnHPO4Re/+AVHHnkkTU1NYaNdfXHooYfyySefsGHDBo455himT5/Orbfe2q/11zo6Orj//vt73aaqKv/zP//DnDlz+PWvf73fxxaim0ajITs7m6lTp5KdnS3BlhBCiBFHUfdWJ3wUaWtrw2w243Q6e8y18ng8bNmyhZycnH5VeOsWCARGdC/uSSedxJQpUygtLY10U8QQNVB/S0IIIYQQg2lfsUF/SErhQdLdizvStLS08PHHH/Pxxx//5MLAQgghhBBCjDYScIkDMn36dFpaWvjTn/5EXl5epJsjhBhuAgGw28HlAqMRLBYYQaP/QgghhARc4oDsWXFQCCH6zGaDsjKoqgKPB/R6yM+H4mKQKoVCCCFGCAm4hBBCHHw2G5SWgsMBWVlgMIDbDRUVUFMDJSUSdAkhhBgRJG9DCCHEwRUIBEe2HA5UawGtARM7HFG0Bkyo1oJgEFZeHtxPCCGEGOZkhEsIIcTBZbdDVRVNcVlUrlBwOMDvB60WkpIUCsZlMtZmC+43AosNCSGEGF0k4BJCCHFwuVy0NXhY2WDA7QGzGaKjweeD+npwtRiYk1KHyeWKdEuFEEKIAyYphUIIIQ6qgMHI1h16Ai43ycmg0wULE+p0kJwMXS53cLvBGOmmCiGEEAdMAi4hhBAHlR0LNvKxKDUoqGHbFFSyqMWGFTuWCLVQCCGEGDgScAkhhDioXG4NX6QW4zUmkdxYic7jRAn40XmcJDdW4jUl8UVqES63fEQJIYQY/mQO10Eia3sKIUSQ0QhNKVY+TC1hZm0ZSY4qjK46/Fo99emFfJVZRJNqxSgZhUIIIUYACbgOAlnbUwghfmSxBN8D11RY8RydR0KbnRivi06dkVaThe9sGgoLg/sJIYQQw52MsQyy7rU9KyogKQny8oL/VlQE77fZBudxjz/+eK655pqw+26//XYOO+yw0O1AIMAf//hHMjMz0el0HHbYYbz77ruh7dXV1SiKEvpJTEzknHPOoampKbSPoiiUl5f32obDDjuM22+/PXS7tbWVyy+/nOTkZEwmEyeeeCJff/31Xs9hz8ff/WfZsmWh/R544AGmTp2KwWAgKyuL3/zmN7S3t4e2P/PMMyQkJFBeXk5ubi56vZ5TTz2Vmpqa0D6bNm3i7LPPJjU1lfj4eA4//HDef//9sPZkZ2ejKApr164N3efz+UhNTUVRFKqrq0P3f/755xxzzDHExsaSlZVFSUkJbrcbCD43ezuv7uuVnZ3NHXfcwQUXXIDBYGDcuHH87W9/C2vP/lx7IYYSjSbY4ZSUBN/ZNGxVstk2dipblWy+s2lISoKiIskCEEIIMTLIx9kg2m1tTwoKwGSCqKjgvwVDYG3PBx98kPvvv5/77ruPb775hlNPPZWzzjqLjRs3hu33/vvvU19fzzvvvMOXX37Jn//853493nnnnUdDQwP//ve/WbNmDYWFhZx00kk0Nzfv8/e6H7/7JzMzM2y7RqOhtLSU7777jmeffZYPP/yQG2+8MWyfjo4O7rrrLp577jlWrFhBa2sr559/fmh7e3s78+bN44MPPqCiooK5c+dy5plnYrfbw44zbtw4li9fHrpdVlZGdHR02D6bNm1i7ty5nHvuuXzzzTe8/PLLfP7551x11VUAvPHGG6FzmT17Ntddd13o9vXXXx86zl/+8hemTZtGRUUFv//97/nf//1f3nvvvT5caSGGPqsVSkpg+nRoaoING4L/FhYG75fRfyGEECOFpBQOol1re5KVBYoSvk1RIDMzOMIVqbU977vvPhYvXhwKPP70pz/x0UcfsWzZsrDRlLFjx5KWlgZAbGwsZrN5vx/r888/58svv6ShoQGdThd6/PLycl577TUWLVq019/d/fEBoqKiwrbvPpKXnZ3NnXfeyZVXXskjjzwSut/n8/Hwww9z5JFHAvDss89itVr58ssvOeKII5g2bRrTpk0L7X/HHXdQVlbGm2++GQqUAC666CKeeOIJ7r//fgwGA8uXL+eXv/wld9xxR2ife+65hwULFoTalZubS2lpKccddxyPPvooiYmJoX1jYmKIj48PO79uRx99NL///e8BmDx5MitWrOCvf/0rP/vZz/Z6rYQYTqzW4Ki/zG8VQggxksnH2iByuYJztgyG3rcbDMHtg7W25yOPPEJ8fHzo5+677w5ta2trY9u2bRx99NFhv3P00Udj2yPP8aijjiI+Pp709HSysrK47rrrwrZfcMEFoe2nn346lZWVPdry9ddf097eztixY8PatGXLFjZt2nRA5/n+++9z0kknMW7cOIxGIxdddBFNTU10dHSE9tFqtRx++OGh2/n5+SQkJITOtb29neuvvx6r1UpCQgLx8fHY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4PP5Qse//fbbOeyww3j88cfJysoiLi6O+fPn43Q6Q/tccsklFBUV9dq+ZcuWkb3HrOi///3vWK3WUI/mI488ss9zPP7443s9h8MOOyy0z1dffcXPfvYzkpKSMJvNHHfccaxduzbsOIqi8Oijj3LaaacRGxvLhAkTeO2118L26cv1UBSFkpKSsN/73e9+h6Io3H777aH7Wltbufzyy0lOTsZkMnHiiSfy9ddfA/DMM8/s9bnpvl6Dce2FECKSAoEAZWVlOBwOCgoKMJlMREVFYTKZKCgowOFwUF5eTiAQiHRThRi6AgGorob164P/yt/LkCEB12AKBIIjWw4HFBSAyQRRUcF/CwqC95eXD8ofxE033cS9997LkiVLqKys5MUXXyQ1NRWA+vr60A/A66+/Hrp91FFHAWA0GnnmmWeorKzkwQcf5IknnuCvf/1r2GP88MMPvPLKK7z11lu8++67VFRU8Jvf/KZf7X3hhRe49dZbueuuu7DZbNx9990sWbKEZ599dp+/96tf/SrsfK677rqw7S6Xi4ULF/L555+zcuVKcnNzmTdvHi6XK2y/JUuWcO655/L111+zYMECzj//fGy7BcN9uR6pqan885//xOPxAODxeHjhhRdC173beeedR0NDA//+979Zs2YNhYWFnHTSSTQ3N/OLX/widC7Lli0jMzMzdPurr74KHWMgr70QQkSa3W6nqqqKrKwsFEUJ26YoCpmZmdhsNux2e4RaKMQQZ7MRuOde2q+9ldbr7qD92lsJ3HPvoHXsi/0jKYWDyW4PphFmZcEeHyAoCmRmBv8Q7PYBrYHrcrl48MEHefjhh1m4cCEAEydOZM6cOQCkpaWF7Z+YmNjjvltuuSX0/+zsbK6//npeeuklbrzxxtD9Ho+H5557jnHjxgHw0EMPcfrpp3P//ff3ON5Pue2227j//vs555xzAMjJyaGyspLHH388dA69iYuLC3us+Pj4sO0nnnhi2O3ly5eTkJDAJ598whlnnBG6/7zzzuPyyy8H4I477uC9997joYceCo2y9eV6pKWlYbFYePXVV7nooot47bXXmDVrVtgXhM8//5wvv/yShoYGdDodAPfddx/l5eW89tprLFq0iNjYWADMZjNRUVG9XsuBvPZCCBFpLpcLj8eDwWDodbvBYKCurq5HZ5kQArDZaF5ayo5vHVR3ZeFWDBhUN9kbKkhdX0PibSUyhSXCIjrC9emnn3LmmWeSkZGBoiiUl5eHtvl8PhYvXszUqVMxGAxkZGRw8cUXs23btrBjNDc3s2DBAkwmEwkJCVx22WW0t7cf5DPZC5crOGdrLx8gGAzB7QP8AWKz2fB6vZx00kn9PsbLL7/M0UcfTVpaGvHx8dxyyy09ehYtFkvoCz/A7NmzCQQCfP/996H73n77beLj4xkzZgzTpk3jqaee6vFYbrebTZs2cdlllxEfHx/6ufPOO9m0aVO/zwFgx44d/OpXvyI3Nxez2YzJZKK9vb3HucyePbvH7d1HuPpyPQAWLVrE8uXLgWBw96tf/Sps+9dff017eztjx44NO9ctW7bs17kO1LUXQoihwGg0otfrcbvdvW53u93o9XqMRuNBbpkQQ1wgQMPjZWz50sH6rgI0CSYSk6LQJJhY31XAli8d7FheLumFERbRgMvtdjNt2jT+9re/9djW0dHB2rVrWbJkCWvXruWNN97g+++/56yzzgrbb8GCBXz33Xe89957vP3223z66acsWrToYJ3CvhmNwQIZe/kAwe0Obh/gD5DuEZL++uKLL1iwYAHz5s3j7bffpqKigptvvpnOzs79PtYJJ5zAunXr+O9//8vFF1/M5ZdfHpYaB4QC5CeeeIJ169aFfr799ltWrlx5QOeycOFC1q1bx4MPPsh///tf1q1bx9ixY/frXPbnepx22mls3bqVN954gy1btjBv3rwe55qenh52nuvWreP777/nhhtuOKBz3VNfrr0QQgwFFouF/Px8ampqUFU1bJuqqtTW1mK1WrFYLBFqoRBDU6Dazo5PqtgWlUVyioJOFyyCrdNBcorCtqhMGj62EaiWdNxIimhK4WmnncZpp53W6zaz2cx7770Xdt/DDz/MEUccgd1ux2KxYLPZePfdd/nqq6+YOXMmEEytmjdvHvfddx8ZGRm9Htvr9eL1ekO329raBuiM9mCxBKsRVlQE52ztnlaoqlBbC4WFwf0GUG5uLrGxsXzwwQehNLn98d///pfx48dz8803h+7bunVrj/3sdjvbtm0LXeeVK1ei0WjIy8sL7WMwGJg0aRIAVquVe++9N1QgoltqaioZGRls3ryZBQsW7Hd792XFihU88sgjocCnpqYGh8PRY7+VK1dy8cUXh92ePn060PfrARAVFcVll13GJZdcwjXX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3Sq++eYbsXnzZhEXFyd+97vfec9hvK+Oy+USpaWlorS0VAAQL7zwgigtLfVWxetKfCdPniyysrLEvn37xJ49e0R6erq49957Q/UrydpPxbu5uVncfvvtIiUlRZSVlfncQ5uamrzXYLy77lKv74tdXKVQCMb7clwq3ps3bxZRUVFizZo14ujRo2LFihUiIiJCfPLJJ95r+GPMwoRLRlasWCGMRqOIjo4W1113nSguLg51l8ICgE4/1q1b5z3n3Llz4tFHHxV9+/YVvXv3Fvn5+eK7774LXafDzMUJF+PtX1u2bBFDhw4VKpVKmEwmsWbNGp92SZLE4sWLRUJCglCpVOKmm24SR44cCVFvu7eGhgYxd+5cYTQahVqtFtdcc434wx/+4DP4ZLyvzq5duzr9mz1r1iwhRNfiW19fL+69917Rp08fodPpxOzZs4XL5QrBbyN/PxXvb7755kfvobt27fJeg/Huuku9vi/WWcLFeHddV+K9du1akZaWJtRqtRgxYoQoLCz0uYY/xiwKIYTo+nwYERERERERdRXXcBEREREREQUIEy4iIiIiIqIAYcJFREREREQUIEy4iIiIiIiIAoQJFxERERERUYAw4SIiIiIiIgoQJlxEREREREQBwoSLiIh6pJaWllB3gYiIegAmXERE1CNYLBZMmTIFqamp6NOnD372s5+FuktERNQDMOEiIiLZuf/++6FQKLwfsbGxmDx5Mg4dOnRF11uyZAkefPBBTJ06Fe+//z7Kysrw73//28+9JiIi6kghhBCh7gQREdGF7r//ftTW1mLdunUAgJqaGvzxj3/EoUOHYLPZLutax44dw4gRI1BcXIwhQ4YEortEREQ/ijNcREQkSyqVComJiUhMTMTIkSPx5JNPwm634+TJk/j222+hUChQVlbW6ffGxMTgjTfeAABs374dgwcPxrPPPov+/ftDq9Vi2rRpqKqq8vmeVatWYfDgwYiOjkZGRgbWr1/v065QKLBq1Srccsst6NWrF6655hq8++673vaL+9TU1ITc3Fzk5uaiqakJAHDgwAHcfPPNiIuLg16vx8SJE3Hw4EH/BIyIiGSJCRcREcleY2Mj3nzzTaSlpSE2NvayvvfkyZP44osvYLfbsW3bNuzatQu1tbXIy8tD+0MeFosFc+fOxRNPPIHDhw/jt7/9LWbPno1du3b5XGvx4sWYPn06vvjiC8yYMQP33HMPrFZrh5/Z2tqKe+65B42NjSgsLIRKpQIAuFwuzJo1C3v27EFxcTHS09Nx6623wuVyXWFkiIhI7iJD3QEiIqLObN26FX369AEAuN1uJCUlYevWrVAqL++9QkmSEBERgQ0bNsBgMAAANmzYgMGDB2Pnzp3Izc3F888/j/vvvx+PPvooAGDBggUoLi7G888/jxtuuMF7rTvvvBO/+c1vAADPPPMMduzYgRUrVuCVV17xniOEwOzZs/Hf//4XRUVF3t8BAG688Uafvq1ZswYxMTEoKirC1KlTL+v3IiKi7oEzXEREJEs33HADysrKUFZWhv3792PSpEm45ZZbcPz4ce85119/PbRaLQwGA+6+++4Ojwm2MxgM3mQLAAYOHIiUlBSUl5cDAKxWK8aPH+/zPePHj+8we5WTk9Ph64vPWbhwIdavX48xY8agX79+Pm21tbV48MEHkZ6eDr1eD51Oh8bGxstel0ZERN0HEy4iIpIljUaDtLQ0pKWlYcyYMXj99dfhdrvx2muvec955513UFpairfffhtHjx7Fww8/3OE6ffv2/dGfoVAo/N5vq9WKbdu2YePGjdi+fbtP26xZs1BWVoaXXnoJn332GcrKyhAbG4vm5ma/94OIiOSBCRcREXULCoUCSqUS586d8x4zGAxIS0vDhAkT8MADD3RaRMNkMsFut8Nut3uPHT9+HFVVVcjMzAQAmM1mfPrppz7f9+mnn3rb2xUXF3f42mw2+xxbv349Jk+ejGeeeQYPPvggGhoafK5ZUFCAW2+9FUOGDIFKpYLD4bi8QBARUbfCNVxERCRLTU1NqKmpAQCcPn0aL7/8MhobG3Hbbbd5z2lubobH40FtbS3effddDB06tMN1br75ZpjNZvzyl7/Eiy++CACYO3cuRo4c6V1TtXDhQtx1113IyspCbm4utmzZgs2bN+PDDz/0udamTZswevRoTJgwAW+99Rb279+PtWvX+pzT/hjh/PnzsXnzZixYsACvv/46ACA9PR3r16/H6NGj0dDQgIULF6JXr15+ihgREckRZ7iIiEiW/vOf/yApKQlJSUkYO3YsDhw4gE2bNuHnP/+595yxY8eiV69eGDlyJPr06YPVq1d3uI5SqcR7773nLcN+ww03ICEhAe+99573kcK8vDy89NJLeP755zFkyBCsXr0a69at8/lZAPD0009j48aNGD58OP7xj3/g7bff7jALduHPXbduHTZs2IAPPvgAALB27VqcPn0a2dnZmDlzJgoKChAfH++fgBERkSxx42MiIqIuUCgUsFgsyMvLC3VXiIioG+EMFxERERERUYAw4SIiIiIiIgoQFs0gIiLqAj6BT0REV4IzXERERERERAHChIuIiIiIiChAmHAREREREREFCBMuIiIiIiKiAGHCRUREREREFCBMuIiIiIiIiAKECRcREREREVGAMOEiIiIiIiIKkP8PY6KxPD9YqdwAAAAASUVORK5CYII=",
|
||
"text/plain": [
|
||
"<Figure size 1000x500 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plt.figure(figsize=(10, 5))\n",
|
||
"plt.scatter(range(len(y_test)), y_test, label=\"Актуальные значения\", color=\"black\", alpha=0.5)\n",
|
||
"plt.scatter(range(len(y_test)), y_pred, label=\"новые параметры\", color=\"blue\", alpha=0.5)\n",
|
||
"plt.scatter(range(len(y_test)), y_oldpred, label=\"старые параметры\", color=\"red\", alpha=0.5)\n",
|
||
"plt.xlabel(\"Выборка\")\n",
|
||
"plt.ylabel(\"Значения\")\n",
|
||
"plt.legend()\n",
|
||
"plt.title(\"Новые and Старые Параметры\")\n",
|
||
"plt.show()"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "aimenv",
|
||
"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.5"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|