3832 lines
377 KiB
Plaintext
3832 lines
377 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Подключили датафрейм и выгрузили данные"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"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": 4,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"from sklearn import set_config\n",
|
||
"set_config(transform_output=\"pandas\")\n",
|
||
"random_state = 42\n",
|
||
"df = pd.read_csv(\"data/diabetes.csv\")\n",
|
||
"print(df.columns)\n",
|
||
"df"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Бизнес-цели\n",
|
||
"1. Предсказание риска развития диабета. Будем классифицировать пациентов на основе медданных для того, чтобы определить у кого есть риск развития диабета(будем использовать целевой признак \"Outcome\"). Актуальность для раннего выявления диабета.\n",
|
||
"2. Анализ ключевых факторов, влияющих на диабет. Предсказание вероятности развития диабета на основе медданных. Актуальность для планирвоания лечения.\n",
|
||
"## Определение достижимого уровня качества модели для первой задачи\n",
|
||
"Разделение данных на обучающую и тестовые выборки 80/20 для задачи классификации"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"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",
|
||
"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\n",
|
||
" y = df_input[\n",
|
||
" [stratify_colname]\n",
|
||
" ]\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",
|
||
" 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",
|
||
"features_postprocessing -- трансформер для унитарного кодирования новых признаков\n",
|
||
"\n",
|
||
"pipeline_end -- основной конвейер предобработки данных и конструирования признаков\n",
|
||
"\n",
|
||
"Конвейер выполняется последовательно.\n",
|
||
"\n",
|
||
"Трансформер выполняет параллельно для указанного набора колонок."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"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",
|
||
"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[\"Glucose_Insulin\"] = X[\"Glucose\"] / X[\"Insulin\"]\n",
|
||
" return X\n",
|
||
"\n",
|
||
" def get_feature_names_out(self, features_in):\n",
|
||
" new_features = [\"Glucose_Insulin\"]\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": 9,
|
||
"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>Glucose_Insulin</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>2.958266</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.306696</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>-3.541575</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>-1.088792</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>-3.358486</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.568071</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>1.948744</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>1.037483</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>0.429976</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.285160</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 Glucose_Insulin \n",
|
||
"353 0.310794 -0.792169 0.0 2.958266 \n",
|
||
"711 -0.116439 0.561034 0.0 -0.306696 \n",
|
||
"373 -0.764862 -0.707594 0.0 -3.541575 \n",
|
||
"46 0.262314 -0.369293 0.0 -1.088792 \n",
|
||
"682 -0.337630 -0.961320 0.0 -3.358486 \n",
|
||
".. ... ... ... ... \n",
|
||
"451 0.195653 -0.876744 1.0 -0.568071 \n",
|
||
"113 -0.261879 -0.707594 0.0 1.948744 \n",
|
||
"556 -0.786072 -0.284718 0.0 1.037483 \n",
|
||
"667 -1.019383 0.561034 1.0 0.429976 \n",
|
||
"107 -0.577001 0.307308 0.0 1.285160 \n",
|
||
"\n",
|
||
"[614 rows x 10 columns]"
|
||
]
|
||
},
|
||
"execution_count": 9,
|
||
"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",
|
||
"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": 10,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn import ensemble, linear_model, naive_bayes, neighbors, neural_network, tree\n",
|
||
"\n",
|
||
"random_state = 42\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": 11,
|
||
"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": 12,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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jl69eiExMdGoz933O3fuHAYMGAB3d3e4ublh4MCBuH37ttmf04ABA7Bw4UIARUXl3eW/4/vggw8QGxuLunXrwsHBASdPngQAnDp1Cs8//zw8PT2h0WjQpk0bbNy4sdh7ZGRkYNSoUfD394eDgwPq1auH2bNnQ6/Xmz1OIiKi8nbp0iXUq1cPTZs2RVpaGrp06YKmTZvi5MmTePzxx1G1alXUqFEDc+bMMdpu165dkCQJa9euxfTp01GzZk1oNBo88cQTOHfuXAUdDVERfhNHVuv48eN48skn4e3tjaioKBQWFiIyMhI+Pj5G/aZPn47JkyejX79+GDx4MK5fv4758+ejU6dOOHLkCNzd3QEUFWM9evSAr68vRo4cCa1Wi8TERHz//fcYOXJkiWP4888/0aNHDzRv3hwxMTFwcHDAuXPnsG/fvlLHvm3bNjz11FOoU6cOoqKicOfOHcyfPx/t27fH4cOHUbt2baP+/fr1Q2BgIGbOnInDhw/j008/RfXq1TF79myzPqvXXnsNV69exdatW/H555+X2Gf58uXIzc3F0KFD4eDgAE9PT/z5559o3749atSogYkTJ8LJyQlr165F79698e233+K5554DANy+fRudO3fGX3/9hddeew21atXC/v37MWnSJKSkpCA2NtascRIREZWn8+fPo2vXrvD09MTWrVtRrVo1AMDNmzfRvXt39OnTB/369cM333yDCRMmoFmzZnjqqaeM9jFr1izY2Nhg7NixyMzMxJw5cxAeHo4DBw5UxCERFRFEVqp3795Co9GIS5cuGdpOnjwpbG1txd2/uhcvXhS2trZi+vTpRtseP35c2NnZGdoLCwtFYGCgCAgIEDdv3jTqq9frDX+OjIwU//2xmDdvngAgrl+/bnKcSUlJAoBYvny5oS04OFhUr15d3Lhxw9B27NgxYWNjI1555ZVi7/fqq68a7fO5554TXl5eJt+zJG+99ZYo6Uf67vhcXV3FtWvXjNY98cQTolmzZiI3N9fQptfrxWOPPSbq169vaJs6dapwcnISZ86cMdp+4sSJwtbWVly+fNmisRIREZWFu7l6/fp1kZiYKPz8/ETbtm1Fenq6oU/nzp0FALFy5UpDW15entBqtaJv376Gtp07dwoAIigoSOTl5RnaP/roIwFAHD9+vHwOiqgEnE5JVkmn0+Gnn35C7969UatW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xBEREREREZkRduKIiIiIiIjMCDtxREREREREZoSdOCIiIiIiIjPCThwREREREZEZYSeOiIiIiIjIjLATR0REREREZEbYiSMiIiIiIjIj7MQR/Y8kSZg0aVJZN8Oo7777DrVr14aVlRWcnJzKujlERESKcenSJUiShNjY2LJuClGRsBNHZAbOnj2L8PBw1KhRA4sXL8ZXX31V1k3K59q1a5g0aRKOHz9e1k0hIiIiUjTLsm4AET3Z7t27odfr8cUXX8DPz6+sm1Oga9euYfLkyahatSoCAwPLujlEREREisVP4qjcunfvXlk3ody4ceMGAJh0GOX9+/dNti8iIiIiKj3sxFG5MGnSJEiShNOnT6N3795wdnbGiy++iD/++APh4eGoXr06NBoNPD098fbbb+PWrVsFbn/hwgWEh4fDyckJWq0W/fr1y9dZycrKwsiRI+Hm5gYHBwd07twZV69eLbBdx44dwyuvvAJHR0fY29ujffv2OHTokEGd2NhYSJKE/fv3Y9iwYXBzc4OTkxPeeecdZGdn486dO+jbty+cnZ3h7OyMsWPHQghR5PematWqiIiIAAC4ubnlm7s3f/581K1bF2q1Gt7e3hg8eDDu3LljsI+2bduiXr16OHLkCFq3bg1bW1t8/PHH8vsREREBPz8/qNVq+Pj4YOzYscjKyjLYx7Zt2/Diiy/CyckJ9vb28Pf3l/exe/duNGvWDADQr18/SJLEuQVERFSq8v4WOHfuHN58801otVq4ublhwoQJEELgypUr6NKlCxwdHeHp6YmZM2cWur/w8HDY29vj4sWLCAkJgZ2dHby9vREZGVmsHCcqCRxOSeXKf//7X9SsWRNTp06FEALbtm3DxYsX0a9fP3h6euLPP//EV199hT///BOHDh2CJEkG2/fo0QPVqlVDVFQUjh49iq+//hru7u6YPn26XGfAgAH4/vvv0bt3b7zwwgvYuXMnOnbsmK8tf/75J1q1agVHR0eMHTsWVlZWWLRoEdq2bYs9e/agefPmBvWHDh0KT09PTJ48GYcOHcJXX30FJycnHDhwAFWqVMHUqVOxefNmzJgxA/Xq1UPfvn2L9J7MmTMH3377LdauXYsFCxbA3t4eDRo0APAosCZPnozg4GC89957SEhIwIIFC/D7778jPj4eVlZW8n5u3bqFV155Bb169cKbb74JDw8P6PV6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",
|
||
"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",
|
||
"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",
|
||
"plt.subplots_adjust(top=1, bottom=0, hspace=0.4, wspace=0.1)\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"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": 14,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style type=\"text/css\">\n",
|
||
"#T_fed29_row0_col0, #T_fed29_row0_col1, #T_fed29_row0_col2, #T_fed29_row0_col3, #T_fed29_row1_col0, #T_fed29_row1_col1, #T_fed29_row1_col2, #T_fed29_row1_col3, #T_fed29_row2_col0, #T_fed29_row2_col1, #T_fed29_row2_col2, #T_fed29_row2_col3, #T_fed29_row3_col0, #T_fed29_row3_col1, #T_fed29_row3_col2, #T_fed29_row3_col3, #T_fed29_row4_col0, #T_fed29_row4_col1, #T_fed29_row4_col2, #T_fed29_row4_col3, #T_fed29_row5_col0, #T_fed29_row5_col1, #T_fed29_row5_col2, #T_fed29_row5_col3 {\n",
|
||
" background-color: #a8db34;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_fed29_row0_col4, #T_fed29_row0_col5, #T_fed29_row0_col6, #T_fed29_row0_col7, #T_fed29_row1_col4, #T_fed29_row1_col5, #T_fed29_row1_col6, #T_fed29_row1_col7, #T_fed29_row2_col4, #T_fed29_row2_col5, #T_fed29_row2_col6, #T_fed29_row2_col7, #T_fed29_row3_col4, #T_fed29_row3_col5, #T_fed29_row3_col6, #T_fed29_row3_col7, #T_fed29_row4_col4, #T_fed29_row4_col5, #T_fed29_row4_col6, #T_fed29_row4_col7, #T_fed29_row5_col4, #T_fed29_row5_col5, #T_fed29_row5_col6, #T_fed29_row5_col7 {\n",
|
||
" background-color: #da5a6a;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_fed29_row6_col0 {\n",
|
||
" background-color: #86d549;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_fed29_row6_col1 {\n",
|
||
" background-color: #4ac16d;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_fed29_row6_col2 {\n",
|
||
" background-color: #75d054;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_fed29_row6_col3 {\n",
|
||
" background-color: #69cd5b;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_fed29_row6_col4 {\n",
|
||
" background-color: #c43e7f;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_fed29_row6_col5 {\n",
|
||
" background-color: #ae2892;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_fed29_row6_col6 {\n",
|
||
" background-color: #cc4977;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_fed29_row6_col7 {\n",
|
||
" background-color: #c13b82;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_fed29_row7_col0, #T_fed29_row7_col1, #T_fed29_row7_col2, #T_fed29_row7_col3 {\n",
|
||
" background-color: #26818e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_fed29_row7_col4, #T_fed29_row7_col5, #T_fed29_row7_col6, #T_fed29_row7_col7 {\n",
|
||
" background-color: #4e02a2;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"</style>\n",
|
||
"<table id=\"T_fed29\">\n",
|
||
" <thead>\n",
|
||
" <tr>\n",
|
||
" <th class=\"blank level0\" > </th>\n",
|
||
" <th id=\"T_fed29_level0_col0\" class=\"col_heading level0 col0\" >Precision_train</th>\n",
|
||
" <th id=\"T_fed29_level0_col1\" class=\"col_heading level0 col1\" >Precision_test</th>\n",
|
||
" <th id=\"T_fed29_level0_col2\" class=\"col_heading level0 col2\" >Recall_train</th>\n",
|
||
" <th id=\"T_fed29_level0_col3\" class=\"col_heading level0 col3\" >Recall_test</th>\n",
|
||
" <th id=\"T_fed29_level0_col4\" class=\"col_heading level0 col4\" >Accuracy_train</th>\n",
|
||
" <th id=\"T_fed29_level0_col5\" class=\"col_heading level0 col5\" >Accuracy_test</th>\n",
|
||
" <th id=\"T_fed29_level0_col6\" class=\"col_heading level0 col6\" >F1_train</th>\n",
|
||
" <th id=\"T_fed29_level0_col7\" class=\"col_heading level0 col7\" >F1_test</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_fed29_level0_row0\" class=\"row_heading level0 row0\" >logistic</th>\n",
|
||
" <td id=\"T_fed29_row0_col0\" class=\"data row0 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row0_col1\" class=\"data row0 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row0_col2\" class=\"data row0 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row0_col4\" class=\"data row0 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row0_col5\" class=\"data row0 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row0_col6\" class=\"data row0 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row0_col7\" class=\"data row0 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_fed29_level0_row1\" class=\"row_heading level0 row1\" >ridge</th>\n",
|
||
" <td id=\"T_fed29_row1_col0\" class=\"data row1 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row1_col1\" class=\"data row1 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row1_col2\" class=\"data row1 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row1_col3\" class=\"data row1 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row1_col4\" class=\"data row1 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row1_col5\" class=\"data row1 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row1_col6\" class=\"data row1 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row1_col7\" class=\"data row1 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_fed29_level0_row2\" class=\"row_heading level0 row2\" >decision_tree</th>\n",
|
||
" <td id=\"T_fed29_row2_col0\" class=\"data row2 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row2_col1\" class=\"data row2 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row2_col2\" class=\"data row2 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row2_col3\" class=\"data row2 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row2_col4\" class=\"data row2 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row2_col5\" class=\"data row2 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row2_col6\" class=\"data row2 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row2_col7\" class=\"data row2 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_fed29_level0_row3\" class=\"row_heading level0 row3\" >naive_bayes</th>\n",
|
||
" <td id=\"T_fed29_row3_col0\" class=\"data row3 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row3_col1\" class=\"data row3 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row3_col2\" class=\"data row3 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row3_col3\" class=\"data row3 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row3_col4\" class=\"data row3 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row3_col5\" class=\"data row3 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row3_col6\" class=\"data row3 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row3_col7\" class=\"data row3 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_fed29_level0_row4\" class=\"row_heading level0 row4\" >random_forest</th>\n",
|
||
" <td id=\"T_fed29_row4_col0\" class=\"data row4 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row4_col1\" class=\"data row4 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row4_col2\" class=\"data row4 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row4_col3\" class=\"data row4 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row4_col4\" class=\"data row4 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row4_col5\" class=\"data row4 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row4_col6\" class=\"data row4 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row4_col7\" class=\"data row4 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_fed29_level0_row5\" class=\"row_heading level0 row5\" >gradient_boosting</th>\n",
|
||
" <td id=\"T_fed29_row5_col0\" class=\"data row5 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row5_col1\" class=\"data row5 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row5_col2\" class=\"data row5 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row5_col3\" class=\"data row5 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row5_col4\" class=\"data row5 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row5_col5\" class=\"data row5 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row5_col6\" class=\"data row5 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_fed29_row5_col7\" class=\"data row5 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_fed29_level0_row6\" class=\"row_heading level0 row6\" >knn</th>\n",
|
||
" <td id=\"T_fed29_row6_col0\" class=\"data row6 col0\" >0.947090</td>\n",
|
||
" <td id=\"T_fed29_row6_col1\" class=\"data row6 col1\" >0.796296</td>\n",
|
||
" <td id=\"T_fed29_row6_col2\" class=\"data row6 col2\" >0.836449</td>\n",
|
||
" <td id=\"T_fed29_row6_col3\" class=\"data row6 col3\" >0.796296</td>\n",
|
||
" <td id=\"T_fed29_row6_col4\" class=\"data row6 col4\" >0.926710</td>\n",
|
||
" <td id=\"T_fed29_row6_col5\" class=\"data row6 col5\" >0.857143</td>\n",
|
||
" <td id=\"T_fed29_row6_col6\" class=\"data row6 col6\" >0.888337</td>\n",
|
||
" <td id=\"T_fed29_row6_col7\" class=\"data row6 col7\" >0.796296</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_fed29_level0_row7\" class=\"row_heading level0 row7\" >mlp</th>\n",
|
||
" <td id=\"T_fed29_row7_col0\" class=\"data row7 col0\" >0.552632</td>\n",
|
||
" <td id=\"T_fed29_row7_col1\" class=\"data row7 col1\" >0.428571</td>\n",
|
||
" <td id=\"T_fed29_row7_col2\" class=\"data row7 col2\" >0.098131</td>\n",
|
||
" <td id=\"T_fed29_row7_col3\" class=\"data row7 col3\" >0.111111</td>\n",
|
||
" <td id=\"T_fed29_row7_col4\" class=\"data row7 col4\" >0.657980</td>\n",
|
||
" <td id=\"T_fed29_row7_col5\" class=\"data row7 col5\" >0.636364</td>\n",
|
||
" <td id=\"T_fed29_row7_col6\" class=\"data row7 col6\" >0.166667</td>\n",
|
||
" <td id=\"T_fed29_row7_col7\" class=\"data row7 col7\" >0.176471</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n"
|
||
],
|
||
"text/plain": [
|
||
"<pandas.io.formats.style.Styler at 0x135c39b70b0>"
|
||
]
|
||
},
|
||
"execution_count": 14,
|
||
"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 не так эффективна по сравнению с другими, но в некоторых метриках показывает неплохие результаты."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style type=\"text/css\">\n",
|
||
"#T_2bffc_row0_col0, #T_2bffc_row0_col1, #T_2bffc_row1_col0, #T_2bffc_row1_col1, #T_2bffc_row2_col0, #T_2bffc_row2_col1, #T_2bffc_row3_col0, #T_2bffc_row3_col1, #T_2bffc_row4_col0, #T_2bffc_row4_col1, #T_2bffc_row5_col0, #T_2bffc_row5_col1 {\n",
|
||
" background-color: #a8db34;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_2bffc_row0_col2, #T_2bffc_row0_col3, #T_2bffc_row0_col4, #T_2bffc_row1_col2, #T_2bffc_row1_col3, #T_2bffc_row1_col4, #T_2bffc_row2_col2, #T_2bffc_row2_col3, #T_2bffc_row2_col4, #T_2bffc_row3_col2, #T_2bffc_row3_col3, #T_2bffc_row3_col4, #T_2bffc_row4_col2, #T_2bffc_row4_col3, #T_2bffc_row4_col4, #T_2bffc_row5_col2, #T_2bffc_row5_col3, #T_2bffc_row5_col4 {\n",
|
||
" background-color: #da5a6a;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_2bffc_row6_col0 {\n",
|
||
" background-color: #42be71;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_2bffc_row6_col1 {\n",
|
||
" background-color: #65cb5e;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_2bffc_row6_col2 {\n",
|
||
" background-color: #c5407e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_2bffc_row6_col3 {\n",
|
||
" background-color: #b7318a;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_2bffc_row6_col4 {\n",
|
||
" background-color: #b6308b;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_2bffc_row7_col0, #T_2bffc_row7_col1 {\n",
|
||
" background-color: #26818e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_2bffc_row7_col2, #T_2bffc_row7_col3, #T_2bffc_row7_col4 {\n",
|
||
" background-color: #4e02a2;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"</style>\n",
|
||
"<table id=\"T_2bffc\">\n",
|
||
" <thead>\n",
|
||
" <tr>\n",
|
||
" <th class=\"blank level0\" > </th>\n",
|
||
" <th id=\"T_2bffc_level0_col0\" class=\"col_heading level0 col0\" >Accuracy_test</th>\n",
|
||
" <th id=\"T_2bffc_level0_col1\" class=\"col_heading level0 col1\" >F1_test</th>\n",
|
||
" <th id=\"T_2bffc_level0_col2\" class=\"col_heading level0 col2\" >ROC_AUC_test</th>\n",
|
||
" <th id=\"T_2bffc_level0_col3\" class=\"col_heading level0 col3\" >Cohen_kappa_test</th>\n",
|
||
" <th id=\"T_2bffc_level0_col4\" class=\"col_heading level0 col4\" >MCC_test</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_2bffc_level0_row0\" class=\"row_heading level0 row0\" >logistic</th>\n",
|
||
" <td id=\"T_2bffc_row0_col0\" class=\"data row0 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row0_col1\" class=\"data row0 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row0_col2\" class=\"data row0 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row0_col4\" class=\"data row0 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_2bffc_level0_row1\" class=\"row_heading level0 row1\" >ridge</th>\n",
|
||
" <td id=\"T_2bffc_row1_col0\" class=\"data row1 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row1_col1\" class=\"data row1 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row1_col2\" class=\"data row1 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row1_col3\" class=\"data row1 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row1_col4\" class=\"data row1 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_2bffc_level0_row2\" class=\"row_heading level0 row2\" >decision_tree</th>\n",
|
||
" <td id=\"T_2bffc_row2_col0\" class=\"data row2 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row2_col1\" class=\"data row2 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row2_col2\" class=\"data row2 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row2_col3\" class=\"data row2 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row2_col4\" class=\"data row2 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_2bffc_level0_row3\" class=\"row_heading level0 row3\" >naive_bayes</th>\n",
|
||
" <td id=\"T_2bffc_row3_col0\" class=\"data row3 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row3_col1\" class=\"data row3 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row3_col2\" class=\"data row3 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row3_col3\" class=\"data row3 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row3_col4\" class=\"data row3 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_2bffc_level0_row4\" class=\"row_heading level0 row4\" >gradient_boosting</th>\n",
|
||
" <td id=\"T_2bffc_row4_col0\" class=\"data row4 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row4_col1\" class=\"data row4 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row4_col2\" class=\"data row4 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row4_col3\" class=\"data row4 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row4_col4\" class=\"data row4 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_2bffc_level0_row5\" class=\"row_heading level0 row5\" >random_forest</th>\n",
|
||
" <td id=\"T_2bffc_row5_col0\" class=\"data row5 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row5_col1\" class=\"data row5 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row5_col2\" class=\"data row5 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row5_col3\" class=\"data row5 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_2bffc_row5_col4\" class=\"data row5 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_2bffc_level0_row6\" class=\"row_heading level0 row6\" >knn</th>\n",
|
||
" <td id=\"T_2bffc_row6_col0\" class=\"data row6 col0\" >0.857143</td>\n",
|
||
" <td id=\"T_2bffc_row6_col1\" class=\"data row6 col1\" >0.796296</td>\n",
|
||
" <td id=\"T_2bffc_row6_col2\" class=\"data row6 col2\" >0.923333</td>\n",
|
||
" <td id=\"T_2bffc_row6_col3\" class=\"data row6 col3\" >0.686296</td>\n",
|
||
" <td id=\"T_2bffc_row6_col4\" class=\"data row6 col4\" >0.686296</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_2bffc_level0_row7\" class=\"row_heading level0 row7\" >mlp</th>\n",
|
||
" <td id=\"T_2bffc_row7_col0\" class=\"data row7 col0\" >0.636364</td>\n",
|
||
" <td id=\"T_2bffc_row7_col1\" class=\"data row7 col1\" >0.176471</td>\n",
|
||
" <td id=\"T_2bffc_row7_col2\" class=\"data row7 col2\" >0.630556</td>\n",
|
||
" <td id=\"T_2bffc_row7_col3\" class=\"data row7 col3\" >0.037500</td>\n",
|
||
" <td id=\"T_2bffc_row7_col4\" class=\"data row7 col4\" >0.051640</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n"
|
||
],
|
||
"text/plain": [
|
||
"<pandas.io.formats.style.Styler at 0x135c3bf80b0>"
|
||
]
|
||
},
|
||
"execution_count": 15,
|
||
"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": 16,
|
||
"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": 17,
|
||
"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": 17,
|
||
"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": 22,
|
||
"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>190</th>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>111.0</td>\n",
|
||
" <td>62.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>22.6</td>\n",
|
||
" <td>0.142</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",
|
||
"190 3.0 111.0 62.0 0.0 0.0 22.6 \n",
|
||
"\n",
|
||
" DiabetesPedigreeFunction Age Outcome \n",
|
||
"190 0.142 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>Glucose_Insulin</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>190</th>\n",
|
||
" <td>-0.24739</td>\n",
|
||
" <td>-0.314212</td>\n",
|
||
" <td>-0.404784</td>\n",
|
||
" <td>-1.31138</td>\n",
|
||
" <td>-0.730766</td>\n",
|
||
" <td>-1.193296</td>\n",
|
||
" <td>-1.016353</td>\n",
|
||
" <td>-1.045895</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.429976</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n",
|
||
"190 -0.24739 -0.314212 -0.404784 -1.31138 -0.730766 -1.193296 \n",
|
||
"\n",
|
||
" DiabetesPedigreeFunction Age Outcome_1 Glucose_Insulin \n",
|
||
"190 -1.016353 -1.045895 0.0 0.429976 "
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'predicted: 0 (proba: [0.99177252 0.00822748])'"
|
||
]
|
||
},
|
||
"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 = 190\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}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Подбор гиперпараметров методом поиска по сетке"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 25,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"c:\\Users\\tabee\\AIM_PIbd-31_Tabeev_A.P\\.venv\\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": 25,
|
||
"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": 26,
|
||
"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",
|
||
"numeric_features = X_train.select_dtypes(include=['float64', 'int64']).columns.tolist()\n",
|
||
"\n",
|
||
"random_state = 42\n",
|
||
"# Определение трансформера\n",
|
||
"pipeline_end = ColumnTransformer([\n",
|
||
" ('numeric', StandardScaler(), numeric_features),\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",
|
||
"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": 27,
|
||
"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": 28,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style type=\"text/css\">\n",
|
||
"#T_02d85_row0_col0, #T_02d85_row0_col1, #T_02d85_row0_col2, #T_02d85_row0_col3, #T_02d85_row1_col0, #T_02d85_row1_col1, #T_02d85_row1_col2, #T_02d85_row1_col3 {\n",
|
||
" background-color: #440154;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_02d85_row0_col4, #T_02d85_row0_col5, #T_02d85_row0_col6, #T_02d85_row0_col7, #T_02d85_row1_col4, #T_02d85_row1_col5, #T_02d85_row1_col6, #T_02d85_row1_col7 {\n",
|
||
" background-color: #0d0887;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"</style>\n",
|
||
"<table id=\"T_02d85\">\n",
|
||
" <thead>\n",
|
||
" <tr>\n",
|
||
" <th class=\"blank level0\" > </th>\n",
|
||
" <th id=\"T_02d85_level0_col0\" class=\"col_heading level0 col0\" >Precision_train</th>\n",
|
||
" <th id=\"T_02d85_level0_col1\" class=\"col_heading level0 col1\" >Precision_test</th>\n",
|
||
" <th id=\"T_02d85_level0_col2\" class=\"col_heading level0 col2\" >Recall_train</th>\n",
|
||
" <th id=\"T_02d85_level0_col3\" class=\"col_heading level0 col3\" >Recall_test</th>\n",
|
||
" <th id=\"T_02d85_level0_col4\" class=\"col_heading level0 col4\" >Accuracy_train</th>\n",
|
||
" <th id=\"T_02d85_level0_col5\" class=\"col_heading level0 col5\" >Accuracy_test</th>\n",
|
||
" <th id=\"T_02d85_level0_col6\" class=\"col_heading level0 col6\" >F1_train</th>\n",
|
||
" <th id=\"T_02d85_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_02d85_level0_row0\" class=\"row_heading level0 row0\" >Old</th>\n",
|
||
" <td id=\"T_02d85_row0_col0\" class=\"data row0 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_02d85_row0_col1\" class=\"data row0 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_02d85_row0_col2\" class=\"data row0 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_02d85_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_02d85_row0_col4\" class=\"data row0 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_02d85_row0_col5\" class=\"data row0 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_02d85_row0_col6\" class=\"data row0 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_02d85_row0_col7\" class=\"data row0 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_02d85_level0_row1\" class=\"row_heading level0 row1\" >New</th>\n",
|
||
" <td id=\"T_02d85_row1_col0\" class=\"data row1 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_02d85_row1_col1\" class=\"data row1 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_02d85_row1_col2\" class=\"data row1 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_02d85_row1_col3\" class=\"data row1 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_02d85_row1_col4\" class=\"data row1 col4\" >1.000000</td>\n",
|
||
" <td id=\"T_02d85_row1_col5\" class=\"data row1 col5\" >1.000000</td>\n",
|
||
" <td id=\"T_02d85_row1_col6\" class=\"data row1 col6\" >1.000000</td>\n",
|
||
" <td id=\"T_02d85_row1_col7\" class=\"data row1 col7\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n"
|
||
],
|
||
"text/plain": [
|
||
"<pandas.io.formats.style.Styler at 0x135c73282c0>"
|
||
]
|
||
},
|
||
"execution_count": 28,
|
||
"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": 29,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style type=\"text/css\">\n",
|
||
"#T_34fcd_row0_col0, #T_34fcd_row0_col1, #T_34fcd_row1_col0, #T_34fcd_row1_col1 {\n",
|
||
" background-color: #440154;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_34fcd_row0_col2, #T_34fcd_row0_col3, #T_34fcd_row0_col4, #T_34fcd_row1_col3, #T_34fcd_row1_col4 {\n",
|
||
" background-color: #0d0887;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_34fcd_row1_col2 {\n",
|
||
" background-color: #f0f921;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"</style>\n",
|
||
"<table id=\"T_34fcd\">\n",
|
||
" <thead>\n",
|
||
" <tr>\n",
|
||
" <th class=\"blank level0\" > </th>\n",
|
||
" <th id=\"T_34fcd_level0_col0\" class=\"col_heading level0 col0\" >Accuracy_test</th>\n",
|
||
" <th id=\"T_34fcd_level0_col1\" class=\"col_heading level0 col1\" >F1_test</th>\n",
|
||
" <th id=\"T_34fcd_level0_col2\" class=\"col_heading level0 col2\" >ROC_AUC_test</th>\n",
|
||
" <th id=\"T_34fcd_level0_col3\" class=\"col_heading level0 col3\" >Cohen_kappa_test</th>\n",
|
||
" <th id=\"T_34fcd_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_34fcd_level0_row0\" class=\"row_heading level0 row0\" >Old</th>\n",
|
||
" <td id=\"T_34fcd_row0_col0\" class=\"data row0 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_34fcd_row0_col1\" class=\"data row0 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_34fcd_row0_col2\" class=\"data row0 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_34fcd_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_34fcd_row0_col4\" class=\"data row0 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_34fcd_level0_row1\" class=\"row_heading level0 row1\" >New</th>\n",
|
||
" <td id=\"T_34fcd_row1_col0\" class=\"data row1 col0\" >1.000000</td>\n",
|
||
" <td id=\"T_34fcd_row1_col1\" class=\"data row1 col1\" >1.000000</td>\n",
|
||
" <td id=\"T_34fcd_row1_col2\" class=\"data row1 col2\" >1.000000</td>\n",
|
||
" <td id=\"T_34fcd_row1_col3\" class=\"data row1 col3\" >1.000000</td>\n",
|
||
" <td id=\"T_34fcd_row1_col4\" class=\"data row1 col4\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n"
|
||
],
|
||
"text/plain": [
|
||
"<pandas.io.formats.style.Styler at 0x135c7328590>"
|
||
]
|
||
},
|
||
"execution_count": 29,
|
||
"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": 30,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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nz46cOCA3n77bb377rsaPny4UlJS9Ne//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": 31,
|
||
"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 = 42\n",
|
||
"set_config(transform_output=\"pandas\")\n",
|
||
"\n",
|
||
"df = pd.read_csv(\"data/diabetes.csv\")\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": 32,
|
||
"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(\"data/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",
|
||
"print(df[[\"Pregnancies\", \"Glucose\", \"BloodPressure\", \"SkinThickness\", \"Insulin\", \"BMI\", \"DiabetesPedigreeFunction\", \"Age\", \"diabetes_risk_index\"]].head())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Разделение набора данных на обучающую и тестовые выборки (80/20) для задачи регрессии"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 33,
|
||
"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",
|
||
" if target_colname not in df_input.columns:\n",
|
||
" raise ValueError(f\"{target_colname} is not a column in the DataFrame.\")\n",
|
||
" \n",
|
||
" X = df_input.drop(columns=[target_colname])\n",
|
||
" y = df_input[[target_colname]]\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",
|
||
"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",
|
||
"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": 34,
|
||
"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 = 42\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",
|
||
"}"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Обучение и оценка моделей с помощью различных алгоритмов"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 35,
|
||
"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\\tabee\\AIM_PIbd-31_Tabeev_A.P\\.venv\\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": 36,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<style type=\"text/css\">\n",
|
||
"#T_4f71e_row0_col0, #T_4f71e_row0_col1, #T_4f71e_row1_col0, #T_4f71e_row1_col1 {\n",
|
||
" background-color: #26818e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row0_col2, #T_4f71e_row1_col2, #T_4f71e_row7_col3 {\n",
|
||
" background-color: #4e02a2;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row0_col3, #T_4f71e_row1_col3, #T_4f71e_row2_col3, #T_4f71e_row3_col3, #T_4f71e_row7_col2 {\n",
|
||
" background-color: #da5a6a;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row2_col0 {\n",
|
||
" background-color: #25838e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row2_col1 {\n",
|
||
" background-color: #25858e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row2_col2 {\n",
|
||
" background-color: #7100a8;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row3_col0 {\n",
|
||
" background-color: #25848e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row3_col1 {\n",
|
||
" background-color: #24878e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row3_col2 {\n",
|
||
" background-color: #7501a8;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row4_col0 {\n",
|
||
" background-color: #23888e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row4_col1 {\n",
|
||
" background-color: #23898e;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row4_col2 {\n",
|
||
" background-color: #7a02a8;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row4_col3, #T_4f71e_row6_col2 {\n",
|
||
" background-color: #d9586a;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row5_col0, #T_4f71e_row5_col1 {\n",
|
||
" background-color: #89d548;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_4f71e_row5_col2 {\n",
|
||
" background-color: #d24f71;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row5_col3 {\n",
|
||
" background-color: #7201a8;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"#T_4f71e_row6_col0, #T_4f71e_row7_col0, #T_4f71e_row7_col1 {\n",
|
||
" background-color: #a8db34;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_4f71e_row6_col1 {\n",
|
||
" background-color: #a2da37;\n",
|
||
" color: #000000;\n",
|
||
"}\n",
|
||
"#T_4f71e_row6_col3 {\n",
|
||
" background-color: #5302a3;\n",
|
||
" color: #f1f1f1;\n",
|
||
"}\n",
|
||
"</style>\n",
|
||
"<table id=\"T_4f71e\">\n",
|
||
" <thead>\n",
|
||
" <tr>\n",
|
||
" <th class=\"blank level0\" > </th>\n",
|
||
" <th id=\"T_4f71e_level0_col0\" class=\"col_heading level0 col0\" >RMSE_train</th>\n",
|
||
" <th id=\"T_4f71e_level0_col1\" class=\"col_heading level0 col1\" >RMSE_test</th>\n",
|
||
" <th id=\"T_4f71e_level0_col2\" class=\"col_heading level0 col2\" >RMAE_test</th>\n",
|
||
" <th id=\"T_4f71e_level0_col3\" class=\"col_heading level0 col3\" >R2_test</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_4f71e_level0_row0\" class=\"row_heading level0 row0\" >linear</th>\n",
|
||
" <td id=\"T_4f71e_row0_col0\" class=\"data row0 col0\" >0.000000</td>\n",
|
||
" <td id=\"T_4f71e_row0_col1\" class=\"data row0 col1\" >0.000000</td>\n",
|
||
" <td id=\"T_4f71e_row0_col2\" class=\"data row0 col2\" >0.000000</td>\n",
|
||
" <td id=\"T_4f71e_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_4f71e_level0_row1\" class=\"row_heading level0 row1\" >ridge</th>\n",
|
||
" <td id=\"T_4f71e_row1_col0\" class=\"data row1 col0\" >0.002409</td>\n",
|
||
" <td id=\"T_4f71e_row1_col1\" class=\"data row1 col1\" >0.002181</td>\n",
|
||
" <td id=\"T_4f71e_row1_col2\" class=\"data row1 col2\" >0.040847</td>\n",
|
||
" <td id=\"T_4f71e_row1_col3\" class=\"data row1 col3\" >1.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_4f71e_level0_row2\" class=\"row_heading level0 row2\" >random_forest</th>\n",
|
||
" <td id=\"T_4f71e_row2_col0\" class=\"data row2 col0\" >1.856691</td>\n",
|
||
" <td id=\"T_4f71e_row2_col1\" class=\"data row2 col1\" >3.387390</td>\n",
|
||
" <td id=\"T_4f71e_row2_col2\" class=\"data row2 col2\" >1.612410</td>\n",
|
||
" <td id=\"T_4f71e_row2_col3\" class=\"data row2 col3\" >0.967338</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_4f71e_level0_row3\" class=\"row_heading level0 row3\" >decision_tree</th>\n",
|
||
" <td id=\"T_4f71e_row3_col0\" class=\"data row3 col0\" >2.409987</td>\n",
|
||
" <td id=\"T_4f71e_row3_col1\" class=\"data row3 col1\" >4.281378</td>\n",
|
||
" <td id=\"T_4f71e_row3_col2\" class=\"data row3 col2\" >1.847379</td>\n",
|
||
" <td id=\"T_4f71e_row3_col3\" class=\"data row3 col3\" >0.947823</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_4f71e_level0_row4\" class=\"row_heading level0 row4\" >knn</th>\n",
|
||
" <td id=\"T_4f71e_row4_col0\" class=\"data row4 col0\" >5.170083</td>\n",
|
||
" <td id=\"T_4f71e_row4_col1\" class=\"data row4 col1\" >5.824576</td>\n",
|
||
" <td id=\"T_4f71e_row4_col2\" class=\"data row4 col2\" >2.073599</td>\n",
|
||
" <td id=\"T_4f71e_row4_col3\" class=\"data row4 col3\" >0.903431</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_4f71e_level0_row5\" class=\"row_heading level0 row5\" >mlp</th>\n",
|
||
" <td id=\"T_4f71e_row5_col0\" class=\"data row5 col0\" >60.594447</td>\n",
|
||
" <td id=\"T_4f71e_row5_col1\" class=\"data row5 col1\" >59.994001</td>\n",
|
||
" <td id=\"T_4f71e_row5_col2\" class=\"data row5 col2\" >7.553087</td>\n",
|
||
" <td id=\"T_4f71e_row5_col3\" class=\"data row5 col3\" >-9.245313</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_4f71e_level0_row6\" class=\"row_heading level0 row6\" >linear_poly</th>\n",
|
||
" <td id=\"T_4f71e_row6_col0\" class=\"data row6 col0\" >67.720820</td>\n",
|
||
" <td id=\"T_4f71e_row6_col1\" class=\"data row6 col1\" >66.518485</td>\n",
|
||
" <td id=\"T_4f71e_row6_col2\" class=\"data row6 col2\" >8.144355</td>\n",
|
||
" <td id=\"T_4f71e_row6_col3\" class=\"data row6 col3\" >-11.594887</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th id=\"T_4f71e_level0_row7\" class=\"row_heading level0 row7\" >linear_interact</th>\n",
|
||
" <td id=\"T_4f71e_row7_col0\" class=\"data row7 col0\" >67.518306</td>\n",
|
||
" <td id=\"T_4f71e_row7_col1\" class=\"data row7 col1\" >67.518306</td>\n",
|
||
" <td id=\"T_4f71e_row7_col2\" class=\"data row7 col2\" >8.216952</td>\n",
|
||
" <td id=\"T_4f71e_row7_col3\" class=\"data row7 col3\" >-11.976353</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n"
|
||
],
|
||
"text/plain": [
|
||
"<pandas.io.formats.style.Styler at 0x135c8320bc0>"
|
||
]
|
||
},
|
||
"execution_count": 36,
|
||
"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": 37,
|
||
"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": 40,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Fitting 3 folds for each of 27 candidates, totalling 81 fits\n",
|
||
"Лучшие параметры: {'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",
|
||
"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",
|
||
"model = RandomForestRegressor(random_state=42)\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",
|
||
"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",
|
||
"grid_search.fit(X_train, y_train)\n",
|
||
"\n",
|
||
"print(\"Лучшие параметры:\", grid_search.best_params_)\n",
|
||
"print(\"Лучший результат (MSE):\", -grid_search.best_score_)\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}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Обучение модели с новыми гиперпараметрами и сравнение новых и старых данных"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 41,
|
||
"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': 100}\n",
|
||
"Лучший результат (MSE) на старых параметрах: 11.682596479300793\n",
|
||
"\n",
|
||
"\n",
|
||
"Новые параметры: {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100}\n",
|
||
"Лучший результат (MSE) на новых параметрах: 18.55198575928597\n",
|
||
"Среднеквадратическая ошибка (MSE) на тестовых данных: 10.739599657760765\n",
|
||
"Корень среднеквадратичной ошибки (RMSE) на тестовых данных: 3.27713284103052\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_\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_\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\")\n",
|
||
"print(\"Новые параметры:\", new_best_params)\n",
|
||
"print(\"Лучший результат (MSE) на новых параметрах:\", new_best_mse)\n",
|
||
"print(\"Среднеквадратическая ошибка (MSE) на тестовых данных:\", mse)\n",
|
||
"print(\"Корень среднеквадратичной ошибки (RMSE) на тестовых данных:\", rmse)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 45,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1wAAAHWCAYAAABjUYhTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzde1xUdf748dcMAzMwzAzCAIIwgTcYtEy0zEtpW5u23aBau7ibdr9T36ys3dKs7bLbZY1q29y1zLbdsi3YLr91t5tdXLNUKpUhrziAKAyXYRiYAWbm98fI5AAaIjhc3s/Hg4fOOWfO+Zwzt/P+XN4fhc/n8yGEEEIIIYQQotcpQ10AIYQQQgghhBisJOASQgghhBBCiD4iAZcQQgghhBBC9BEJuIQQQgghhBCij0jAJYQQQgghhBB9RAIuIYQQQgghhOgjEnAJIYQQQgghRB+RgEsIIYQQQggh+ogEXEIIIYQQQgjRRyTgEkIIIYQQQog+IgGXEEIchZUrV6JQKNi4cWOX62fNmsX48eOPc6mEEEII0V9JwCWEEEIIIYQQfUQCLiGEEEIIIYToIxJwCSFEH2tra+ORRx5h1KhRqNVq0tLS+M1vfoPb7Q7aLi0tDYVCgUKhQKlUMnz4cC677DKsVmtgm9LSUhQKBU899dRhj/fQQw+hUCg6Lf/b3/7GpEmTiIyMJDY2lssvv5yysrKfLH9X+2tsbGT48OEoFArWrl37k/uoqKjg2muvJTk5GbVaTXp6OjfffDMtLS2BbppH+lu5ciUA33//PQsWLGDkyJFoNBqGDx/ONddcQ01NTZdlLikpYe7cuej1euLi4rjjjjtwuVxB2yoUCm677bbDlr29fKWlpUHL//3vf3P66aej1WrR6XScd955bNu27SevxU+d70MPPRTYdu/evdxyyy1kZGQQGRlJXFwcv/zlLzuVpX2fn3/+OTfeeCNxcXHo9Xquuuoq6urqgrb917/+xXnnnRd4LUaNGsUjjzyCx+MJ2m7WrFkoFApycnI6ncONN96IQqHo1H3W6/WybNkyxo0bh0ajITExkRtvvDGoDIe+z7v6S0tLA4Lf63/84x854YQTiIyMZObMmWzdujXouAsWLCA6OvqI173jtRVCiONFFeoCCCHEQGS327HZbJ2Wt7a2dlp23XXX8eqrr3LppZeycOFCNmzYwOOPP47FYqGgoCBo29NPP50bbrgBr9fL1q1bWbZsGfv27eOLL744pvI++uijPPjgg8ydO5frrruO6upqnnvuOc444wyKioqIiYk5qv09/fTTHDhwoFvb7tu3j1NPPZX6+npuuOEGMjMzqaio4J///CdNTU2cccYZvPbaa0FlBfjtb38bWDZt2jQAPvzwQ3bv3s3VV1/N8OHD2bZtG8uXL2fbtm189dVXnQLDuXPnkpaWxuOPP85XX31Ffn4+dXV1rFq16qjOt6PXXnuN+fPnM3v2bH7/+9/T1NTEiy++yIwZMygqKgoEDUfy8MMPk56eHnjc2NjIzTffHLTNN998w//+9z8uv/xyUlJSKC0t5cUXX2TWrFkUFxcTFRUVtP1tt91GTEwMDz30ED/88AMvvvgie/fuZe3atYFrs3LlSqKjo7nrrruIjo7mk08+YfHixTQ0NPDkk08G7U+j0fDBBx9QVVVFQkICAM3Nzbz55ptoNJpO53TjjTeycuVKrr76avLy8tizZw/PP/88RUVFrFu3jvDwcJYtW0ZjYyMAFouFxx57jN/85jeYzWaAToHTqlWrcDgc3HrrrbhcLp599ll+9rOfsWXLFhITE3/yOgshRMj5hBBCdNsrr7ziA474N27cuMD23377rQ/wXXfddUH7ufvuu32A75NPPgksO+GEE3zz588P2u7KK6/0RUVFBR7v2bPHB/iefPLJw5ZxyZIlvkO/3ktLS31hYWG+Rx99NGi7LVu2+FQqVaflP7W/qqoqn06n85177rk+wPfpp58e8flXXXWVT6lU+r755ptO67xeb6dlM2fO9M2cObPLfTU1NXVa9o9//MMH+D7//PNOZb7wwguDtr3lllt8gO+7774LLAN8t95662HL3/6a79mzx+fz+XwOh8MXExPju/7664O2279/v89gMHRafrj9dbwe1dXVPsC3ZMmSI57v+vXrfYBv1apVnfY5adIkX0tLS2D5H/7wBx/g+9e//nXEfd54442+qKgon8vlCiybOXOmb9y4cb6TTjrJ99RTTwWWv/baa76UlBTf6aefHvRe/+KLL3yA7/XXXw/a95o1a7pc7vP5fJ9++ulh30Pt7/XIyEhfeXl5YPmGDRt8gO///u//Asvmz5/v02q1nfZxqI7XVgghjhfpUiiEED3wwgsv8OGHH3b6O+mkk4K2+3//7/8BcNdddwUtX7hwIQAffPBB0HK3243NZqOqqooPP/yQTz75hLPOOqvT8ZuamrDZbNTV1eHz+Y5Y1nfeeQev18vcuXOx2WyBv+HDhzNmzBg+/fTTozr3Rx55BIPBQF5e3k9u6/V6KSws5IILLmDy5Mmd1nfV9fFIIiMjA/93uVzYbDZOO+00ADZv3txp+1tvvTXo8e233w78+Lp03FdNTQ1er/eIZfjwww+pr6/niiuuCLqeYWFhTJky5aiv55Ecer6tra3U1NQwevRoYmJiujzfG264gfDw8MDjm2++GZVKFXS+h+7T4XBgs9k4/fTTaWpqoqSkpNM+r776al555ZXA41deeYX58+ejVAbfQrz11lsYDAZ+/vOfB12XSZMmER0d3ePrkpOTw4gRIwKPTz31VKZMmdLpNQQCx+zYbVQIIUJJuhQKIUQPnHrqqV0GEMOGDQvqarh3716USiWjR48O2m748OHExMSwd+/eoOVvvPEGb7zxRuDxKaecwl//+tdOx1myZAlLliwB/N2+fvazn7Fs2TLGjBnTadsdO3bg8/m6XAcE3aD/lD179vDSSy/x4osvdtmlrKPq6moaGhp6LVV+bW0tS5cu5Y033qCqqipond1u77R9x3MeNWoUSqWy0xioFStWsGLFCgAiIiKYMmUKzzzzTJev8Y4dOwD42c9+1mUZ9Xp9t8/npzQ3N/P444/zyiuvUFFRERRcd+d8o6OjSUpKCjrfbdu28cADD/DJJ5/Q0NAQtH1X+5w3bx733nsvX3/9NQkJCaxdu5aXXnqJL7/8Mmi7HTt2YLfbA10PO+r4enVXV+/bsWPHsnr16qBlTqeT+Pj4wOPU1FQWLlzIHXfc0aPjCiFEb5GASwghjoPutuScc8453HPPPQCUl5fz+9//njPPPJONGzcGtUzccMMN/PKXv8Tj8WCxWHjooYfIycnpMmmD1+tFoVDw73//m7CwsE7rfyrZwKF++9vfMmbMGObPn3/M48p6Yu7cufzvf//jnnvu4eSTTyY6Ohqv18ucOXN+smUKDv86XHTRRdx22234fD727NnDww8/zPnnnx8Irg7VfpzXXnuN4cOHd1qvUvXeT+vtt9/OK6+8wp133snUqVMxGAwoFAouv/zybp1vR/X19cycORO9Xs/DDz/MqFGj0Gg0bN68mUWLFnW5z/j4eC644AJeeeUVEhMTmT59eqcKBPBfl4SEBF5//fUuj31oMNQXNBoN7733HuBvuXv55Ze58847SUpKYu7cuX16bCGEOBIJuIQQog+dcMIJeL1eduzYEUgKAHDgwAHq6+s54YQTgrZPSkri7LPPDjzOyMhg2rRpFBYWcsUVVwSWjxkzJrDd7NmzaWpq4re//W1QRsN2o0aNwufzkZ6eztixY3t8LkVFRbzxxhsUFhZ2Gbh1JT4+Hr1e3ymrXE/U1dXx8ccfs3TpUhYvXhxY3lVQdOi6QxNT7Ny5E6/X2ympRUpKStB1j46OZt68eRQVFXXa56hRowBISEgIek5f+Oc//8n8+fN5+umnA8tcLhf19fVdbr9jxw7OPPPMwOPGxkYqKyv5xS9+AcDatWupqanhnXfe4Ywzzghst2fPniOW45prrmHevHkYDIbDZvobNWoUH330EdOnTw+qHDhWXb2+27dv7/QahoWFBb0e5513HrGxsaxZs0YCLiFESMkYLiGE6EPtN7rLli0LWv7MM88A/pvCI2lubgbolEK+o/aWia4CoYsvvpiwsDCWLl3aabyXz+frlFL9cO677z6mT5/OhRde2K3tAZRKJTk5Obz33nts3Lix0/qfGn92qPZz6/icjtf2UC+88ELQ4+eeew6Ac88994jHOtL1nD17Nnq9nscee6zLrJTV1dVH3PfRCAsL63S+zz33XKcU7u2WL18eVKYXX3yRtra2wPl2dQ1bWlr405/+dMRyzJkzB61WS21t7WGDl7lz5+LxeHjkkUc6rWtraztskPhTCgsLqaioCDz++uuv2bBhw0++hu3n2N3KASGE6CvSwiWEEH1owoQJzJ8/n+XLlwe6c3399de8+uqr5OTkBLVGAOzevZu//e1vgH/uqueffx69Xt8pccYPP/zAmjVr8Hq9FBcX8+STT3LKKacEJRdoN2rUKH73u99x//33U1paSk5ODjqdjj179lBQUMANN9zA3Xff/ZPn8t///pd169Yd9TV47LHH+O9//8vMmTO54YYbMJvNVFZW8tZbb/Hll192OyW9Xq/njDPO4A9/+AOtra2MGDGC//73v0dsndmzZw8XXnghc+bMYf369fztb3/jyiuvZMKECUHbWa1W1qxZE+hS+Oijj3LCCScwceLETi0ser2eF198kV//+tdkZ2dz+eWXEx8fj9Vq5YMPPmD69Ok8//zzR32dunL++efz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VnxWICmRXq0nKz6L4upiCksKyTBmSPdCIYQQA578kvWxUNbiNjY28uabb3LzzTdz3nnnsXLlyqD1a9euRaFQUF9fD0BdXR0nnXQSV111FT6fjwULFqBQKLr8W7BgAatWrSIuLg632x2035ycHH79618DsGvXLi666CISExOJjo7mlFNO4aOPPupU1oceeqjTMXJycgLr09LSWLZs2WHPddasWdx5552d9nnyyScHHi9YsCBon4datmwZaWlpQcv++te/Yjab0Wg0ZGZm8qc//emwxwf49a9/TUJCAmq1mpEjR/LUU08F1q1cuZKYmJig7UtLS1EoFHz77beAf863a6+9lvT0dCIjI8nIyODZZ58Nek7H69DxNQT48ssvOf3004mMjCQ1NZW8vDycTudh99HVtel4PX/44QfCw8ODrqfH4+Guu+5ixIgRKJXKwOtWWFh4xOskhNVupcRWQqohtVMGWIVCQYo+BYvNgtVuDVEJhRBCiN4jAVcf6liLq1frCVOGBWpxbU02CksK+6x74erVq8nMzCQjI4Nf/epXvPzyy/h8vi63bWxs5Be/+AUjR47k5ZdfRqFQ8Oyzz1JZWUllZSVz585l7ty5gcfPPvssv/zlL/F4PLz77ruB/VRVVfHBBx9wzTXXBO33448/pqioiDlz5nDBBRdgtQbfSPl8PsaNGxd0vFB6/fXXWbx4MY8++igWi4XHHnuMBx98kFdfffWwz7n88sv56KOP2LFjB48++ij3338/n3/+ebeP6fV6SUlJ4a233qK4uJjFixfzm9/8htWrV3d7H7t27WLOnDlccsklfP/997z55pt8+eWX3Hbbbd3eR1fuueeeTnNnrVixguXLl/PnP/+Z8vJyKisrj+kYYuhwuB242lxow7VdrtdGaHG1uXC4Hce5ZEIIIUTvky6FfehoanHTYtJ6/fgrVqzgV7/6FQBz5szBbrfz2WefMWvWrKDt3G43l156KVFRUbz55puoVP63hcFgwGAwAAQmfR4+fHjQc6+88kpeeeUVfvnLXwLwt7/9DZPJFDjGhAkTmDBhQmD7Rx55hIKCAt59992gIKC1tZXIyMjA/iMjIzu1nB1PS5Ys4emnn+biiy8GID09neLiYl566SXmz5/f5XMOHSdXW1uLSqXC4/F0+5jh4eEsXbo08Dg9PZ3169ezevXqQAAaGRlJc3PzYffx+OOPM2/evEDr1JgxY8jPz2fmzJm8+OKLPZpw+NNPP+V///sf1113HZ9++mlg+bfffsu0adO44IILjnqfYmjTqXVoVBqcrU70an2n9c4WJxqVBp1aF4LSCSGEEL1LWrj6UChrcX/44Qe+/vprrrjiCgBUKhWXXXYZK1as6LTtvHnz+Pjjj5k5cyZqtfqojnP99dfz3//+l4qKCsDfda69KyL4W7juvvtuzGYzMTExREdHY7FYOrVwNTQ0oNV2fZ3aLVq0iOjoaBISEpg1axbr1q0LWv+nP/2J6OjowN9jjz3WaR/vv/8+0dHRDBs2jAkTJvDyyy932sbpdLJr1y6uvfbaoP397ne/Y9euXUcs40033URkZCSTJ0/mwQcf5Mwzzwyss9vtQfsbN25cp+e/8MILTJo0ifj4eKKjo1m+fHnQtRo/fjzvvvtuUBfBQ3333XesXLky6DizZ8/G6/WyZ8+eTtey/e/111/vcn8+n4+FCxeyZMmSQPDdLj09nU2bNlFSUnLEayJERyaDiUxjJmX2sk6t7j6fj/KGcsxGMyaDKUQlFEIIIXqPtHD1oVDW4q5YsYK2tragJBk+nw+1Ws3zzz8fdPO8f/9+3n77ba688kpyc3M58cQTu32ciRMnMmHCBFatWsU555zDtm3b+OCDDwLr7777bj788EOeeuopRo8eTWRkJJdeeiktLS1B++lOQo977rmHBQsW4HQ6efLJJ7ngggvYv38/ERERgD9w/O1vfxvYPj8/v1OXvjPPPJMXX3yR1tZW/t//+39cd911nc63sbERgL/85S9MmTIlaF1YWNgRy/jwww+Tl5fHJ598wkMPPURubi5msz8xik6nY/PmzYFtKyoqglob33jjDe6++26efvpppk6dik6n48knn2TDhg2BbX73u99x7rnnYjAY0Gg0nVrQGhsbufHGG8nLy+tUNpPpx5vX9mvZbtGiRV22xq1atQqn08lNN93Eo48+GrTulltuYePGjYwbNw61Wo1SKfU3onuUCiW5mbmU2csori4mRZ+CNkKLs8VJeUM5xigjOZk5kjBDCCHEoCABVx9qr8UtqiwKysQFP9biZidl93otbltbG6tWreLpp5/mnHPOCVqXk5PDP/7xD2666abAsnfffZeRI0dy/fXXc/XVV/PVV18FuhV2x3XXXceyZcuoqKjg7LPPJjU1NbBu3bp1LFiwgNzcXMAfEJSWlgY93+v1snnzZm699dYjHsdoNDJ69GgA7r//fl5//XWsVmtgmcFgCPwfIDY2ttM+tFptYBuz2cwTTzzBd999F7RNYmIiycnJ7N69m3nz5nXzKvglJCSQkJBAVlYWK1as4IMPPggEXEqlMqh8Ha/xunXrmDZtGrfccktgWccWtYyMDHbt2kVZWRktLS1s2LAh0G0UIDs7m+Li4qDjdOXQawn+YPDQxBsATU1N/Pa3v+X5558nPDy80z60Wi333nsva9as4c0332T06NGMGTPmiMcVop053kzelLxABtcKRwUalYbspGxyMnNkHi4hhBCDhgRcfShUtbjvv/8+dXV1XHvttZ26gV1yySWsWLEiKOBqD0yeeOIJTjrpJJ544gkeeOCBbh/vyiuv5O677+Yvf/kLq1atClo3ZswY3nnnHS644AIUCgUPPvggXu+PSULKysp46KGHqKqq4rLLLjvicdra2nC5XDidTl5++WUMBkNQcNcdXq8Xl8sVaOGqqalh/PjxfPXVV0HbLV26lLy8PAwGA3PmzMHtdrNx40bq6uq46667Ou23vr6ewsJCTjvtNCIiInj//ffZsmULEydO7HbZxowZw6pVq/jPf/5Deno6r732Gt988w3p6elB2ykUikBrVXl5edC6RYsWcdppp3Hbbbdx3XXXodVqKS4u5sMPP+T555/vdlkA/v73vzNp0qTDZnasra3l0ksv5YknnmDOnDlHtW8hwB90ZRgzsNqtONwOdGodJoNJWraEEEIMKvKr1sfaa3EnJk2kprmG7TXbqWmuITspm7wpeX1Si7tixQrOPvvsTsEW+AOujRs38v3333dap9Vqefnll3n00UfZunVrt49nMBi45JJLiI6O7nRz/swzzzBs2LBAcoXZs2eTnZ0dWP/ss8+yc+dO/vvf/wZ1eevKPffcE0h1/sUXX1BQUHDUY87ee+89IiMjiY2N5YEHHuC5557jtNNO67Tdddddx1//+ldeeeUVTjzxRGbOnMnKlSs7BT/tfD4fK1euZOrUqYwfP57ly5fz4osvctZZZ3W7bDfeeCMXX3wxl112GVOmTKGmpiaotas7TjrpJD777DO2b9/O6aefzsSJE1m8eHGP5l9ramri6aef7nKdz+fjV7/6FTNmzODmm28+6n0L0U6pUJIWk8aJiSeS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0UdB+0lLS+ORRx7hiiuuQKvVMmLECF544YWgbbpzPRQKBRdeeGHQ85599lkUCgULFiwILHO73dx9992MGDECrVbLlClTWLt2LQBr16497GvTfr364toLIUQoeKO17HUfwNvoID4qHrVKjVKhRK1SEx8Vj6fR4V8frQ11UYXoVw42DpOa+mOw1U6hgJQU/62m1Rqa8gk/Cbj6UsdqB70ewsJ+rHaw2fzVDl5vrx62traWNWvWcOutt6LVdv5xag9EvvnmGyorK6msrCQlJYVly5YFHl922WUAKJVK8vPz2bZtG6+++iqffPIJ9957b9D+mpqaePTRR1m1ahXr1q2jvr6eyy+/vEdl/+KLL7jqqqu44447KC4u5qWXXmLlypU8+uijR3zenDlzAmWvrKxk2bJlQesbGxv5xS9+wccff0xRURFz5szhggsuwNrhG+jJJ59kwoQJFBUVcd9993HHHXfw4YcfBtZ353pERUWxfv16KioqAsuWL1/OiBEjgra77bbbWL9+PW+88Qbff/89v/zlL5kzZw47duxg2rRpgXN5++23AYLOr11vXnshhAgVqwEscWBqUNCxGkgBpNrBYvRvJ4T4kcPh7zzVxe0e4F/ucvm3E6EjXQr70tFUO/Rin/SdO3fi8/nIzMw84nbx8fGB/4eFhWEwGBg+fHjQNnfeeWfg/2lpafzud7/jpptu4k9/+lNgeWtrK88//zxTpkwB4NVXX8VsNvP1119z6qmnHlXZly5dyn333cf8+fMBGDlyJI888gj33nsvS5YsOezz1Gp1UNkNhuBf5QkTJjBhwoTA40ceeYSCggLeffddbrvttsDy6dOnc9999wEwduxY1q1bxx//+Ed+/vOfd/t6hIeHc8UVV/Dyyy/z4IMP8uWXXxIWFsbkyZMD21itVl555RWsVivJyckA3H333axZs4ZXXnmFxx57LHA+sbGxAJ1eG+jday+EEKHiaHWyfnIiaQ3VxJdW05Cgp0UTQYSrBX1VA42xetZPisfc6gx1UYXoV3Q6/0gVp9Nfn9+R0+lfr9Md/7KJH4W0hevzzz/nggsuIDk5GYVCQWFhYWBda2srixYtCnTfSk5O5qqrrmLfvn1B+6itrWXevHno9XpiYmK49tprg7p4hVSIqh18Pl+v7eujjz7irLPOYsSIEeh0On79619TU1NDU1NTYBuVSsUp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",
|
||
"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=\"green\", 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(\"Новые и старые параметры\")\n",
|
||
"plt.show()"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": ".venv",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.12.5"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|