MII_Salin_Oleg_PIbd-33/lec4.ipynb
2024-11-08 22:37:34 +04:00

2408 lines
234 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

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

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Загрузка набора данных"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"from sklearn import set_config\n",
"\n",
"set_config(transform_output=\"pandas\")\n",
"\n",
"random_state=9\n",
"\n",
"df = pd.read_csv(\"data/Medical_insurance.csv\", index_col=False)\n",
"\n",
"df[\"smoker\"] = df[\"smoker\"].apply(lambda x: 1 if x == \"yes\" else 0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Разделение набора данных на обучающую и тестовые выборки (80/20) для задачи классификации\n",
"\n",
"Целевой признак -- Survived"
]
},
{
"cell_type": "code",
"execution_count": 13,
"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>age</th>\n",
" <th>sex</th>\n",
" <th>bmi</th>\n",
" <th>children</th>\n",
" <th>smoker</th>\n",
" <th>region</th>\n",
" <th>charges</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>671</th>\n",
" <td>29</td>\n",
" <td>female</td>\n",
" <td>31.160</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>northeast</td>\n",
" <td>3943.59540</td>\n",
" </tr>\n",
" <tr>\n",
" <th>808</th>\n",
" <td>18</td>\n",
" <td>male</td>\n",
" <td>30.140</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>southeast</td>\n",
" <td>1131.50660</td>\n",
" </tr>\n",
" <tr>\n",
" <th>795</th>\n",
" <td>27</td>\n",
" <td>male</td>\n",
" <td>28.500</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>northwest</td>\n",
" <td>18310.74200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>576</th>\n",
" <td>22</td>\n",
" <td>male</td>\n",
" <td>26.840</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>southeast</td>\n",
" <td>1664.99960</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1232</th>\n",
" <td>54</td>\n",
" <td>female</td>\n",
" <td>24.605</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>northwest</td>\n",
" <td>12479.70895</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",
" </tr>\n",
" <tr>\n",
" <th>105</th>\n",
" <td>20</td>\n",
" <td>male</td>\n",
" <td>28.025</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>northwest</td>\n",
" <td>17560.37975</td>\n",
" </tr>\n",
" <tr>\n",
" <th>461</th>\n",
" <td>42</td>\n",
" <td>male</td>\n",
" <td>30.000</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>southwest</td>\n",
" <td>22144.03200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2650</th>\n",
" <td>49</td>\n",
" <td>female</td>\n",
" <td>33.345</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>northeast</td>\n",
" <td>10370.91255</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1674</th>\n",
" <td>59</td>\n",
" <td>female</td>\n",
" <td>36.765</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>northeast</td>\n",
" <td>47896.79135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2689</th>\n",
" <td>43</td>\n",
" <td>male</td>\n",
" <td>27.800</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>southwest</td>\n",
" <td>37829.72420</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>2217 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" age sex bmi children smoker region charges\n",
"671 29 female 31.160 0 0 northeast 3943.59540\n",
"808 18 male 30.140 0 0 southeast 1131.50660\n",
"795 27 male 28.500 0 1 northwest 18310.74200\n",
"576 22 male 26.840 0 0 southeast 1664.99960\n",
"1232 54 female 24.605 3 0 northwest 12479.70895\n",
"... ... ... ... ... ... ... ...\n",
"105 20 male 28.025 1 1 northwest 17560.37975\n",
"461 42 male 30.000 0 1 southwest 22144.03200\n",
"2650 49 female 33.345 2 0 northeast 10370.91255\n",
"1674 59 female 36.765 1 1 northeast 47896.79135\n",
"2689 43 male 27.800 0 1 southwest 37829.72420\n",
"\n",
"[2217 rows x 7 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>smoker</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>671</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>808</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>795</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>576</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1232</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>105</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>461</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2650</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1674</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2689</th>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>2217 rows × 1 columns</p>\n",
"</div>"
],
"text/plain": [
" smoker\n",
"671 0\n",
"808 0\n",
"795 1\n",
"576 0\n",
"1232 0\n",
"... ...\n",
"105 1\n",
"461 1\n",
"2650 0\n",
"1674 1\n",
"2689 1\n",
"\n",
"[2217 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>age</th>\n",
" <th>sex</th>\n",
" <th>bmi</th>\n",
" <th>children</th>\n",
" <th>smoker</th>\n",
" <th>region</th>\n",
" <th>charges</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>124</th>\n",
" <td>47</td>\n",
" <td>female</td>\n",
" <td>33.915</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>northwest</td>\n",
" <td>10115.00885</td>\n",
" </tr>\n",
" <tr>\n",
" <th>778</th>\n",
" <td>35</td>\n",
" <td>male</td>\n",
" <td>34.320</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>southeast</td>\n",
" <td>5934.37980</td>\n",
" </tr>\n",
" <tr>\n",
" <th>372</th>\n",
" <td>42</td>\n",
" <td>female</td>\n",
" <td>33.155</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>northeast</td>\n",
" <td>7639.41745</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1969</th>\n",
" <td>32</td>\n",
" <td>female</td>\n",
" <td>23.650</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>southeast</td>\n",
" <td>17626.23951</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2522</th>\n",
" <td>44</td>\n",
" <td>female</td>\n",
" <td>25.000</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>southwest</td>\n",
" <td>7623.51800</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",
" </tr>\n",
" <tr>\n",
" <th>908</th>\n",
" <td>63</td>\n",
" <td>male</td>\n",
" <td>39.800</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>southwest</td>\n",
" <td>15170.06900</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1203</th>\n",
" <td>51</td>\n",
" <td>male</td>\n",
" <td>32.300</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>northeast</td>\n",
" <td>9964.06000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>55</td>\n",
" <td>male</td>\n",
" <td>37.300</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>southwest</td>\n",
" <td>20630.28351</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2669</th>\n",
" <td>18</td>\n",
" <td>male</td>\n",
" <td>30.030</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>southeast</td>\n",
" <td>1720.35370</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1230</th>\n",
" <td>52</td>\n",
" <td>male</td>\n",
" <td>34.485</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>northwest</td>\n",
" <td>60021.39897</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>555 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" age sex bmi children smoker region charges\n",
"124 47 female 33.915 3 0 northwest 10115.00885\n",
"778 35 male 34.320 3 0 southeast 5934.37980\n",
"372 42 female 33.155 1 0 northeast 7639.41745\n",
"1969 32 female 23.650 1 0 southeast 17626.23951\n",
"2522 44 female 25.000 1 0 southwest 7623.51800\n",
"... ... ... ... ... ... ... ...\n",
"908 63 male 39.800 3 0 southwest 15170.06900\n",
"1203 51 male 32.300 1 0 northeast 9964.06000\n",
"45 55 male 37.300 0 0 southwest 20630.28351\n",
"2669 18 male 30.030 1 0 southeast 1720.35370\n",
"1230 52 male 34.485 3 1 northwest 60021.39897\n",
"\n",
"[555 rows x 7 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>smoker</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>124</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>778</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>372</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1969</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2522</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>908</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1203</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2669</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1230</th>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>555 rows × 1 columns</p>\n",
"</div>"
],
"text/plain": [
" smoker\n",
"124 0\n",
"778 0\n",
"372 0\n",
"1969 0\n",
"2522 0\n",
"... ...\n",
"908 0\n",
"1203 0\n",
"45 0\n",
"2669 0\n",
"1230 1\n",
"\n",
"[555 rows x 1 columns]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from utils import split_stratified_into_train_val_test\n",
"X_train, X_val, X_test, y_train, y_val, y_test = split_stratified_into_train_val_test(\n",
" df, stratify_colname=\"smoker\", target_colname=\"smoker\",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",
"\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",
"Трансформер выполняет параллельно для указанного набора колонок.\n",
"\n",
"Документация: \n",
"\n",
"https://scikit-learn.org/1.5/api/sklearn.pipeline.html\n",
"\n",
"https://scikit-learn.org/1.5/modules/generated/sklearn.compose.ColumnTransformer.html#sklearn.compose.ColumnTransformer"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.compose import ColumnTransformer\n",
"from sklearn.discriminant_analysis import StandardScaler\n",
"from sklearn.impute import SimpleImputer\n",
"from sklearn.pipeline import Pipeline\n",
"from sklearn.preprocessing import OneHotEncoder\n",
"\n",
"columns_to_drop = [\"smoker\"]\n",
"num_columns = [\n",
" column\n",
" for column in df.columns\n",
" if df[column].dtype != \"object\"\n",
"]\n",
"cat_columns = [\n",
" column\n",
" for column in df.columns\n",
" if df[column].dtype == \"object\"\n",
"]\n",
"\n",
"num_imputer = SimpleImputer(strategy=\"median\")\n",
"num_scaler = StandardScaler()\n",
"preprocessing_num = Pipeline(\n",
" [\n",
" (\"imputer\", num_imputer),\n",
" (\"scaler\", num_scaler),\n",
" ]\n",
")\n",
"\n",
"cat_imputer = SimpleImputer(strategy=\"constant\", fill_value=\"unknown\")\n",
"cat_encoder = OneHotEncoder(handle_unknown=\"ignore\", sparse_output=False, drop=\"first\")\n",
"preprocessing_cat = Pipeline(\n",
" [\n",
" (\"imputer\", cat_imputer),\n",
" (\"encoder\", cat_encoder),\n",
" ]\n",
")\n",
"\n",
"features_preprocessing = ColumnTransformer(\n",
" verbose_feature_names_out=False,\n",
" transformers=[\n",
" (\"prepocessing_num\", preprocessing_num, num_columns),\n",
" (\"prepocessing_cat\", preprocessing_cat, 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",
"pipeline_end = Pipeline(\n",
" [\n",
" (\"features_preprocessing\", features_preprocessing),\n",
" (\"drop_columns\", drop_columns),\n",
" ]\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Демонстрация работы конвейера для предобработки данных при классификации"
]
},
{
"cell_type": "code",
"execution_count": 24,
"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>age</th>\n",
" <th>bmi</th>\n",
" <th>children</th>\n",
" <th>charges</th>\n",
" <th>sex_male</th>\n",
" <th>region_northwest</th>\n",
" <th>region_southeast</th>\n",
" <th>region_southwest</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>671</th>\n",
" <td>-0.730722</td>\n",
" <td>0.085028</td>\n",
" <td>-0.907368</td>\n",
" <td>-0.769241</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>808</th>\n",
" <td>-1.513302</td>\n",
" <td>-0.081153</td>\n",
" <td>-0.907368</td>\n",
" <td>-0.999824</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>795</th>\n",
" <td>-0.873009</td>\n",
" <td>-0.348348</td>\n",
" <td>-0.907368</td>\n",
" <td>0.408827</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>576</th>\n",
" <td>-1.228727</td>\n",
" <td>-0.618800</td>\n",
" <td>-0.907368</td>\n",
" <td>-0.956079</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1232</th>\n",
" <td>1.047868</td>\n",
" <td>-0.982934</td>\n",
" <td>1.555858</td>\n",
" <td>-0.069302</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.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",
" </tr>\n",
" <tr>\n",
" <th>105</th>\n",
" <td>-1.371015</td>\n",
" <td>-0.425736</td>\n",
" <td>-0.086293</td>\n",
" <td>0.347299</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>461</th>\n",
" <td>0.194145</td>\n",
" <td>-0.103963</td>\n",
" <td>-0.907368</td>\n",
" <td>0.723147</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2650</th>\n",
" <td>0.692150</td>\n",
" <td>0.441016</td>\n",
" <td>0.734783</td>\n",
" <td>-0.242218</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1674</th>\n",
" <td>1.403586</td>\n",
" <td>0.998214</td>\n",
" <td>-0.086293</td>\n",
" <td>2.834804</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2689</th>\n",
" <td>0.265288</td>\n",
" <td>-0.462394</td>\n",
" <td>-0.907368</td>\n",
" <td>2.009332</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>2217 rows × 8 columns</p>\n",
"</div>"
],
"text/plain": [
" age bmi children charges sex_male region_northwest \\\n",
"671 -0.730722 0.085028 -0.907368 -0.769241 0.0 0.0 \n",
"808 -1.513302 -0.081153 -0.907368 -0.999824 1.0 0.0 \n",
"795 -0.873009 -0.348348 -0.907368 0.408827 1.0 1.0 \n",
"576 -1.228727 -0.618800 -0.907368 -0.956079 1.0 0.0 \n",
"1232 1.047868 -0.982934 1.555858 -0.069302 0.0 1.0 \n",
"... ... ... ... ... ... ... \n",
"105 -1.371015 -0.425736 -0.086293 0.347299 1.0 1.0 \n",
"461 0.194145 -0.103963 -0.907368 0.723147 1.0 0.0 \n",
"2650 0.692150 0.441016 0.734783 -0.242218 0.0 0.0 \n",
"1674 1.403586 0.998214 -0.086293 2.834804 0.0 0.0 \n",
"2689 0.265288 -0.462394 -0.907368 2.009332 1.0 0.0 \n",
"\n",
" region_southeast region_southwest \n",
"671 0.0 0.0 \n",
"808 1.0 0.0 \n",
"795 0.0 0.0 \n",
"576 1.0 0.0 \n",
"1232 0.0 0.0 \n",
"... ... ... \n",
"105 0.0 0.0 \n",
"461 0.0 1.0 \n",
"2650 0.0 0.0 \n",
"1674 0.0 0.0 \n",
"2689 0.0 1.0 \n",
"\n",
"[2217 rows x 8 columns]"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"preprocessing_result = pipeline_end.fit_transform(X_train)\n",
"preprocessed_df = pd.DataFrame(\n",
" preprocessing_result,\n",
" columns=pipeline_end.get_feature_names_out(),\n",
")\n",
"\n",
"preprocessed_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Формирование набора моделей для классификации\n",
"\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 -- многослойный персептрон (нейронная сеть)\n",
"\n",
"Документация: https://scikit-learn.org/1.5/supervised_learning.html"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"from sklearn import ensemble, linear_model, naive_bayes, neighbors, neural_network, tree\n",
"\n",
"class_models = {\n",
" \"logistic\": {\"model\": linear_model.LogisticRegression()},\n",
" # \"ridge\": {\"model\": linear_model.RidgeClassifierCV(cv=5, class_weight=\"balanced\")},\n",
" \"ridge\": {\"model\": linear_model.LogisticRegression(penalty=\"l2\", class_weight=\"balanced\")},\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)\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": 26,
"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 # type: ignore\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": [
"#### Сводная таблица оценок качества для использованных моделей классификации\n",
"\n",
"Документация: https://scikit-learn.org/1.5/modules/model_evaluation.html"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Матрица неточностей"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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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",
"_, ax = plt.subplots(int(len(class_models) / 2), 2, figsize=(12, 10), sharex=False, sharey=False)\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=[\"non smoker\", \"smoker\"]\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": [
"Точность, полнота, верность (аккуратность), F-мера"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\">\n",
"#T_98a81_row0_col0, #T_98a81_row0_col1, #T_98a81_row0_col2, #T_98a81_row0_col3, #T_98a81_row2_col2, #T_98a81_row3_col2, #T_98a81_row3_col3 {\n",
" background-color: #a8db34;\n",
" color: #000000;\n",
"}\n",
"#T_98a81_row0_col4, #T_98a81_row0_col5, #T_98a81_row0_col6, #T_98a81_row0_col7 {\n",
" background-color: #da5a6a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row1_col0 {\n",
" background-color: #86d549;\n",
" color: #000000;\n",
"}\n",
"#T_98a81_row1_col1 {\n",
" background-color: #7ad151;\n",
" color: #000000;\n",
"}\n",
"#T_98a81_row1_col2 {\n",
" background-color: #a5db36;\n",
" color: #000000;\n",
"}\n",
"#T_98a81_row1_col3 {\n",
" background-color: #98d83e;\n",
" color: #000000;\n",
"}\n",
"#T_98a81_row1_col4 {\n",
" background-color: #d45270;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row1_col5, #T_98a81_row2_col5 {\n",
" background-color: #d04d73;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row1_col6 {\n",
" background-color: #d5546e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row1_col7, #T_98a81_row2_col7 {\n",
" background-color: #d24f71;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row2_col0 {\n",
" background-color: #a2da37;\n",
" color: #000000;\n",
"}\n",
"#T_98a81_row2_col1 {\n",
" background-color: #6ccd5a;\n",
" color: #000000;\n",
"}\n",
"#T_98a81_row2_col3 {\n",
" background-color: #9dd93b;\n",
" color: #000000;\n",
"}\n",
"#T_98a81_row2_col4, #T_98a81_row2_col6 {\n",
" background-color: #d9586a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row3_col0 {\n",
" background-color: #1e9b8a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row3_col1 {\n",
" background-color: #23888e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row3_col4 {\n",
" background-color: #b42e8d;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row3_col5, #T_98a81_row5_col6 {\n",
" background-color: #b52f8c;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row3_col6 {\n",
" background-color: #bf3984;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row3_col7, #T_98a81_row4_col6 {\n",
" background-color: #c13b82;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row4_col0 {\n",
" background-color: #35b779;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row4_col1 {\n",
" background-color: #1f9f88;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row4_col2 {\n",
" background-color: #81d34d;\n",
" color: #000000;\n",
"}\n",
"#T_98a81_row4_col3 {\n",
" background-color: #69cd5b;\n",
" color: #000000;\n",
"}\n",
"#T_98a81_row4_col4 {\n",
" background-color: #b83289;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row4_col5, #T_98a81_row5_col7 {\n",
" background-color: #aa2395;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row4_col7 {\n",
" background-color: #b6308b;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row5_col0 {\n",
" background-color: #21a585;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row5_col1 {\n",
" background-color: #21918c;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row5_col2 {\n",
" background-color: #73d056;\n",
" color: #000000;\n",
"}\n",
"#T_98a81_row5_col3 {\n",
" background-color: #54c568;\n",
" color: #000000;\n",
"}\n",
"#T_98a81_row5_col4 {\n",
" background-color: #a82296;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row5_col5 {\n",
" background-color: #99159f;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row6_col0, #T_98a81_row6_col1, #T_98a81_row7_col2, #T_98a81_row7_col3 {\n",
" background-color: #26818e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row6_col2 {\n",
" background-color: #22a785;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row6_col3 {\n",
" background-color: #23a983;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row6_col4 {\n",
" background-color: #5c01a6;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row6_col5 {\n",
" background-color: #6c00a8;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row6_col6 {\n",
" background-color: #7501a8;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row6_col7 {\n",
" background-color: #8104a7;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row7_col0 {\n",
" background-color: #3bbb75;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row7_col1 {\n",
" background-color: #34b679;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_98a81_row7_col4, #T_98a81_row7_col5, #T_98a81_row7_col6, #T_98a81_row7_col7 {\n",
" background-color: #4e02a2;\n",
" color: #f1f1f1;\n",
"}\n",
"</style>\n",
"<table id=\"T_98a81\">\n",
" <thead>\n",
" <tr>\n",
" <th class=\"blank level0\" >&nbsp;</th>\n",
" <th id=\"T_98a81_level0_col0\" class=\"col_heading level0 col0\" >Precision_train</th>\n",
" <th id=\"T_98a81_level0_col1\" class=\"col_heading level0 col1\" >Precision_test</th>\n",
" <th id=\"T_98a81_level0_col2\" class=\"col_heading level0 col2\" >Recall_train</th>\n",
" <th id=\"T_98a81_level0_col3\" class=\"col_heading level0 col3\" >Recall_test</th>\n",
" <th id=\"T_98a81_level0_col4\" class=\"col_heading level0 col4\" >Accuracy_train</th>\n",
" <th id=\"T_98a81_level0_col5\" class=\"col_heading level0 col5\" >Accuracy_test</th>\n",
" <th id=\"T_98a81_level0_col6\" class=\"col_heading level0 col6\" >F1_train</th>\n",
" <th id=\"T_98a81_level0_col7\" class=\"col_heading level0 col7\" >F1_test</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th id=\"T_98a81_level0_row0\" class=\"row_heading level0 row0\" >gradient_boosting</th>\n",
" <td id=\"T_98a81_row0_col0\" class=\"data row0 col0\" >1.000000</td>\n",
" <td id=\"T_98a81_row0_col1\" class=\"data row0 col1\" >0.982609</td>\n",
" <td id=\"T_98a81_row0_col2\" class=\"data row0 col2\" >1.000000</td>\n",
" <td id=\"T_98a81_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
" <td id=\"T_98a81_row0_col4\" class=\"data row0 col4\" >1.000000</td>\n",
" <td id=\"T_98a81_row0_col5\" class=\"data row0 col5\" >0.996396</td>\n",
" <td id=\"T_98a81_row0_col6\" class=\"data row0 col6\" >1.000000</td>\n",
" <td id=\"T_98a81_row0_col7\" class=\"data row0 col7\" >0.991228</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_98a81_level0_row1\" class=\"row_heading level0 row1\" >decision_tree</th>\n",
" <td id=\"T_98a81_row1_col0\" class=\"data row1 col0\" >0.976035</td>\n",
" <td id=\"T_98a81_row1_col1\" class=\"data row1 col1\" >0.956522</td>\n",
" <td id=\"T_98a81_row1_col2\" class=\"data row1 col2\" >0.993348</td>\n",
" <td id=\"T_98a81_row1_col3\" class=\"data row1 col3\" >0.973451</td>\n",
" <td id=\"T_98a81_row1_col4\" class=\"data row1 col4\" >0.993685</td>\n",
" <td id=\"T_98a81_row1_col5\" class=\"data row1 col5\" >0.985586</td>\n",
" <td id=\"T_98a81_row1_col6\" class=\"data row1 col6\" >0.984615</td>\n",
" <td id=\"T_98a81_row1_col7\" class=\"data row1 col7\" >0.964912</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_98a81_level0_row2\" class=\"row_heading level0 row2\" >random_forest</th>\n",
" <td id=\"T_98a81_row2_col0\" class=\"data row2 col0\" >0.995585</td>\n",
" <td id=\"T_98a81_row2_col1\" class=\"data row2 col1\" >0.948718</td>\n",
" <td id=\"T_98a81_row2_col2\" class=\"data row2 col2\" >1.000000</td>\n",
" <td id=\"T_98a81_row2_col3\" class=\"data row2 col3\" >0.982301</td>\n",
" <td id=\"T_98a81_row2_col4\" class=\"data row2 col4\" >0.999098</td>\n",
" <td id=\"T_98a81_row2_col5\" class=\"data row2 col5\" >0.985586</td>\n",
" <td id=\"T_98a81_row2_col6\" class=\"data row2 col6\" >0.997788</td>\n",
" <td id=\"T_98a81_row2_col7\" class=\"data row2 col7\" >0.965217</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_98a81_level0_row3\" class=\"row_heading level0 row3\" >ridge</th>\n",
" <td id=\"T_98a81_row3_col0\" class=\"data row3 col0\" >0.846154</td>\n",
" <td id=\"T_98a81_row3_col1\" class=\"data row3 col1\" >0.837037</td>\n",
" <td id=\"T_98a81_row3_col2\" class=\"data row3 col2\" >1.000000</td>\n",
" <td id=\"T_98a81_row3_col3\" class=\"data row3 col3\" >1.000000</td>\n",
" <td id=\"T_98a81_row3_col4\" class=\"data row3 col4\" >0.963013</td>\n",
" <td id=\"T_98a81_row3_col5\" class=\"data row3 col5\" >0.960360</td>\n",
" <td id=\"T_98a81_row3_col6\" class=\"data row3 col6\" >0.916667</td>\n",
" <td id=\"T_98a81_row3_col7\" class=\"data row3 col7\" >0.911290</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_98a81_level0_row4\" class=\"row_heading level0 row4\" >knn</th>\n",
" <td id=\"T_98a81_row4_col0\" class=\"data row4 col0\" >0.903846</td>\n",
" <td id=\"T_98a81_row4_col1\" class=\"data row4 col1\" >0.870690</td>\n",
" <td id=\"T_98a81_row4_col2\" class=\"data row4 col2\" >0.937916</td>\n",
" <td id=\"T_98a81_row4_col3\" class=\"data row4 col3\" >0.893805</td>\n",
" <td id=\"T_98a81_row4_col4\" class=\"data row4 col4\" >0.967073</td>\n",
" <td id=\"T_98a81_row4_col5\" class=\"data row4 col5\" >0.951351</td>\n",
" <td id=\"T_98a81_row4_col6\" class=\"data row4 col6\" >0.920566</td>\n",
" <td id=\"T_98a81_row4_col7\" class=\"data row4 col7\" >0.882096</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_98a81_level0_row5\" class=\"row_heading level0 row5\" >logistic</th>\n",
" <td id=\"T_98a81_row5_col0\" class=\"data row5 col0\" >0.867368</td>\n",
" <td id=\"T_98a81_row5_col1\" class=\"data row5 col1\" >0.849558</td>\n",
" <td id=\"T_98a81_row5_col2\" class=\"data row5 col2\" >0.913525</td>\n",
" <td id=\"T_98a81_row5_col3\" class=\"data row5 col3\" >0.849558</td>\n",
" <td id=\"T_98a81_row5_col4\" class=\"data row5 col4\" >0.953992</td>\n",
" <td id=\"T_98a81_row5_col5\" class=\"data row5 col5\" >0.938739</td>\n",
" <td id=\"T_98a81_row5_col6\" class=\"data row5 col6\" >0.889849</td>\n",
" <td id=\"T_98a81_row5_col7\" class=\"data row5 col7\" >0.849558</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_98a81_level0_row6\" class=\"row_heading level0 row6\" >naive_bayes</th>\n",
" <td id=\"T_98a81_row6_col0\" class=\"data row6 col0\" >0.794045</td>\n",
" <td id=\"T_98a81_row6_col1\" class=\"data row6 col1\" >0.824742</td>\n",
" <td id=\"T_98a81_row6_col2\" class=\"data row6 col2\" >0.709534</td>\n",
" <td id=\"T_98a81_row6_col3\" class=\"data row6 col3\" >0.707965</td>\n",
" <td id=\"T_98a81_row6_col4\" class=\"data row6 col4\" >0.903473</td>\n",
" <td id=\"T_98a81_row6_col5\" class=\"data row6 col5\" >0.909910</td>\n",
" <td id=\"T_98a81_row6_col6\" class=\"data row6 col6\" >0.749415</td>\n",
" <td id=\"T_98a81_row6_col7\" class=\"data row6 col7\" >0.761905</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_98a81_level0_row7\" class=\"row_heading level0 row7\" >mlp</th>\n",
" <td id=\"T_98a81_row7_col0\" class=\"data row7 col0\" >0.910112</td>\n",
" <td id=\"T_98a81_row7_col1\" class=\"data row7 col1\" >0.907692</td>\n",
" <td id=\"T_98a81_row7_col2\" class=\"data row7 col2\" >0.538803</td>\n",
" <td id=\"T_98a81_row7_col3\" class=\"data row7 col3\" >0.522124</td>\n",
" <td id=\"T_98a81_row7_col4\" class=\"data row7 col4\" >0.895354</td>\n",
" <td id=\"T_98a81_row7_col5\" class=\"data row7 col5\" >0.891892</td>\n",
" <td id=\"T_98a81_row7_col6\" class=\"data row7 col6\" >0.676880</td>\n",
" <td id=\"T_98a81_row7_col7\" class=\"data row7 col7\" >0.662921</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x2464b71fd10>"
]
},
"execution_count": 30,
"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": [
"ROC-кривая, каппа Коэна, коэффициент корреляции Мэтьюса"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\">\n",
"#T_fd909_row0_col0, #T_fd909_row2_col0 {\n",
" background-color: #8bd646;\n",
" color: #000000;\n",
"}\n",
"#T_fd909_row0_col1, #T_fd909_row2_col1 {\n",
" background-color: #90d743;\n",
" color: #000000;\n",
"}\n",
"#T_fd909_row0_col2, #T_fd909_row1_col3, #T_fd909_row1_col4 {\n",
" background-color: #da5a6a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row0_col3, #T_fd909_row2_col3 {\n",
" background-color: #d24f71;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row0_col4, #T_fd909_row2_col4 {\n",
" background-color: #d14e72;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row1_col0, #T_fd909_row1_col1 {\n",
" background-color: #a8db34;\n",
" color: #000000;\n",
"}\n",
"#T_fd909_row1_col2 {\n",
" background-color: #d7566c;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row2_col2 {\n",
" background-color: #cf4c74;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row3_col0, #T_fd909_row5_col1 {\n",
" background-color: #3bbb75;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row3_col1 {\n",
" background-color: #50c46a;\n",
" color: #000000;\n",
"}\n",
"#T_fd909_row3_col2 {\n",
" background-color: #bc3587;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row3_col3 {\n",
" background-color: #b32c8e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row3_col4 {\n",
" background-color: #b02991;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row4_col0 {\n",
" background-color: #4ec36b;\n",
" color: #000000;\n",
"}\n",
"#T_fd909_row4_col1 {\n",
" background-color: #65cb5e;\n",
" color: #000000;\n",
"}\n",
"#T_fd909_row4_col2 {\n",
" background-color: #99159f;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row4_col3 {\n",
" background-color: #be3885;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row4_col4 {\n",
" background-color: #bd3786;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row5_col0 {\n",
" background-color: #29af7f;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row5_col2 {\n",
" background-color: #9613a1;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row5_col3 {\n",
" background-color: #a62098;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row5_col4 {\n",
" background-color: #a01a9c;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row6_col0 {\n",
" background-color: #20928c;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row6_col1 {\n",
" background-color: #1fa088;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row6_col2 {\n",
" background-color: #7401a8;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row6_col3 {\n",
" background-color: #7d03a8;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row6_col4 {\n",
" background-color: #7201a8;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row7_col0, #T_fd909_row7_col1 {\n",
" background-color: #26818e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_fd909_row7_col2, #T_fd909_row7_col3, #T_fd909_row7_col4 {\n",
" background-color: #4e02a2;\n",
" color: #f1f1f1;\n",
"}\n",
"</style>\n",
"<table id=\"T_fd909\">\n",
" <thead>\n",
" <tr>\n",
" <th class=\"blank level0\" >&nbsp;</th>\n",
" <th id=\"T_fd909_level0_col0\" class=\"col_heading level0 col0\" >Accuracy_test</th>\n",
" <th id=\"T_fd909_level0_col1\" class=\"col_heading level0 col1\" >F1_test</th>\n",
" <th id=\"T_fd909_level0_col2\" class=\"col_heading level0 col2\" >ROC_AUC_test</th>\n",
" <th id=\"T_fd909_level0_col3\" class=\"col_heading level0 col3\" >Cohen_kappa_test</th>\n",
" <th id=\"T_fd909_level0_col4\" class=\"col_heading level0 col4\" >MCC_test</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th id=\"T_fd909_level0_row0\" class=\"row_heading level0 row0\" >random_forest</th>\n",
" <td id=\"T_fd909_row0_col0\" class=\"data row0 col0\" >0.985586</td>\n",
" <td id=\"T_fd909_row0_col1\" class=\"data row0 col1\" >0.965217</td>\n",
" <td id=\"T_fd909_row0_col2\" class=\"data row0 col2\" >0.999039</td>\n",
" <td id=\"T_fd909_row0_col3\" class=\"data row0 col3\" >0.956130</td>\n",
" <td id=\"T_fd909_row0_col4\" class=\"data row0 col4\" >0.956360</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_fd909_level0_row1\" class=\"row_heading level0 row1\" >gradient_boosting</th>\n",
" <td id=\"T_fd909_row1_col0\" class=\"data row1 col0\" >0.996396</td>\n",
" <td id=\"T_fd909_row1_col1\" class=\"data row1 col1\" >0.991228</td>\n",
" <td id=\"T_fd909_row1_col2\" class=\"data row1 col2\" >0.998118</td>\n",
" <td id=\"T_fd909_row1_col3\" class=\"data row1 col3\" >0.988961</td>\n",
" <td id=\"T_fd909_row1_col4\" class=\"data row1 col4\" >0.989021</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_fd909_level0_row2\" class=\"row_heading level0 row2\" >decision_tree</th>\n",
" <td id=\"T_fd909_row2_col0\" class=\"data row2 col0\" >0.985586</td>\n",
" <td id=\"T_fd909_row2_col1\" class=\"data row2 col1\" >0.964912</td>\n",
" <td id=\"T_fd909_row2_col2\" class=\"data row2 col2\" >0.995745</td>\n",
" <td id=\"T_fd909_row2_col3\" class=\"data row2 col3\" >0.955843</td>\n",
" <td id=\"T_fd909_row2_col4\" class=\"data row2 col4\" >0.955901</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_fd909_level0_row3\" class=\"row_heading level0 row3\" >knn</th>\n",
" <td id=\"T_fd909_row3_col0\" class=\"data row3 col0\" >0.951351</td>\n",
" <td id=\"T_fd909_row3_col1\" class=\"data row3 col1\" >0.882096</td>\n",
" <td id=\"T_fd909_row3_col2\" class=\"data row3 col2\" >0.990049</td>\n",
" <td id=\"T_fd909_row3_col3\" class=\"data row3 col3\" >0.851456</td>\n",
" <td id=\"T_fd909_row3_col4\" class=\"data row3 col4\" >0.851572</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_fd909_level0_row4\" class=\"row_heading level0 row4\" >ridge</th>\n",
" <td id=\"T_fd909_row4_col0\" class=\"data row4 col0\" >0.960360</td>\n",
" <td id=\"T_fd909_row4_col1\" class=\"data row4 col1\" >0.911290</td>\n",
" <td id=\"T_fd909_row4_col2\" class=\"data row4 col2\" >0.982001</td>\n",
" <td id=\"T_fd909_row4_col3\" class=\"data row4 col3\" >0.886026</td>\n",
" <td id=\"T_fd909_row4_col4\" class=\"data row4 col4\" >0.891838</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_fd909_level0_row5\" class=\"row_heading level0 row5\" >logistic</th>\n",
" <td id=\"T_fd909_row5_col0\" class=\"data row5 col0\" >0.938739</td>\n",
" <td id=\"T_fd909_row5_col1\" class=\"data row5 col1\" >0.849558</td>\n",
" <td id=\"T_fd909_row5_col2\" class=\"data row5 col2\" >0.981520</td>\n",
" <td id=\"T_fd909_row5_col3\" class=\"data row5 col3\" >0.811096</td>\n",
" <td id=\"T_fd909_row5_col4\" class=\"data row5 col4\" >0.811096</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_fd909_level0_row6\" class=\"row_heading level0 row6\" >naive_bayes</th>\n",
" <td id=\"T_fd909_row6_col0\" class=\"data row6 col0\" >0.909910</td>\n",
" <td id=\"T_fd909_row6_col1\" class=\"data row6 col1\" >0.761905</td>\n",
" <td id=\"T_fd909_row6_col2\" class=\"data row6 col2\" >0.974813</td>\n",
" <td id=\"T_fd909_row6_col3\" class=\"data row6 col3\" >0.706746</td>\n",
" <td id=\"T_fd909_row6_col4\" class=\"data row6 col4\" >0.709879</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_fd909_level0_row7\" class=\"row_heading level0 row7\" >mlp</th>\n",
" <td id=\"T_fd909_row7_col0\" class=\"data row7 col0\" >0.891892</td>\n",
" <td id=\"T_fd909_row7_col1\" class=\"data row7 col1\" >0.662921</td>\n",
" <td id=\"T_fd909_row7_col2\" class=\"data row7 col2\" >0.968086</td>\n",
" <td id=\"T_fd909_row7_col3\" class=\"data row7 col3\" >0.604043</td>\n",
" <td id=\"T_fd909_row7_col4\" class=\"data row7 col4\" >0.636838</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x24665055160>"
]
},
"execution_count": 31,
"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": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'gradient_boosting'"
]
},
"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": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Error items count: 2'"
]
},
"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>age</th>\n",
" <th>Predicted</th>\n",
" <th>sex</th>\n",
" <th>bmi</th>\n",
" <th>children</th>\n",
" <th>smoker</th>\n",
" <th>region</th>\n",
" <th>charges</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>583</th>\n",
" <td>32</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>23.65</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>southeast</td>\n",
" <td>17626.23951</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1969</th>\n",
" <td>32</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>23.65</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>southeast</td>\n",
" <td>17626.23951</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age Predicted sex bmi children smoker region charges\n",
"583 32 1 female 23.65 1 0 southeast 17626.23951\n",
"1969 32 1 female 23.65 1 0 southeast 17626.23951"
]
},
"execution_count": 34,
"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[\"smoker\"] != 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": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"age 32\n",
"sex female\n",
"bmi 23.65\n",
"children 1\n",
"smoker 0\n",
"region southeast\n",
"charges 17626.23951\n",
"Name: 1969, 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>age</th>\n",
" <th>sex</th>\n",
" <th>bmi</th>\n",
" <th>children</th>\n",
" <th>smoker</th>\n",
" <th>region</th>\n",
" <th>charges</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1969</th>\n",
" <td>32</td>\n",
" <td>female</td>\n",
" <td>23.65</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>southeast</td>\n",
" <td>17626.23951</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age sex bmi children smoker region charges\n",
"1969 32 female 23.65 1 0 southeast 17626.23951"
]
},
"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>age</th>\n",
" <th>bmi</th>\n",
" <th>children</th>\n",
" <th>charges</th>\n",
" <th>sex_male</th>\n",
" <th>region_northwest</th>\n",
" <th>region_southeast</th>\n",
" <th>region_southwest</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1969</th>\n",
" <td>-0.517291</td>\n",
" <td>-1.138526</td>\n",
" <td>-0.086293</td>\n",
" <td>0.3527</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age bmi children charges sex_male region_northwest \\\n",
"1969 -0.517291 -1.138526 -0.086293 0.3527 0.0 0.0 \n",
"\n",
" region_southeast region_southwest \n",
"1969 1.0 0.0 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'predicted: 1 (proba: [0.01087081 0.98912919])'"
]
},
"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 = 1969\n",
"print(X_test.loc[example_id, :])\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": [
"#### Подбор гиперпараметров методом поиска по сетке\n",
"\n",
"https://www.kaggle.com/code/sociopath00/random-forest-using-gridsearchcv\n",
"\n",
"https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\frenk\\OneDrive\\Рабочий стол\\MII_Salin_Oleg_PIbd-33\\.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': 'entropy',\n",
" 'model__max_depth': 10,\n",
" 'model__max_features': 'log2',\n",
" 'model__n_estimators': 250}"
]
},
"execution_count": 47,
"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, 20, 30, 40, 50, 100, 150, 200, 250, 500],\n",
" \"model__max_features\": [\"sqrt\", \"log2\", 2],\n",
" \"model__max_depth\": [2, 3, 4, 5, 6, 7, 8, 9 ,10],\n",
" \"model__criterion\": [\"gini\", \"entropy\", \"log_loss\"],\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": 48,
"metadata": {},
"outputs": [],
"source": [
"optimized_model = ensemble.RandomForestClassifier(\n",
" random_state=random_state,\n",
" criterion=\"gini\",\n",
" max_depth=7,\n",
" max_features=\"sqrt\",\n",
" n_estimators=30,\n",
")\n",
"\n",
"result = {}\n",
"\n",
"result[\"pipeline\"] = Pipeline([(\"pipeline\", pipeline_end), (\"model\", optimized_model)]).fit(X_train, y_train.values.ravel())\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",
"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": 49,
"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": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\">\n",
"#T_b2ee5_row0_col0, #T_b2ee5_row0_col1, #T_b2ee5_row0_col2, #T_b2ee5_row0_col3 {\n",
" background-color: #a8db34;\n",
" color: #000000;\n",
"}\n",
"#T_b2ee5_row0_col4, #T_b2ee5_row0_col5, #T_b2ee5_row0_col6, #T_b2ee5_row0_col7 {\n",
" background-color: #da5a6a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_b2ee5_row1_col0, #T_b2ee5_row1_col1, #T_b2ee5_row1_col2, #T_b2ee5_row1_col3 {\n",
" background-color: #26818e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_b2ee5_row1_col4, #T_b2ee5_row1_col5, #T_b2ee5_row1_col6, #T_b2ee5_row1_col7 {\n",
" background-color: #4e02a2;\n",
" color: #f1f1f1;\n",
"}\n",
"</style>\n",
"<table id=\"T_b2ee5\">\n",
" <thead>\n",
" <tr>\n",
" <th class=\"blank level0\" >&nbsp;</th>\n",
" <th id=\"T_b2ee5_level0_col0\" class=\"col_heading level0 col0\" >Precision_train</th>\n",
" <th id=\"T_b2ee5_level0_col1\" class=\"col_heading level0 col1\" >Precision_test</th>\n",
" <th id=\"T_b2ee5_level0_col2\" class=\"col_heading level0 col2\" >Recall_train</th>\n",
" <th id=\"T_b2ee5_level0_col3\" class=\"col_heading level0 col3\" >Recall_test</th>\n",
" <th id=\"T_b2ee5_level0_col4\" class=\"col_heading level0 col4\" >Accuracy_train</th>\n",
" <th id=\"T_b2ee5_level0_col5\" class=\"col_heading level0 col5\" >Accuracy_test</th>\n",
" <th id=\"T_b2ee5_level0_col6\" class=\"col_heading level0 col6\" >F1_train</th>\n",
" <th id=\"T_b2ee5_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\" >&nbsp;</th>\n",
" <th class=\"blank col1\" >&nbsp;</th>\n",
" <th class=\"blank col2\" >&nbsp;</th>\n",
" <th class=\"blank col3\" >&nbsp;</th>\n",
" <th class=\"blank col4\" >&nbsp;</th>\n",
" <th class=\"blank col5\" >&nbsp;</th>\n",
" <th class=\"blank col6\" >&nbsp;</th>\n",
" <th class=\"blank col7\" >&nbsp;</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th id=\"T_b2ee5_level0_row0\" class=\"row_heading level0 row0\" >Old</th>\n",
" <td id=\"T_b2ee5_row0_col0\" class=\"data row0 col0\" >0.995585</td>\n",
" <td id=\"T_b2ee5_row0_col1\" class=\"data row0 col1\" >0.948718</td>\n",
" <td id=\"T_b2ee5_row0_col2\" class=\"data row0 col2\" >1.000000</td>\n",
" <td id=\"T_b2ee5_row0_col3\" class=\"data row0 col3\" >0.982301</td>\n",
" <td id=\"T_b2ee5_row0_col4\" class=\"data row0 col4\" >0.999098</td>\n",
" <td id=\"T_b2ee5_row0_col5\" class=\"data row0 col5\" >0.985586</td>\n",
" <td id=\"T_b2ee5_row0_col6\" class=\"data row0 col6\" >0.997788</td>\n",
" <td id=\"T_b2ee5_row0_col7\" class=\"data row0 col7\" >0.965217</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_b2ee5_level0_row1\" class=\"row_heading level0 row1\" >New</th>\n",
" <td id=\"T_b2ee5_row1_col0\" class=\"data row1 col0\" >0.971800</td>\n",
" <td id=\"T_b2ee5_row1_col1\" class=\"data row1 col1\" >0.923077</td>\n",
" <td id=\"T_b2ee5_row1_col2\" class=\"data row1 col2\" >0.993348</td>\n",
" <td id=\"T_b2ee5_row1_col3\" class=\"data row1 col3\" >0.955752</td>\n",
" <td id=\"T_b2ee5_row1_col4\" class=\"data row1 col4\" >0.992783</td>\n",
" <td id=\"T_b2ee5_row1_col5\" class=\"data row1 col5\" >0.974775</td>\n",
" <td id=\"T_b2ee5_row1_col6\" class=\"data row1 col6\" >0.982456</td>\n",
" <td id=\"T_b2ee5_row1_col7\" class=\"data row1 col7\" >0.939130</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x24665e4e7b0>"
]
},
"execution_count": 50,
"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": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\">\n",
"#T_79612_row0_col0, #T_79612_row0_col1 {\n",
" background-color: #a8db34;\n",
" color: #000000;\n",
"}\n",
"#T_79612_row0_col2, #T_79612_row0_col3, #T_79612_row0_col4 {\n",
" background-color: #da5a6a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_79612_row1_col0, #T_79612_row1_col1 {\n",
" background-color: #26818e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_79612_row1_col2, #T_79612_row1_col3, #T_79612_row1_col4 {\n",
" background-color: #4e02a2;\n",
" color: #f1f1f1;\n",
"}\n",
"</style>\n",
"<table id=\"T_79612\">\n",
" <thead>\n",
" <tr>\n",
" <th class=\"blank level0\" >&nbsp;</th>\n",
" <th id=\"T_79612_level0_col0\" class=\"col_heading level0 col0\" >Accuracy_test</th>\n",
" <th id=\"T_79612_level0_col1\" class=\"col_heading level0 col1\" >F1_test</th>\n",
" <th id=\"T_79612_level0_col2\" class=\"col_heading level0 col2\" >ROC_AUC_test</th>\n",
" <th id=\"T_79612_level0_col3\" class=\"col_heading level0 col3\" >Cohen_kappa_test</th>\n",
" <th id=\"T_79612_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\" >&nbsp;</th>\n",
" <th class=\"blank col1\" >&nbsp;</th>\n",
" <th class=\"blank col2\" >&nbsp;</th>\n",
" <th class=\"blank col3\" >&nbsp;</th>\n",
" <th class=\"blank col4\" >&nbsp;</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th id=\"T_79612_level0_row0\" class=\"row_heading level0 row0\" >Old</th>\n",
" <td id=\"T_79612_row0_col0\" class=\"data row0 col0\" >0.985586</td>\n",
" <td id=\"T_79612_row0_col1\" class=\"data row0 col1\" >0.965217</td>\n",
" <td id=\"T_79612_row0_col2\" class=\"data row0 col2\" >0.999039</td>\n",
" <td id=\"T_79612_row0_col3\" class=\"data row0 col3\" >0.956130</td>\n",
" <td id=\"T_79612_row0_col4\" class=\"data row0 col4\" >0.956360</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_79612_level0_row1\" class=\"row_heading level0 row1\" >New</th>\n",
" <td id=\"T_79612_row1_col0\" class=\"data row1 col0\" >0.974775</td>\n",
" <td id=\"T_79612_row1_col1\" class=\"data row1 col1\" >0.939130</td>\n",
" <td id=\"T_79612_row1_col2\" class=\"data row1 col2\" >0.996276</td>\n",
" <td id=\"T_79612_row1_col3\" class=\"data row1 col3\" >0.923227</td>\n",
" <td id=\"T_79612_row1_col4\" class=\"data row1 col4\" >0.923450</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x24665e4c980>"
]
},
"execution_count": 51,
"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": 52,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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i6bF5fZS2MaNG2vChAmSpPr16+vFF1/Uxo0b1alTJ23cuFH79+/X0aNHbWGxZMkS3Xjjjdq1a5duueUWSReCetGiRapUqZIkqV+/ftq4caOmTp162e88fvy4EhMTFRcXJ+nCD/fPpkyZolatLizsMXDgQI0bN06pqam2Y//617/qo48+0tixY3Xu3DnNmzdPixYtsq02+Morr2j9+vV69dVXNXr0aFu76enpuvvuu1W/fn2lpKTIx+dCacqECRM0a9Ys20pOtWvX1oEDBzR//nwNGDDA9vkRI0bYrfZUnHMpMm7cOI0aNcr2OisrixD+XdLUH9SyU5Yevauufj5JuRDgqbKzs21BKklHjx7V3r17FRoaqtDQUE2cOFGJiYmKiIhQamqqxowZYxtQSVJMTIy6dOmiwYMH6+WXX1Z+fr6GDRume+65x7YiLLlGrpUm57K89cMRX0XWynN3V+AmRTOVoebfdDorwLa/svk3HU6rIkm6udEJxTc+rr+M7K/zORf+H37+v63VIma5usR/q5R1TV3eb5Scq100bd68uaRLL5oWh9tnLBs3bmz3unr16rYR88GDBxUVFWUXErGxsQoJCdHBgwdt+2rVqmUL3z+3cTkPP/ywLWAnTJigL7/88qr9Cg8PV0BAgF24hYeH274jNTVV+fn5tsCWpIoVK+rWW2+166ckderUSfXq1dPy5ctt4Xvu3DmlpqZq4MCBCgoKsm1TpkxRamqq3ecvvqm2uOdSxNfX95JpdViVNPUH/V+XTI35W12dSqPcA3AJN13Z3b17t5o1a6ZmzS6s5jtq1Cg1a9ZM48ePl7e3t7788kvdeeedatCggQYOHKjmzZvr448/titBWrp0qRo1aqQOHTqoW7duat26tf7zn//Y3ifXyLXSxC+gUJHReTqd4fa5BLjJyZ8r6ZdMf93c6EfbvgC/PMXU/klfHwmXdGGlc0myWk12n7VYTfLycsEUmidw44xldna29u7dq71790r646Lp8ePHlZ2drdGjR2vHjh06duyYNm7cqJ49e17xoulnn32mTz/99JKLpsXh9oHln2/SN5lMslgsJdrGoEGDdOTIEfXr10/79+9XixYt7Mp//tymyWQypJ+S1L17d23dulUHDhyw7St6+Ogrr7xi+0uxd+9effXVV9qxY4fd5wMDAx0+F1zZsGk/qn3vXzUjKVq/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tXDhQj333HMuPReXMnhZ9qysLLstNzf3il/93XffKTIyUnXq1FHfvn11/PhxSdKePXuUn5+vjh072o5t1KiRatasqe3bt5fszwPlArlWvpFr5FpJPW6ktFTisCosSi2z2aytW7fqhRdeUFZWlqKjozVr1ix17dpVy5cvd7i9gIAArVu3To888ohuueUWBQQEKDEx8Yq/5CIiIrRp0ya1a9dOffv2VUpKitasWaMnn3xSDz74oH766SdFRESoTZs2lwR4cc8DV2YymfTee+9p+PDhatOmjby8vNSlSxenS2IKCwuVlJSkH374QWazWV26dNHzzz/vVJszZsyQxWJRv379dPbsWbVo0ULr1q1T5cqVL3v8888/r8LCQrVv316bN2/WoEGDFBAQoH/9618aPXq0AgMDFRcXpxEjRrj8XFzGYpVMBpT7WC60cfE9S5I0YcKES5b5l6SWLVtq0aJFatiwoU6ePKmJEyfq9ttv11dffaX09HT5+PgoJCTE7jPh4eFKT093vq8o98i18o1cI9eK3Y6Diipx/qyoEiclJUXt27eXJC1cuFAxMTHasWOHbrvtNqe7ezGT1VqGC3kBAGVKVlaWgoOD1bHuCFXw9nW6vYLCXG1IfUFpaWkym822/b6+vvL1vXb7Z86cUXR0tJ577jn5+/vrwQcfvGS289Zbb9Udd9xhe+4fAABF3J1rycnJ+te//qXg4GD5+fkpPj5e06dPV82aNbVp0yZ16NBBv/76q91F0+joaI0YMUIjR450ur8XoxQWAOB6BpcMmc1mu604g0pJCgkJUYMGDXT48GFFREQoLy/P9nDvIqdOnbrslWAAAGwMzrWoqCgFBwfbtunTp1/2a4sqcT744APNmzdPR48e1e23366zZ8+6vBKHUlgAgBsY9CBpOddGdna2UlNT1a9fPzVv3lwVK1bUxo0blZiYKEk6dOiQjh8/rvj4eAP6CgDwXMbm2uVmLC/n4hL0xo0bq2XLloqOjtabb74pf39/A/pTfAwsAQDlxmOPPaYePXooOjpaJ06c0IQJE+Tt7a17771XwcHBGjhwoEaNGqXQ0FCZzWYNHz5c8fHxht+HAgDA1RRV4Djq4kqcTp062SpxLp61LKlKHEphAQCu56bV83744Qfde++9atiwofr06aMqVapox44dtoe/P//88/rLX/6ixMREtWnTRhER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",
"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=[\"smokers\", \"non smokers\"]\n",
" ).plot(ax=ax.flat[index])\n",
"\n",
"plt.subplots_adjust(top=1, bottom=0, hspace=0.4, wspace=0.3)\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.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}